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

这里是 【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}
答案:

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 的方式去加载模型并执行相应的测评

  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
更大显存
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% 的准确率。

参考链接

  1. C-Eval: 构造中文大模型的知识评估基准
  2. C-Eval 官方 github
  3. Huggingface C Eval 数据集
  4. 线上评测提交网站
  5. C-Eval 论文
  6. lm-evaluation-harness Github
### 关于 LLM-Harness 的使用指南 `lm-evaluation-harness` 是一种用于评估大型语言模型 (LLM) 性能的强大工具,支持多种任务和数据集的评测。以下是关于 `lm-evaluation-harness` 工具的技术细节及其使用方法。 #### 安装 lm-evaluation-harness 要开始使用该工具,需先完成安装过程。可以通过以下命令来安装依赖项以及核心库: ```bash pip install git+https://github.com/EleutherAI/lm-evaluation-harness.git ``` 此命令会克隆仓库并安装必要的 Python 库[^2]。 --- #### 配置环境与准备测试集 在运行任何评测之前,需要下载所需的测试集并将它们存储到指定路径下。例如,在中文 LLM 测试场景中,可以采用 C-Eval 数据集作为输入源之一。具体操作如下所示: 1. 下载 ceval-exam 中文测试集合。 2. 将其解压后放置于项目目录下的固定子文件夹内(通常命名为 `data/ceval`),以便后续脚本能够自动加载这些资源[^3]。 --- #### 编写配置文件 为了简化多次实验中的参数调整工作量,推荐创建 JSON 格式的配置文件来定义目标模型、硬件设备以及其他选项设置等内容。下面是一个简单的例子演示如何针对 Yi-34B 和 Qwen2-7B 进行性能对比分析: ```json { "model": { "name": "hf-causal", "model_args": ["pretrained=Yi-34B"] }, "tasks": [ "lambada_openai", "piqa" ], "batch_size": 8, "device": "cuda:0" } ``` 上述代码片段指定了所使用的模型类型为 Hugging Face 提供的因果式架构 (`hf-causal`) 并附加了预训练权重名称;同时还列举了一些待测的任务列表以及 GPU 加速等相关属性值[^1]。 --- #### 执行评测流程 准备好一切之后就可以调用官方提供的 CLI 接口启动整个处理管线啦! ```bash evaluate --config_path /path/to/config.json ``` 这条指令将会读取前面提到过的 JSON 文件里的各项设定,并按照既定顺序依次执行各个阶段的操作直至最终生成报告为止。 --- #### 结果解析与可视化展示 当所有计算完成后,默认情况下会在终端打印出每种度量指标的具体数值。如果希望获得更加直观的表现形式,则可通过 Matplotlib 或 Seaborn 等第三方绘图包进一步加工原始统计数据从而制作成图表等形式呈现出来。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值