Important
收藏项目,你将能第一时间获取 OpenCompass 的最新动态~⭐️
Star History
来到OpenCompass!
就像指南针在我们的旅程中为我们导航一样,我们希望OpenCompass能够帮助你穿越评估大型语言模型的重重迷雾。OpenCompass提供丰富的算法和功能支持,期待OpenCompass能够帮助社区更便捷地对NLP模型的性能进行公平全面的评估。
🚩🚩🚩 欢迎加入 OpenCompass!我们目前招聘全职研究人员/工程师和实习生。如果您对 LLM 和 OpenCompass 充满热情,请随时通过电子邮件与我们联系。我们非常期待与您交流!
🔥🔥🔥 祝贺 OpenCompass 作为大模型标准测试工具被Meta AI官方推荐, 点击 Llama 的 入门文档 获取更多信息。
注意
我们正式启动 OpenCompass 共建计划,诚邀社区用户为 OpenCompass 提供更具代表性和可信度的客观评测数据集! 点击 Issue 获取更多数据集. 让我们携手共进,打造功能强大易用的大模型评测平台!
- [2024.09.19] 现已支持Qwen2.5(0.5B to 72B) ,可以使用多种推理后端(huggingface/vllm/lmdeploy), 欢迎尝试! 🔥🔥🔥
- [2024.09.05] 现已支持OpenAI o1 模型(
o1-mini-2024-09-12
ando1-preview-2024-09-12
), 欢迎尝试! 🔥🔥🔥 - [2024.09.05] OpenCompass 现在支持通过模型后处理来进行答案提取,以更准确地展示模型的能力。作为此次更新的一部分,我们集成了 XFinder 作为首个后处理模型。具体信息请参阅 文档,欢迎尝试! 🔥🔥🔥
- [2024.08.20] OpenCompass 现已支持 SciCode: A Research Coding Benchmark Curated by Scientists。 🔥🔥🔥
- [2024.08.16] OpenCompass 现已支持全新的长上下文语言模型评估基准——RULER。RULER 通过灵活的配置,提供了对长上下文包括检索、多跳追踪、聚合和问答等多种任务类型的评测,欢迎访问RULER。🔥🔥🔥
- [2024.07.23] 我们支持了Gemma2模型,欢迎试用!🔥🔥🔥
- [2024.07.23] 我们支持了ModelScope数据集,您可以按需加载,无需事先下载全部数据到本地,欢迎试用!🔥🔥🔥
- [2024.07.17] 我们发布了CompassBench-202407榜单的示例数据和评测规则,敬请访问 CompassBench 获取更多信息。 🔥🔥🔥
- [2024.07.17] 我们正式发布 NeedleBench 的技术报告。诚邀您访问我们的帮助文档进行评估。🔥🔥🔥
- [2024.07.04] OpenCompass 现已支持 InternLM2.5, 它拥有卓越的推理性能、有效支持百万字超长上下文以及工具调用能力整体升级,欢迎访问OpenCompass Config 和 InternLM .🔥🔥🔥.
- [2024.06.20] OpenCompass 现已支持一键切换推理加速后端,助力评测过程更加高效。除了默认的HuggingFace推理后端外,还支持了常用的 LMDeploy 和 vLLM ,支持命令行一键切换和部署 API 加速服务两种方式,详细使用方法见文档。欢迎试用!🔥🔥🔥.
我们将陆续提供开源模型和 API 模型的具体性能榜单,请见 OpenCompass Leaderboard 。如需加入评测,请提供模型仓库地址或标准的 API 接口至邮箱 [email protected]
.
下面提供了快速安装和数据集准备的步骤。
我们强烈建议使用 conda
来管理您的 Python 环境。
-
conda create --name opencompass python=3.10 -y conda activate opencompass
-
# 支持绝大多数数据集及模型 pip install -U opencompass # 完整安装(支持更多数据集) # pip install "opencompass[full]" # 模型推理后端,由于这些推理后端通常存在依赖冲突,建议使用不同的虚拟环境来管理它们。 # pip install "opencompass[lmdeploy]" # pip install "opencompass[vllm]" # API 测试(例如 OpenAI、Qwen) # pip install "opencompass[api]"
-
如果希望使用 OpenCompass 的最新功能,也可以从源代码构建它:
git clone https://github.com/open-compass/opencompass opencompass cd opencompass pip install -e . # pip install -e ".[full]" # pip install -e ".[vllm]"
OpenCompass支持使用本地数据集进行评测,数据集的下载和解压可以通过以下命令完成:
# 下载数据集到 data/ 处
wget https://github.com/open-compass/opencompass/releases/download/0.2.2.rc1/OpenCompassData-core-20240207.zip
unzip OpenCompassData-core-20240207.zip
我们已经支持从OpenCompass存储服务器自动下载数据集。您可以通过额外的 --dry-run
参数来运行评估以下载这些数据集。
目前支持的数据集列表在这里。更多数据集将会很快上传。
另外,您还可以使用ModelScope来加载数据集: 环境准备:
pip install modelscope
export DATASET_SOURCE=ModelScope
配置好环境后,无需下载全部数据,直接提交评测任务即可。目前支持的数据集有:
humaneval, triviaqa, commonsenseqa, tydiqa, strategyqa, cmmlu, lambada, piqa, ceval, math, LCSTS, Xsum, winogrande, openbookqa, AGIEval, gsm8k, nq, race, siqa, mbpp, mmlu, hellaswag, ARC, BBH, xstory_cloze, summedits, GAOKAO-BENCH, OCNLI, cmnli
有部分第三方功能,如 Humaneval 以及 Llama,可能需要额外步骤才能正常运行,详细步骤请参考安装指南。
在确保按照上述步骤正确安装了 OpenCompass 并准备好了数据集之后,现在您可以开始使用 OpenCompass 进行首次评估!
-
OpenCompass 支持通过命令行界面 (CLI) 或 Python 脚本来设置配置。对于简单的评估设置,我们推荐使用 CLI;而对于更复杂的评估,则建议使用脚本方式。你可以在configs文件夹下找到更多脚本示例。
# 命令行界面 (CLI) opencompass --models hf_internlm2_5_1_8b_chat --datasets demo_gsm8k_chat_gen # Python 脚本 opencompass ./configs/eval_chat_demo.py
你可以在configs 文件夹下找到更多的脚本示例。
-
OpenCompass 在设计上并不区分开源模型与 API 模型。您可以以相同的方式或甚至在同一设置中评估这两种类型的模型。
export OPENAI_API_KEY="YOUR_OPEN_API_KEY" # 命令行界面 (CLI) opencompass --models gpt_4o_2024_05_13 --datasets demo_gsm8k_chat_gen # Python 脚本 opencompass ./configs/eval_api_demo.py # 现已支持 o1_mini_2024_09_12/o1_preview_2024_09_12 模型, 默认情况下 max_completion_tokens=8192.
-
另外,如果您想使用除 HuggingFace 之外的推理后端来进行加速评估,比如 LMDeploy 或 vLLM,可以通过以下命令进行。请确保您已经为所选的后端安装了必要的软件包,并且您的模型支持该后端的加速推理。更多信息,请参阅关于推理加速后端的文档 这里。以下是使用 LMDeploy 的示例:
opencompass --models hf_internlm2_5_1_8b_chat --datasets demo_gsm8k_chat_gen -a lmdeploy
OpenCompass 预定义了许多模型和数据集的配置,你可以通过 工具 列出所有可用的模型和数据集配置。
-
# 列出所有配置 python tools/list_configs.py # 列出所有跟 llama 及 mmlu 相关的配置 python tools/list_configs.py llama mmlu
如果模型不在列表中但支持 Huggingface AutoModel 类,您仍然可以使用 OpenCompass 对其进行评估。欢迎您贡献维护 OpenCompass 支持的模型和数据集列表。
opencompass --datasets demo_gsm8k_chat_gen --hf-type chat --hf-path internlm/internlm2_5-1_8b-chat
如果你想在多块 GPU 上使用模型进行推理,您可以使用
--max-num-worker
参数。CUDA_VISIBLE_DEVICES=0,1 opencompass --datasets demo_gsm8k_chat_gen --hf-type chat --hf-path internlm/internlm2_5-1_8b-chat --max-num-worker 2
Tip
--hf-num-gpus
用于 模型并行(huggingface 格式),--max-num-worker
用于数据并行。
Tip
configuration with _ppl
is designed for base model typically.
配置带 _ppl
的配置设计给基础模型使用。
配置带 _gen
的配置可以同时用于基础模型和对话模型。
通过命令行或配置文件,OpenCompass 还支持评测 API 或自定义模型,以及更多样化的评测策略。请阅读快速开始了解如何运行一个评测任务。
更多教程请查看我们的文档。
我们很高兴发布 OpenCompass 司南 2.0 大模型评测体系,它主要由三大核心模块构建而成:CompassKit、CompassHub以及CompassRank。
CompassRank 系统进行了重大革新与提升,现已成为一个兼容并蓄的排行榜体系,不仅囊括了开源基准测试项目,还包含了私有基准测试。此番升级极大地拓宽了对行业内各类模型进行全面而深入测评的可能性。
CompassHub 创新性地推出了一个基准测试资源导航平台,其设计初衷旨在简化和加快研究人员及行业从业者在多样化的基准测试库中进行搜索与利用的过程。为了让更多独具特色的基准测试成果得以在业内广泛传播和应用,我们热忱欢迎各位将自定义的基准数据贡献至CompassHub平台。只需轻点鼠标,通过访问这里,即可启动提交流程。
CompassKit 是一系列专为大型语言模型和大型视觉-语言模型打造的强大评估工具合集,它所提供的全面评测工具集能够有效地对这些复杂模型的功能性能进行精准测量和科学评估。在此,我们诚挚邀请您在学术研究或产品研发过程中积极尝试运用我们的工具包,以助您取得更加丰硕的研究成果和产品优化效果。
OpenCompass 是面向大模型评测的一站式平台。其主要特点如下:
-
开源可复现:提供公平、公开、可复现的大模型评测方案
-
全面的能力维度:五大维度设计,提供 70+ 个数据集约 40 万题的的模型评测方案,全面评估模型能力
-
丰富的模型支持:已支持 20+ HuggingFace 及 API 模型
-
分布式高效评测:一行命令实现任务分割和分布式评测,数小时即可完成千亿模型全量评测
-
多样化评测范式:支持零样本、小样本及思维链评测,结合标准型或对话型提示词模板,轻松激发各种模型最大性能
-
灵活化拓展:想增加新模型或数据集?想要自定义更高级的任务分割策略,甚至接入新的集群管理系统?OpenCompass 的一切均可轻松扩展!
语言 | 知识 | 推理 | 考试 |
字词释义
成语习语
语义相似度
指代消解
翻译
多语种问答
多语种总结
|
知识问答
|
文本蕴含
常识推理
数学推理
定理应用
综合推理
|
初中/高中/大学/职业考试
医学考试
|
理解 | 长文本 | 安全 | 代码 |
阅读理解
内容总结
内容分析
|
长文本理解
|
安全
健壮性
|
代码
|
开源模型 | API 模型 |
|
- 主观评测
- 发布主观评测榜单
- 发布主观评测数据集
- 长文本
- 支持广泛的长文本评测集
- 发布长文本评测榜单
- 代码能力
- 发布代码能力评测榜单
- 提供非Python语言的评测服务
- 智能体
- 支持丰富的智能体方案
- 提供智能体评测榜单
- 鲁棒性
- 支持各类攻击方法
我们感谢所有的贡献者为改进和提升 OpenCompass 所作出的努力。请参考贡献指南来了解参与项目贡献的相关指引。
|
---|
该项目部分的代码引用并修改自 OpenICL。
该项目部分的数据集和提示词实现修改自 chain-of-thought-hub, instruct-eval
@misc{2023opencompass,
title={OpenCompass: A Universal Evaluation Platform for Foundation Models},
author={OpenCompass Contributors},
howpublished = {\url{https://github.com/open-compass/opencompass}},
year={2023}
}