背景介绍
“赵老师,我们用不同基座和参数训练了几版大模型,看了一些样例效果都还行,最后上线哪个呀?”
“周师兄,怎么今天问ChatGPT的答案跟一个月前不一样?OpenAI更新了模型吗?评估实验怎么办?”
“李哥,标注员太贵了,要30块钱才能请三个不同的标注员标一条评估数据,我们的经费快烧不起啦!”
“小唐,这批数据是公司的机密数据,你可不能发给第三方公司去获得评测结果,保密红线可别忘了!”
......
大家在评估大模型的时候,想必都遇到过以上的问题。现如今,大模型的指令微调方法犹如雨后春笋般涌现,前途看似一马平川,然而仍有一朵“乌云”笼罩在我们上空,那就是:**如何实现保护隐私、可靠、可复现及廉价的大模型评估?**
当前,大家评估大模型的方法主要有两个:(1)调用OpenAI的API接口;(2)雇佣专家进行人工标注。然而,发送数据给OpenAI可能会像三星员工泄露代码一样造成数据泄露问题 [1];雇佣专家标注大量数据又十分费时费力且昂贵。为了解决以上两个评估方案的问题,**我们训练了一个专门用于评估大模型性能的裁判大模型:PandaLM,并提供了接口,仅需三行代码就可以调用PandaLM大模型进行保护隐私、可靠、可复现及廉价的大模型评估。训练PandaLM的细节在我们的开源项目中已给出。为了验证PandaLM的大模型评估能力,我们构建了一个多样化的包含约1,000个样本的人工标注测试集,其上下文和标签均由人类创建。**在我们的测试数据集上,PandaLM-7B在准确度达到了ChatGPT(gpt-3.5-turbo)的94%的水平。本文将简要介绍PandaLM项目,更多的训练、测试细节、相关文章及后续工作,欢迎关注我们的GitHub项目:https://github.com/WeOpenML/PandaLM
如何使用PandaLM?
当两个不同的大模型对同一个指令和上下文产生不同响应时,PandaLM旨在比较这两个大模型的响应质量,并输出比较结果,比较理由以及可供参考的响应。比较结果有三种:响应1更好,响应2更好,响应1与响应2质量相似。比较多个大模型的性能时,只需使用PandaLM对其进行两两比较,再汇总两两比较的结果进行多个大模型的性能排名或画出模型偏序关系图,即可清晰直观地分析不同模型间的性能差异。PandaLM只需要在本地部署,以及不需要人类参与,因此PandaLM的评估是可以保护隐私且相当廉价的。为了提供更好的可解释性,PandaLM亦可用自然语言对其选择进行解释,并额外生成一组参考响应。
在项目中,我们不仅支持使用Web UI使用PandaLM以便于进行案例分析,为了方便使用,我们还支持三行代码调用PandaLM对任意模型和数据生成的文本评估。考虑到现有的许多模型、框架并不开源或难以在本地完成推理,我们支持利用指定模型权重生成待评估文本,或直接传入包含待评估文本的.json文件。用户只需传入一个包含模型名称/HuggingFace模型ID或.json文件路径的列表,即可利用PandaLM对用户定义的模型和输入数据进行评估。下面是一个极简的使用示例:
当然,为了能让大家灵活的运用PandaLM进行自由评测,我们也将PandaLM的模型权重公布在了huggingface网站上,可以通过以下命令加载PandaLM-7B模型:
PandaLM的特点
PandaLM的特点为可复现,自动化,保护隐私,开销低,评估水平高等。
可复现性:因为PandaLM的权重是公开的,即使语言模型的输出有随机性,当固定随机种子之后,PandaLM的评价结果仍可始终保持一致。而基于在线API的模型的更新不透明,其输出在不同时间有可能很不一致,且旧版模型不再可访问,因此基于在线API的评测往往不具有可复现性。
自动化、保护隐私性和开销低:只需本地部署PandaLM模型,调用现成的命令即可开始评估各种大模型,不需像雇佣专家标注时要时刻与专家保持沟通,也不会存在数据泄露的问题,同时也不涉及任何API费用以及劳务费用,非常廉价。
评估水平:为了证明PandaLM的可靠性,我们雇佣了三个专家进行独立重复标注,创建了一个人工标注的测试集。该测试集包含50个不同的场景,每个场景中又包含若干任务。这个测试集是多样化、可靠且与人类对文本的偏好相一致的。测试集的每个样本由一个指令和上下文,以及两个由不同大模型生成的响应共同组成,并由人类来比较这两个响应的质量。**我们筛除了标注员之间有较大差异的样本,以确保每个标注者在最终测试集上的IAA(Inter Annotator Agreement)接近0.85。值得注意的是,PandaLM的训练集与我们创建的人工标注测试集无任何重叠**。
这些被过滤的样本需要额外的知识或难以获取的信息来辅助判断,这使得人类也难以对它们进行准确标注。经过筛选的测试集包含1000个样本,而原始未经过滤的测试集包含2500个样本。测试集的分布为{0:105,1:422,2:472},其中0表示两个响应质量相似,1表示响应1更好,2表示响应2更好。以人类测试集为基准,PandaLM与gpt-3.5-turbo的性能对比如下:
可以看到,PandaLM-7B在准确度上已经达到了gpt-3.5-turbo 94%的水平,而在精确率,召回率,F1分数上,PandaLM-7B已于gpt-3.5-turbo相差无几。因此,相比于gpt-3.5-turbo而言,我们可以认为PandaLM-7B已经具备了相当的大模型评估能力。
- 除了在测试集上的准确度,精确率,召回率,F1分数之外,我们还提供了5个大小相近且开源的大模型之间比较的结果。我们首先使用了相同的训练数据对这个5个模型进行指令微调,接着用人类,gpt-3.5-turbo,PandaLM对这5个模型分别进行两两比较。下表中第一行第一个元组(72,28,11)表示有72个LLaMA-7B的响应比Bloom-7B的好,有28个LLaMA-7B的响应比Bloom-7B的差,两个模型有11个响应质量相似。因此在这个例子中,人类认为LLaMA-7B优于Bloom-7B。下面三张表的结果说明人类,gpt-3.5-turbo与PandaLM-7B对于各个模型之间优劣关系的判断完全一致。
- 基于以上三张表,我们生成了模型优劣的偏序图,这个偏序图构成了全序关系,可以表示为:LLaMA-7B > Bloom-7B > Pythia-6.9B > OPT-7B > Cerebras-GPT-6.7B。
总结
综上所述,PandaLM提供了除人类评估与OpenAI API评估之外的第三条评估大模型的方案,PandaLM不仅评估水平高,而且评估结果可复现,评估流程自动化,保护隐私且开销低。我们相信PandaLM将推动学术界和工业界关于大模型的研究,使得更多人受益于大模型的发展。欢迎大家关注PandaLM项目,更多的训练、测试细节、相关文章及后续工作都会公布在项目网址:https://github.com/WeOpenML/PandaLM
引用
[1] https://www.infoq.cn/article/48HXL0qs8AowJxDgSpom