共计 12358 个字符,预计需要花费 31 分钟才能阅读完成。
作者:杨靖锋,现任亚马逊科学家,本科毕业于北大,硕士毕业于佐治亚理工学院,师从 Stanford 杨笛一传授。
译文由杨昊桐翻译,王骁订正。感激靳弘业对第一版稿件的倡议,感激陈三星,符尧的探讨和倡议。(本文经受权后由 OneFlow 公布。原文:https://jingfengyang.github.io/gpt)
为什么所有公开的对 GPT-3 的复现都失败了?咱们应该在哪些工作上应用 GPT-3.5 或 ChatGPT?
对于那些想要复现一个属于本人的 GPT-3 或 ChatGPT 的人而言,第一个问题是要害的。第二个问题则对那些想要应用它们的人是重要的(下文提到 GPT-3,次要是指 GPT-3.5 或 InstructGPT 的最新版本,除了一些指向 GPT-3 原文的状况)。
这篇博客包含我在认真从新查看了一系列文章的细节之后给出的总结,以及对下面两个问题我集体的思考。这些文章包含且不限于:GPT-3, PaLM, BLOOM, OPT, FLAN-T5/PaLM, HELM 等。均为集体意见,仅供参考。如果您有更牢靠的参考资料或者更理论的教训,欢送斧正。
1
为什么所有公开的对 GPT- 3 的复现都失败了?
这里,我称之为“失败”,是指训练得出模型有靠近 GPT-3 或者更大的参数量,但仍无奈与 GPT-3 原始文献中报告的性能所匹配。在这一规范下,GPT-3 和 PaLM 是“胜利”的,但这两个模型都不是公开的。而所有的公开模型(例如:OPT-175B 和 BLOOM-176B)都在肯定水平上“失败”了。然而咱们依然能够从这些“失败”中汲取一些教训。
咱们须要留神的是,如果可能屡次尝试各种不同的训练设置,开源社区可能最终能够复现 GPT-3。但截至目前,训练另一个版本的 OPT-175B 的开销依然太过昂扬——对于如此大规模的模型,一次训练就将须要在约 1000 个 80G A100 GPU 上破费至多 2 个月的工夫(数据来自于 OPT 的原始文献)。
只管一些文章(例如 OPT-175B 和 GLM-130B)宣称,它们在一些工作上可能匹配甚至超过原始的 GPT-3 的体现,在更多 GPT-3 曾经测试过的工作上,这种申明依然是存疑的。同时,依据大多数使用者在更多样的工作上的教训,以及 HELM 的评估来看,最近的 OpenAI GPT-3 的 API 体现也依然比这些开源模型更好。
只管它背地的模型可能应用了指令微调(instruction tuning, 正如 InstructGPT 那样),相似的应用了指令微调的 OPT 版本(OPT-IML)和 BLOOM 版本(BLOOMZ)也依然远比 InstructGPT 和 FLAN-PaLM(PaLM 的指令微调版本)要差得多。
依据文章的细节,相比 GPT-3 和 PaLM 的胜利,有多个可能的起因导致了 OPT-175B 和 BLOOM-176B 的失败。我将其分为两个局部:预训练数据和训练策略。
预训练数据
让咱们首先察看 GPT-3 是如何筹备和应用预训练数据的。GPT-3 在共计 300B 的 token 上进行训练,其中 60% 来自通过筛选的 Common Crawl,其它则来自 webtext2(用于训练 GPT-2 的语料库)、Books1、Books2 和维基百科。
更新版本的 GPT-3 还用了代码数据集进行训练(例如 Github Code)。每个局部的占比并不与原始数据集的大小成比例,相同,具备更高质量的数据集被更加频繁地采样。导致 OPT-175B 和 BLOOM-176B 失败的,可能是以下三个难点,它们使得开源社区难以收集到相似的数据:
1. 第一点是一个具备良好性能的用于筛选低质量数据的分类器。它被用于构建 GPT-3 和 PaLM 的预训练数据集,但在 OPT 和 BLOOM 的训练中却没有被采纳。一些文章曾经展现,一个用更少但品质更高的数据集训练的预训练模型,能够在性能上超过另一个用更多的混合品质数据集训练的模型。当然,数据的多样性依然是非常重要的,正如咱们将在第三点中探讨的。因而,人们该当十分小心地解决在数据多样性和品质之间的衡量。
2. 第二点是预训练数据集的去重。去重有助于防止预训练模型屡次面对雷同的数据后记住它们或者在其上过拟合,因而有助于进步模型的泛化能力。GPT-3 和 PaLM 采纳了文档级别的去重,这同样被 OPT 所采纳。但 OPT 预训练的去重 Pile 语料库中仍有许多反复存在,这也可能导致它较差的性能(注:在一些最近的文献中显示去重对于预训练语言模型的重要性可能没有设想中大)。
3. 第三点是预训练数据集的多样性,包含畛域多样性、格局多样性(例如:文本、代码和表格)和语言多样性。OPT-175B 所应用的 Pile 语料库宣称有着更好的多样性,但 BLOOM 采纳的 ROOTS 语料库则有太多的曾经存在的学术数据集,不足 Common Crawl 数据所蕴含的多样性。这可能导致 BLOOM 性能更差。作为比照,GPT3 来自 Common Crawl 语料的占比则要高得多,而它们来自宽泛畛域,是多样的,这也可能是 GPT-3 可能作为首个通用聊天机器人 ChatGPT 的根底模型的起因之一。
请留神:尽管一般来说,多样性的数据对于训练一个通用的 LLM(Large Language Model,大规模语言模型)是重要的,但特定的预训练数据分布,则会对 LLM 在特定的上游工作上的性能产生微小的影响。例如,BLOOM 和 PaLM 在多语言数据上有更高的占比,这导致它们在一些多语言工作和机器翻译工作上的性能更高。
OPT 应用了很多对话数据(例如 reddit),这可能是它在对话中体现好的起因之一。PaLM 有很大的占比在社交媒体对话中,这可能是它在多种问答工作和数据集上有着卓越体现的起因。同样的,PaLM 和更新版本的 GPT-3 有很大比例的代码数据集,这加强了它们在代码工作上的能力,以及可能加强了它们 CoT (Chain-of-Thought,思维链) 的能力。
一个乏味的景象是,BLOOM 在代码和 CoT 上的体现依然是较差的,只管它在预训练过程中应用了代码数据。这可能暗示着独自代码数据自身并不能保障模型的代码和 CoT 能力。
总之,一些文章表明了下面三点的重要性,即:通过数据去重防止记忆和过拟合,通过数据筛选以失去高质量数据,保证数据多样性以确保 LLM 的泛化性。但可怜的是,对于 PaLM 和 GPT-3 预处理这些数据的细节,或者这些预训练数据自身,依然没有颁布,这使得公共社区很难去复现它们。
训练策略
此处训练策略包含训练框架、训练持续时间、模型架构 / 训练设置、训练过程中的批改。在训练十分大的模型时,它们被用于取得更好的稳定性和收敛性。
一般来说,因为未知的起因,预训练过程中宽泛察看到损失尖峰(loss spike)和无奈收敛的状况。因而,泛滥的对训练设置和模型架构的批改被提出,用以防止这些问题。然而其中一些批改在 OPT 和 BLOOM 之中还不是最优解,这可能导致它们的性能较差。GPT-3 并没有明确提到他们是如何解决这个问题的。
1.训练框架。一个参数量大于 175B 的模型往往须要 ZeRO 式的数据并行(分布式的优化器)和模型并行(包含张量并行(tensor parallel)、流水线并行(pipeline parallel),有时还包含序列并行(sequence parallel))。OPT 采纳了 ZeRO 的 FSDP 实现,以及模型并行的 Megatron-LM 实现。BLOOM 采纳了 ZeRO 的 Deepspeed 实现和模型并行的 Megatron-LM 实现。
PaLM 采纳了 Pathways,这是一个基于 TPU 的模型并行和数据并行零碎。GPT-3 的训练零碎的细节依然未知,但它们至多在肯定水平上应用了模型并行(一些人称它应用了 Ray)。不同的训练零碎和硬件可能导致不同的训练时的景象。显然,一些在 PaLM 的文章中出现的、用于 TPU 训练的设置,可能并不适用于其它所有模型应用的 GPU 训练。
硬件和训练框架的一个重要的影响是,人们是否能够应用 bfloat16 去存储模型权重和中间层激活值等。这曾经被证实是稳固训练的一个重要因素,因为 bfloat16 能够示意更大范畴的浮点数,可能解决在损失尖峰时呈现的大数值。在 TPU 上 bfloat16 是默认设置,这可能是 PaLM 可能胜利的一个机密。然而在 GPU 上,以前人们次要应用 float16,这是 V100 中混合精度训练的惟一抉择。
OPT 应用了 float16,这可能是其不稳固的因素之一。BLOOM 发现了这样的问题并最终在 A100 GPU 上应用了 bfloat16,但它没有意识到这种设置的重要性,因而在第一个词向量层后引入额定的层归一化(layer normalization),用于解决他们应用 float16 的初步试验中的不稳定性。然而,这种层归一化已被证实会导致更蹩脚的零样本泛化(zero-shot generalization),这可能是 BLOOM 失败的一个因素。
2.训练过程中的批改。OPT 做了很多中途调整并从最近的 checkpoint 重启训练,包含扭转截断梯度范数 (clip gradient norm) 和学习率,切换到简略的 SGD 优化器而后回到 Adam,重置动静损失标量 (dynamic loss scalar),切换到更新版本的 Megatron 等等。
这种中途调整可能是 OPT 失败的起因之一。相比之下,PaLM 简直没有做任何中途调整。它只是当损失尖峰呈现时,从尖峰开始前大概 100 步的 checkpoint 从新开始训练,并跳过了大概 200-500 个 batch 的数据。仅仅依附这种简略的重启,PaLM 就获得神奇的胜利。这是因为它在预训练数据构建期间就曾经实现采样,因而模型具备在 Bit 意义上的确定性,以及它对模型架构和训练设置进行了许多批改以取得更好的稳定性。PaLM 中的此类批改在下一点中展现。
3.模型架构 / 训练设置:为了使训练更稳固,PaLM 对模型架构和训练设置进行了多项调整,包含应用 Adafactor 的批改版本作为优化器,缩放在 softmax 之前的输入 logit,应用辅助损失来激励 softmax 归一化器靠近 0,对词向量和其余层权重应用不同的初始化,在前馈层和层归一化中不应用偏差项,并且在预训练期间不应用 dropout。
请留神,GLM-130B 中还有更多有价值的内容对于如何稳固地训练十分大的模型,例如:应用基于 DeepNorm 的后置层归一化而不是前置层归一化,以及词向量层梯度膨胀。以上大多数模型批改没有被 OPT 和 BLOOM 采纳,这可能会导致它们的不稳固和失败。
4.训练过程:如下表所示,原始的 GPT-3 预训练过程见过的 token 数与 OPT 和 BLOOM 靠近,而 PaLM 则远远超过了它们。同样,PaLM 和 GPT-3 预训练语料库都大于 BLOOM 和 OPT。因而,在更多的 token 上、用更大规模的高质量语料库进行预训练可能是 GPT-3 和 PaLM 胜利的一个重要因素。
除了下面列出的四点,还有一些其它因素,它们可能对于更稳固的训练并不重要,但依然可能影响最终的性能。
第一点,PaLM 和 GPT-3 都应用了在训练过程中从小到大逐步减少的 batch size,这曾经被证实对于训练一个更好的 LLM 是无效的,然而 OPT 和 BLOOM 都应用了恒定的 batch size。
第二点,OPT 应用了 ReLU 激活函数,而 PaLM 应用 SwiGLU 激活函数,GPT-3 和 BLOOM 应用 GeLU,它通常使得训练的 LLM 的性能更好。
第三点,为了更好的建模更长的序列,PaLM 应用 RoPE 词向量,BLOOM 应用 ALiBi 词向量,而原始的 GPT-3 和 OPT 应用学习失去的词向量,这可能影响在长序列上的性能。
2
咱们应该在哪些工作上应用 GPT-3.5 或 ChatGPT?
我尝试解释咱们应该在哪些工作和利用上应用 GPT-3,而哪些则不该应用。为了展现 GPT-3 是否适宜某个特定工作,我次要比拟了带有提醒(prompting)的 GPT-3 和通过微调的更小的模型,这些小模型有时还退出了其余非凡的设计。鉴于最近呈现的更小的而且能够微调的 FLAN-T5 模型的良好性能,这一问题更加重要。
在现实情景下,如果微调 GPT-3 的累赘是可能承当的,它可能带来更进一步的晋升。然而,在一些工作上通过微调 PaLM-540B 带来的晋升是如此无限,让人们狐疑在一些工作中微调 GPT-3 是否是值得的。从迷信的角度来看,更偏心的比拟应在微调 GPT-3 和提醒 GPT-3 之间进行。然而,要应用 GPT-3,人们可能更关怀将提醒 GPT-3 和微调一个更小的模型去进行比照。
留神到,我次要关怀的是将实现工作的精确度作为度量,但依然存在很多其它重要的维度,例如:无害性(toxicity)、公平性等,它们也应该在决定是否应用 GPT-3 时被纳入思考,正如 HELM 的文章中所出现的。下图展现了一个粗略的决策流程,心愿它可能作为一个有用的实际指南,无论对于已有工作还是一个全新的工作。
注 1:因为在对话场景下的良好对齐,ChatGPT 作为一个聊天机器人体现优异。但咱们通常应用 GPT-3、InstructGPT (GPT-3.5)、以及 Codex 这些 ChatGPT 背地的模型作为在更多任务和应用场景下的通用模型。
注 2:这一节中的论断是基于一些对模型以后版本的发现失去的,这可能不适用于将来的更强的模型。因为,应用更多与指标数据集靠近的预训练数据、学术数据集指令调整(例如提醒一个 FLAN-PaLM 可能会带来更强的性能,它仍未公开)或者通过 RLHF 以使得模型对指标工作的更好对齐,这些都可能使得模型在指标工作中体现更好,即便有时这会就义在其余场景下的能力(例如,InstructGPT 的“对齐税 /Alignment tax”)。
在这种状况下,很难判断 GPT 是进行泛化和跨工作泛化,还是仅仅在预训练时就曾经记住了一些测试样例,或者说见过那些在预训练时所谓“没有见过”的工作。然而,记忆在实践中是否真的是一个重大的问题,这依然值得狐疑。因为用户与钻研人员不同,如果他们发现 GPT 曾经能够在他们的测试数据上体现良好,他们可能不会关怀 GPT 在预训练期间是否看到了雷同或类似的数据。
不论如何,为了最大化这一节在以后的实用价值,我尽最大致力,试图比拟微调公共的更小型的模型(T5、FALN-T5、一些非凡设计的微调 SOTA 模型等)和最近的 GPT-3 (GPT-3.5、InstructGPT)、PaLM(或 FLAN-PaLM)的最佳性能,如果这些模型的测评数据够取得的话。
一般来说,有以下这些状况更适宜应用提醒 GPT-3。令人诧异的是,如果咱们回看 GPT-3 论文的介绍局部,在那里很多初始设计时的指标涵盖了这些工作。这意味着那些当初雄伟的指标曾经被局部实现了。
1. 创造性和简单的工作:包含代码(代码补全、自然语言指令生成代码、代码翻译、bug 修复)、文本摘要、翻译、创造性写作(例如写故事、文章、邮件、报告,以及写作的改良等)。正如原始的 GPT-3 文献中所示,GPT-3 被设计用于那些艰难和“不可能标注”的工作。在肯定水平上,对于这些工作,先前那种通过微调的模型不可能利用于真实世界的利用;而 GPT-3 使它们成为可能。举个例子,最近的文章显示,过来的人类标注的文本摘要曾经被 LLM 生成的摘要所超过。
在某些须要从低、中资源语言翻译到英语的机器翻译工作中,通过提醒 PaLM-540B,它甚至可能超过微调模型。
在 BLOOM-176B 中也察看到了相似的趋势。这是因为英语数据通常在预训练语料库中占了很大比例,因而 LLM 善于生成英语语句。留神到,为了在代码工作中取得良好性能,只管 Codex 和 PaLM 曾经在整体上具备比之前模型更好的性能,咱们仍需容许 LLM 屡次(k 次)采样,以通过测试样例(应用 pass@k 作为度量)。
2. 只有多数标注或者没有标注数据的工作。 正如原始的 GPT-3 文献所说,GPT-3 是为了那些“低廉标注”的工作设计的。在这种状况下,用极少量标注数据微调一个更小的模型通常不可能达到 GPT-3 在零样本(zero-shot)、单样本(one-shot)或少样本(few-shot)的状况下的体现。
3. 散布外(Out-of-distribution, OOD)泛化。给定一些训练数据,传统的微调可能会过拟合训练集并且有较差的散布外泛化能力;而少样本的上下文学习(in-context learning)可能有更好的散布外泛化性。例如,带有提醒的 PaLM 可能在反抗自然语言推断工作(Adversarial Natural Language Inference,ANLI)上超过通过微调的 SOTA 模型,而它在失常的语言推断工作上可能依然劣于微调的 SOTA。
另一个例子是提醒 LLM 比微调模型显示出更好的组合泛化能力。更好的散布外泛化性可能是因为在上下文学习期间不须要更新参数,防止了过拟合;或者因为那些过来的散布外样例对于 LLM 而言是散布内的。这种应用场景被阐释为 GPT-3 的初始设计指标之一:“微调模型在特定工作的数据集上的性能能够达到所谓的人类程度,实际上可能夸张了在真实世界中该工作上的性能,这是因为模型只是学到了训练集中存在的虚伪的相关性,以及模型适度拟合了这个训练集狭隘的散布。”
4. 须要 解决多种工作的能力,而非关注特定工作上的卓越体现。聊天机器人就是这样一种场景,其中,用户期待它可能正确地响应各种各样的工作。这可能就是为什么 ChatGPT 是 GPT-3 最胜利的应用场景之一。
5. 那些检索不可行的 常识密集型工作。存储在 LLM 中的常识能够显著地进步在常识密集型工作的性能,例如闭卷问答和 MMLU(一个基准数据集,包含来自于 STEM、人文、社科等 57 个学科的选择题,它用于测试 LLM 的世界常识和问题解答的能力)。然而,如果事后检索的步骤能够被退出来做检索加强的生成,一个微调的更小的模型(例如 Atlas 模型)甚至能够有更好的性能(在闭卷的 NaturalQuestions 和 TrivialQA 数据集上,Atlas 比 PaLM 和最新的 InstructGPT 都要更好)。
检索或者传统的搜寻同样是将 GPT-3 或 ChatGPT 整合到搜索引擎中的一个必要的步骤,这能够晋升生成的准确性,并且提供更多的参考链接以加强说服力。但咱们应该抵赖,在某些状况下,检索是不容许或者不容易的,比方加入 USMLE (美国医学执照考试),谷歌曾经证实基于 FLAN-PaLM 的模型能够在其中做得很好。
同样的,在 MMLU 基准集中,PaLM-540B 有着比其余微调模型更好的性能,甚至后者联合了检索,只管最新版本的 InstructGPT 还差于这些带有检索的微调 SOTA。也请留神,指令调整一个较小的模型也能够实现与更大规模的 LLM 模型靠近的成果,这曾经在 FLAN-T5 中展示。
6. 一些 艰难的工作,其中须要LLM 的涌现能力,比方带有 CoT 的推理和 BIG-Bench 中的简单工作(包含逻辑推理、翻译、问答、数学工作等)。举个例子,PaLM 曾经展现,在 7 个包含数学和常识推理的多步推理工作上,8- 样例的 CoT 比微调 SOTA 在其中 4 个工作上更好,在其它 3 个工作上则根本持平。
这样的胜利体现要同时归因于更大规模的模型和 CoT。PaLM 还显示了在 BIG-Bench 工作上从 8B 到 62B 再到 540B 模型的不间断的体现晋升,这超出了规模定律(scaling law),被称为 LLMs 的涌现能力。另外,带有 5 个 Prompt 的 PaLM-540B 在 Big-Bench 的 58 项常见工作中的 44 项上优于之前的(少样本)SOTA。PaLM-540B 在 Big-Bench 的总体体现也优于人类的均匀体现。
7. 一些须要 模拟人类 的场景,或者是其指标是 制作性能达到人类程度的通用人工智能。同样的,ChatGPT 是其中的一个案例,ChatGPT 使本人更像是一个人,从而获得了景象级的胜利。这也被阐释为 GPT-3 的初始设计指标之一:“人类不须要大规模监督数据集来学习大多数语言工作。最多只须要几个例子,人类就能够将各种工作和技巧无缝地混合在一起或者在它们之间切换。因而传统的微调模型导致了与人类的不偏心比拟,只管他们宣称在许多基准数据集中有着人类程度的性能。”
8. 在 一些传统的靠近于语言建模的 NLP 工作 上,少样本 PaLM-540B 可能大抵匹配或者甚至超过微调的 SOTA,例如:一段话最初一句和最初一个单词的完型填空,以及回指(anaphora)解析。须要指出,在这种状况下,零样本的 LLM 曾经足够了,单样本或少样本的示例则通常帮忙不大。
另一些工作则并不需要提醒(prompt)一个 GPT-3 这样规模的模型:
1. 调用 OpenAI GPT-3 的 API 超出了估算(例如对于没有太多钱的守业公司)。
2. 调用 OpenAI GPT-3 的 API 存在平安问题(例如数据泄露给 OpenAI,或者可能生成的无害内容)。
3. 没有足够的工程或者硬件资源去部署一个类似大小的模型及打消推断的提早问题。例如,在没有最先进的 80G 的 A100 或者工程资源来优化推断速度的状况下,简略地应用 Alpa 在 16 个 40G 的 A100 上部署 OPT-175B 须要 10 秒能力实现单个样例的推断,这对于大多数事实世界的在线应用程序来说是无奈承受的提早。
4. 如果想用 GPT-3 代替一个性能良好的、高准确度的微调模型,或者想要在一些特定的繁多工作和应用场景上来部署一个 NLU(Natural Language Understanding,自然语言了解)或 NLG(Natural Language Generating,自然语言生成)模型,请三思这是否值得。
- 对于一些传统的 NLU 工作,比方分类工作,我倡议首先尝试微调 FLAN-T5-11B 模型,而不是提醒 GPT-3。例如,在 SuperGLUE,一个艰难的 NLU 基准数据集(包含浏览了解、文本蕴含、词义消歧、共指消解和因果推理等工作)上,所有的 PaLM-540B 的少样本提示性能都劣于微调的 T5-11B,并在其中大多数工作上有着显著的差距。如果应用原始 GPT3,其提醒后果与微调 SOTA 的后果之间的差距更大。乏味的是,即便是通过微调的 PaLM 也仅比通过微调的 T5-11B 有着无限的改良,而通过微调的 PaLM 甚至比通过微调的编 - 解码器模型 32B MoE 模型还要差。这表明应用更适合的架构(例如编 - 解码器模型)微调较小的模型依然是比应用十分大的仅解码器模型更好的解决方案,无论是微调还是提醒来应用这些大模型。依据最近的一篇论文,即便对于最传统的 NLU 分类工作——情感剖析,ChatGPT 依然比通过微调的较小模型差。
- 一些不以事实世界数据为根底的艰难工作。例如,BigBench 中依然有许多对 LLM 来说艰难的工作。具体地说,在 35% 的 BigBench 工作上,人类的均匀体现依然高于 PaLM-540B,并且在某些工作中,扩充模型规模甚至杯水车薪,例如导航和数学演绎。在数学演绎中,当提醒中的假如不正确时(例如“2 是奇数”),PaLM 会犯很多谬误。在逆规模定律比赛 (Inverse Scaling Law Challenge) 中,也察看到了相似的趋势,例如从新定义数学符号(例如提醒可能“将 π 从新定义为 462”)后再应用这个符号。在这种状况下,LLM 中的事实世界先验常识太强而无奈被提醒笼罩,而微调较小的模型可能能够更好地学习这些反事实常识。
- 在很多多语言工作和机器翻译工作中,应用少样本的提醒 GPT 依然要比微调的更小的模型更差。这很可能是因为除英语之外的其它语言在预训练语料库中占比很少。
- 当从英语翻译为其余语言,以及翻译高资源语言到英语时,PaLM 和 ChatGPT 依然比在机器翻译工作上微调的更小的模型要差。
- 对于多语言问答工作来说,在少样本的 PaLM-540B 和微调的更小模型之间还存在较大差距。
- 对于多语言文本生成(包含文本摘要和数据到文本生成),在少样本的 PaLM-540B 和微调的更小模型之间还存在较大差距。在大部分工作上即便微调的 PaLM-540B 也仅仅比微调的 T5-11B 有无限的晋升,并依然劣于微调的 SOTA。
- 对于常识推理工作,在最好的少样本提醒 LLM 和微调的 SOTA 之间依然存在着较大的差距,例如:OpenbookQA,ARC(包含 Easy 和 Challenge 版本)以及 CommonsenseQA(甚至应用了 CoT 提醒)。
- 对于机器浏览了解工作,在最好的少样本提醒 LLM 和微调的 SOTA 之间依然存在着较大的差距。在大多数数据集上,这个差距可能十分微小。这可能是因为所有答复问题所需的常识都曾经蕴含在给出的文本中,并不需要 LLM 中的额定常识。
总结一下,下面的这些工作能够被归为以下类别之一:
- 一些 NLU 工作,既不须要额定的常识也不须要 LLM 的生成能力。这意味着测试数据大多数都和手头的训练数据在同一个散布之中。在这些工作上,过来微调的较小模型曾经体现很好了。
- 一些不须要额定的来自 LLM 中常识的工作,因为每一个例子曾经在上下文或者提醒中蕴含了足够的常识,例如机器浏览了解。
- 一些须要额定常识,但不太可能从 LLM 中取得这样的常识,或者 LLM 不太可能见过相似散布的工作,例如一些低资源语言中的工作,LLM 在这些语言中只有无限的预训练样本。
- 一些工作,须要与 LLM 中蕴含的常识所不统一的常识,或者并非基于事实世界的语言数据的常识。因为 LLM 是在事实世界的语言数据上训练的,它难以在新的工作中利用反事实常识笼罩原有常识。除了在逆规模定律挑战中的“从新定义数学符号”问题之外,还有另一个工作,即复述有轻微改变的名言,其中 LLM 被要求复述一个在 prompt 中呈现的被批改的名言。在这种状况下,LLM 偏向于反复出名言的原始版本,而非批改过后的版本。
- 一些工作须要来自 LM 的常识,但也重大依赖于操纵这些常识,而 LLM 的“预测下一个 token”的指标无奈轻易实现这种操纵。一个例子是一些常识推理工作。CoT 和 least-to-most 提醒能够帮忙 LLM 推理的起因可能是他们能够更好地调出那些间断的预训练文本,这些间断文本恰好模拟了布局和合成 / 组合常识的过程。
因而,CoT 和 least-to-most 提醒在一些数学推理、代码和其余简略的自然语言推理工作中体现良好,但在许多常识推理(例如在逆规模定律比赛中展现的演绎推理工作)和自定义符号推理工作中依然体现不佳。这些工作通常不被自然语言数据中的大多数真实世界的间断序列所蕴含,而须要操纵扩散在各处的常识来实现。
- 一些容易受到上下文学习样例或者真实世界数据中存在的虚伪相关性影响的工作。一个例子是来自于逆规模定律比赛中的波及否定词的问答。如果一个 LLM 被发问:“如果一只猫的体温低于平均水平,它就不在……”,它偏向于答复“危险之中”而非“平安范畴“。这是因为 LLM 受到常见的“低于均匀体温”和“危险”之间的关系所摆布,而在否定的状况下,这是一种虚伪的相关性。
- 一些指标与解决语言数据显著不同的工作,例如:回归问题,其中微调模型很难被 LLM 取代。至于多模态工作,它们不能被 LLM 解决,然而可能能从大规模的预训练多模态模型中受害。
- 一些工作不须要 LLM 的涌现能力。为了精确地对更多此类工作进行甄别,咱们须要更好地理解 LLM 训练期间,涌现能力是从何产生的。
留神到,在事实世界的应用场景中,即便因为无奈满足提早要求因此无奈在线地应用 LLM,依然能够应用 LLM 离线生成或标注数据。此类主动标注的标签能够在线查找并提供给用户,或用于微调较小的模型。应用此类数据微调较小的模型能够缩小训练模型所需的人工正文数据,并将 LLM 的一些新兴能力(例如 CoT)注入较小的模型。
总之,当有足够的标记数据时,思考到开源 FLAN-T5 在许多工作中的惊人性能,我举荐那些调用 OpenAI API 的资源无限的个体,应该首先尝试在指标工作上微调 FLAN-T5-11B。此外,依据最近在 MMLU 数据集上,FLAN-PaLM-540B 与最新版本的 InstructGPT 的性能(依据 HELM)相比好得惊人的性能,谷歌可能领有比 OpenAI 更弱小的根底模型,如果 OpenAI 曾经通过 API 公布了他们取得的最强的 LLM。
谷歌惟一剩下的步骤是通过人类反馈使这个 LLM 与对话场景对齐(alignment)。如果他们很快公布相似 ChatGPT 的或者更好的聊天机器人,我不会感到诧异——只管他们最近“失败”地展现了一版可能基于 LaMDA 的 Bard。
参考文献:
[1] HELM: Holistic Evaluation of Language Models and its board: https://crfm.stanford.edu/helm/v0.2.0/?group=core_scenarios
[2] GPT3: Language Models are Few-Shot Learners
[3] PaLM: Scaling Language Modeling with Pathways
[4] OPT: Open Pre-trained Transformer Language Models
[5] BLOOM: A 176B-Parameter Open-Access Multilingual Language Model
[6] FLAN-T5/PaLM: Scaling Instruction-Finetuned Language Models
[7] The Flan Collection: Designing Data and Methods for Effective Instruction Tuning
[8] InstructGPT: Training language models to follow instructions with human feedback
[9] Yao Fu’s blog on“Tracing Emergent Abilities of Language Models to their Sources”
[10] Inverse Scaling Prize: https://github.com/inverse-scaling/prize
[11] Is ChatGPT a General-Purpose Natural Language Processing Task Solver?
其他人都在看
OneFlow v0.9.0 正式公布
从 0 到 1,OpenAI 的创建之路
一块 GPU 搞定 ChatGPT;ML 零碎入坑指南
YOLOv5 教程: 计算 mAP 用到的 Numpy 函数详解
比快更快,开源 Stable Diffusion 刷新作图速度
OneEmbedding: 单卡训练 TB 级举荐模型不是梦
GLM 训练减速:性能最高晋升 3 倍,显存节俭 1 /3
欢送 Star、试用 OneFlow 最新版本:https://github.com/Oneflow-Inc/oneflow/