Project Icon

codefuse-devops-eval

DevOps基础模型评估套件 多维度性能测试

CodeFuse-DevOps-Eval是一个面向DevOps领域基础模型的综合评估套件,包含近7500道多选题及AIOps、ToolLearning专项样本。通过全面测试计划、编码、构建等环节,帮助开发者评估模型性能,提供零样本和少样本准确率排行。该套件覆盖8大类别,通过多维度评估助力开发者追踪进展并分析模型优劣。

🤗 Hugging Face • ⏬ 数据 • 📖 教程
中文 | English

DevOps-Eval 是一个专为 DevOps 领域基础模型设计的综合评估套件。我们希望 DevOps-Eval 能帮助开发者,尤其是 DevOps 领域的开发者,跟踪模型的进展并分析其重要优势和不足。

📚 本仓库包含与 DevOps 相关的问题和练习,包括 AIOps、工具学习;

💥️ 目前有 7486 道多选题,涵盖 8 个不同的通用类别,如下图所示。

🔥 AIOps 子类别共有 2840 个样本,涵盖了日志解析时间序列异常检测时间序列分类时间序列预测根因分析等场景。

🔧 工具学习子类别共有 1509 个样本,涵盖了 59 个领域的 239 个工具场景。

🔔 新闻

  • [2023.12.27] 添加 1509 个工具学习样本,涵盖 59 个领域的 239 个工具类别;发布相关评估排行榜;
  • [2023.11.27] 添加 487 个运维场景样本和 640 个时间序列预测样本;更新排行榜;
  • [2023.10.30] 添加 AIOps 排行榜。
  • [2023.10.25] 添加 AIOps 样本,包括日志解析、时间序列异常检测、时间序列分类和根因分析。
  • [2023.10.18] 更新初始排行榜...

📜 目录

🏆 排行榜

以下是我们在初始发布中评估的模型的零样本和五样本准确率。我们注意到,对于许多指令微调的模型,五样本性能优于零样本。

👀 DevOps

零样本

模型名称规划编码构建测试发布部署运维监控平均
DevOpsPal-14B-Chat60.6178.3584.8684.6587.2682.7569.8979.1778.23
DevOpsPal-14B-Base54.5577.8283.4985.9686.3281.9671.1882.4178.23
Qwen-14B-Chat60.6175.485.3284.2189.6282.7569.5780.5677.18
Qwen-14B-Base57.5873.8184.485.5386.3281.1870.0580.0976.19
Baichuan2-13B-Base60.6169.4279.8279.8282.5581.1870.3783.873.73
Baichuan2-13B-Chat60.6168.4377.9880.781.683.5367.6384.7272.9
DevOpsPal-7B-Chat54.5569.1183.9482.0276.898064.7377.7871.92
DevOpsPal-7B-Base54.5568.9682.1178.9580.6676.4765.5478.771.69
Qwen-7B-Base53.0368.1378.975.4480.198065.0680.0971.09
Qwen-7B-Chat57.5866.0180.2879.8276.8977.6562.6479.1769.75
Baichuan2-7B-Chat54.5563.6677.9876.3271.773.3359.4279.6366.97
Internlm-7B-Chat60.6162.1577.0676.3266.9874.5160.3978.2466.27
Baichuan2-7B-Base56.0662.4575.6970.6174.0669.861.6775.9366.21
Internlm-7B-Base54.5558.2979.3678.9577.8370.5965.8675.9365.99

五样本

模型名称规划编码构建测试发布部署运维监控平均分
DevOpsPal-14B-Chat63.6479.4981.6585.9686.7986.6772.9581.4879.69
DevOpsPal-14B-Base62.1280.5582.5785.5385.8584.7171.9880.0979.63
Qwen-14B-Chat65.157682.5785.5384.9184.3170.8581.4877.81
Qwen-14B-Base66.6776.1584.485.5386.3280.3972.4680.5677.56
Baichuan2-13B-Base63.6471.3980.7382.4681.1384.3173.7585.1975.8
Qwen-7B-Base75.7672.5278.981.1483.9681.1870.3781.9475.36
Baichuan2-13B-Chat62.1269.9576.6184.2183.4979.6171.9880.5674.12
DevOpsPal-7B-Chat66.6769.9583.9481.1480.1982.7568.676.8573.61
DevOpsPal-7B-Base69.769.4982.1181.1482.5582.3567.1579.1773.35
Qwen-7B-Chat65.1566.5482.5781.5881.681.1865.3881.0271.69
Baichuan2-7B-Base60.6167.2276.617577.8378.4367.3179.6370.8
Internlm-7B-Chat60.6163.0679.8280.2667.9275.6960.0677.3169.21
Baichuan2-7B-Chat60.6164.9581.1975.8871.2375.6964.979.1769.05
Internlm-7B-Base62.1265.2577.5280.774.0678.8263.4575.4667.17

🔥 AIOps

零样本

模型名称日志解析根因分析时间序列异常检测时间序列分类时间序列预测平均分
Qwen-14B-Base66.2958.825.3343.562.552.25
DevOpsPal-14B-Base63.1453.623.3343.564.0650.49
Qwen-14B-Chat64.5751.622.673662.548.94
DevOpsPal-14B-Chat6056244357.8148.8
Qwen-7B-Base5039.222.675443.7541.48
DevOpsPal-7B-Chat56.5730.425.334544.0640.92
Baichuan2-13B-Chat641821.3337.546.8839.3
Qwen-7B-Chat57.4338.822.3339.525.3136.97
Internlm-7B-Chat58.868.822.3328.551.2536.34
Baichuan2-7B-Chat60.86102834.539.0636.34
Baichuan2-7B-Base53.4312.827.6736.540.3135.49
Baichuan2-13B-Base5412.42334.542.8134.86
DevOpsPal-7B-Base46.5720.8253438.7533.94
Internlm-7B-Base48.5718.823.3337.533.7533.1

一次性测试

模型名称日志解析根因分析时间序列异常检测时间序列分类时间序列预测平均
DevOpsPal-14B—Chat66.2980.823.3344.556.2554.44
DevOpsPal-14B—Base607425.3343.552.551.13
Qwen-14B-Base64.2974.42848.540.3150.77
Qwen-7B-Base5660.827.674457.1949.44
Qwen-14B-Chat49.7165.628.674842.1946.13
Baichuan2-13B-Base5643.224.334146.8842.89
Baichuan2-7B-Chat58.5731.62731.551.8841.83
DevOpsPal-7B—Base52.8644.42844.536.2541.2
Baichuan2-7B-Base48.2940.4274240.9439.86
Qwen-7B-Chat54.575229.6726.527.1938.73
Baichuan2-13B-Chat57.4344.42525.530.6337.75
DevOpsPal-7B—Chat56.5727.225.3341.533.4437.46
Internlm-7B—Chat62.5712.822.332150.3136.69
Internlm-7B—Base4833.2293531.5635.85

🔧 工具学习

函数调用填充器数据集名称fccr1-fcffr1-fcfnr1-fcfpr1-fcfniraar
Qwen-14b-chatluban6110097.6863.3210069.46
Qwen-7b-chatluban50.5810098.0752.5110063.59
Baichuan-7b-chatluban60.2310097.362.9399.6161.12
Internlm-chat-7bluban47.8810096.1451.7499.6161.85
Qwen-14b-chatfc_data98.3799.7399.8698.7810081.58
Qwen-7b-chatfc_data99.4699.8610099.5910079.25
Baichuan-7b-chatfc_data97.9699.3210098.6410089.53
Internlm-chat-7bfc_data94.2995.7810098.510088.19
CodeLLaMa-7bfc_data98.7899.7310099.0510094.7
CodeLLaMa-7b-16fc_data98.199.8799.7398.510093.14
CodeFuse-7b-4kfc_data98.9199.8799.8799.1810089.5

⏬ 数据

下载

  • 方法1:下载zip文件(你也可以直接在浏览器中打开以下链接):
    wget https://huggingface.co/datasets/codefuse-admin/devopseval-exam/resolve/main/devopseval-exam.zip
    
    然后解压缩,你可以使用pandas加载数据:
    import os
    import pandas as pd
    
    File_Dir="devopseval-exam"
    test_df=pd.read_csv(os.path.join(File_Dir,"test","UnitTesting.csv"))
    
  • 方法2:使用Hugging Face数据集直接加载数据集:
    from datasets import load_dataset
    dataset=load_dataset(r"DevOps-Eval/devopseval-exam",name="UnitTesting")
    
    print(dataset['val'][0])
    # {"id": 1, "question": "单元测试应该覆盖以下哪些方面?", "A": "正常路径", "B": "异常路径", "C": "边界值条件","D": 所有以上,"answer": "D", "explanation": ""}  ```
    
    
  • 方法3:使用ModelScope数据集直接加载数据集:
    from modelscope.msdatasets import MsDataset
    MsDataset.clone_meta(dataset_work_dir='./xxx', dataset_id='codefuse-ai/devopseval-exam')
    

👀 注意事项

为了方便使用,我们整理了55个子类别对应的类别名处理程序和英文/中文名称。详情请参考category_mapping.json。格式如下:

{
  "UnitTesting.csv": [
    "unit testing",
    "单元测试",
    {"dev": 5, "test": 32}
    "TEST"
  ],
  ...
  "文件名":[
  "英文名称",
  "中文名称",
  "样本数量",
  "超级类别标签(在PLAN、CODE、BUILD、TEST、RELEASE、DEPOLY、OPERATE、MONITOR中选择1个)"
  ]
}

每个子类别由两个部分组成:dev和test。每个子类别的dev集包含5个带有解释的示例,用于少样本评估。test集用于模型评估。test部分的标签也已发布。

以下是"版本控制"的一个dev示例:

id: 4
问题:如何找到Git特定提交中已更改的文件列表?
A: 使用命令 `git diff --name-only SHA`
B: 使用命令 `git log --name-only SHA`
C: 使用命令 `git commit --name-only SHA`
D: 使用命令 `git clone --name-only SHA`
答案: A
解释:
分析原因:
git diff --name-only SHA命令会显示与SHA参数对应的提交中已修改的文件列表。参数--name-only让命令只输出文件名,而忽略其他信息。其它选项中的命令并不能实现此功能。

🔥 AIOps 样例示例

👀 👀 以日志解析时间序列异常检测为例,以下是AIOps样例的简要展示:

日志解析

id: 0
问题:
以下是一些运行日志
 0 04:21:15,429 WARN Cannot open channel to 2 at election address /10.10.34.12:3888
 1 19:18:56,377 WARN ******* GOODBYE /10.10.34.11:52703 ********
 2 19:13:46,128 WARN ******* GOODBYE /10.10.34.11:52308 ********
 3 19:16:26,268 WARN ******* GOODBYE /10.10.34.11:52502 ********
 4 09:11:16,012 WARN Cannot open channel to 3 at election address /10.10.34.13:3888
 5 16:37:13,837 WARN Cannot open channel to 2 at election address /10.10.34.12:3888
 6 09:09:16,008 WARN Cannot open channel to 3 at election address /10.10.34.13:3888
 7 15:27:03,681 WARN Cannot open channel to 3 at election address /10.10.34.13:3888
日志的前三部分分别是索引、时间戳和日志级别。不考虑这三部分,假设日志中的变量用'<*>'表示,令牌之间用空格分隔。上述日志的具体日志模板是什么?
A: Notification time out: <*> 和 Connection broken for id <*>, my id = <*>, error =
B: Send worker leaving thread 和 Connection broken for id <*>, my id = <*>, error =
C: Received connection request /<*>:<*> 和 Interrupting SendWorker
D: Cannot open channel to <*> at election address /<*>:<*> 和 ******* GOODBYE /<*>:<*> ********
答案: D
解释:日志包含固定模板片段"Cannot open channel to <> at election address /<>:<>"和"****** GOODBYE /<>:<> ********",这两者都出现在选项D中。同时,其他选项中的模板片段与日志内容不匹配。因此,选项D最符合日志模板。

时间序列异常检测

id: 0
问题:
分析以下时间序列
[50,62,74,84,92,97,99,98,94,87,77,65,265,40,28,17,8,3,0,0,4,10,20,31,43,56,68,79,89,95,99,99,96,91,82,71,59,46,34,22,12,5,1,0,2,7,15,25,37,49]
请识别明显的异常点的索引。异常点通常指显著偏离数据整体趋势的点。
A: 46
B: 0
C: 37
D: 12
答案: D
解释:根据分析,给定时间序列中12点处的值265显著大于周围数据,表现出突增现象。因此,选择选项D是正确的。

🔧 工具学习样例示例

👀 👀 工具学习样例的数据格式与OpenAI的Function Calling兼容。

详情请参考tool_learning_info.md

🚀 如何评估

如果您需要测试自己的huggingface格式模型,整体步骤如下:

  1. 编写模型的加载器函数。
  2. 为模型编写context_builder函数。
  3. 在配置文件中注册模型。
  4. 运行测试脚本。 如果模型在加载后不需要任何特殊处理,且输入不需要转换为特定格式(如chatml格式或其他人机对话格式),可以直接进行第4步启动测试。

1. 编写加载器函数

如果模型在加载后需要额外处理(如调整tokenizer),需要继承src.context_builder.context_builder_family.py中的ModelAndTokenizerLoader类,并重写相应的load_modelload_tokenizer函数。可以参考以下示例:

class QwenModelAndTokenizerLoader(ModelAndTokenizerLoader):
    def __init__(self):
        super().__init__()
        pass
    
    @override
    def load_model(self, model_path: str):
    # 方法实现
        pass
    
    @override
    def load_tokenizer(self, model_path: str):
    # 方法实现
        pass

2. 为模型编写context_builder函数

如果输入需要转换为特定格式(如chatml格式或其他人机对话格式),需要继承src.context_builder.context_builder_family中的ContextBuilder类,并重写make_context函数。该函数用于将输入转换为相应的所需格式。示例如下:

class QwenChatContextBuilder(ContextBuilder):
    def __init__(self):
        super().__init__()
        
    @override
    def make_context(self, model, tokenizer, query: str, system: str = "hello!"):
    # 方法实现
        pass

3. 在配置文件中注册模型

前往conf目录下的model_conf.json文件,注册相应的模型名称以及该模型将使用的loader和context_builder。loader和context_builder只需写第一步和第二步中定义的类名即可。示例如下:

{
  "Qwen-Chat": {
  "loader": "QwenModelAndTokenizerLoader",
  "context_builder": "QwenChatContextBuilder"
  }
}

4. 执行测试脚本

运行以下代码启动测试:

python src/run_eval.py \
--model_path 模型路径 \
--model_name 配置中的模型名称 \
--model_conf_path 模型配置路径 \
--eval_dataset_list all \
--eval_dataset_fp_conf_path 数据集配置路径 \
--eval_dataset_type test \
--data_path 下载的devops_eval_data路径 \
--k_shot 0

👀 👀 具体评估过程请参考 📖 评估教程


🧭 待办事项

  • 添加AIOps样例。
  • 添加AIOps场景时间序列预测
  • 添加工具学习样例。
  • 增加样本数量。
  • 添加难度设置为困难的样本。
  • 添加英文版样本。

🏁 许可证

本项目采用Apache许可证(版本2.0)

😃 引用

如果您使用了我们的数据集,请引用我们的论文。

即将推出...

🗂 其他

📱 联系我们

图片

✨ Star历史

Star历史图表

🤝 友情链接

  • Codefuse-ChatBot
    • Codefuse-ChatBot 是一个开源的 AI 智能助手,旨在通过对话式访问工具、知识和平台集成,支持软件开发生命周期。
  • Awesome AIGC 教程
    • Awesome AIGC 教程收集了精心筛选的教程和资源,涵盖大型语言模型、AI 绘画和相关领域。
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号