大家读完觉得有意义记得关注和点赞!!!
一些工程信息:
-
训练
- 训练费用:
GPT-3 175B
单次训练 460 万美元 [3]。 - 能耗:训练 PaLM 两个月左右耗费约了 3.4 Gwh [6]。
- 数据集大小:
GPT-3 175B
训练了 4990 亿个 token [16]。 - OpenAI 训练集群:285k CPU, 10k high-end GPU。
- 训练费用:
-
推理
-
推理时间
- 最大 token 分别为 2、8 和 32 时,GPT-J 6B 模型的推理时间分别为 0.077s、0.203s 和 0.707s。
- 最大 token 固定为 32 时,InstructGPT 模型(davinci v2)的推理时间为
1.969s
。
- API 延迟:OpenAI API 的平均延迟时间从几百毫秒到几秒不等。
- InstructGPT davinci v2(175B)的理想去噪推理时间
0.21s/request
。摘要
本文是一份大语言模型(LLMs)实用指南, 目的是帮助从业者和用户更好地完成他们的下游自然语言处理(NLP)任务 —— NLP 是 LLM 的典型下游使用场景。本文将从模型、数据和下游任务的角度讨论和分析 LLM 的选型和使用,
- 首先简要介绍 GPT 风格和 BERT 风格的大语言模型;
- 然后讨论预训练数据、训练数据和测试数据对模型选型的影响;
- 然后详细讨论大语言模型适合和不适合哪些自然语言处理任务(use and non-use cases)。
-
此外,我们还探讨了大模型的 spurious biases,以及工程角度的效率、成本和延迟等重要因素, 以便从业者对实际部署大模型有一个全面了解。
本文旨在为研究人员和从业者提供一些最新的技术见解和最佳实践,让大模型能更成功地应用于各种 NLP 任务中。 我们维护了一个资源列表页并定期更新,见 github.com/Mooler0410/LLMsPracticalGuide。
1 引言
近年来,大语言模型的快速发展对自然语言处理领域产生了革命性的影响 [12, 128, 131]。 这些强大的模型在各种 NLP 任务 —— 从自然语言理解(NLU)到生成式任务(generation tasks)—— 中都展现出了巨大的潜力,甚至为通用人工智能(AGI)铺平了道路。 但另一方面,如何有效和高效地利用这些模型,就需要了解它们的实际能力和局限性, 还需要考虑具体 NLP 任务及其涉及的数据。
1.1 本文目的
作为一份给大模型从业者和用户的指南,本文主要关注下游 NLP 任务中如何使用 LLM。例如,
- 为什么选择或不选择某些 LLM;
- 如何根据模型大小、计算要求和特定领域预训练模型的可用性等等因素,选择最合适的 LLM。
-
本文总结了以下 LLM 实用指南:
- 自然语言理解:在数据分布不均或训练数据极少场景下,LLM 卓越的泛化能力(generalization ability);
- 自然语言生成:利用 LLM 的能力,为各种应用程序创建连贯、上下文相关的高质量文本;
- 知识密集型任务:利用 LLM 中存储的大量知识,解决一些需要特定领域专业知识或世界常识(general world knowledge)的任务;
- 推理能力:了解和利用 LLM 的推理能力,提升基于上下文的决策能力和解决问题能力。
-
1.2 通用大模型和微调模型的定义
为了评估(通用)大语言模型的能力,我们将把它们与微调模型(fine-tuned models)进行比较。 目前,LLM 和微调模型都还没有一个普遍认可的定义。考虑到实际效用,本文将使用如下定义:
- 大语言模型(LLM):在大量数据集上预训练的大型语言模型,没有针对特定任务的数据进行调优;
- 微调模型(fine-tuned models):通常较小,也是预训练,然后在较小的、特定任务的数据集上进一步调优,以优化其在该场景下的性能。
-
From a practical standpoint, we consider models with less than 20B parameters to be fine-tuned models. While it’s possible to fine-tune even larger models like PlaM (540B), in reality, it can be quite challenging, particularly for academic research labs and small teams. Fine-tuning a model with 3B parameters can still be a daunting task for many individuals or organizations.
1.3 本文组织
本文接下来的内容组织如下:
- 讨论当前最重要的两种模型(GPT 风格和 BERT 风格),让读者对 LLM 有一个简要理解;
- 深入研究影响模型性能的关键因素,包括预训练数据、训练/调优数据和测试数据;
- 深入探讨各种具体的 NLP 任务,包括知识密集型任务、传统 NLU 任务和生成任务;分析这些实际场景中的挑战等。
-
2 模型:实用指南
本节简要介绍当前业界最先进的 LLM。 这些模型在训练策略、模型架构和使用场景上有所不同。为了更清晰地理解 LLM 的发展, 本文将它们分为两种类型:
- encoder-decoder or encoder-only
- decoder-only
-
图 1 展示了语言模型的演进历程,
图 1:Fig. 1. The evolutionary tree of modern LLMs traces the development of language models in recent years and highlights some of the most well-known models. Models on the same branch have closer relationships. Transformer-based models are shown in non-grey colors: decoder-only models in the blue branch, encoder-only models in the pink branch, and encoder-decoder models in the green branch. The vertical position of the models on the timeline represents their release dates. Open-source models are represented by solid squares, while closed-source models are represented by hollow ones. The stacked bar plot in the bottom right corner shows the number of models from various companies and institutions.
几点说明:
-
decoder-only 模型逐渐成为 LLM 的主要发展趋势。
- LLM 早期阶段,encoder-only 和 encoder-decoder 模型更受欢迎;
- 随着 2021 年 GPT-3 的横空出世,decoder-only 模型完成了一次漂亮的翻身仗;
- 在 BERT 带来的最初爆炸性增长之后,encoder-only 模型逐渐开始失宠;
- OpenAI 在 LLM 领域始终保持领先地位。其他公司和机构正在努力追赶。 这种领导地位可能归因于 OpenAI 对其技术路线的坚守,即使最初大家并不看好这条路线;
- Meta 对开源 LLM 做出了重大贡献,并促进了 LLM 的研究。 在考虑对开源社区尤其是 LLM 相关的贡献时,Meta 是最慷慨的商业公司之一,Meta 开发的所有 LLM 都是开源的;
-
LLM 表现出闭源的趋势。
- LLM 早期阶段(2020 年之前),大多数模型都是开源的;
- 随着 GPT-3 的推出,公司越来越倾向于闭源他们的模型,如 PaLM、LaMDA 和 GPT-4:
- 因此,学术研究人员进行 LLM 训练实验变得更加困难,基于 API 的研究可能成为学术界的主要方法;
-
encoder-decoder 模型仍然还有前途。
- 业界仍然在这个方向积极探索,且大部分都是开源的;
- Google 对开源 encoder-decoder 架构做出了重大贡献,虽然 decoder-only 模型的灵活性和多功能性使得 Google 对这个方向的坚持似乎前途有些暗淡。
-
表 1 中简要总结了每种类型的特点和代表性 LLM。
表 1:当前各种大语言模型(LLM)总结
Encoder-Decoder or Encoder-only ( BERT-style
)Decoder-only ( GPT-style
)训练 Masked Language Models(遮盖某些单词) Autoregressive Language Models(自回归) 模型类型 判别式(Discriminative) 生成式(Generative) 预训练任务 预测遮掩掉的单词(完形填空) 预测下一个单词 大语言模型 ELMo [80], BERT [28], RoBERTa [65], DistilBERT [90], BioBERT [57], XLM [54], Xlnet [119], ALBERT [55], ELECTRA [24], T5 [84], GLM [123], XLM-E [20], ST-MoE [133], AlexaTM [95] GPT 3/4
[16,76], OPT [126]. PaLM [22], BLOOM [92], MT-NLG [93], GLaM [32],Gopher [83], chinchilla [41], LaMDA [102], GPT-J [107],LLaMA
[103], BloombergGPT [117]2.1 BERT 风格语言模型:encoder-decoder 或 encoder-only
自然语言数据易于获取。为了更好地利用超级数据集,人们已经提出了很多无监督训练范式(unsupervised training paradigms), 这也促进了自然语言的无监督学习(unsupervised learning)。
这其中,一种常见的方式是在给定上下文的情况下,预测句子中掩掉(masked)的单词。 这种训练范式被称为 Masked Language Model (MLM),
- 模型能深入理解单词之间以及单词与上下文的关系,
- 使用 Transformer 架构等技术在大量文本语料库上进行训练。
-
2.1.1 BERT paper
BERT:预训练深度双向 Transformers 做语言理解(Google,2019)
2.1.2 典型模型
典型模型包括
- BERT [28]
- RoBERTa [65]
- T5 [84]。
-
这种模型在许多 NLP 任务(如情感分析和 named entity 识别)中取得了 state-of-the-art 的结果, 已经成为自然语言处理领域的重要工具。
2.2 GPT 风格语言模型:decoder-only
尽管语言模型通常在架构上是任务无关的,但都需要在特定下游任务的数据集上进行微调。
研究人员发现,扩展语言模型的参数规模(scaling up) 能显著提高少样本(few-shot)甚至零样本(zero-shot)性能[16]。 少样本和零样本最成功的模型是自回归语言模型(Autoregressive Language Models,ALM),
- 这些模型的训练方式:给出前面的单词,生成这句话的下一个单词。
- 这些模型已被广泛用于文本生成和问题回答等 NLP 任务。
-
典型的自回归语言模型包括,
- GPT-3 [16]
- OPT [126]
- PaLM [22]
- BLOOM [92]
-
这其中,GPT-3 是一个划时代的模型,它首次通过提示(prompting)和上下文学习(in-context learning) 展示了少样本/零样本也能取得不错的性能,展现了自回归语言模型的优越性。
还有一些模型针对特定任务进行了优化,如
- CodeX [2]:代码生成
- BloombergGPT [117] :金融领域
-
最近的突破是 ChatGPT,它专门针对对话任务优化了 GPT-3,从而在各种实际应用中 互动性、连贯性,以及更好的上下文理解能力。
3 数据:实用指南
本节将会看到,在针对给定任务选择合适的模型时,数据(data)扮演着关键角色。 数据对模型效果的影响始于预训练(pre-training)阶段,并持续到训练(training)和推理(inference)阶段。
通用模型(LLM) vs. 微调模型(fine-tuned models)的选择
- 工作在 out-of-distribution 数据(例如 adversarial examples and domain shifts)时,通用模型比微调模型效果更好;
- 工作在有限的标注数据(limited annotated data)时,通用模型更好一些;
- 工作在充足的标注数据(abundant annotated data)时,两个模型都可以,看具体的任务要求;
- 建议在与最终下游任务类似的数据集上进行预训练。
3.1 预训练数据(Pretraining data)
预训练数据在大语言模型的开发中起着关键作用。
作为 LLM 超能力(remarkable capabilities)[5,47] 的基础, 预训练数据的质量、数量和多样性显著影响 LLM 的性能[124]。 常用的预训练数据包括多种文本数据,例如书籍、文章和网站。 数据经过精心挑选,以确保全面代表人类知识、语言差别和文化观点。
预训练数据的重要性在于,它能够极大影响语言模型对词汇知识、语法、句法和语义的理解,以及识别上下文和生成连贯回答的能力。 预训练数据的多样性也对模型性能起着至关重要的作用,LLM 的性能高度依赖于预训练数据的组成。 例如,
- PaLM [22] 和 BLOOM [92] 在多语言任务(multilingual tasks)和机器翻译方面表现出色,因为它们有丰富的多语言预训练数据;
- PaLM 还很擅长问答任务,因为预训练数据中包含大量社交媒体对话和书籍语料库 [22];
- GPT-3.5(code-davinci-002)预训练数据集中集成代码数据,因此代码执行和代码补全能力很强。
-
简而言之,在针对 NLP 任务做 LLM 选型时,建议选择那些在类似数据领域上进行过预训练的模型。
3.2 微调数据(Finetuning data)
如果已经有了通用大模型,接下来想部署到线上环境提供服务,那根据手头 标注数据(annotated data)的多少,
- 零(zero)
- 少(few)
- 丰富(abundant)
-
可以在部署之前先对大模型进行配置调整或模型微调。
可参考 OpenAI 是如何基于 GPT-3 微调出 InstructGPT 的: InstructGPT:基于人类反馈训练语言模型遵从指令的能力(OpenAI,2022)。 译注。
3.2.1 无标注数据:通用大模型 + zero-shot 配置
这种情况即没有标注数据,那就没有微调的可能了;在配置方面,将 LLM 设置为
zero-shot
是最合适的。LLM 的 zero-shot methods [120] 已经比之前更好。此外,这种场景由于模型参数保持不变(remain unaltered), 也不存在参数更新过程(parameter update process), 因此可以避免灾难性遗忘(catastrophic forgetting)[49]。
3.2.2 少量标注数据:通用大模型 + few-shot in-context learning
这种情况下,可以将手头少量的 few-shot examples 直接通过 prompt 输入到 LLM 中, 这被称为上下文学习(in-context learning), 这些数据可以有效地指导 LLM 针对具体任务进行优化(generalize to the task)。
- [16] 中指出,one-shot 和 few-shot 性能取得了显著的提高,甚至可以与 SOTA fine-tuned open-domain 模型的性能相当。
- 通过 scaling[16],LLMs 的 zero/few-shot 能力可以进一步提高。
- 还有人提出了一些 few-shot 学习方法来增强微调模型,例如 meta-learning[56]或 transfer learning[88]。但是,由于微调模型的规模较小且容易过拟合,性能可 能不如使用 LLMs。
-
3.2.3 丰富的标注数据:通用大模型/微调模型
对于特定任务有大量 annotated data 可用的情况下,微调模型和 LLM 都可以考虑。
- 大多数情况下,对模型进行微调(fine-tuning the model)可以很好地适应数据;
- 通用模型的一个优势是可用于满足一些约束条件,例如隐私 [99]。
-
总之,这种情况下使用微调模型还是 LLM 就看具体任务以及所需的性能、计算资源和部署约束等因素了。
3.2.4 小结:通用模型 vs. 微调模型的选型
简而言之,
- 不管标注数据有多有少,通用大模型都是可以用的;
- 有丰富的 annotated data 时可以考虑使用微调模型。
-
3.3 测试数据/用户数据(Test data / user data)
在部署 LLM 用于实际任务时,经常面临测试/用户数据与训练数据之间分布差异导致的性能问题。 这些差异可能涉及到
- domain shifts [132]
- out-of-distribution variations [31]
- adversarial examples [82]
-
它们极大降低了微调模型在实际应用中的有效性。 原因是微调模型都是基于特定数据分布拟合的,generalize to OOD data 的能力较差。
另一方面,通用模型在这种情况表现得相当好,因为它们没有明确的拟合过程。 此外,最近的人类反馈强化学习(Reinforcement Learning from Human Feedback,
RLHF
)进一步增强了 LLM 的泛化能力[77]。例如, - InstructGPT 展示了在 a wide range of tasks 的多种指令中的熟练理解能力,甚至偶尔还能理解混合语言指令,尽管这样的指令很少。
- ChatGPT 在大多数 adversarial and out-of-distribution (OOD) 分类和翻译任务上表现出一致的优势 [109]。 它在理解对话相关的文本方面的优越性,使得它在 DDXPlus 数据集 [101]上表现出色,这是一个设计用于 OOD 评估的医学诊断数据集。
-
4 NLP 任务:实用指南
本节详细讨论 LLM 在各种 NLP 任务中适合与不适合的场景,以及相应的模型能力。 如图 2 所示,我们将所有讨论总结成一个决策流程,它可以作为面对任务时快速决策的指南:
图 2: The decision flow for choosing LLMs or fine-tuned models 2for user’s NLP applications. The decision flow helps users assess whether their downstream NLP applications at hand meet specific conditions and, based on that evaluation, determine whether LLMs or fine-tuned models are the most suitable choice for their applications. During the decision process in the figure, Y means meeting the condition, and N means not meeting the condition. The yellow circle for Y of the last condition means there’s no model working well on this kind of application.
4.1 传统 NLU 任务
Traditional NLU tasks are some fundamental tasks in NLP including text classification, named entity recognition (NER), entailment prediction, and so on. Many of them are designed to serve as intermediate steps in larger AI systems, such as NER for knowledge graph construction.
1 As we mention in Section 1, LLMs are pretrained on large and diverse datasets without fine-tuning, while fine-tuned models are typically pretrained on a large dataset and then further trained on a smaller, task-specific dataset to optimize their performance on that task.
Remark 2
Fine-tuned models generally are a better choice than LLMs in traditional NLU tasks, but LLMs can provide help while requiring strong generalization ability.
4.1.1 No use case.
In most natural language understanding tasks, such as tasks in GLUE[106] and SuperGLUE[105], fine-tuned models still have better performance, if such tasks come with rich well-annotated data and contain very few out-of-distribution examples on test sets. For different tasks and datasets, the gap between small fine-tuned models and LLMs varies.
In text classification, on most datasets, LLMs perform slightly worse than fine-tuned models. For sentiment analysis, such as on IMDB [69] and SST [94], fine-tuned models and LLMs perform equally well. For toxicity detection, which is another iconic text classification task, the gap is much larger. All LLMs cannot perform well on this task, and on CivilComments [13] even the best one is only better than random guessing [59]. On the other hand, most popular fine-tuned models can obtain much better performance [33]. and the Perspective API 3 is still one of the best for detecting toxicity. This API is powered by a multilingual BERT-based model, which is tuned on publicly available toxicity data and several smaller single-language CNNs distilled from this model. This might be due to the fact that toxicity is defined by subtle nuances in linguistic expressions, and large language models are unable to accurately comprehend this task solely based on the provided input.
The trend of performance gaps is similar in some other tasks. For natural language inference (NLI)
-