PandaLM
PandaLM 是一款专注于大语言模型(LLM)评估的开源工具,旨在提供可复现且自动化的模型对比方案。面对当前大模型评估中依赖昂贵人工标注或存在数据泄露风险的痛点,PandaLM 能够在保护数据隐私的前提下,对同一语境下不同模型的回复进行智能打分、给出判断理由并提供参考答案,从而大幅降低评估成本。
该工具特别适合拥有敏感数据的企业团队、预算有限的科研实验室以及致力于指令微调优化的开发者使用。用户无需将私有数据上传至第三方 API,即可在本地完成安全、高效的模型性能验证。
在技术亮点方面,PandaLM 不仅提供了完整的训练代码和经过人类标注的千级测试数据集,其核心模型 PandaLM-7B 更展现出卓越的评估能力:在测试集中,其评估效果达到了 GPT-3.5 的 93.75% 和 GPT-4 的 88.28%(以 F1 分数计)。此外,项目还分享了基于 Alpaca 等基座模型的微调成果,证实了利用 PandaLM 辅助优化能显著提升指令微调的表现。作为已被 ICLR 2024 收录的研究成果,PandaLM 为大模型领域的客观评测提供了一个可靠、透明且易于部署的新选择。
使用场景
某金融科技公司正在内部迭代一款处理敏感客户数据的智能客服大模型,急需在数据不出域的前提下评估不同微调版本的效果。
没有 PandaLM 时
- 数据泄露风险高:因客户对话记录涉及隐私,团队不敢调用 GPT-4 等第三方 API 进行评估,担心敏感信息外泄。
- 人工评估成本昂贵:雇佣专业标注人员对成千上万条模型回复进行打分,不仅耗资巨大,且周期长达数周,严重拖慢迭代节奏。
- 评估标准不一致:不同标注人员对“回答质量”的理解存在主观差异,导致评估结果波动大,难以复现和横向对比模型优劣。
- 反馈缺乏深度:人工评分通常只给出一个分数,缺乏具体的改进理由,开发人员难以定位模型具体在哪类指令上表现不佳。
使用 PandaLM 后
- 本地化安全评估:PandaLM 可部署在本地服务器,直接在内部环境中对敏感数据进行自动化评测,彻底杜绝数据出境风险。
- 效率与成本双降:利用 PandaLM 自动对比不同模型版本的回复并生成理由,将原本数周的评估工作缩短至几小时,几乎零边际成本。
- 结果可复现且客观:PandaLM 基于统一的上下文和参考答桉提供标准化评判,消除了人为主观偏差,确保每次实验结果稳定可靠。
- 提供可操作洞察:除了给出胜负判定,PandaLM 还会生成详细的决策理由和参考答桉,帮助工程师快速定位指令微调中的具体缺陷。
PandaLM 让企业在保障数据绝对安全的同时,以极低成本获得了接近 GPT-4 水平的自动化、可复现模型评估能力。
运行环境要求
- Linux
- 需要 NVIDIA GPU,运行 Web UI 演示至少需要 24GB 显存 (VRAM)
- 训练或微调其他模型未明确具体型号,但提及消费级 GPU 可用于参数高效微调
未说明

快速开始
PandaLM:可复现且自动化的语言模型评估
王一东*1,2
于卓浩*1
曾正然1
杨林毅2
衡强3
王存祥2
陈浩4
蒋超亚1
谢锐1
王金东5
谢星5
叶伟†1
张世坤†1
张悦†2
1 北京大学,2 西湖大学, 3 北卡罗来纳州立大学,4 卡内基梅隆大学,5 微软亚洲研究院
概述
这是PandaLM的官方仓库:可复现且自动化的语言模型评估。
论文:PandaLM:用于LLM指令微调优化的自动化评估基准
PandaLM旨在提供不同大型语言模型(LLMs)之间可复现且自动化的比较。通过向PandaLM提供相同的上下文,它可以比较不同LLMs的响应,并给出决策依据以及参考答案。PandaLM的目标用户可能是拥有机密数据的组织,以及寻求可复现性的资金有限的研究实验室。这些机构可能不愿将数据披露给第三方,或无力承担使用第三方API或雇佣人工标注员所带来的高昂成本和潜在的数据泄露风险。借助PandaLM,他们可以在不泄露数据、不产生高额成本的情况下进行评估,并获得可复现的结果。为了证明我们工具的可靠性和一致性,我们创建了一个包含约1,000个样本的多样化人工标注测试集,其中上下文和标签均由人类生成。我们的结果显示,在该测试集上,PandaLM-7B的F1分数分别达到GPT-3.5的93.75%和GPT-4的88.28%。 更多论文和功能即将发布。

本仓库包含:
- 训练PandaLM的代码
- 约1,000个样本的人工标注测试集,用于验证PandaLM评估LLMs的能力
- PandaLM的模型权重
- 用于对其他基础模型(如Bloom、OPT和LLaMA等)进行指令微调的代码和配置
新闻
- [2024/05/21] 修复了训练数据404的问题。
- [2024/01/16] Pandalm已被ICLR 2024接收!
- [2023/07/25] 我们在Huggingface分享了我们微调的Alpaca和PandaLM-Alpaca。此外,我们还将微调后的Alpaca和PandaLM-Alpaca上传至Open LLM Leaderboard,结果表明使用PandaLM可以提升指令微调的效果。
- [2023/04/30] 我们很高兴地宣布PandaLM 1.0作为一款开源工具正式发布,用于可靠地评估LLMs。为进一步展示PandaLM的有效性,我们还共享了一份人工标注的测试数据集。
- [2023/06/08] 我们在arXiv上发布了论文:PandaLM:用于LLM指令微调优化的自动化评估基准
目录
动机

如上图所示,LLM的指令微调迭代包括训练和评估两个环节。每次迭代都涉及超参数或微调算法的调整。得益于参数高效微调方法,即使使用消费级GPU,LLM的指令微调也能在几个GPU小时内完成。然而,基于人工或API的评估往往成本更高、耗时更长。此外,由于LLM变更日志缺乏透明度以及人工标注存在主观性,这些评估方式往往不够一致且难以复现。更重要的是,使用API评估可能导致潜在的高额补救成本,例如因机密数据泄露而产生的损失。从形式上看,LLM指令微调的总成本为$N \times (C_{train}+C_{cost})$,其中如果采用人工或API评估,$C_{train}$可能会远小于$C_{cost}$。
为应对这些挑战,我们提出了一种名为PandaLM的评估模型,它能够在评估过程中确保可复现性、安全性和效率。通过自动化评估流程,我们的模型可以在保持高评估能力的同时,实现高效且一致的评估。
安装
要安装PandaLM,请按照以下步骤操作:
- 克隆仓库:
git clone https://github.com/WeOpenML/PandaLM.git - 进入项目目录:
cd PandaLM - 安装所需依赖:
pip install -r requirements.txt,或者如果您更喜欢conda,可以使用conda env create -f conda-env.yml。请注意,需要将conda-env.yml中的prefix修改为您本地的conda路径。
要对基础模型进行指令微调,请按照以下步骤操作:
- 安装PandaLM。
- 进入项目目录:
cd PandaLM/pandalm - 运行演示脚本:
bash scripts/inst-tune.sh
出于版权问题的考虑,我们未提供已微调好的模型。不过,您可以在PandaLM/pandalm/scripts/inst-tune.sh中轻松复现该模型。
使用方法
我们已将PandaLM-7B上传至HuggingFace,您只需通过以下代码即可初始化模型和分词器:
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。(代码正在准备中,请耐心等待。)
- 在本地机器上(需配备至少24G显存的GPU)使用Web UI试用PandaLM:
cd PandaLM/pandalm/
CUDA_VISIBLE_DEVICES=0 python3 run-gradio.py --base_model=WeOpenML/PandaLM-7B-v1 --server_port=<your-server-port> --server_name=<your-server-name>
默认情况下,程序会监听所有网络接口上的31228端口;如果您在本地运行,请访问http://localhost:31228/;如果是在远程服务器上,则访问http://\<your-server-name>:<your-server-port>/。
- 我们提供了一个名为
EvaluationPipeline的类,可以使用PandaLM评估多个候选模型。该类的构造函数接受候选模型路径列表,或者对于未开源的模型,可传入其输出的JSON文件路径。此外,还可以选择性地传入PandaLM模型的路径、用于加载测试数据的输入数据路径以及用于保存测试结果的输出数据路径。请注意,此演示仅展示了指令微调前的语言模型评估。实际上,我们需要先对这些模型进行指令微调,然后再将微调后的模型传入EvaluationPipeline中。 更多详情请参阅代码。您只需三行代码即可测试候选模型:
from pandalm import EvaluationPipeline
pipeline = EvaluationPipeline(candidate_paths=["huggyllama/llama-7b", "bigscience/bloom-7b1", "facebook/opt-6.7b"], input_data_path="data/pipeline-sanity-check.json")
print(pipeline.evaluate())
数据集
本节介绍用于训练和评估PandaLM的训练数据与测试数据。我们将持续更新并开源数据,以不断改进PandaLM。
训练数据
我们希望让模型不仅能针对给定的上下文评估不同的回复,还能利用该上下文生成一个参考回复。因此,训练数据中的每个样本由一个输入元组(指令、输入、回复1、回复2)和一个输出元组(评估结果、评估理由、参考回复)组成。具体而言,在输入元组中,指令和输入取自Alpaca 52K数据集,而回复对则由LLaMA-7B、Bloom-7B、Cerebras-GPT-6.7B、OPT-7B以及我们使用相同指令数据和超参数微调得到的Pythia-6.9提供。我们选择这些基础模型是因为它们规模相近且模型权重公开可用。对应的输出元组包括评估结果、评估的简要说明以及参考回复。需要注意的是,评估结果中的“1”或“2”分别表示回复1或回复2更优,“Tie”则表示两者质量相当。由于从人工标注者那里获取数百万个输出元组成本过高,而ChatGPT在一定程度上具备评估语言模型的能力,因此我们参照Self-Instruct的方法,从ChatGPT(gpt-3.5-turbo)获取输出元组,随后采用启发式数据过滤策略剔除噪声数据。经过筛选后的训练数据集包含30万个样本,而原始未筛选的数据集则有100万个样本。训练数据可在train-data中找到。 以下是训练数据的一个示例:
{
"inputs": {
"instruction": "找出给定类型数据的一个例子",
"input": "定性数据",
"response1": "客户反馈是定性数据的一个例子。",
"response2": "客户评价是定性数据的一个例子。",
},
"outputs": {
"evaluation_result": "Tie",
"evaluation_reason": "两个回复都正确,并且提供了类似的定性数据示例。",
"reference_response": "访谈记录是定性数据的一个例子。"
}
}
测试数据
为了证明PandaLM的可靠性,我们创建了一个人工标注的测试数据集,该数据集可靠且符合人类对文本的偏好。测试数据集中的每个实例包含一条指令和输入,以及由不同指令微调的LLM生成的两个回复。任务是比较这两个回复的质量。与训练数据类似,这些回复由我们使用相同的指令数据和超参数微调的LLLaMA-7B、Bloom-7B、Cerebras-GPT-6.7B、OPT-7B和Pythia-6.9B生成。在获得人工标注的测试数据集后,我们就可以比较ChatGPT和PandaLM的评估性能。
测试数据是从Self-Instruct的人工评估数据中生成并采样的。测试数据的输入和标签完全由人类生成,涵盖了多样化的任务和内容。标签由三位不同的评估者独立标注。数据由一系列任务组成,每个任务包括一条指令、一句输入、两条回复以及一个指示更优回复的标签。需要注意的是,“1”或“2”表示回复1或回复2更好,“0”则表示两者质量相近。此外,我们从原始标注的测试数据中剔除了差异较大的样本,以确保每位标注者在剩余数据上的IAA(标注者间一致性)接近0.85。这是因为这些被过滤掉的样本需要额外的知识或难以获取的信息,使得人类难以对其进行评估。最终的测试数据集包含1000个样本,而原始未过滤的数据集则有2500个样本。下面是一个带有解释的测试集示例。测试数据可在./data/testset-v1.json中找到。 我们还发布了gpt-3.5-turbo和PandaLM-7B在测试集上的结果,分别存储在./data/gpt-3.5-turbo-testset-v1.json和./data/pandalm-7b-testset-v1.json中。
{
"index": "749",
"motivation_app": "CNN News",
"task_id": "user_oriented_task_165",
"cmp_key": "opt-7b_pythia-6.9b", ## 表示回复1来自opt-7B,回复2来自pythia-6.9B
"instruction": "请为新闻标题分类。从新闻与热点、旅游、时尚、艺术与文化、政治、科技以及科学与健康这七个类别中选择。",
"input": "马萨诸塞州剑桥市的#班克斯展览真是太棒了。",
"reference_response": "Arts & Culture", ## 直接摘自Self-Instruct仓库
"response1": "Politics",
"response2": "Arts & Culture",
"label_0": "2", # 第一位人类标注者的标签
"label_1": "2", # 第二位人类标注者的标签
"label_2": "2", # 第三位人类标注者的标签
}
我们使用Cohen’s kappa计算每位标注者的IAA。结果如下:
| Cohen’s kappa | 标注者 #1 | 标注者 #2 | 标注者 #3 |
|---|---|---|---|
| 标注者 #1 | 1 | 0.85 | 0.88 |
| 标注者 #2 | 0.85 | 1 | 0.86 |
| 标注者 #3 | 0.88 | 0.86 | 1 |
测试数据的标签分布如下:
| 0 | 1 | 2 | |
|---|---|---|---|
| 数量 | 105 | 422 | 472 |
实验结果
请参阅论文:PandaLM: 用于LLM指令微调优化的自动评估基准
贡献
我们欢迎对PandaLM的贡献!如果您想参与贡献,请按照以下步骤操作:
- 分支该项目。
- 创建包含您更改的新分支。
- 提交带有清晰更改描述的拉取请求。
引用
@article{pandalm2024,
title={PandaLM: An Automatic Evaluation Benchmark for LLM Instruction Tuning Optimization},
author={Wang, Yidong and Yu, Zhuohao and Zeng, Zhengran and Yang, Linyi and Wang, Cunxiang and Chen, Hao and Jiang, Chaoya and Xie, Rui and Wang, Jindong and Xie, Xing and Ye, Wei and Zhang, Shikun and Zhang, Yue},
booktitle={International Conference on Learning Representations (ICLR)},
year={2024}
}
@misc{PandaLM,
author = {Wang, Yidong and Yu, Zhuohao and Zeng, Zhengran and Yang, Linyi and Heng, Qiang and Wang, Cunxiang and Chen, Hao and Jiang, Chaoya and Xie, Rui and Wang, Jindong and Xie, Xing and Ye, Wei and Zhang, Shikun and Zhang, Yue},
title = {PandaLM: 可复现且自动化的语言模型评估},
year = {2023},
publisher = {GitHub},
journal = {GitHub仓库},
howpublished = {\url{https://github.com/WeOpenML/PandaLM}},
}
许可证
PandaLM的模型权重遵循LLaMA许可证。详情请参阅MODEL_LICENSE。
训练数据的许可证将在我们上传训练数据时补充说明。
本仓库的其余部分采用Apache License 2.0。详情请参阅LICENSE。
相似工具推荐
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
funNLP
funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。
cs-video-courses
cs-video-courses 是一个精心整理的计算机科学视频课程清单,旨在为自学者提供系统化的学习路径。它汇集了全球知名高校(如加州大学伯克利分校、新南威尔士大学等)的完整课程录像,涵盖从编程基础、数据结构与算法,到操作系统、分布式系统、数据库等核心领域,并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。 面对网络上零散且质量参差不齐的教学资源,cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容,仅收录真正的大学层级课程,排除了碎片化的简短教程或商业广告,确保用户能接触到严谨的学术内容。 这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员,以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽,不仅包含传统的软件工程与网络安全,还细分了生成式 AI、大语言模型、计算生物学等新兴学科,并直接链接至官方视频播放列表,让用户能一站式获取高质量的教育资源,免费享受世界顶尖大学的课堂体验。