Skip to content

GSM8K Eval

GSM8K 数据集评测

GSM8K是大小为8.5K的小学数学数据集,涉及基本算术运算,需要2-8个步骤才能解决,包含7.5K训练集和1K测试集。GSM8K每道题的答案包含完整的解题过程,有助于CoT训练。

GSM8K数据集的测试集共1319条,我们使用上述的模型推理服务,对这些样本进行预测,得到预测文件。

GSM8K测试集的测评脚本如下:

eval/gsm8k/gsm8k_eval.py: evaluation script for GSM8K dataset

对于测试样本,微调模型会预测解题过程,如果预测结果中包含Python代码,则使用正则表达式提取出被python\n(...)\n所包围的Python代码字符串,保存为Python脚本,使用subprocess模块执行Python脚本,如果代码执行报错或者超时(有可能为死循环),则会重试预测解题过程,这样最多尝试3次。

GSM8K数据集中,测试数据的正确答案在 #### 后面,而且一般为整数。而我们微调后的模型,在最后生成的回答中,将正确答案用\boxed{}包围起来,这样我们可以直接对比两者的结果,从而给出初步准确率。

但部分测试样本的最终答案并没有使用\boxed{}包围起来或者有报错(预测结果为ERROR),因此我们需要人工再次确认这些样本。笔者写了一个gradio构建的web页面,用于人工确认,Python代码如下:

eval/gsm8k/human_eval_server.py: human check script for GSM8K dataset using Gradio.

人工确认页面如下图:

GSM8K测评——人工确认页面

经过人工再次确认后,我们就能得到微调模型在GSM8K测试集上的准确率了。

笔者按照这种方式测评方式,使用微调后的模型Yi-1.5-34B-math,对GSM8K测试集进行了两次测评,准确率均为 83.47%,这其中预测出错的样本共8个。