目录

C-Eval 的基本介绍题目来源测评方式Answer onlyCoT

测评流程install lm evaluation harness下载数据跑测试24G 显存更大显存

结果参考链接

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

C-Eval 的基本介绍

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

题目来源

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

测评方式

官方 github 里提到(当然也是论文里的内容),固定了两种提交模板,一种是 answer-only 一种是 chain-of-thought,并支持 zero-shot 和 five-shots 两种模式。不过这次使用的 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}

答案:

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.

测评流程

下面我将介绍如何使用 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 .

查看支持的所有的任务

lm-eval --tasks list

下载数据

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

pip install huggingface_hub

huggingface-cli download ceval/ceval-exam --repo-type dataset

跑测试

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

model_args 就是 vllm 执行所需要的参数,原来 vllm 需要什么参数这里就要填写什么参数tasks 使用 ceval-valid 数据集batch_size 如果使用的是 24G 显存的话,设置为 1,如果是更大的显存,可以设置为 autooutput_path 就是输出结果的路径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

更大显存

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

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

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

结果

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

参考链接

C-Eval: 构造中文大模型的知识评估基准C-Eval 官方 githubHuggingface C Eval 数据集线上评测提交网站C-Eval 论文lm-evaluation-harness Github

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: