LMFlow 基准测试:开源大语言模型的自动评估框架#
2023年5月9日
简介#
聊天式大型语言模型(LLM)的评估自ChatGPT突破以来一直是个巨大挑战。一方面,研究人员和工程师需要可靠的方法来比较两个模型,并决定在特定应用场景下选择哪个模型。另一方面,在LLM训练过程中他们必须监控模型性能,以避免遗忘等性能问题。
Vicuna的最新研究引入了人类评估的比较方法,即Chatbot Arena。他们还开创性地利用GPT-4来比较两个模型的输出结果。然而,这些方法需要昂贵的人工标注或GPT-4 API调用,对于LLM开发而言既不具备可扩展性也不够便捷。
在本文中,我们介绍LMFlow基准测试,这是一个全新的基准测试框架,它提供了经济实惠且易于使用的评估方案,能够帮助反映大语言模型的不同方面。我们同时开源了数据集和代码,以便LLM社区的每位成员都能使用这些工具包来评估、监测或比较不同的大语言模型。
指标#
在我们的评估框架中,负对数似然(NLL)用于评估LLM

这对应于LLM模型在给定上下文的情况下对语料库集的预测概率。如果语料库集本身表明了某种类型的LLM能力,例如多轮对话、指令遵循、数学问题解决、角色扮演,那么这些语料上的负对数似然(NLL)可以提供反映这些能力的量化指标。

NLL背后的核心理念在于
生成能力与预测能力呈正相关。
例如,一个在论文写作方面表现出色的大型语言模型应该能够轻松理解和预测参考的人类论文,就像人类国际象棋大师擅长记忆棋盘上的残局一样。
除了NLL之外,NLP领域中另一个类似且常用的指标是困惑度(PPL):

然而,困惑度本质上取决于标记化序列的长度,这会导致使用不同标记器的模型之间进行比较时存在不公平性。例如,如果一个模型的词汇量较小,它自然会产生更长的标记化序列和更低的标记级困惑度。因此,在我们的所有实验中,我们使用NLL而非PPL。
NLL评估的一个巨大优势是,在评估过程中不需要人工参与。只要提供了测试参考语料库,就可以自动评估LLM能力的各个方面。这使得研究人员更容易对LLM进行评估。
除了其便利性之外,NLL本身也是一个很好的指标。我们在常识问答中的实验结果表明,当比较单个模型的不同微调版本时,NLL与问答准确率存在相关性。
表1:传统常识问答基准测试中的准确率结果
winogrande |
boolq |
arc_e |
hellaswag |
piqa |
obqa |
arc_c |
平均 |
|
|---|---|---|---|---|---|---|---|---|
bloom-3b |
58.7 |
61.6 |
59.5 |
52.7 |
70.8 |
42.2 |
30.6 |
53.7 |
bloom-7.1b |
64.4 |
62.9 |
65.0 |
59.6 |
73.6 |
35.8 |
33.4 |
56.3 |
opt-6.9b |
65.2 |
66.1 |
65.6 |
67.2 |
76.5 |
37.4 |
34.6 |
58.9 |
opt-13b |
65.0 |
65.9 |
67.1 |
69.8 |
76.9 |
39.0 |
35.7 |
59.9 |
llama-7b |
67.9 |
73.2 |
67.3 |
73.0 |
78.3 |
42.4 |
41.4 |
62.7 |
llama-13b |
70.0 |
68.5 |
74.5 |
76.2 |
79.1 |
42.2 |
44.5 |
65.0 |
表2:常识问答基准测试语料库中的NLL结果
winogrande |
boolq |
arc_e |
hellaswag |
piqa |
obqa |
arc_c |
平均 |
|
|---|---|---|---|---|---|---|---|---|
bloom-3b |
86.5 |
228 |
86 |
245 |
134 |
64.5 |
101.5 |
135.1 |
bloom-7.1b |
85 |
215 |
81.5 |
237 |
130 |
62.5 |
96 |
129.5 |
opt-6.9b |
81.5 |
200 |
81.5 |
224 |
125 |
61 |
96 |
124.1 |
opt-13b |
82 |
198 |
82.5 |
220 |
125 |
61.8 |
97 |
123.7 |
llama-7b |
79.5 |
167 |
71.5 |
214 |
121 |
58 |
85 |
113.7 |
llama-13b |
79 |
153 |
70 |
207 |
119 |
57.3 |
83 |
109.7 |
图1:常识问答基准测试中NLL与准确率的相关性

在上图中可以发现,问答准确率与NLL大致相关。因此NLL能够反映模型之间预测水平差异的"幅度"。NLL的巨大差距通常意味着性能上的巨大差异。
In the following sections, we provide a comprehensive evaluation of currently available LLM models and summarize their performance. Due to page limits, we only demonstrate partial evaluation results in this article. The full results can be found here LLM Comparison Sheet 0501. One can also evaluate their own LLM models using our LMFlow evaluation toolkit (https://optimalscale.github.io/LMFlow/examples/TASK_GUIDE.html).
我们还推出了自研的微调模型Robin-7b-Chat,并将其性能与其他流行模型进行了对比。您可以通过https://lmflow.com/访问我们的在线演示LMFlow-Chat。
聊天性能#
大语言模型的第一个方面是聊天性能,尤其是多轮对话。根据我们的实验结果,我们有以下观察:
未经微调的基础模型在对话任务上表现不佳。
经过微调后,基础模型都能获得巨大的性能提升。
我们的Robin-Chat-7b在聊天性能上与Vicuna-13b相当。
表3:多轮对话数据集上的NLL(负对数似然),数值越低越好
英文多轮对话 |
英文单轮对话 |
平均 |
|
|---|---|---|---|
Bloom-7.1b |
188 |
213 |
200.5 |
Bloom-7.1b-chat |
164 |
181 |
172.5 |
Llama-7b |
163 |
184 |
173.5 |
Vicuna-7b |
155 |
175 |
165 |
Vicuna-13b |
150 |
170 |
160 |
Robin-Chat-7b |
146 |
164 |
155 |
我们还通过实际用例对Vicuna-13b和我们的Robin-Chat-7b模型进行了定性评估。结果显示Robin-Chat-7b的性能与Vicuna-13b相当。例如,两个模型都能轻松引用对话上下文且仅出现微小错误——Vicuna-13b有时会错误统计物品数量,而Robin-Chat-7b在国际美食推荐中仅提供墨西哥食物而忽略了其他选择。
表4:多轮对话的用例
轮次 |
问题 |
Vicuna-13b |
Robin-Chat-7b |
|---|---|---|---|
R1 |
美国的首都是哪里? |
美国的首都是华盛顿特区(哥伦比亚特区)。它位于美国东海岸,马里兰州北部。华盛顿特区以美国第一任总统乔治·华盛顿命名。作为一个联邦特区,它不属于任何州,而是由联邦政府直接管辖。这座城市拥有许多国家地标,包括白宫、国会大厦和最高法院。这里还汇集了众多博物馆、纪念碑和其他文化机构。 |
美国的首都是华盛顿特区(哥伦比亚特区)。它位于美国东海岸,介于马里兰州和弗吉尼亚州之间。 |
R2 |
你能介绍一下那里的一些流行美食吗? |
华盛顿特区是一个美食多元化的城市,有许多受欢迎的餐厅和菜系可供选择。华盛顿特区的一些流行美食包括: - 美式经典:华盛顿特区有许多餐厅供应经典美式菜肴,如汉堡、热狗和苹果派。 - 海鲜:华盛顿特区靠近切萨皮克湾,以新鲜海鲜闻名。市内许多餐厅供应蟹饼、虾和牡蛎等菜肴。 - 民族美食:华盛顿特区人口多元化,有许多供应世界各地美食的餐厅。一些受欢迎的民族美食包括墨西哥菜、中国菜、日本菜和韩国菜。 - 烧烤:华盛顿特区也以其烧烤餐厅闻名。许多这类餐厅供应手撕猪肉、肋排和牛胸肉。 - 甜甜圈:华盛顿特区是著名的"Donut Happy"所在地,这是一家提供多种口味和配料的著名甜甜圈店。 - 街头小吃:华盛顿特区还有许多街头小吃选择,如供应沙拉三明治、烤肉串和墨西哥卷饼的餐车和摊位。 这些只是华盛顿特区众多美食类型中的几个例子。在这座城市,每个人都能找到适合自己的美食。 |
华盛顿特区是一个多元化的城市,有各种各样的美食可供选择。以下是你到访时可以尝试的一些流行美食: 1. 灵魂食物:这种烹饪风格起源于美国南部,以其浓郁的风味和丰盛的分量而闻名。华盛顿特区一些受欢迎的灵魂食物包括炸鸡、羽衣甘蓝和通心粉奶酪。 2. 埃塞俄比亚美食:埃塞俄比亚食物以其辛辣美味的菜肴而闻名,在华盛顿特区很受欢迎。一些受欢迎的菜肴包括英吉拉(一种酸面团扁面包)、瓦特(一种辣蔬菜炖菜)和基特福(一种辣肉菜)。 3. 海鲜:华盛顿特区靠近切萨皮克湾,容易获得新鲜海鲜。一些受欢迎的海鲜菜肴包括蟹饼、牡蛎和海鲜意面。 4. 烧烤:华盛顿特区有繁荣的烧烤场景,许多餐厅供应慢煮肉类和配菜。一些受欢迎的烧烤店包括Ben's Chili Bowl、Pete's Soul Vegetarian和Smoke & Barrel。 5. 国际美食:华盛顿特区是国际外交中心,因此拥有多元化的烹饪场景,许多餐厅供应来自世界各地的菜肴。一些受欢迎的国际美食包括日本菜、印度菜和墨西哥菜。 |
R3 |
您能更具体地说明上述第五项吗? |
当然,我提到的第五项"烧烤"指的是起源于美国南部的一种烹饪方式和食物。烧烤通常是用肉在明火或热炭上慢烤而成。肉类通常会先腌制再涂酱,并搭配多种配菜如凉拌卷心菜、焗豆和玉米棒。烧烤是华盛顿特区的热门美食,许多餐厅都供应手撕猪肉、肋排和牛胸肉。华盛顿特区最受欢迎的烧烤餐厅包括: - The Rib Pit - The Smokehouse - The BBQ Joint - The Salt Line - The Sovereign 这些只是华盛顿特区众多提供美味烧烤菜肴的餐厅中的几个例子。 |
当然!以下是华盛顿特区墨西哥美食的具体推荐: 1. Margarita's - 这家位于亚当斯摩根的知名墨西哥餐厅已提供正宗墨西哥美食30余年。最受欢迎的菜品包括墨西哥烤猪肉玉米饼(tacos al pastor)、墨西哥卷饼(enchiladas)和酿辣椒(chiles rellenos)。 2. El Comal - 这家位于哥伦比亚高地的温馨小餐厅20多年来一直供应传统墨西哥菜。招牌菜包括墨西哥巧克力辣酱(mole)、脆皮猪肉玉米饼(tacos de carnitas)和奶酪酿辣椒(chiles rellenos de queso)。 3. Casa Oaxaca - 这家位于肖社区的精致墨西哥餐厅提供传统与现代融合的菜单。特色菜包括酸橘汁腌鱼(ceviche)、黑巧克力辣酱(mole negro)和核桃蜂蜜酿辣椒(chiles en nogada)。 4. Taco King - 这家连锁玉米饼店在华盛顿特区有多家分店,包括亚当斯摩根店。以实惠价格提供各种玉米饼、墨西哥卷饼等。最受欢迎的是烤牛肉玉米饼、鸡肉玉米饼和奶酪饼。 5. Los Tacos No. 1 - 这家位于哥伦比亚高地的小型休闲玉米饼摊提供多种墨西哥街头美食。招牌包括腌猪肉玉米饼(adobada tacos)、墨西哥烤猪肉玉米饼(al pastor tacos)和鸡肉玉米饼。 |
实验详情
我们的数据集来源于人类与ChatGPT之间的真实对话历史。我们收集了183段英文对话,共计447轮聊天记录,这些原始对话历史本身就是多轮的。对于单轮NLL评估,我们将多轮对话拆分为多个单轮文本对。例如,对于一段对话历史
Q1, A1
Q2, A2
Q3, A3
其中Q代表问题,A代表答案,我们可以得到三个单轮对话示例:
Context: Q1
Output: A1
Context: Q1, A1, Q2
Output: A2
Context: Q1, A1, Q2, A2, Q3
Ouptut: A3
常识性能#
大型语言模型的另一个重要方面是其常识能力,模型应掌握一定的事实知识,并在不同场景下合理运用。关于这方面的能力,我们发现:
在对话数据集上进行微调会导致常识性能力下降。
我们的Robin-Chat-7b模型仍然保持着极具竞争力的性能。
表5:常识问答基准测试中的准确率结果
winogrand |
boolq |
arc_easy |
hellaswag |
piqa |
obqa |
arc_c |
平均 |
|
|---|---|---|---|---|---|---|---|---|
Bloom-7.1b |
64.4 |
62.9 |
65.0 |
59.6 |
73.6 |
35.8 |
33.4 |
56.4 |
Bloom-7.1b-chat |
60.3 |
56.8 |
61.3 |
58.7 |
72.7 |
37.8 |
38.7 |
55.2 |
Llama-7b |
67.9 |
73.2 |
67.3 |
73.0 |
78.4 |
42.4 |
41.4 |
62.7 |
Vicuna-7b |
63.7 |
77.4 |
63.1 |
68.8 |
76.3 |
39.6 |
38.7 |
61.1 |
Vicuna-13b |
66.2 |
79.9 |
64.7 |
73.0 |
77.6 |
41.6 |
40.4 |
63.3 |
Robin-Chat-7b |
64.7 |
75.2 |
69.8 |
72.4 |
76.6 |
39.0 |
42.9 |
62.9 |
表6:常识问答基准测试语料库中的NLL结果
winogrand |
boolq |
arc_easy |
hellaswag |
piqa |
obqa |
arc_c |
平均 |
|
|---|---|---|---|---|---|---|---|---|
Bloom-7.1b |
96.0 |
254 |
89 |
266 |
147 |
69 |
106.5 |
146.7 |
Bloom-7.1b-chat |
85.0 |
215 |
81.5 |
237 |
130 |
62.5 |
96 |
129.5 |
Llama-7b |
79.5 |
167 |
71.5 |
214 |
121 |
58 |
85 |
113.7 |
Vicuna-7b |
97.0 |
219 |
89 |
258 |
151 |
72 |
105 |
141.6 |
Vicuna-13b |
95.5 |
207 |
88.5 |
262 |
149 |
73 |
105 |
140.0 |
Robin-Chat-7b |
89.0 |
200 |
81 |
240 |
139 |
65.5 |
96.5 |
130.1 |
令人惊讶的是,微调实际上会导致常识性知识的退化。这个问题更广为人知的后果是幻觉现象,即模型倾向于给出看似合理但实际上错误或无关的答案。对此现象的一种解释是,LLM在试图适应微调数据集的过程中"遗忘"了预训练阶段获得的知识。
从上表可以看出,Vicuna和Robin都存在这种常识退化问题。但Robin受影响较小。我们推测这种改进源于使用了规模更小但质量更高的数据集进行微调。Vicuna使用了约900MB的sharegpt数据并进行了3个epoch的微调,而Robin使用了约600MB的多源数据集且仅进行了2个epoch的微调。这表明在微调阶段,数据质量起着关键作用。
这一改进让Vicuna-13b在与Robin竞争时面临强劲挑战。以下示例表明,Robin-Chat-7b在常识理解能力上与Vicuna-13b达到了相当水平。
表7:常识问答的使用案例
问题 |
Vicuna-13b |
Robin-Chat-7b |
备注 |
|---|---|---|---|
我去朋友家,但门锁着。然而,我闻到了煤气味。我应该打破窗户吗? |
如果闻到煤气味,最重要的是尽快离开房子并拨打消防部门或燃气公司的电话。煤气是一种易燃气体,如果不适当通风可能会很危险甚至致命。如果门锁着,你不应该打破窗户,因为这可能引发火灾或爆炸。相反,尝试寻找其他方式逃离房子或寻求帮助。如果无法安全离开房子,尽量保持冷静等待救援。 |
不,在这种情况下不建议打破窗户。打破窗户可能很危险,可能导致自己或他人受伤或财产损失。此外,未经许可破窗进入他人房产是违法行为。你应该尝试其他方式进入房屋,比如使用钥匙或联系房主/锁匠寻求帮助。如果无法进入房屋,应该拨打紧急服务或报警求助。同时,重要的是避免使用任何热源,如打火机或火柴,因为这些可能引发煤气泄漏或爆炸。如果闻到煤气味,应立即撤离该区域并拨打紧急服务或燃气公司求助。 |
打破窗户有助于通风,不会直接导致煤气爆炸。然而,这确实是违法行为,而且在破窗时可能会伤到自己。 |
Can I bring my pet ferret to that beautiful pacific island of USA to attend ICML 2023? |
I’m sorry, but I am not aware of the specific policies regarding pets at the ICML 2023 conference or the island you are referring to. It would be best to check with the conference organizers or the local authorities on the island to determine if ferrets are allowed and if there are any necessary procedures or requirements for bringing a pet to the conference. |
It is not recommended to bring a pet ferret to the United States, including to attend ICML 2023. Ferrets are not permitted as pets in many areas of the United States, and it is illegal to bring them into the country without proper documentation and licensing. Additionally, ferrets can carry diseases that are not common in humans but can be dangerous to people, such as toxoplasmosis and salmonellosis. It is important to prioritize the health and safety of yourself and others by not bringing a pet ferret to a crowded event like ICML 2023. |
ICML 2023 will be held in Hawaii, where ferrets are strictly prohibited as pets because they are potential carriers of the rabies virus. |
实验详情
在这里,我们利用Eleuther AI的LM评估工具库(EleutherAI/lm-evaluation-harness)来获取问答准确率结果。我们还评估了所有模型在其数据集上的NLL指标,使用它们的问题作为上下文,答案作为输出句子。
指令跟随#
我们评估的最后一个方面是遵循指令的能力,即模型应忠诚地遵守用户的指令,前提是该指令在道德或法律上是适当的。结果表明,
未经微调的基础模型在指令遵循任务上表现不佳。
在聊天数据集上进行微调有助于提升性能。
我们的Robin-Chat仍可与Vicuna-13b相媲美。
表8:指令跟随聊天数据集上的NLL
gpt4英文指令集 |
|
|---|---|
Alpaca |
222 |
Llama-7b |
214 |
Vicuna-7b |
211 |
Vicuna-13b |
206 |
Robin-Chat-7b |
180 |
以下示例显示,Robin-Chat-7b在指令跟随任务上可以生成与Vicuna-13b相似的响应。
表9:指令跟随的使用案例
问题 |
Vicuna-13b |
Robin-Chat-7b |
|---|---|---|
你能写出快速排序算法吗? |
是的,这里是一个用Python实现的快速排序算法简单示例: def quicksort(arr):
这个实现使用数组中间元素作为基准点,然后将数组划分为三个子数组:一个包含所有小于基准点的元素,一个包含等于基准点的元素,另一个包含大于基准点的元素。然后递归地对左右子数组应用快速排序算法,最后返回排序后的左子数组、未排序的中间子数组和排序后的右子数组的拼接结果。 由于递归调用,这个实现的时间复杂度为O(n log n),不过如果精心选择基准点,实际运行速度可能会更快。 |
好的,这里是一个用Python实现的简单快速排序算法: def quicksort(arr):
这个实现选择数组中间元素作为基准点,然后将数组分成三部分:小于基准点的元素、等于基准点的元素和大于基准点的元素。然后递归地对左右子数组应用快速排序算法,并将结果与中间子数组连接起来,最终生成排序后的数组。 注意这个实现只需对数组进行一次遍历,这是使用快速排序算法对数组进行排序的最有效方式。 |
指令:为给定单词查找同义词。你需要写下提供的同义词在含义、用法等方面与原词有何不同。adversity |
“adversity”的同义词包括: - Difficulty - Hardship - Trouble - Misfortune - Adversity - Difficulties - Hard times 所有这些词都指具有挑战性或令人不快的环境或情况。然而,“adversity”特指由外部因素(如敌人或自然灾害)引起的困难或敌对情况。“Difficulty”和“hardship”可能由外部或内部因素引起,可以指从轻微不便到重大挫折的各种挑战。“Trouble”通常指特定类型的困难或苦恼,如财务困境或法律纠纷。“Misfortune”特指厄运或不幸的命运,而“hard times”指经济或社会普遍困难的时期。 |
1. Hardship 2. Struggle 3. Difficulty 4. Oppression 5. Trial 6. Affliction 7. Distress 8. Calamity 9. Tribulation 10. Hardship Adversity指困难或具有挑战性的环境或条件。Hardship、struggle、difficulty、oppression、trial、affliction、distress和calamity都是可以用来描述adversity的词,但它们通常暗示更具体或更激烈的情况。例如,hardship可以指一般的困难或挑战,而struggle意味着更激烈的斗争或冲突。difficulty和oppression暗示更具体的障碍或不公正,而trial和affliction表明更具体的考验或痛苦。trial也可以指法律程序,而tribulation意味着更普遍的苦难或迫害时期。 |
实验详情
为了评估模型遵循指令的能力,我们从“使用GPT-4进行指令调优”项目中收集了GPT-4指令数据,该项目提供了大量由GPT-4标注的指令调优数据。我们抽样了1000条英文数据,并人工筛选出存在以下问题的样本,最终保留767条有效样本:
冗长的回答中包含太多无意义的词语
不完整的输入文本
涉及化学/生物学的特定领域,大多数LLM模型缺乏相关知识且总是失败
结论#
在本文中,我们介绍LMFlow的评估框架,该框架使用NLL指标来衡量大语言模型的能力。NLL为评估大语言模型的不同方面提供了良好指标。根据我们的评估结果,Robin-7b模型与Vicuna-13b相比达到了相当的性能。由于我们的Robin-7b模型是通过不同来源的数据集而非仅使用sharegpt进行微调的,这表明通过更小规模的模型和更好的数据集,Vicuna的性能还可以进一步提升甚至被超越。
Robin-7b的检查点现已可供工程师和研究人员下载使用(OptimalScale/LMFlow)。其有效性证明多维度评估对于大语言模型的发展确实至关重要。
参考文献#
Vicuna聊天机器人竞技场:https://chat.lmsys.org/?arena
lm-evaluation-harness: EleutherAI/lm-evaluation-harness
LMFlow: OptimalScale/LMFlow