评估
项目描述
eval
Python 评估库
什么是评估?
评估使我们能够评估一个给定模型在一系列特定任务上的表现。这是通过对模型运行一系列标准化基准测试来完成的。运行评估会产生这些各种基准测试的数值分数,以及模型在这些基准测试期间生成的输出日志摘录/样本。使用这些工件组合作为参考,并结合手动烟雾测试,我们可以最好地了解模型是否学会了并改进了我们试图教给它的内容。InstructLab过程中模型评估有2个阶段:
检查点间评估
此步骤发生在多阶段训练期间。训练的每个阶段都会产生多个不同的“检查点”,这些检查点是在阶段的各个阶段捕获的。每个阶段的结束时,我们会评估所有检查点,以找到提供最佳结果的那个。这是作为InstructLab训练库的一部分来完成的。
全面最终评估
一旦训练完成,并且我们已经从最终阶段输出的最佳检查点中选择了最佳检查点,我们就可以运行全面的评估套件,该套件运行MT-Bench、MMLU、MT-Bench分支和MMLU分支。
评估方法
以下是更深入的解释我们正在使用的基准套件,作为评估模型的方法。
多轮基准(MT-Bench)
tl;dr 对 技能 的完整模型性能评估
MT-Bench是一种基准测试,涉及向模型提出80个多轮问题——即
<Question 1> → <model’s answer 1> → <Follow-up question> → <model’s answer 2>
“法官”模型审查给定的多轮问题、提供的模型答案,并给出一个10分制的评分。然后取平均分,得到的最终分数是该模型的“MT-bench分数”。这个基准假设模型没有事实知识。问题保持静态,但不会随着时间而过时。
您可以在此处了解更多关于MT-Bench的信息:这里
MT-Bench分支
MT-Bench分支是MT-Bench的一种改编,旨在测试InstructLab项目中添加到模型中的自定义技能。这些新技能以分类法的Git分支中的问题/答案对的形式出现。
MT-Bench Branch使用用户提供的种子问题来让候选模型生成答案,然后使用用户提供的种子答案作为参考由法官模型进行评判。
大规模多任务语言理解(MMLU)
tl;dr 对 知识 的完整模型性能评估
MMLU是一种基准测试,涉及一系列基于事实的多项选择题,以及4个答案选项。它测试模型是否能够正确理解问题、答案,制定自己的答案,然后从提供的选项中选择正确的选项。问题设计为57个“任务”的集合,每个任务都有一个给定的领域。领域涵盖了从化学和生物学到美国历史和数学的多个主题。
然后将性能数字与每个问题的已知正确答案集进行比较,以确定模型答对了多少。最终的MMLU分数是平均分。这个基准不涉及任何参考/批评模型,是完全客观的基准。这个基准假设模型有事实知识。问题是静态的,因此MMLU不能用来衡量模型对更近期的主题的知识。
InstructLab使用在此找到的实现来运行MMLU:这里
您可以在以下链接中了解更多关于MMLU的信息:这里
MMLU分支
MMLU分支是对MMLU的一种改编,旨在通过分类法的Git分支来测试通过Git分支添加到模型中的自定义知识。
使用教师模型根据分类法Git分支中包含的知识文档生成新的多项选择题。然后构建一个“任务”,该任务引用了新生成的答案选项。这些任务随后用于评估模型对新知识掌握的程度,与MMLU的工作方式相同。这些任务的生成是作为InstructLab SDG库的一部分完成的。
MT-Bench / MT-Bench分支测试步骤
⚠️ 注意:必须使用Python 3.10或更高版本。
# Optional: Use cloud-instance.sh (https://github.com/instructlab/instructlab/tree/main/scripts/infra) to launch and setup the instance
scripts/infra/cloud-instance.sh ec2 launch -t g5.4xlarge
scripts/infra/cloud-instance.sh ec2 setup-rh-devenv
scripts/infra/cloud-instance.sh ec2 install-rh-nvidia-drivers
scripts/infra/cloud-instance.sh ec2 ssh sudo reboot
scripts/infra/cloud-instance.sh ec2 ssh
# Regardless of how you setup your instance
git clone https://github.com/instructlab/taxonomy.git && pushd taxonomy && git branch rc && popd
git clone --bare https://github.com/instructlab/eval.git && git clone eval.git/ && cd eval && git remote add syncrepo ../eval.git
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -r requirements-dev.txt
pip install -e .
pip install vllm
python -m vllm.entrypoints.openai.api_server --model instructlab/granite-7b-lab --tensor-parallel-size 1
在另一个shell窗口中
export INSTRUCTLAB_EVAL_FIRST_N_QUESTIONS=10 # Optional if you want to shorten run times
# Commands relative to eval directory
python3 tests/test_gen_answers.py
python3 tests/test_branch_gen_answers.py
示例输出树
eval_output/
├── mt_bench
│ └── model_answer
│ └── instructlab
│ └── granite-7b-lab.jsonl
└── mt_bench_branch
├── main
│ ├── model_answer
│ │ └── instructlab
│ │ └── granite-7b-lab.jsonl
│ ├── question.jsonl
│ └── reference_answer
│ └── instructlab
│ └── granite-7b-lab.jsonl
└── rc
├── model_answer
│ └── instructlab
│ └── granite-7b-lab.jsonl
├── question.jsonl
└── reference_answer
└── instructlab
└── granite-7b-lab.jsonl
python3 tests/test_judge_answers.py
python3 tests/test_branch_judge_answers.py
示例输出树
eval_output/
├── mt_bench
│ ├── model_answer
│ │ └── instructlab
│ │ └── granite-7b-lab.jsonl
│ └── model_judgment
│ └── instructlab
│ └── granite-7b-lab_single.jsonl
└── mt_bench_branch
├── main
│ ├── model_answer
│ │ └── instructlab
│ │ └── granite-7b-lab.jsonl
│ ├── model_judgment
│ │ └── instructlab
│ │ └── granite-7b-lab_single.jsonl
│ ├── question.jsonl
│ └── reference_answer
│ └── instructlab
│ └── granite-7b-lab.jsonl
└── rc
├── model_answer
│ └── instructlab
│ └── granite-7b-lab.jsonl
├── model_judgment
│ └── instructlab
│ └── granite-7b-lab_single.jsonl
├── question.jsonl
└── reference_answer
└── instructlab
└── granite-7b-lab.jsonl
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码发行版
构建发行版
instructlab_eval-0.3.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 57c4d732dd1214cdac1b2f7c424a22af215243e3ec5da9d566160b61374d55d3 |
|
MD5 | f8feb28dd346579b3ff0a6ff177473e3 |
|
BLAKE2b-256 | 86b5c042d297e414af6518a80cdf803b14042e5cea36131c9fe2dca6d4809a25 |
instructlab_eval-0.3.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 68f4d4a1b97bfdbf42c4e0fac73872bf7a43534ea9f045e8f73f97ebf10d2ca4 |
|
MD5 | 9542fad48b5b1b8641fa33c0350b0bb3 |
|
BLAKE2b-256 | 169fbb2274a05f7ab4193aeaaa406f8bf13f96be148ca2852b583d4400ac9acc |