codefuse-devops-eval

codefuse-devops-eval

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

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

DevOps-Eval基础模型评估AIOpsToolLearning多项选择题Github开源项目
<p align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/f9f7783d-a73f-48ef-aaee-b43045b395b3.png" style="width: 100%;" id="title-icon"> </p> <p align="center"> 🤗 <a href="https://huggingface.co/datasets/codefuse-admin/devopseval-exam" target="_blank">Hugging Face</a> • ⏬ <a href="#data" target="_blank">数据</a> • 📖 <a href="resources/tutorial.md" target="_blank">教程</a> <br> <a href="https://github.com/codefuse-ai/codefuse-devops-eval/blob/main/README_zh.md"> 中文</a> | <a href="https://github.com/codefuse-ai/codefuse-devops-eval/blob/main/README.md"> English </a> </p>

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

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

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

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

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

<p align="center"> <a href="resources/devops_diagram_zh.jpg"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/f9a21f9c-420f-4f1d-a125-a2711addfb0a.png" style="width: 100%;" id="data_info"></a></p>

🔔 新闻

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

📜 目录

🏆 排行榜

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

👀 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

<details>

零样本

模型名称日志解析根因分析时间序列异常检测时间序列分类时间序列预测平均分
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<br>

🚀 如何评估

如果您需要测试自己的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

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

<br>

🧭 待办事项

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

🏁 许可证

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

😃 引用

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

即将推出... <br> <br>

🗂 其他

📱 联系我们

<div align=center> <img src="https://yellow-cdn.veclightyear.com/835a84d5/947e5856-46b0-474f-a675-0836a7caecca.png" alt="图片", width="320"> </div>

✨ Star历史

Star历史图表

🤝 友情链接

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

编辑推荐精选

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

下拉加载更多