【大模型学习】从零开始!揭秘大语言模型的训练全过程

前言

本文将详细梳理从零开始训练大语言模型的全过程,包括预训练阶段、指令微调、奖励模型和 强化学习的实现方式。

来源于 Build Talk: State of GPT - Andrej Karpathy

来源于 Build Talk: State of GPT - Andrej Karpathy

"读到此处,你可能已经意识到:AI大模型的迭代速度远超想象,仅凭碎片化知识永远追不上技术浪潮在这里分享这份完整版的大模型 AI 学习资料,已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证!免费领取【保证100%免费】在这里插入图片描述

**
**一、预训练阶段(Pretraining)

大模型的预训练是现代自然语言处理(NLP)技术中的核心步骤,特别是在基于Transformer架构的模型(如GPT系列、BERT等)中。预训练的目标是让模型能够从大量的无监督文本数据中学习语言的统计规律、语法结构、语义关系等,以便后续可以迁移到具体的下游任务(如文本分类、问答、翻译等)。这个过程就像一名高中生在三年的学习过程中,系统地接受老师的基础教学,积累了大量的知识和技能,为之后的专项训练(如高考)做好了充分准备

1.1 核心思想

大模型的预训练通常分为两大类方法:自监督学习(Self - supervised Learning)无监督学习(Unsupervised Learning) 。其中,最常见的是自监督学习,通过对大量的无标签文本进行训练,模型能够学习到语法和语义信息,而无需手动标注数据。

预训练的过程包括以下几个关键步骤:

  • 目标设定:学习语言的内部结构、词汇之间的关系以及长距离的上下文依赖。
  • 数据准备:使用大规模的无标签文本数据集,这些数据通常来源于互联网、书籍、新闻等。
  • 训练目标:模型通过预测文本的某些部分(例如下一个token,或者遮掩的部分)来训练自己,从而学习到语言的规律。

1.2 Transformer架构概述

Transformer架构是现代大规模预训练模型(如GPT、BERT等)的核心基础。它主要由注意力机制(attention)和前馈神经网络(Feed - forward Network)构成。

  1. 自注意力机制(Self - attenti****on):自注意力机制使得模型在处理每个token时,可以“关注”输入序列中其他位置的token,从而捕捉到长距离的依赖关系。
  2. 多头注意力(Multi - head Attention) :将多个注意力头组合起来,模型能够在不同的子空间中捕捉到多种不同的依赖关系。
  3. 前馈神经网络:每个Transformer层包括一个前馈神经网络,用于进一步处理来自注意力层的信息。

在这里插入图片描述

1.3 具体流程

大模型的预训练流程通常遵循以下步骤:

(1)数据准备

预训练过程中使用的是大规模的文本数据集(例如Wikipedia、BooksCorpus、Common Crawl等),这些数据通常是未经标注的原始文本。这些未经标注的 原始文本通常要进行以下处理:

  • 分词(Tokenization) :原始文本需要进行分词处理(将文本拆分成tokens)。现代预训练模型大多采用子词级别的分词方法(如Byte Pair Encoding, BPE,或者SentencePiece等),使得词表能够灵活地处理未登录词(OOV)问题。
  • 嵌入(Embedding) :每个token会通过一个嵌入层(Embedding layer)映射成一个高维向量表示,作为输入送入模型的后续处理流程。

(2)训练目标设定

预训练任务的选择会根据不同的模型架构有所不同,常见的目标包括:

自回归语言建模(Autoregressive Language Modeling) :这种方法主要用于生成式预训练(如GPT)。模型通过预测文本序列中的下一个token来学习语言规律。即在自回归模型中,输入序列中的每个token都是基于前文信息进行预测的,也就是根据前面所有的词预测下一个词。

具体来说,给定一个文本序列,模型的任务是学习条件概率分布:

也就是,模型根据前面所有的词预测下一个词。每一步都根据前文信息更新其对下一个token的预测。

自编码语言建模(Autoencoding Language Modeling) :这种方法主要用于BERT类的模型,它通过预测文本中被遮蔽(masked)的token来进行训练。即输入序列中的一部分token被“遮蔽”掉(通常使用一个特殊的[MASK]标记代替),模型的目标是根据上下文预测出这些被遮蔽的token。

例如,给定句子:

The quick brown fox jumps over the [MASK] dog. 

模型的目标是预测[MASK]位置的单词是"lazy"。

这种训练方式使得模型能够捕捉到双向上下文信息(即同时考虑左侧和右侧的上下文),适用于需要理解语义关系的任务。

(3)模型训练

模型通过前向传播算法对目标值进行预测,然后通过损失函数计算预测值与真实值之间的损失值,再利用梯度下降算法和反向传播算法优化模型参数。最常见的优化算法是Adam,它在处理稀疏梯度和大规模数据时非常有效。

不同的语言建模方式有不同的损失函数:

  • 自回归语言建模:对于自回归模型(如GPT),损失函数通常使用交叉熵损失(Cross - Entropy Loss),其目标是最小化模型预测的概率分布与真实分布之间的差异。即在每个token的预测上,模型尽量将预测的token分布接近真实的token分布。损失函数为:

  • 自编码语言建模:对于自编码模型(如BERT),模型的损失函数也是交叉熵损失,目标是让模型预测出正确的被遮蔽的token。例如,对于某个位置被遮蔽的token,损失函数会计算模型预测的token分布与真实token之间的交叉熵。

通过这样的大规模预训练,模型能够捕捉到语言中的丰富结构和语义信息,从而为下游任务的迁移学习打下坚实的基础。例如,在自回归模型中,模型通过根据前文预测下一个词来捕捉到单词之间的依赖关系,这帮助模型学习到语言的流畅性和一致性。

二、监督微调阶段(Supervised Finetuning)

尽管在预训练阶段,模型已经通过大量的文本数据学习到语言的统计特性和一些基础的语法、语义信息,但它通常并不能很好地处理特定任务。通过监督微调(Supervised Fine-Tuning, SFT)阶段的训练,模型将学习如何在特定的任务或领域内表现得更加出色,尤其是在应对具体问题时能够更精准、更高效。就像是高中生为了高考所做的专项模拟考试训练。

在这一阶段一般采用的方式是指令微调(Instruction Finetuning),为了便于理解,下文提到的SFT与指令微调不做区分。

2.1 数据准备

数据主要来源于两个方面:一是人工进行标注,二是通过类似ChatGPT这样的模型自动生成训练数据。 后者减少了人工构建数据集的成本,也能够更快地生成大量的训练样例。具体来说,可以给定一些基本的指令样例,让模型生成类似的新的指令和答案对,从而形成一个自动化的训练数据生成过程。例如,斯坦福大学的Alpaca项目通过ChatGPT自动生成了5200条指令 - 答案样例,极大地提升了训练的效率。

(1)文本数据格式

{ 
    "Instruction":"",
    "Input":"",  //Input字段为可选字段,有时Instruction部分会包含Input的内容
    "Output":""
}

// 例子:  
{
    "Instruction":"请帮我翻译一句话",
    "Input":"hello",            
    "Output":"你好"
},
{
    "Instruction":"请帮我翻译一句话:hello",
    "Input":"",  
    "Output":"你好"
}

(2)数据编码格式

首先是使用与预训练时相同的分词器(如BPE、SentencePiece)进行分词操作,即将文本拆分为token。然后将输入和输出拼成一个序列,通常按照如下的方式

[Instruction] + [分隔符] +([Input])+ [分隔符] + [Output]

给出例子如下:

文本:

用户:请解释量子力学的基本概念。\n助手:量子力学是描述微观粒子行为的物理学分支……

Token序列:

[Token_1, Token_2, ..., Token_n]

标签序列(对应输出):

[Token_k, Token_k+1, ..., Token_m]

注意:

  • 输入的最大长度由模型的上下文窗口大小限制(例如 GPT - 3 为 2048 tokens)。
  • 如果序列超过最大长度,可能需要截断或者滑窗处理。
  • 现代深度学习框架(如 PyTorch、TensorFlow)在批量训练时要求所有样本具有一致的形状(例如张量的维度相同),这样可以充分利用 GPU 的并行计算能力。常采用 padding 和截断机制使所有序列在一个批次中具有相同的长度。

2.2 训练目标与损失计算

SFT 的目标是让模型生成的输出与标注的正确答案(label)尽量接近,与预训练阶段预测下一个词不同,SFT 需要预测整个输出序列。

SFT 的数据包含输入(context)和输出(label),模型需要学习生成整个 label 序列。模型通过计算预测的 token 分布和真实 label 分布的交叉熵,优化预测精度。

损失的具体流程

  1. 前向传播:输入序列和输出序列拼接后,送入模型。模型通过 Transformer 层计算每个位置的 token 概率分布。

  2. 计算概率分布:模型输出的最后一层会生成一个 logits 矩阵:形状为 [L,V],其中 L 是序列长度,V 是词表大小。对 logits 应用 softmax,得到每个位置的 token 概率分布。

  3. 计算交叉熵损失:针对输出序列中的每个 token,计算预测概率和真实 label 的交叉熵,将每个 token 的损失取平均作为总体损失。

    其中,x 是输入序列,y_j是输出序列中的第 j 个token。

通过 SFT,模型在特定任务的数据上进一步调整,能够更好地理解和完成实际任务需求,如对话生成、问答、机器翻译等。损失的计算方式延续了预训练阶段的逐 token 交叉熵,但加入了输入 - 输出对的监督信息,从而使模型的生成结果更符合任务要求。

三、奖励模型(Reward Model)

奖励模型(Reward Model, RM)是强化学习与人类反馈(RLHF)过程中至关重要的一环,它的作用是评估大语言模型输出的文本质量,给出一个分数,指导模型在后续生成过程中更好地符合人类偏好和需求。

通过与人类标注者进行交互,奖励模型能够提供反馈信号,帮助优化模型的输出,使得生成内容更加自然、真实且符合用户的期望。就像高三毕业班老师专门学习往年高考题型来辅导学生提高成绩。

3.1 为什么需要奖励模型?

在指令微调(SFT)阶段,虽然模型已经被训练并具备一定的语言生成能力,但其输出结果仍然可能不符合人类的偏好,可能存在「幻觉」问题(模型生成的内容不真实或不准确)或者「有害性」问题(输出有害、不合适或令人不安的内容)。

这是因为,SFT 仅通过有限的人工标注数据来微调预训练模型,可能并未完全纠正预训练阶段中潜在的错误知识或不合适的输出。为了进一步提高模型的生成质量,解决这些问题,必须引入奖励模型,利用强化学习进行进一步优化

3.2 强化学习与奖励模型

强化学习的核心思想是通过奖惩机制来引导模型的学习。 在 RLHF(强化学习与人类反馈)中,奖励模型负责为模型生成的每个响应提供一个奖励分数,帮助模型学习哪些输出符合人类的期望,哪些输出不符合。

奖励模型的训练数据通常来自人工标注的排序数据,标注员会对多个生成的回答进行排名,奖励模型基于这些排名进行训练。

与传统的有监督学习不同,奖励模型并不要求直接对每个输出给出明确的分数,而是通过相对排序的方式对多个输出进行比较,告诉模型哪些输出更好,哪些输出更差。这种相对排序方式能有效减少人工评分时的主观差异,提高标注的一致性和模型的学习效率。

3.3 训练奖励模型

(1)训练数据(人工排序数据)

奖励模型的训练数据通常由人工标注人员对模型输出进行排序生成。在训练过程中,标注人员会根据多个生成回答的质量进行排序,而不是为每个答案打分。具体来说,给定一个问题,标注人员会评估并排序该问题的多个答案,并将这些排序数据作为奖励模型的训练数据。

这种相对排序的方式比直接给每个答案打分更加高效且一致,因为评分会受到标注人员个人主观看法的影响,而相对排序则减少了这种影响,使得多个标注员的标注结果能够更加统一。

数据格式:

//基于比较的数据格式
{
    "input": "用户输入的文本",
    "choices": [
        {"text": "候选输出 1", "rank": 1},
        {"text": "候选输出 2", "rank": 2}
    ]
}

//基于评分的数据格式
{
    "input": "用户输入的文本",
    "output": "生成模型的输出文本",
    "score": 4.5
}

奖励模型的输入包括:

  • 输入文本:用户给定的提示或问题,作为上下文。
  • 输出文本:生成模型的候选答案,用于评估质量。
  • 上下文和候选文本拼接:奖励模型通常会将 input(上下文)和每个 choice(候选文本)进行拼接,然后输入到模型中。这样,模型就能够理解生成文本与上下文之间的关系,并基于该关系来评估生成文本的质量。

下面是一个简单的例子:

//原始数据
{
    "input": "What is the capital of France?",
    "choices": [
        {"text": "The capital of France is Paris.", "rank": 1},
        {"text": "The capital of France is Berlin.", "rank": 3},
        {"text": "Paris is the capital of France.", "rank": 2}
    ]
}
//应输入到模型的数据
[Input] What is the capital of France? [SEP] The capital of France is Paris.
[Input] What is the capital of France? [SEP] The capital of France is Berlin.
[Input] What is the capital of France? [SEP] Paris is the capital of France.

(2)上下文建模

奖励模型会基于 Transformer(如 BERT、RoBERTa)等架构对整个拼接后的文本进行编码处理。对于每个候选文本,模型会生成一个上下文感知的表示,其中考虑了 input 和该候选 choice 之间的语义关系。

(3)计算得分或排序

  • 回归任务:如果任务是回归类型的(例如预测一个分数),奖励模型会为每个候选文本生成一个预测的质量分数。
  • 排序任务:如果任务是基于排序(例如选择哪个候选文本质量更好),奖励模型会通过对所有候选文本进行打分,计算并比较它们的得分,确保高质量文本的得分高于低质量文本。

(4)损失函数

在训练过程中,模型会通过比较候选文本的预测得分与实际的标签(排名或评分)之间的差异来计算损失,并进行反向传播优化:

  • 回归任务使用均方误差(MSE)损失来最小化预测分数与真实评分之间的差距。
  • 排序任务通常使用对比损失(Contrastive Loss)或者排名损失(例如 Hinge Loss),优化模型以便正确排序候选文本。

3.4 奖励模型的挑战

奖励模型的设计和训练过程中存在一定的挑战,主要体现在以下几个方面:

  1. 人类偏好的多样性:不同的标注员可能对同一生成结果有不同的看法,这就要求奖励模型能够容忍一定的主观性,并通过排序学习来减少偏差。
  2. 模型不稳定:由于奖励模型通常较小,训练过程中可能会出现不稳定的情况。为了提高训练的稳定性,奖励模型通常会采取合适的正则化技术和优化方法。
  3. 数据质量与多样性:为了确保奖励模型的有效性,训练数据需要足够多样化,涵盖不同类型的问题和答案。如果数据质量不高或过于单一,模型可能无法学到有效的评分规则。

四、 基于人类反馈的强化学习(RLHF)

基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)是一种将强化学习与人类反馈结合的方法,旨在优化模型的行为和输出,使其更加符合人类的期望。通过引入人类反馈作为奖励信号指导模型更好地理解和满足人类的偏好,生成更自然、更符合人类意图的输出。

就像高考生需要根据模拟考试的反馈进行调整,优化答题策略,这就像是模型在 RLHF 中根据人类反馈不断优化自身行为

4.1 RLHF框架的核心组件

RLHF框架包含几个关键元素,它们共同协作,确保模型能够根据人类反馈进行优化:

强化学习算法(RL Algorithm):强化学习算法负责训练模型,以优化其行为。在RLHF中,常用的强化学习算法是近端策略优化(Proximal Policy Optimization,PPO)。PPO是一种“on-policy”算法,模型通过当前策略直接学习和更新,而不依赖于过去的经验。通过PPO算法,模型能够根据奖励信号调整策略,最终生成符合期望的输出。

行动(Action):在RLHF框架中,行动是指模型根据给定的提示(prompt)生成的输出文本。每个输出都可以视为模型在执行任务时的选择。行动空间包括词汇表中所有可能的token及其排列组合。

环境(Environment):环境是模型与外界交互的场景,提供模型需要执行任务的状态、动作和对应的奖励。在RLHF中,环境是模型根据提示生成输出并根据反馈调整行为的外部世界。

状态空间(State Space):环境呈现给模型的所有可能状态,通常是输入给模型的提示或上下文信息。

动作空间(Action Space**)**:模型可以执行的所有可能动作,即根据提示生成的所有输出文本。

奖励函数(Reward Function):根据模型的输出,奖励函数为其分配奖励或惩罚。通常,这些奖励由训练好的奖励模型预测,该模型依据人类反馈评估输出质量。

观察(Observation):观察是模型生成输出时接收到的输入提示(prompt)。这些提示作为模型决策和执行任务的基础。观察空间(Observation Space)是指可能的输入token序列,即模型处理的提示文本。

奖励机制(Reward):奖励机制是RLHF框架的核心组成部分,负责基于奖励模型的预测分配奖励或惩罚。奖励模型通常通过大量人类反馈数据进行训练,以确保能够准确预测人类对不同输出的偏好。反馈数据通常通过对模型输出的排序、打分集。

4.2 RLHF实战应用:InstructGPT的训练过程

RLHF的实际应用可以通过InstructGPT(ChatGPT的前身)训练过程来说明。InstructGPT的训练过程分为三个阶段:

在这里插入图片描述
来源与 Training language models to follow instructions with human feedback

首先,从prompt数据集中采样,标注员根据要求为采样的prompt编写答案,形成描述性数据(Demonstration Data)。这些数据用于微调GPT-3模型,训练出一个监督学习模型(Supervised Fine-Tuning, SFT)。通过描述性数据对模型进行有监督微调,使模型能够生成符合基本要求的答案。

接着,从prompt数据库中采样,生成多个模型输出,标注员对这些输出进行打分或排序,形成比较性数据(Comparison Data),并用这些数据训练奖励模型(Reward Modeling, RM)。奖励模型预测不同输出的偏好分数,从而帮助模型生成更高质量的输出。

最后,使用PPO算法(Proximal Policy Optimization)来优化奖励模型。通过从数据集中取样,模型根据监督学习阶段得到的初始化数据进行输出,奖励模型为每个输出打分,最终通过PPO算法调整模型策略,使其生成更符合人类期望的输出。通过RLHF(Reinforcement Learning from Human Feedback)方法,模型能够利用人类反馈逐步提高性能,最终训练出能够生成高质量输出的模型。

通过这三个阶段的训练,InstructGPT能够生成更符合人类需求和偏好的输出,最终形成类似ChatGPT的对话模型。

看到这里,你已经清晰认知到:
AI大模型正在重构全球科技产业格局
掌握核心技术者将享受的行业高薪资基准
碎片化学习正在吞噬90%开发者的竞争力

但问题来了——如何将这份认知转化为实实在在的职场资本?

🔥 你需要的不是更多资料,而是经过验证的「加速器」

这份由十年大厂专家淬炼的**【AI大模型全栈突围工具包】**,正是破解以下困局的密钥

🌟什么是AI大模型


AI大模型是指使用大规模数据和强大的计算能力训练出来的人工智能模型。

这些模型通常具有高度的准确性和泛化能力,可以应用于各种领域,如自然语言处理*、图像识别、*语音识别等。

图片

🛠️ 为什么要学AI大模型


目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

🌰大模型岗位需求


大模型时代,企业对人才的需求变了,AI相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。

图片

💡掌握大模型技术你还能拥有更多可能性:


• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;

• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;

• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;

• 更优质的项目可以为未来创新创业提供基石。

🚀如何学习AI 大模型


由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将重要的课程资料免费分享,需要的同学扫码领取!

在这里插入图片描述

👉1.大模型入门学习思维导图👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过AI大模型的同学,我帮你准备了详细的学习成长路线图&学习规划。大家跟着这个大的方向学习准没问题。如果你真心想要学AI大型模型,请认真看完这一篇干货!

图片

👉2.AI大模型教学视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩**(文末免费领取)**

图片

👉3.大模型实际应用报告合集👈

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(文末免费领取)

图片

👉4.LLM大模型开源教程👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末免费领取)

图片

👉5.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。 (文末免费领取)

图片

👉6.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(文末免费领取)

图片

🏅学会后的收获:


  • 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
  • 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
  • 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
  • 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习

这份完整版的大模型 AI 学习资料已经整理好,朋友们如果需要可以微信扫描下方我的二维码免费领取

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值