大规模语言模型
从理论到实践
张奇 桂韬 郑锐 ⻩萱菁 著
预览版
2023 年 9 月 10 日
·
前言
2018 年 Google 的研究团队开创性地提出了预训练语言模型 BERT
[1]
,该模型在诸多自然语言
处理任务中展现了卓越的性能。这激发了大量以预训练语言模型为基础的自然语言处理研究,也
引领了自然语言处理领域的预训练范式的兴起。然而,尽管这一变革影响深远,但它并没有改变
每个模型只能解决特定问题的基本模式。2020 年,OpenAI 发布了 GPT-3 模型,其在文本生成任务
上的能力令人印象深刻,并在许多少标注(Few-shot)的自然语言处理任务上取得了优秀的成绩。
但是,其性能并未超越专门针对单一任务训练的有监督模型。之后,研究者们陆续提出了针对大
语言模型(Large Language Model,LLM)的提示词(Prompt)学习方法,并在各式各样的自然语
言处理任务中进行了试验,同时也提出了模型即服务范式(Model as a Service,MaaS)概念。然
而,在大部分情况下,这些方法的性能并未明显地超过基于预训练微调范式的模型。所以,这些
方法的影响主要还是局限在自然语言处理的研究人员群体中。
2022 年 11 月,ChatGPT 的问世展示了大语言模型的强大潜能,并迅速引起了广泛关注。Chat-
GPT 能够有效理解用户需求,并根据上下文提供恰当的回答。它不仅可以进行日常对话,还能够
完成复杂任务,如撰写文章、回答问题等。令人惊讶的是,所有这些任务都由一个模型完成。在许
多任务上,ChatGPT 的性能甚至超过了针对单一任务进行训练的有监督算法。这对于人工智能领
域具有重大意义,并对自然语言处理研究产生了深远影响。然而,由于 OpenAI 并未公开 ChatGPT
的详细实现细节,整体训练过程包括语言模型、有监督微调、类人对齐等多个方面,这些方面之
间还存在大量的关联,这对于研究人员在自然语言处理基础理论和机器学习基础理论上要求很高。
此外,大语言模型的参数量非常庞大,与传统的自然语言处理研究范式完全不同。使用大语言模
型还需要分布式并行计算的支持,这对自然语言处理算法研究人员又进一步提高了要求。为了使
得更多的自然语言处理研究人员和对大语言模型感兴趣的读者能够快速了解大语言模型和理论基
础,并开展大语言模型实践,结合之前在自然语言处理领域研究经验,以及分布式系统和并行计
算的教学经验,我们在大语言模型实践和理论研究的过程中,历时 8 个月完成本书。希望这本书
能够帮助读者快速入门大语言模型的研究和应用,并解决相关技术挑战。
自然语言处理的研究历史可以追溯到 1947 年,当时第一台通用计算机 ENIAC 刚刚问世。自
然语言处理经历了 20 世纪 50 年代末到 60 年代初的初创期,20 世纪 70 年代到 80 年代的理性主
义时代,20 世纪 90 年代到 21 世纪初的经验主义时代,以及 2006 年至今的深度学习时代。自 2017
年 Transformer 模型
[2]
提出并在机器翻译领域取得巨大成功后,自然语言处理进入了爆发式的发
ii 大规模语言模型:从理论到实践 -- 张奇、桂韬、郑锐、黄萱菁
展阶段。2018 年,动态词向量 ELMo
[3]
模型开启了语言模型预训练的先河。随后,以 GPT
[4]
和
BERT
[1]
为代表的基于 Transformer 模型的大规模预训练语言模型相继提出,自然语言处理进入了
预训练微调的新时代。2019 年,OpenAI 发布了拥有 15 亿参数的 GPT-2 模型
[4]
,2020 年,Google
发布了拥有 110 亿参数的 T5 模型。同年,OpenAI 发布了包含 1750 亿参数的 GPT-3 模型
[5]
,从而
开启了大语言模型的时代。直到 2022 年 11 月,ChatGPT 的问世将大语言模型的研究推向了新的
高度,引发了大语言模型研究的热潮。尽管大语言模型的发展历程只有不到五年的时间,但其发
展速度相当惊人。截至 2023 年 6 月,国内外已经发布了超过百种大语言模型。
大语言模型的研究融合了自然语言处理、机器学习、分布式计算、并行计算等多个学科领域。
其发展历程可以分为基础模型阶段、能力探索阶段和突破发展阶段。基础模型阶段主要集中在 2018
年至 2021 年期间,期间发布了一系列代表性的大语言模型,如 BERT、GPT、百度 ERNIE、华为盘
古-α、Palm 等。这些模型的发布为大语言模型的研究打下了基础。能力探索阶段主要发生在 2019
年至 2022 年期间。由于大语言模型在针对特定任务上微调方面存在一定困难,研究人员开始探索
如何在不进行单一任务微调的情况下发挥大语言模型的能力。同时,研究人员还开始尝试指令微
调(Instruction Tuning)方案,将各种类型的任务统一为生成式自然语言理解框架,并使用构造的
训练语料对模型进行微调。突破发展阶段以 2022 年 11 月 ChatGPT 的发布为起点。ChatGPT 通过
一个简单的对话框,利用一个大语言模型就能够实现问题回答、文稿撰写、代码生成、数学解题
等多种任务,而以往的自然语言处理系统需要使用多个小模型进行定制开发才能分别实现这些能
力。ChatGPT 在开放领域问答、各类生成式自然语言任务以及对话理解等方面展现出的能力远超
过大多数人的想象。这些阶段的发展推动了大语言模型的突破,为自然语言处理研究带来了巨大
的进展,并在各个领域展示了令人瞩目的成果。
本书围绕大语言模型构建的四个主要阶段:预训练、有监督微调、奖励建模和强化学习,详
细介绍各阶段使用的算法、数据、难点以及实践经验。预训练,需要利用包含数千亿甚至数万亿
单词的训练数据,并借助由数千块高性能 GPU 和高速网络组成的超级计算机,花费数十天完成深
度神经网络参数的训练。这一阶段的核心难点在于如何构建训练数据以及如何高效地进行分布式
训练。有监督微调阶段利用少量高质量的数据集,其中包含用户输入的提示词(Prompt)和对应的
理想输出结果。提示词可以是问题、闲聊对话、任务指令等多种形式和任务。这个阶段是从语言
模型向对话模型转变的关键,其核心难点在于如何构建训练数据,包括训练数据内部多个任务之
间的关系、训练数据与预训练之间的关系以及训练数据的规模。奖励建模阶段的目标是构建一个文
本质量对比模型,用于对于同一个提示词,对有监督微调模型给出的多个不同输出结果进行质量
排序。这一阶段的核心难点在于如何限定奖励模型的应用范围以及如何构建训练数据。强化学习阶
段根据数十万提示词,利用前一阶段训练的奖励模型,对有监督微调模型对用户提示词补全结果
的质量进行评估,并与语言模型建模目标综合得到更好的效果。这一阶段的难点在于解决强化学
习方法稳定性不高、超参数众多以及模型收敛困难等问题。除了大语言模型的构建,本书还进一
步介绍了大语言模型的应用和评估方法。主要内容包括如何将大语言模型与外部工具和知识源进
iii
行连接、如何利用大语言模型进行自动规划完成复杂任务,以及针对大语言模型的各类评估方法。
本书旨在为对大语言模型感兴趣的读者提供一个入门指南,并可作为高年级本科生和研究生
自然语言处理相关课程的大语言模型部分的补充教材。鉴于大语言模型的研究仍在快速发展阶段,
许多方面尚未达成完整结论或普遍共识。在撰写本书时,我们力求全面展现大模型研究的各个方
面,并避免给出没有广泛共识的观点和结论。大语言模型涉及深度学习、自然语言处理、分布式
计算、分布式计算等众多领域。因此,建议读者在阅读本书之前,首先系统地学习深度学习和自
然语言处理的相关课程。在分布式计算和异构计算方面,读者需要具备基本的概念。如果希望在
大语言模型训练和推理方面进行深入研究,还需要系统学习分布式系统、并行计算、CUDA 编程
等相关知识。
本书的写作过程得到了众多专家和同学的大力支持和帮助。特别感谢陈璐、陈天泽、陈文翔、
窦士涵、葛启明、郭昕、赖文斌、柳世纯、汪冰海、奚志恒、许诺、张明、周钰皓等同学(按照拼
音排序)为本书撰写提供的帮助。大语言模型研究进展之快,即便是在自然语言处理领域开展了
近三十年工作的我们也难以适从。其关注之火爆程度令人咋舌,自然语言处理领域重要国际会议
EMNLP,2022 年语言模型相关论文投稿占比只有不到 5%。然而,2023 年语言模型相关投稿则超
过了 EMNLP 整体投稿的 20%。如何能够兼顾大语言模型的基础理论,又能够在快速发展的各种
研究中选择最具有代表性的工作介绍给大家,是本书写作中面临的最大挑战。虽然本书写作时间
只有 8 个月,但是章节内部结构也是几易其稿,经过数次大幅度调整和重写。即便如此,受限于
我们的认知水平和所从事的研究工作的局限,对其中一些任务和工作的细节理解仍然可能存在不
少错误,也恳请专家、读者批评指正!
张奇
2023 年 9 月于复旦曦园