书籍阅读-大语言模型

阅读人大高瓴写的《大语言模型》,在这里进行内容记录。

该内容会长期更新。

第一章 引言

1.1 语言模型发展历程

语言模型旨在对于人类语言的内在规律进行建模,从而准确预测词序列中未来(或缺失)词或词元(Token)的概率。

四个主要发展阶段:

  • 统计语言模型(Statistical Language Model, SLM),基于统计学习方法研发,广泛应用于信息检索(Information Retrieval, IR)和自然语言处理(Natural Language Processing, NLP)等领域。
  • 神经语言模型(Neural Language Model, NLM),神经语言模型使用神经网络来建模文本序列的生成,如RNN。代表性模型:word2vec.
  • 预训练语言模型(Pre-trained Language Model, PLM),其中ELMo使用大量的无标注数据训练双向 LSTM(Bidirectional LSTM, biLSTM)网络,基于 Transformer 架构,谷歌进一步提出了预训练语言模型 BERT。以 ELMo、BERT、GPT-1 为代表的预训练语言模型确立了“预训练-微调”这一任务求解范式。
  • 大语言模型(Large Language Model, LLM),通过规模扩展(如增加模型参数规模或数据规模)通常会带来下游任务的模型性能提升,这种现象通常被称为“扩展法则”(Scaling Law);大模型具有但小模型不具有的能力通常被称为“涌现能力”(Emergent Abilities)。

早期的语言模型主要面向自然语言的建模和生成任务,而最新的语言模型(如 GPT-4)则侧重于复杂任务的求解。

1.2 大语言模型的能力特点

  • 具有较为丰富的世界知识. 与传统机器学习模型相比,大语言模型经过超大规模文本数据的预训练后能够学习到较为丰富的世界知识。
  • 具有较强的通用任务解决能力。很多传统任务(如摘要、翻译等)都可以采用基于大语言模型的提示学习方法进行解决,而且能够获得较好的任务效果。
  • 具有较好的复杂任务推理能力,能够回答知识关系复杂的推理问题 ,还可以解决涉及复杂数学推理过程的数学题目。
  • 具有较强的人类指令遵循能力,能够直接通过自然语言描述下达任务指令。
  • 具有较好的人类对齐能力。目前广泛采用的对齐方式是基于人类反馈的强化学习技术,通过强化学习使得模型进行正确行为的加强以及错误行为的规避,进而建立较好的人类对齐能力。
  • 具有可拓展的工具使用能力。可以通过微调、上下文学习等方式掌握外部工具的使用,如搜索引擎与计算器。

1.3 大语言模型关键技术概览

概括性地介绍一下大语言模型能够取得重要进展背后的关键技术。

  • 规模扩展。在较早期的研究中,OpenAI 从参数、数据、算力三个方面深入地研究了规模扩展对于模型性能所带来的影响,建立了定量的函数关系,称之为“扩展法则”(Scaling Law)。

    Transformer 模型的可扩展性非常强,对于硬件并行优化的支持也比较友好,特别适合大语言模型的研发

  • 数据工程。当前大语言模型的技术路线图:通过在海量文本上进行下一个词预测的优化,使得模型能够学习到丰富的语义知识信息,进而通过文本补全的方式解决各种下游任务。

  • 高效预训练。

    • 由于参数规模巨大,需要使用大规模分布式训练算法优化大语言模型的神经网络参数。
    • 在训练过程中,需要联合使用各种并行策略以及效率优化方法,包括 3D 并行(数据并行、流水线并行、张量并行)、ZeRO(内存冗余消除技术)等。
    • 很多研究机构发布了专用的分布式优化框架来简化并行算法的实现与部署,其中具有代表性的分布式训练软件包括DeepSpeed 和 Megatron-LM。
  • 能力激发。为了提升模型的任务求解能力,需要设计合适的指令微调以及提示策略进行激发或诱导。进一步,大语言模型还具有较好的规划能力,能够针对复杂任务生成逐步求解的解决方案。

  • 人类对齐。经过海量无标注文本预训练的大语言模型可能会生成有偏见、泄露隐私甚至对人类有害的内容。在实践应用中,需要保证大语言模型能够较好地符合人类的价值观。

    • 3H对齐标准:即 Helpfulness(有用性)Honesty(诚实性)Harmlessness(无害性)。
    • 为解决这一问题,OpenAI 提出了基于人类反馈的强化学习算法(Reinforcement Learning fromHuman Feedback, RLHF)[28],将人类偏好引入到大模型的对齐过程中。
  • 工具使用。通过让大语言模型学会使用各种工具的调用方式,进而利用合适的工具去实现特定的功能需求。

大模型的基本原理仍然缺乏深入的探索。现有的大语言模型非常依赖于工程方法的优化。

1.4 大语言模型对科技发展的影响

大语言模型对人工智能技术的未来发展方向带来了重要影响。

  • 自然语言处理。在自然语言处理领域,大语言模型可以作为一种通用的语言任务解决技术,能够通过特定的提示方式解决不同类型的任务,很多传统任务的研究意义在衰减。
  • 信息检索。
  • 计算机视觉。GPT-4 已经能够支持图文多模态信息的输入。将图像、视频等模态的信息与文本语义空间相融合,可以通过计算量相对较少的微调方法来研发多模态大语言模型。
  • AI4Science。目前大语言模型技术已经广泛应用于数学、化学、物理、生物等多个领域,基于其强大的模型能力赋能科学研究。
  • 大语言模型对于产业应用带来了变革性的技术影响,会催生基于大语言模型的应用生态系统。

第二章 基础介绍

大语言模型:在海量无标注文本数据上进行预训练得到的大型预训练语言模型。

如 GPT-3 ,PaLM 和 LLaMA。

与传统语言模型相比,大语言模型的构建过程涉及到更为复杂的训练方法。

本部分介绍大语言模型的构建过程、扩展法则(Scaling Law)、涌现能力(Emergent Abilities),然后将介绍 GPT 系列模型的研发历程。

2.1 大语言模型的构建过程

大语言模型:一种基于 Transformer 结构的神经网络模型。

可以将大语言模型看作一种拥有大规模参数的函数,构建过程就是使用训练数据对于模型参数的拟合过程。

大语言模型的构建过程需要复杂、精细的训练方法。一般来说分为大规模预训练指令微调与人类对齐两个阶段。

2.1.1 大规模预训练

预训练:指使用与下游任务无关的大规模数据进行模型参数的初始训练,为模型参数找到一个较好的“初值点”。

早期的预训练技术还是聚焦于解决下游某一类的特定任务,如传统的自然语言处理任务。

“解码器架构 + 预测下一个词”的有效性得到了充分验证,已经成为现有大语言模型主要采纳的技术路径。

预训练大语言模型,需要准备大规模的文本数据,并且进行严格的清洗,去除掉可能包含有毒有害的内容,最后将清洗后的数据进行词元化(Tokenization)流,并且切分成批次(Batch),用于大语言模型的预训练。

数据的收集与清洗对于模型性能具有重要的影响。

开源模型普遍采用 2∼3T 规模的词元进行预训练。

关于算力:一般来说训练百亿模型至少需要百卡规模的算力集群(如 A100 80G)联合训练数月时间;而训练千亿模型则需要千卡甚至万卡规模的算力集群。

实施过程中涉及到大量需要深入探索的经验性技术,如数据如何进行配比、如何进行学习率的调整、如何早期发现模型的异常行为等,需要研发人员具有丰富的训练经验和异常处理能力。

2.1.2 指令微调与人类对齐

有趣的比喻:预训练后的模型就像进入工作岗位的毕业生,尽管学习了很多通用的文化课,具备了一定的实习经验,但是仍然需要加强面向特定岗位的工作能力,并且深入了解工作岗位所涉及的相关要求。

预训练结束后,通常需要对于大语言模型进行微调与对齐,使之更好地被用于任务求解,为人类服务。

比较广泛使用的微调技术是“指令微调”(也叫做有监督微调,Supervised Fine-tuning, SFT)。通过使用任务输入与输出的配对数据进行模型训练,可以使得语言模型较好地掌握通过问答形式进行任务求解的能力。

通常来说,数十万到百万规模的指令微调数据能够有效地激发语言模型的通用任务解决能力,甚至有些工作认为数千条或者数万条高质量指令数据也能达到不错的微调效果。

需要将大语言模型与人类的期望、需求以及价值观对齐(Alignment)。

对齐过程中引入了基于人类反馈的强化学习对齐方法 RLHF(Reinforcement Learning from Human Feedback),在指令微调后使用强化学习加强模型的对齐能力。该算法需训练一个符合人类价值观的奖励模型(Reward Model)。

2.2 扩展法则

大语言模型获得成功的关键在于对“规模扩展”(Scaling)的充分探索与利用。

通过扩展参数规模、数据规模和计算算力,大语言模型的能力显著超越了小型语言模型的能力。

建立定量的建模方法,即扩展法则(ScalingLaw),来研究规模扩展所带来的模型性能提升具有重要的实践指导意义。

2.2.1 KM扩展法则

2020年提出,建立了神经语言模型性能与三个主要因素——**模型规模N、数据规模D和计算算力C**之间的幂律关系。

KM扩展法则

L(.)表示用以 $nat^1$为单位的交叉熵损失。其中,$N_c$、$D_c$和 $C_c$ 是实验性的常数数值,分别对应于非嵌入参数数量、训练数据数量和实际的算力开销。

一些基本假设:一个因素的分析不会受到其他两个因素的限制,如当变动模型参数规模的时候,需要保证数据资源是充足的。

上述公式为规模扩展效应提供了一种定量的普适建模方法。通过普适规则能够更好地探究问题的本质。

这里的损失函数进一步分解为两部分:

`x`指代上面公式的`N`、`D`、`C`

其中,不可约损失由数据自身特征确定,无法通过扩展法则或者优化算法进行约减;模型性能的优化只能减小可约损失部分。

2.2.2 Chinchilla 扩展法则

2022 年提出,通过针对更大范围的模型规模(70M 到 16B 参数)和数据规模(5B 到 500B 词元)进行实验。

Chinchilla扩展法则

其中𝐸 = 1*.*69, 𝐴 = 406.4, 𝐵 = 410.7,𝛼 = 0.34 和 𝛽 = 0.28。

KM 扩展法则和 Chinchilla 扩展法则都可以近似表示成上述算力为核心的公式:

以算力为核心

即当算力C给定的情况下,最优的模型参数规模和数据规模由指数系数ab分别确定。

不难看出,a>b时,应用更多的算例去提高数据规模D,a<b时,应该用更多的算力去提高数据规模N

Chinchilla 扩展法则首次指出了之前的预训练工作可能忽视了训练数据的规模扩展。如,具有 175B 参数的 GPT-3 仅仅使用了 300B 的词元进行训练,所使用的数据量远远没有达到模型能够编码的最大数据容量。

越来越多的工作表明,现有的预训练语言模型对于数据的需求量远高于这些扩展法则中所给出的估计规模。这种现象的一个重要原因是由于 Transformer 架构具有较好的数据扩展性。

2.2.3 关于扩展法则的讨论

在实践中,扩展法则可以用于指导大语言模型的训练,通过较小算力资源可靠地估计较大算力资源投入后的模型性能,这被称为可预测的扩展

随着模型规模的不断增加,一个问题是可供用来训练大语言模型的数据量实际上是有限的,公共文本数据将很快变得“枯竭”。因此,如何在数据受限的情况下建模扩展法则,仍然具有重要的实践意义。

在实践中,我们则更关注大语言模型在真实任务中的性能提升。

整体上来说,语言建模损失较小的模型往往在下游任务中表现更好,因为语言建模的能力可以被认为是一种模型整体能力的综合度量。

然而,语言建模损失的减少并不总是意味着模型在下游任务上的性能改善。对于某些特殊任务,甚至会出现逆向扩展(Inverse Scaling)现象,即随着语言建模损失的降低,任务性能却出人意料地变差 。

通过扩展法则可以准确预测某些任务能力(例如编码能力),但是对于有些任务的性能预测是非常困难的。此外,有些重要能力(例如上下文学习能力)根据扩展法则是不可预测的。

2.3 涌现能力

涌现能力:在小型模型中不存在但在大模型中出现的能力。

具体是指当模型扩展到一定规模时,模型的特定任务性能突然出现显著跃升的趋势,远超过随机水平。

该能力仍然缺乏相应的理论解释以及理论证实。

2.3.1 代表性的涌现能力

上下文学习(In-context Learning, ICL):在提示中为语言模型提供自然语言指令和多个任务示例(Demonstration),无需显式的训练或梯度更新,仅输入文本的单词序列就能为测试样本生成预期的输出。

指令遵循(Instruction Following):指大语言模型能够按照自然语言指令来执行对应的任务。

通常需要使用自然语言描述的多任务示例数据集进行微调,称为指令微调(Instruction Tuning)或监督微调(Supervised Fine-tuning)。

指令遵循能力整体上更容易获得,但是最终的任务执行效果还取决于模型性能和任务难度决定。

逐步推理(Step-by-step Reasoning):小型语言模型很难解决涉及多个推理步骤的复杂任务,而大语言模型则可以利用思维链提示策略来加强推理性能。

大语言模型可以在提示中引入任务相关的中间推理步骤来加强复杂任务的求解,从而获得更为可靠的答案。

很难统一界定大语言模型出现这些上述能力的临界规模,因为能力涌现会受到多种因素或者任务设置的影响。

2.3.2 涌现能力与扩展法则的关系

扩展法则:使用语言建模损失来衡量语言模型的整体性能,整体上展现出了较为平滑的性能提升趋势,具有较好的可预测性,但是指数形式暗示着可能存在的边际效益递减现象;

涌现能力:使用任务性能来衡量模型性能,整体上展现出随规模扩展的骤然跃升趋势,不具有可预测性,但是一旦出现涌现能力则意味着模型性能将会产生大幅跃升

关于涌现能力的合理性也存在广泛的争议。目前还缺少对于大语言模型涌现机理的基础性解释研究工作。

“顿悟”(Grokking):训练过程中的一种数据学习模式,模型性能从随机水平提升为高度泛化。

2.4 GPT 系列模型的技术演变

唉,大语言模型

GPT 系列模型的基本原理:训练模型学习恢复预训练文本数据,将广泛的世界知识压缩到仅包含解码器(Decoder-Only)的 Transformer 模型中,从而使模型能够学习获得较为全面的能力。

关键:1.训练能够准确预测下一个词的 Transformer (只包含解码器)语言模型 2.扩展语言模型的规模以及扩展预训练数据的规模

2.4.1 早期探索

GPT-1:2018年发布。奠定了 GPT 系列模型的核心架构与基于自然语言文本的预训练方式。没引起学术界的足够关注。

与 GPT-1同期发布的预训练语言模型是的 BERT 模型,主要面向自然语言理解任务,因此只保留了 Transformer 中的编码器。BERT 当时引领了自然语言处理社区的研究浪潮,涌现了大量针对它改进与探索的工作。

GPT-2:旨在探索通过扩大模型参数规模来提升模型性能,且尝试去除针对特定任务所需要的微调环节。

由于特定任务的有监督学习目标与无监督学习目标(语言建模)在本质上是相同的(预测下一个词元),主要区别就在于它们只是在全部训练数据的子集上进行优化,因此对于特定下游任务而言,优化无监督的全局学习目标本质上也是在优化有监督的任务学习目标

2.4.2 规模扩展

GPT-3的模型参数扩展到了175B的规模,在下游任务中初步展现出了一定的通用性,可以被看作从预训练语言模型到大语言模型演进过程中的一个重要里程碑。

GPT-3 的论文中正式提出了“上下文学习”这一概念,使得大语言模型可以通过少样本学习的方式来解决各种任务。

上下文学习可以指导大语言模型学会“理解”自然语言文本形式描述的新任务,从而消除了针对新任务进行微调的需要。

模型预训练是在给定上下文条件下预测后续文本序列,模型使用则是根据任务描述以及示例数据来推理正确的任务解决方案。

2.4.3 能力增强

代码数据训练:2021 年 7 月推出了 Codex ,这是一个在大量 GitHub 代码数据集合上微调的 GPT 模型。Codex 可以解决非常困难的编程问题,还能显著提升大模型解决数学问题的能力。

人类对齐:OpenAI 的研究团队介绍了一项使用强化学习算法从人类标注的偏好数据中学习如何改进模型性能的工作。

PPO 算法(Proximal Policy Optimization)成为了 OpenAI 在后续人类对齐技术里所采用的标配强化学习算法。

训练人工智能系统以达到(1)使用人类反馈、(2)协助人类评估和(3)进行对齐研究

2.4.4 性能跃升

ChatGPT 将人类生成的对话数据(同时扮演用户和人工智能的角色)与训练 InstructGPT 的相关数据进行结合,并统一成对话形式用于训练 ChatGPT。

GPT-4 具有令人震撼的模型性能,论文作者认为 GPT-4 的到来展现出了通用人工智能的曙光。

Openai应用了一些干预策略来缓解大语言模型可能出现的问题,幻觉、隐私泄露等。例如,研究人员引入了“红队攻击”(Red Teaming)机制来减少生成有害或有毒的内容。

OpenAI 在 2023 年 9 月进一步发布了 GPT-4V,重点关注 GPT-4 视觉能力的安全部署。

新版本的 GPT 模型还进一步增强了多模态能力,分别由 GPT-4 Turbo with Vision、DALL·E-3、TTS(Text-to-speech)以及 Listen to voice samples 等支持实现。

GPT 模型可能在某些特定上下文中生成带有事实错误的内容(即幻觉)或存在潜在风险的回应。

第三章 大语言模型资源

本章介绍可公开使用的大语言模型研发资源。

3.1 公开可用的模型检查点或API

3.1.1 公开可用的通用大语言模型检查点

LLaMA :7B、13B、30B 和 65B 四种版本。LLaMA 各个参数量版本都在超过 1T 词元的预训练语料上进行了训练。

LLaMA 已经成为了最受欢迎的开源大语言模型之一,许多研究工作都是以其为基座模型进行微调或继续预训练。

LLaMA-2 有 7B、13B、34B(未开源)和 70B

ChatGLM:6B 智谱 AI

Falcon:7B、40B 和 180B

Baichuan:7B,预训练数据规模达到了1.2T 词元

Baichuan-2:预训练数据规模达到了 2.6T 词元

InternLM 和 InternLM-2:AILab开发

Qwen:阿里巴巴

(还有很多)…………

3.1.2 LLaMA 变体系列

指令微调由于相对较低的计算成本,已成为开发定制化或专业化模型的首选方法,也因此出现了庞大的 LLaMA 家族。

中文指令:为了使 LLaMA 模型能够有效地支持中文,研究人员通常会选择扩展原始词汇表,在中文数据上进行继续预训练,并用中文指令数据对其进行微调。经过中文数据的训练,这些扩展模型不仅能更好地处理中文任务,在跨语言处理任务中也展现出了强大的潜力。

垂域指令:基于搜集到的垂域相关的指令数据,构建多轮对话数据,并使用这些指令数据对 LLaMA 进行指令微调,包括法律、医学、教育、数学、金融等领域。

多模态指令:搭配视觉模态的编码器,使用多模态指令对齐视觉表征与文本。

LLaMA衍生

3.1.3 大语言模型的公共 API

OpenAI 目前提供的常用 API 服务。

GPT-3.5 Turbo 对应的 API 接口为 gpt-3.5-turbo,支持16K 词元的上下文长度。

GPT-4 是一个多模态模型,也是目前 GPT 系列效果最好的模型,其对应的 API 接口有 gpt-4(基础版本,没有视觉功能)、gpt-4-32k(将上下文长度扩展到 32K)、gpt-4-vision-preview。

OpenAI 主要提供三种文本表征的 API 接口,包括 text-embedding-ada-002、text-embedding-3-small 以及 text-embedding-3-large。

3.2 常用的预训练数据集

这些语料库可以划分为:网页、书籍、维基百科、代码以及混合型数据集。

3.2.1 网页

网页是大语言模型训练语料中最主要的数据来源,包含了丰富多样的文本内容。

常用语料库信息

  • Common Crawl. 该数据集是一个规模庞大的、非结构化的、多语言的网页数据集,其时间跨度很长,从 2008 年至今一直在定期更新,包含原始网页数据、元数据和提取的文本数据等。
  • C4(Colossal Clean Crawled Corpus)[77]. 该数据集是一个大型网页数据集,源自超过 365M 个互联网域,包含超过 156B 词元,数据量约 800GB。
  • CC-Stories. 该数据集是一个专为常识推理和语言建模构建的故事风格数据集,数据来源是 Common Crawl 中与常识推理任务问题有高度重叠的文档
  • CC-News. 该数据集是一个新闻文章数据集,数据量约 76GB,包含了从 2016 年 9 月到 2019 年 2 月期间抓取的 63M 篇英文新闻文章

……

中文网页数据
  • ChineseWebText. 该数据集汇集了 2021 年至 2023 年间的网页快照,总计 1.42TB数据量。同时,ChineseWebText 的每篇文本都附有一个定量的质量评分
  • WanJuan1.0Text. 该数据集是上海人工智能实验室发布的万卷 1.0 多模态语料库的一部分。

……

3.2.2 书籍

书籍的语言表达更为严谨,整体上相对质量较高,并且能够覆盖多元化的知识体系。

  • BookCorpus. 一个免费小说书籍集合,包含了 11,038 本未出版书籍(大约有 74M 句子和 1B 个单词),涵盖了 16 种不同的主题类型
  • Project Gutenberg. 一个拥有 70K 部免费电子书的在线图书馆,目前还在持续更新中。主要收录了西方文学作品,包括小说、诗歌、戏剧等
  • arXiv Dataset. 一个收录了众多领域预印本论文的网站

3.2.3 维基百科

有以下几个特点:专业性、多语性、实时性。

3.2.4 代码

为了收集代码数据,现有的工作主要从互联网上爬取具有开源许可的代码。

  • BigQuery 一个谷歌发布的企业数据仓库
  • The Stack 数据来源于 GHArchive 项目中 2015 年 1 月 1 日至 2022年 3 月 31 日期间的 GitHub 活跃仓库。
  • StarCoder

3.2.5 混合型数据集

混合型数据集融合了新闻、社交媒体内容、维基百科条目等各种类型的文本,减少了重复清洗数据、选择数据的繁重工程。

  • The Pile. 该数据集是一个大规模、多样化且可公开下载的文本数据集,由超过 800GB 的数据组成,数据来源非常广泛,包括书籍、网站、代码、科学论文和社交媒体数据等。
  • ROOTS. 该数据集是一个涵盖了 59 种不同语言的多源多语数据集。

3.3 常用微调数据集

为了增强模型的任务解决能力,大语言模型在预训练之后需要进行适应性微调,通常涉及两个主要步骤,即指令微调(有监督微调)和对齐微调。

3.3.1 指令微调数据集

三种主要类型,自然语言处理任务数据集、日常对话数据集和合成数据集。

自然语言处理任务数据集
  • P3(Public Pool of Prompts)一个面向英文数据的指令微调数据集,由超过 270 个自然语言处理任务数据集和 2,000 多种提示整合而成。
  • FLAN 是通过将 62 个广泛使用的 NLP 基准数据集进行格式化得到的英语指令数据集。
日常对话数据集
  • ShareGPT
  • OpenAssistant. 一个人工创建的多语言对话语料库
  • Dolly. 一个英语指令数据集, 包含了 15,000 个人类生成的数据实例
合成数据集

合成数据集通常是使用大语言模型基于预定义的规则或方法进行构建的。

  • Self-Instruct-52K:是使用 self-instruct 方法(详见第 7.1.3 节)生成的英语指令数据集,共包含 52K 条指令以及 82K 个实例输入和输出。
  • Alpaca-52K

3.3.2 人类对齐数据集

将大语言模型与人类价值观和偏好对齐也非常重要。

三个方面:有用性、诚实性和无害性

对齐微调数据集各自针对上述对齐目标进行了标注。

  • HH-RLHF. 该数据集包含两大类标注数据,分别关注于大语言模型的有用性和无害性。数据集包含约 169K 个开放式对话,每个对话涉及一个众包工作者向一个智能信息助手寻求帮助、建议或请求完成任务等情景。
  • SHP. 该数据集关注模型生成回复内容的有用性。该数据集共 385K 个数据实例,对于 18 个不同主题领域中问题/指令的人类偏好进行标注,涵盖了从烹饪到法律建议等各种主题
  • PKU-SafeRLHF. 该数据集侧重于对回复内容的有用性和无害性进行标注。囊括了 330K 个专家注释的实例

……

3.4 代码库

3.4.1 HuggingFace

Hugging Face 平台上的代码大部分基于目前主流的深度学习框架实现完成的。

  • Transformers. 该一个使用 Transformer 架构构建模型的开源 Python库,提供了一系列预训练的模型与相关开发工具
  • Datasets. 用于高效访问和共享自然语言处理任务相关的数据集,可以快速从远程 Hugging Face Hub 中加载数据集到本地。
  • Accelerate. 该代码库是一个旨在简化模型分布式训练和混合精度训练的Python 库,专门针对 PyTorch 开发。

3.4.2 DeepSpeed

DeepSpeed 是一个加速深度学习模型训练的高性能库(与 PyTorch兼容),广泛用于大语言模型的分布式训练

特制的优化框架:DeepSpeed-MII 和 DeepSpeed-Chat

  • DeepSpeed-MII:通过提高吞吐量、降低延迟等方式来降低大模型解码生成的运行成本。
  • DeepSpeed-Chat:一个易于使用的用于训练类 ChatGPT 模型的开发工具,完整集成了包括基于人类反馈的强化学习算法在内的训练过程。

3.4.3 Megatron-LM

一款专门为训练大语言模型而设计的深度学习代码库

3.4.4 配套资源

第四章 数据准备

预训练是最为重要的一个阶段,有效的预训练能够为大语言模型的能力奠定坚实的基础。预训练语料的规模和质量对于提升大语言模型的能力至关重要。

主要包含原始数据的收集、数据预处理、数据词元化、以及预训练过程中的数据调度方法。

4.1 数据来源

现有的大语言模型主要将各种公开的文本数据进行混合,作为预训练语料。

根据来源不同,预训练数据主要分为两种类型:通用文本数据和专用文本数据。

为了进一步提升大语言模型在特定专业任务上的表现,人们还将预训练语料的范围扩展至更专业的数据集,如多语数据、科学数据和代码数据等。

4.1.1 通用文本数据

通用语料涵盖了多个主题类别的文本内容。包含网页和书籍两大类。

4.1.2 专用文本数据

专用数据集有助于提升大语言模型解决特定下游任务的能力,包括多语文本、科学文本、代码。

4.2 数据预处理

对数据进行预处理,从而消除低质量、冗余、无关甚可能有害的数据。

这一节将介绍一系列常用的数据预处理流程与方法。

4.2.1 质量过滤

直接收集到的文本数据往往掺杂了很多低质量的数据。

两种数据清洗方法(1)基于启发式规则的方法(2)基于分类器的方法

基于启发式规则的方法

通过精心设计的规则来针对地识别和剔除低质量的文本数据。

  • 基于语种的过滤:为了训练特定目标语言为主导的大语言模型,通常要过滤掉其他语言的文本数据。
  • 基于简单统计指标的过滤:使用语料中标点符号分布、符号与单词比率、句子长度等特征来衡量文本质量,并过滤低质量数据。
  • 基于关键词的过滤:制定精准的清洗规则,结合相应的关键词集合,对文本进行扫描过滤,从而有效地识别和删除其中的噪声或无用元素。
基于分类器的方法

也可以训练用于判别数据质量的文本分类器,进行预训练语料的清洗。可以选取部分代表性的数据进行质量标注,以此训练出一个精准的文本质量分类器。

利用训练好的文本分类器,我们能够精准地识别和过滤低质量数据,从而显著提升整个语料库的质量。

目前常用来实现分类器的方法包括轻量级模型(FastText )、可微调的预训练语言模型( BERT、BART、LLaMA )、闭源大语言模型 API(GPT-4、Claude 3)。

在进行数据清洗时,过滤效率也是需要考虑的因素。

基于启发式的方法,其规则设计得相对简洁,效率也更高。

基于分类器的方法,能够展现出更高的精确度,但也需要消耗更多的计算资源。

4.2.2 敏感内容过滤

过滤有毒内容:可以采用基于分类器的过滤方法。

Jigsaw 评论数据集:近 160K 条论坛评论数据,每条评论都经过细致的标注,包括“有毒”、“严重有毒”、“有威胁”、“侮辱性”、“暴力”以及“身份仇恨”等六个类别。

通过设置合理的阈值,训练完成的分类器将能够有效识别并过滤掉含有有毒内容的信息。

需要在精确度和召回率之间寻求平衡,避免过多或者过少去除候选数据。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

请我喝杯咖啡吧~

支付宝
微信