当前位置:   article > 正文

C-Eval 大语言模型测评 - lm evaluation harness + vllm 跑测评_lm-evaluation-harness

lm-evaluation-harness

这里是 【C-Eval 大语言模型评测基准- 用 LM Evaluation Harness + vLLM 跑起来】 的笔记哈。

C-Eval 的基本介绍

  1. C-Eval 是一个「知识评估基准」,参考国外的评测基准 MMLU 而来,发布于 2023 年 5 月 22 日
  2. 和 MMLU 一样,C-Eval 都是客观题评测,所有都是单项选择题,每个题目 ABCD 四个选项,有唯一答案
  3. C-Eval 涵盖了 52 个不同学科,一共 13948 个题目,难度级别覆盖初中、高中、大学和职业考试
  4. 52 个学科,每个学科拆分为三个数据集:dev、validation 和 test。每个科目的 dev 集包含五个示范实例以及为 chain of thought 格式提供的解释;validation 数据集主要是用于超参数评估,它给了问题的答案;而 test 集则用于模型评估。test 集上的答案不公开,需要用户提交其结果到官方网站才能获取测试结果。

题目来源

  1. 题目格式大多是 pdf 和 word,并做了大量的手工处理工作(ocr 之类的 未必准确,尤其很多带有复杂公式的题目)。
  2. C-Eval 的所有题目都是模拟题,不是真实的考试题目,这也是考虑真题可能更加容易被大语言模型训练集所包含。

测评方式

  1. 官方 github 里提到(当然也是论文里的内容),固定了两种提交模板,一种是 answer-only 一种是 chain-of-thought,并支持 zero-shot 和 five-shots 两种模式。
  2. 不过这次使用的 lm evaluation harness 只支持了 answer-only 模式,并且是 zero-shot。

Answer only

以下是中国关于{科目}考试的单项选择题,请选出其中的正确答案。

{题目1}
A. {选项A}
B. {选项B}
C. {选项C}
D. {选项D}
答案:A

[k-shot demo, note that k is 0 in the zero-shot case]

{测试题目}
A. {选项A}
B. {选项B}
C. {选项C}
D. {选项D}
答案:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

CoT

以下是中国关于{科目}考试的单项选择题,请选出其中的正确答案。

{题目1}
A. {选项A}
B. {选项B}
C. {选项C}
D. {选项D}
答案:让我们一步一步思考,
1. {解析过程步骤1}
2. {解析过程步骤2}
3. {解析过程步骤3}
所以答案是A。

[k-shot demo, note that k is 0 in the zero-shot case]

{测试题目}
A. {选项A}
B. {选项B}
C. {选项C}
D. {选项D}
答案:让我们一步一步思考,
1. 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

测评流程

下面我将介绍如何使用 lm evaluation harness 跑 C-Eval 的基准测试。有关 vllm 的安装、模型的准备这里就不再赘述了,可以参考之前的文章 只需 24G 显存,用 vllm 跑起来 Yi-34B 中英双语大模型

install lm evaluation harness

安装 lm evaluation harness

git clone https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
pip install -e .
  • 1
  • 2
  • 3

查看支持的所有的任务

lm-eval --tasks list
  • 1

下载数据

lm evaluation harness 会自动从 huggingface 下载数据,但考虑到国内的网络环境,可以先手动下载数据

pip install huggingface_hub
huggingface-cli download ceval/ceval-exam --repo-type dataset
  • 1
  • 2

跑测试

然后我们执行以下命令用 vllm 的方式去加载模型并执行相应的测评

  1. model_args 就是 vllm 执行所需要的参数,原来 vllm 需要什么参数这里就要填写什么参数
  2. tasks 使用 ceval-valid 数据集
  3. batch_size 如果使用的是 24G 显存的话,设置为 1,如果是更大的显存,可以设置为 auto
  4. output_path 就是输出结果的路径
  5. log_samples 就把执行的过程都记录下来,包括全部的提示词和答案
24G 显存
lm_eval --model vllm \
    --model_args pretrained=/root/autodl-tmp/01ai/Yi-34B-Chat-4bits,dtype=float16,max_model_len=2048,quantization=awq \
    --tasks ceval-valid \
    --batch_size 1 \
    --output_path c-eval-result \
    --log_samples
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
更大显存
lm_eval --model vllm \
    --model_args pretrained=/root/autodl-tmp/01ai/Yi-34B-Chat-4bits,dtype=float16,max_model_len=2048,quantization=awq \
    --tasks ceval-valid \
    --batch_size auto \
    --output_path c-eval-result \
    --log_samples
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意 C-Eval 的评测考虑上下文比较小的场景,2048 的上下文对于 answer only 是够用的,但是对于 chain of thought 的情况就比较难说了,论文里有做更多解释,这里我们先不展开了。

这里评测是是 valid 数据集 1300 多道题目,我这里 A40 大概跑了 20 分钟的样子,作为一个参考。

结果

Yi-34B-Chat-Int4 在 C-Eval 的 valid 数据集获得了一个 78% 的准确率。

参考链接

  1. C-Eval: 构造中文大模型的知识评估基准
  2. C-Eval 官方 github
  3. Huggingface C Eval 数据集
  4. 线上评测提交网站
  5. C-Eval 论文
  6. lm-evaluation-harness Github
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/901606
推荐阅读
相关标签
  

闽ICP备14008679号