-
Notifications
You must be signed in to change notification settings - Fork 576
cmmlu_zh
本项目在CMMLU评测数据集上测试了相关模型效果,其中测试集包含11K个选择题,涵盖67个学科。
接下来将介绍CMMLU数据集的预测方法
从CMMLU官方指定路径下载评测数据集,并解压至data文件夹:
wget https://huggingface.co/datasets/haonan-li/cmmlu/resolve/main/cmmlu_v1_0_1.zip
unzip cmmlu_v1_0_1.zip -d data
将data文件夹放置于本项目的scripts/cmmlu目录下。
运行以下脚本:
model_path=path/to/chinese_llama2_or_alpaca2
output_path=path/to/your_output_dir
cd scripts/cmmlu
python eval.py \
--model_path ${model_path} \
--few_shot False \
--with_prompt True \
--constrained_decoding True \
--output_dir ${output_path} \
--input_dir data
-
model_path:待评测模型所在目录(完整的Chinese-LLaMA-2或Chinese-Alpaca-2模型,非LoRA)
-
cot:是否使用chain-of-thought
-
few_shot:是否使用few-shot
-
ntrain:few_shot=True时,指定few-shot实例的数量(5-shot:ntrain=5);few_shot=False时该项不起作用
-
with_prompt:模型输入是否包含针对Alpaca-2模型的指令模板
-
constrained_decoding:由于C-Eval评测的标准答案格式为选项'A'/'B'/'C'/'D',所以我们提供了两种从模型生成内容中抽取答案的方案:
-
当constrained_decoding=True,计算模型生成的第一个token分别为'A', 'B', 'C', 'D'的概率,选择其中概率最大的一个作为答案
-
当constrained_decoding=False,用正则表达式从模型生成内容中提取答案
-
-
temperature:模型解码时的温度
-
n_times:指定评测的重复次数,将在output_dir下生成指定次数的文件夹
-
output_dir:指定评测结果的输出路径
-
input_dir: 指定评测数据的路径
-
模型预测完成后,生成目录outputs/take*,其中*代表数字,范围为0至n_times-1,分别储存了n_times次解码的结果。
-
outputs/take*下包含submission.json和summary.json两个json文件。
-
submission.json为生成的存储模型评测答案的文件,形式如:
{
"arts": {
"0": "A",
"1": "B",
...
},
"nutration": {
"0": "B",
"1": "A",
...
},
...
}
- summary.json包含模型在67个主题下、5个大类下和总体平均的评测结果。例如,json文件最后的All字段中会显示总体平均效果:
"All": {
"score": 0.39984458642721465,
"num": 11582,
"correct": 4631.0
}
其中score为准确率,num为测试的总样本条数,correct为正确的数量。