三行代码调用大模型裁判PandaLM:保护隐私、可靠、可复现
背景介绍
“赵老师,我们用不同基座和参数训练了「几版」大模型,看了一些样例效果都还行,最后上线哪个呀?”
“周师兄,怎么今天问 ChatGPT 的答案跟一个月前「不一样」?OpenAI 更新了模型吗?评估实验怎么办?”
“李哥,标注员太贵了,要 30 块钱才能请三个不同的标注员标一条评估数据,我们的「经费」快烧不起啦!”
“小唐,这批数据是公司的「机密数据」,你可不能发给第三方公司去获得评测结果,保密红线可别忘了!”
......
大家在评估大模型的时候,想必都遇到过以上的问题。现如今,大模型的指令微调方法犹如雨后春笋般涌现,前途看似一马平川,然而仍有一朵“乌云”笼罩在我们上空,那就是:「如何实现保护隐私、可靠、可复现及廉价的大模型评估?」
调用 OpenAI 的 API 接口; 雇佣专家进行人工标注。然而,发送数据给 OpenAI 可能会像三星员工泄露代码一样造成数据泄露问题 [1];雇佣专家标注大量数据又十分费时费力且昂贵。
为了解决以上两个评估方案的问题,我们训练了一个专门用于评估大模型性能的裁判大模型:「PandaLM」,并提供了接口,仅需「三行」代码就可以调用 PandaLM 大模型进行保护隐私、可靠、可复现及廉价的大模型评估。训练 PandaLM 的细节在我们的开源项目中已给出。
为了验证 PandaLM 的大模型评估能力,我们构建了一个多样化的包含约 1,000 个样本的人工标注测试集,其上下文和标签均由人类创建。「在我们的测试数据集上,PandaLM-7B 在准确度达到了 ChatGPT(gpt-3.5-turbo)的 94% 的水平」。本文将简要介绍 PandaLM 项目,更多的训练、测试细节、相关文章及后续工作,欢迎关注我们的 GitHub 项目:
如何使用PandaLM?
当两个不同的大模型对同一个指令和上下文产生不同响应时,PandaLM 旨在比较这两个大模型的响应质量,并输出比较结果,比较理由以及可供参考的响应。比较结果有三种:响应 1 更好,响应 2 更好,响应 1 与响应 2 质量相似。
比较多个大模型的性能时,只需使用 PandaLM 对其进行两两比较,再汇总两两比较的结果进行多个大模型的性能排名或画出模型偏序关系图,即可清晰直观地分析不同模型间的性能差异。PandaLM 只需要在「本地部署」,且「不需要人类参与」,因此 PandaLM 的评估是可以保护隐私且相当廉价的。为了提供更好的可解释性,PandaLM 亦可用自然语言对其选择进行解释,并额外生成一组参考响应。
在项目中,我们不仅支持使用 Web UI 使用 PandaLM 以便于进行案例分析,为了方便使用,我们还支持三行代码调用 PandaLM 对任意模型和数据生成的文本评估。
考虑到现有的许多模型、框架并不开源或难以在本地完成推理,我们支持利用指定模型权重生成待评估文本,或直接传入包含待评估文本的 .json 文件。用户只需传入一个包含模型名称 /HuggingFace 模型 ID 或 .json 文件路径的列表,即可利用 PandaLM对 用户定义的模型和输入数据进行评估。下面是一个极简的使用示例:
from pandalm import EvaluationPipeline
pipeline = EvaluationPipeline(candidate_paths=["./llama-7b", "./opt-7b", "xxx-model.json"], input_data_path="test.json")
print(pipeline.evaluate())
当然,为了能让大家灵活的运用 PandaLM 进行自由评测,我们也将 PandaLM 的模型权重公布在了 huggingface 网站上,可以通过以下命令加载 PandaLM-7B 模型:
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("WeOpenML/PandaLM-7B-v1",use_fast=False)
model = AutoModelForCausalLM.from_pretrained("WeOpenML/PandaLM-7B-v1")
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 项目,更多的训练、测试细节、相关文章及后续工作都会公布在项目网址:
参考文献
更多阅读
#投 稿 通 道#
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱:[email protected]
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
微信扫码关注该文公众号作者