🏠 主页 | 🏆 排行榜 | 📜 arXiv | 📝 博客 | 🤗 HF数据集 | 🤗 HF论文 | 𝕏 Twitter
基准与Chatbot Arena Elo的相关性(%),对比评估单个GPT-3.5-Turbo-0125模型的总成本。MixEval和MixEval-Hard在主要基准中显示出与Arena Elo和Arena Elo(En)的最高相关性。在估算Chatbot Arena上评估单个模型的成本时(约2,936美元),我们参考了Amazon Mechanical Turk的众包价格(每票0.05美元)。Chatbot Arena成本过高,而MixEval和MixEval-Hard是经济高效的替代方案。更多详情,请参阅我们的论文。
⚡ 新闻
[2024-06-29] 我们的评估套件现在支持评估本地检查点,详情请查看这里!
[2024-06-29] 我们的评估套件现在支持其他API作为模型解析器,详情请查看这里。
MixEval
我们介绍MixEval,一个基于现成基准混合的基于真实值的动态基准,它能以高度能力的模型排名(即与Chatbot Arena的0.96相关性)评估LLM,同时在本地快速运行(仅需MMLU运行时间和成本的6%),其查询每月稳定轻松更新以避免污染。
MixEval包含两个基准:MixEval
和MixEval-Hard
,两者都通过我们快速、稳定的流程定期更新。它们都包含两个分割,即自由回答和多项选择。它们的关系如下所示:
MixEval (动态)
│
├── MixEval
│ ├──free-form.json
│ └──multiple-choice.json
│
└── MixEval-Hard
├──free-form.json
└──multiple-choice.json
即点即用的LLM评估套件
本仓库托管了MixEval的评估代码和动态数据发布。当前动态基准版本显示在本页面顶部。我们提供了一个可靠的即点即用评估套件,兼容开源和专有模型,包括模型响应生成和分数计算。此外,该评估套件还便于注册自定义模型和基准数据。
如论文所示,传统的基于规则的解析器表现出显著的不稳定性,容易产生相当大的错误。我们使用
GPT-3.5-Turbo
或开源模型作为我们的模型解析器,这在我们的和这项研究中已被证明是稳定的。
注意❗ 欢迎使用您自己的评估代码来评估MixEval数据。我们在这里提供了指南。
快速开始
(步骤1) 克隆仓库并设置环境:
git clone https://github.com/Psycoy/MixEval.git
cd MixEval
conda create -n MixEval python=3.11 --yes
conda activate MixEval
bash setup.sh
# 设置完成
注意:如果您正在评估最新的模型,可能需要更新
setup.py
中的依赖项。
(步骤2) 为模型解析器设置OpenAI API密钥。在根目录(MixEval/
)下创建.env
文件,并添加以下行:
MODEL_PARSER_API=<您的openai api密钥>
排行榜中的值使用
GPT-3.5-Turbo-0125
作为默认模型解析器。也将支持开源模型解析器。
如果您使用Azure或其他API作为模型解析器,请查看这里。
(步骤3) 运行评估并获取结果。就这么简单!
python -m mix_eval.evaluate \
--model_name gemma_11_7b_instruct \
--benchmark mixeval_hard \
--version 2024-06-01 \
--batch_size 20 \
--max_gpu_memory 5GiB \
--output_dir mix_eval/data/model_responses/ \
--api_parallel_num 20
如果您想评估未包含在
mixeval.models.__init__
中的模型,请查看这里了解新模型注册的简单步骤。
模型响应文件和分数将保存到
<output_folder>/<model_name>/<benchmark>/<version>/
,在这种情况下,是mix_eval/data/model_responses/gemma_11_7b_instruct/mixeval_hard/2024-06-01/
。我们将总体分数
作为排行榜中报告的分数。
如果您正在评估本地检查点,请查看这里。
注意❗ 在运行评估之前,请务必阅读这里的基本配置。
# 注册新模型 **(步骤 1)** 将您的模型文件添加到 `mixeval/models/` 目录下,命名为 `your_model_name.py`,并在其中编写名为 `Model_Class_Name` 的模型类。 - 开源聊天模型继承自 `mixeval.models.base.ChatModel`(示例文件:`llama_3_8b_instruct.py`)。 - 开源基础模型继承自 `mixeval.models.base.BaseModel`(示例文件:`llama_3_8b.py`)。 - 专有模型继承自 `mixeval.models.base_api.APIModelBase`(示例文件:`gpt_4_turbo_2024_04_09.py`,在 `.env` 中添加您的 API 密钥)。 - 在大多数情况下,您只需编写一个带有单个 `__init__` 函数的简单模型类。但是,如果您的模型需要更多设置,例如需要不同的 build_model() 函数,您应该覆盖父模型的相应函数或变量。 - 模型文件名应与您在模型类顶部的 `@register_model()` 装饰器中传递的名称相同。
(步骤 2) 将您的模型添加到 mixeval.models.__init__.AVAILABLE_MODELS
中。
- 您添加的条目应采用
your_model_name: Model_Class_Name
的形式。请参考AVAILABLE_MODELS
中的其他模型作为参考。
仅执行模型推理
有时您可能只想进行模型推理而不计算分数。您可以通过在运行 mix_eval.evaluate
模块时设置 --inference_only
标志来实现这一点:
python -m mix_eval.evaluate \
--model_name gemma_11_7b_instruct \
--benchmark mixeval_hard \
--version 2024-06-01 \
--batch_size 20 \
--max_gpu_memory 5GiB \
--output_folder mix_eval/data/model_responses/ \
--inference_only
模型响应文件将保存在
<output_folder>/<model_name>/<benchmark>/<version>/
目录下,在本例中为mix_eval/data/model_responses/gemma_11_7b_instruct/mixeval_hard/2024-06-01/
。
如果您正在评估本地检查点,请查看此处。
注意❗ 在运行评估之前,务必阅读此处的重要配置。
运行推理后,您可以检查模型响应文件是否完整:
python -m mix_eval.utils.check_eval_complete \
--benchmark mixeval_hard \
--version 2024-06-01 \
--chat_models_to_check \
gpt_4o \
llama_3_70b_instruct \
claude_3_opus \
--base_models_to_check \
none \
--model_response_dir mix_eval/data/model_responses/ \
--out_path mix_eval/data/model_responses/eval_checks.log
检查结果将写入
--out_path
;只有有问题的文件会被记录。
仅计算分数
如果您想单独计算分数,您应该:
- 准备您的模型响应文件。 您可以使用我们的评估套件(参考此处)或您自己的评估套件(参考此处指定的示例响应文件格式和协议)。
- 运行分数计算脚本:
python -m mix_eval.compute_metrics \ --benchmark mixeval_hard \ --version 2024-06-01 \ --model_response_dir mix_eval/data/model_responses/ \ --api_parallel_num 20 \ --models_to_eval \ gemma_11_7b_instruct \ gpt_4o \ claude_3_opus
您应该根据您的 OpenAI 用户等级适当设置
--api_parallel_num
,以避免速率限制。通常,如果您是 Tier-5 用户,您可以将--api_parallel_num
设置为 100 或更高,以在 30 秒内解析结果。
如果您使用 Azure 或其他 API 作为模型解析器,请查看此处。
如果您正在解析基础模型的响应,请设置
--extract_base_model_response
标志,以仅保留模型响应中有意义的部分,从而获得更稳定的解析结果。
如果您在一段时间前完成了模型解析,现在想再次显示模型结果,请添加
--compute_score_from_judged_file
标志,以避免再次调用模型解析器 API,从而节省预算。您必须确保目标模型响应文件夹下存在名为judge_results_ff_model_judge_gpt-3.5-turbo-0125
和judge_results_mp_model_judge_gpt-3.5-turbo-0125
的已解析文件,其中gpt-3.5-turbo-0125
表示模型解析器名称,ff
表示自由形式,mp
表示多项选择。
MixEval 是什么?
MixEval 是一种通过利用从网络中挖掘的用户查询并将其与现有基准中的相似查询匹配,来弥合真实世界用户查询与高效、可重复评估之间差距的方法。MixEval 也是使用这种方法构建的proposed benchmark。
MixEval-Hard 是 MixEval 的难度版本,旨在增强基准区分强大模型的能力。它是根据模型评估结果从 MixEval 中抽样得到的,选择更难查询的概率更高。为了解决分布偏差问题,我们引入了一个拒绝采样过程,以确保 MixEval-Hard 的分布与野生查询的分布一致。
动态评估被引入以缓解污染问题。我们使用快速、稳定的流程定期更新 MixEval 和 MixEval-Hard 中的数据点,该流程使用来自相同分布的不同批次野生查询执行基准混合,显示出低方差(0-100 分制中标准差为 0.36)和显著的版本差异(85% 的唯一查询比率)。
为什么要使用 MixEval 基准?
MixEval 为实践者提供了五个显著优势:
- 准确的模型排名,与 Chatbot Arena1 的相关性达到 0.96。
- 快速、便宜且可重复的执行,仅需 MMLU 6% 的时间和成本,且不依赖人工输入。
- 通过低成本和稳定的更新机制实现动态基准测试。
- 基于大规模网络语料库的全面且偏差较小的查询分布。
- 通过基于真实答案的评分机制确保公平的评分过程。
MixEval 作为基准混合方法的效果如何?
MixEval 是有效的,因为:
- MixEval 和 MixEval-Hard 在所有基准中与 Arena Elo 和 Arena Elo (En) 的相关性最高。
- MixEval 提高了其所有主要基准分割与 Arena Elo 和 Arena Elo (En) 的相关性。
- MixEval 优于基准级和均匀混合。
- MixEval 有效地将真实世界用户查询映射到基于真实答案的基准。
🦾 贡献
欢迎点击 ⭐星标按钮或 🦾贡献!我们会定期审查新的问题和 PR,并感谢您的贡献!
我们衷心感谢以下贡献者对本仓库的卓越贡献:
- @RodriMora
- @teknium1
- @philschmid
- @carstendraschner
📑 引用
如果您发现这个仓库有用,请考虑 📑引用:
@article{ni2024mixeval,
title={MixEval: Deriving Wisdom of the Crowd from LLM Benchmark Mixtures},
author={Ni, Jinjie and Xue, Fuzhao and Yue, Xiang and Deng, Yuntian and Shah, Mahir and Jain, Kabir and Neubig, Graham and You, Yang},
journal={arXiv preprint arXiv:2406.06565},
year={2024}
}