一、简介
近期准备系统学习一下大模型LLM,本系列为学习过程中的笔记与心得记录。
内容涵盖:NLP基础概念、Transformer架构、预训练模型、大语言模型、模型部署与微调等。
本文是第五篇,简要梳理了什么是大语言模型及其大模型的训练的方式。
2022 年底,ChatGPT 的横空出世成为 NLP 领域的分水岭,主导地位从此由 BERT 系列模型转向了 LLM 大语言模型。研究范式也从传统的"预训练+微调"演进为"预训练→SFT→RLHF"三阶段流程,标志着 LLM 正式成为 NLP 舞台的核心主角。
这里我们把 LLM 的定义、能力和训练流程梳理清楚。
二、什么是 LLM
2.1 定义
LLM,Large Language Model,大语言模型。说白了就是参数更多、训练数据更大的语言模型。
架构和预训练任务跟传统模型差不多——基本都是 Decoder-Only + CLM,但参数量从 BERT 的几亿跳到了几百亿甚至上千亿,训练数据从几十亿 token 扩到了几万亿 token。量变引起了质变,模型展现出了传统 PLM 完全不具备的能力。
一般来说,包含数百亿参数、在数 T token 语料上预训练的模型才算 LLM。广义上从十亿参数(如 Qwen3-1.5B)到千亿参数(如 Grok-314B)都算,关键看有没有涌现能力。
2.2 LLM 的核心能力
LLM 和传统预训练模型 PLM 最大的区别不只是参数大,而是展现出了几种全新的能力。
2.2.1 涌现能力
区分 LLM 和传统 PLM 最显著的特征。同样的架构和训练任务,某些能力在小模型中不明显,但在大模型中突然爆发——类似物理学中的相变,量变引起质变。
涌现能力是目前业界和学界对 LLM 保持高度关注的核心原因。虽然 LLM 目前的能力和通用人工智能(AGI)还有不小的差距,但在涌现能力的作用下,随着研究的不断深入、高质量数据的不断涌现、更高效的模型架构和训练框架的出现,LLM 终将具备通用智能所需的全部能力,从而给人类生活带来质变。
2.2.2 上下文学习
GPT-3 首次引入。不需要微调,只需要在 prompt 里给几个示例,模型就能完成任务。
传统 PLM 解决下游任务的范式是预训练→微调:收集训练数据、准备算力、微调模型。以 BERT(0.5B 参数)为例,有监督微调一般需要 10G 以上显存,训练数据则需要 1k~数十k 条人工标注样本,获取成本不低。上下文学习把这个流程简化成了:构造几个示例扔进 prompt 就行。GPT-4 在大部分任务上通过调整 prompt 或给 1~5 个示例,就能超过传统 PLM 微调的效果,算力和数据成本大幅降低。
这个能力正在引发 NLP 研究范式的变革——从预训练-微调转向 Prompt Engineering。
2.2.3 指令遵循
通过指令微调训练后,LLM 能理解并遵循从未见过的指令来执行任务。不需要提前教模型每件事怎么做,只需要在指令微调阶段混合多种指令训练泛化能力,LLM 就能处理用户的绝大部分需求。
ChatGPT 之所以能火出圈,核心就是指令遵循能力——它不再是只能给研究者用的理论模型,而是能服务各行各业的通用工具。写作文、编程序、批改试卷、阅读报纸,只要你说清楚需求,它就能干。
目前大火的 Agent、WorkFlow,以及未来可能出现的全能助理,本质依赖的都是 LLM 的指令遵循能力。
2.2.4 逐步推理
逻辑推理一直是 NLP 的难点。传统模型很难解决涉及多个推理步骤的复杂任务,但 LLM 通过思维链(Chain-of-Thought,CoT)推理策略,可以利用包含中间推理步骤的提示来解决问题。
这个能力让 LLM 可以处理复杂的逻辑任务,向"可靠的"智能助理迈出了关键一步。有研究推测,这种能力可能是通过代码训练获得的。
2.3 LLM 的特点
除了核心能力,LLM 还有一些值得关注的特点。
多语言支持。因为预训练语料本身就是多语言的,LLM 天生具备多语言能力。不过英文语料质量最高、占比最大,大部分模型英文能力优于中文。国内针对中文优化的模型(文心一言、通义千问等)在中文场景表现更好。
长文本处理。传统 PLM 最大上下文一般是 512 token,LLM 训练时就支持 4K、8K 甚至 32K。加上 RoPE 等位置编码的长度外推能力,推理时还能处理更长的文本。比如 InternLM 在 32K 上预训练,通过 RoPE 能处理 200K 的上下文。
拓展多模态。给 LLM 加上图像编码器和 Adapter 层,在图文数据上微调,就能支持图文问答甚至生成。多模态大模型是一个重要研究方向。
幻觉问题。LLM 会一本正经地胡说八道——捏造不存在的论文、编造虚假的事实。这是 LLM 的固有缺陷,在医学、金融等强调精准的领域可能造成严重后果。RAG、prompt 限制等方法能缓解但无法根除。
三、如何训练一个 LLM
训练一个完整的 LLM 需要三个阶段:Pretrain(预训练)、SFT(有监督微调)、RLHF(人类反馈强化学习)。
用一个类比来理解:Pretrain 是给学生教所有基础知识,SFT 是教他怎么读题、怎么解题,RLHF 是让他不断练习、老师批改、纠正错误。
3.1 Pretrain——赋予知识
预训练是 LLM 训练最核心也是工程量最大的一步。用海量无监督文本对随机初始化的模型参数进行训练,任务还是 CLM(Causal Language Model)——预测下一个 token。
LLM 的预训练和传统预训练模型非常类似,但其还具备一些独有的特点:
3.1.1 参数量和数据量的跃升
和传统 PLM 相比,LLM 预训练的体量有数量级的差距:
| 模型 | hidden_layers | hidden_size | 注意力头数 | 参数量 | 预训练数据量 |
|---|---|---|---|---|---|
| BERT-base | 12 | 768 | 12 | 0.1B | 3B |
| BERT-large | 24 | 1024 | 16 | 0.3B | 3B |
| Qwen-1.8B | 24 | 2048 | 16 | 1.8B | 2.2T |
| LLaMA-7B | 32 | 4096 | 32 | 7B | 1T |
| GPT-3 | 96 | 12288 | 96 | 175B | 300B |
OpenAI 提出了 Scaling Law:C ~ 6ND(C 为计算量,N 为模型参数,D 为训练 token 数)。实验得出训练 token 数应该是模型参数的 1.7 倍,LLaMA 更是提出 20 倍效果最优。
3.1.2 算力需求庞大
预训练一个 LLM 的算力消耗极其庞大。百亿级模型需要 1024 张 A100 训练一个多月,十亿级也需要 256 张 A100 训练两三天。单卡根本放不下,必须用分布式训练。
分布式训练的核心思路是两种并行:
数据并行:模型能放进单卡,但需要加速训练。每张卡上放完整的模型副本,处理不同的数据批次,前向传播后汇总梯度、更新参数。
模型并行:模型太大单卡放不下。把模型拆分到多张卡上,每张卡放不同的层或不同的部分。
在此基础上还演化出张量并行、3D 并行、ZeRO 等更高效的方式。目前主流框架包括 Deepspeed、Megatron-LM、ColossalAI,其中 Deepspeed 用得最广。
Deepspeed 的核心策略是 ZeRO 和 CPU-offload。CPU-offload 的思路是将部分显存占用(如优化器状态)卸载到 CPU 内存中,从而进一步释放 GPU 显存,让单卡能承载更大的模型。
3.1.3 Deepspeed 的 ZeRO 策略
ZeRO 是一种显存优化的数据并行方案。它把显存占用分为两类:
- 模型状态:模型参数、模型梯度和 Adam 优化器状态。假设模型参数量为 1M,在混合精度训练下,该部分需要 16M 空间存储,其中 Adam 状态参数就占了 12M——也就是说优化器状态是显存占用的大头。
- 剩余状态:激活值、缓存、显存碎片。
ZeRO 提了三种递进的优化策略:
| 策略 | 分片内容 | 每卡显存占用 |
|---|---|---|
| ZeRO-1 | Adam 状态参数 | 最高,但通信最少 |
| ZeRO-2 | Adam 状态 + 梯度 | 居中 |
| ZeRO-3 | Adam 状态 + 梯度 + 模型参数 | 最低,但通信最多 |
分片越多,每卡显存越少,但通信开销越大。具体用哪个策略,要根据算力和模型体量动态决定。
3.1.4 预训练数据
LLM 的知识绝大部分在预训练阶段学会,所以预训练语料需要覆盖多种来源、多种领域:
| 数据集 | 占比 | 大小 |
|---|---|---|
| CommonCrawl | 67.0% | 3.3 TB |
| C4 | 15.0% | 783 GB |
| Github | 4.5% | 328 GB |
| Wikipedia | 4.5% | 83 GB |
| Books | 4.5% | 85 GB |
| ArXiv | 2.5% | 92 GB |
| StackExchange | 2.0% | 78 GB |
数据配比是预训练的"核心秘籍",不同配比会很大程度影响模型性能。训练中文 LLM 更难——高质量语料大部分是英文,开源中文预训练数据集(SkyPile 150B、yayi2 100B 等)和英文有明显差距。
数据质量比体量更重要。预训练数据处理一般包括三步:
- 文档准备:从爬取的网站提取纯文本,过滤有害 URL,确定语种
- 语料过滤:去除低质量、无意义、有毒内容(乱码、广告等)。可以用模型分类器过滤,也可以用人工定义的质量指标
- 语料去重:大量重复文本会显著影响泛化能力。基于 hash 算法或子串匹配计算文档相似度,去除高度相似的文档
经过高质量处理的 627B SlimPajama 数据集效果比 1T 的 RedPajama 更好,证明了数据质量的价值。
3.2 SFT——激发能力
预训练后的 LLM 像一个博览群书但不求甚解的书生——什么都能接上话,但不理解问题本身。这是因为 CLM 训练的是预测下一个 token 的能力,和下游任务或用户指令没有对齐。
SFT(Supervised Fine-Tuning,有监督微调)就是教这个书生怎么用知识。
3.2.1 指令微调
SFT 的核心是指令微调——训练数据是各种类型的用户指令和对应的回复:
input: 告诉我训练一个 LLM 包括哪几个阶段?output: 训练LLM包括三个阶段,分别是预训练、监督微调 和 强化学习。和传统微调的区别在于:传统 PLM 要针对每个下游任务单独微调(分类任务微调一次,实体识别再微调一次),LLM 的 SFT 训练的是通用指令遵循能力,一次微调覆盖所有任务。
3.2.2 指令数据
SFT 的数据质量和配比同样关键。OpenAI 的 InstructGPT 使用了十种指令类型:
| 指令类型 | 占比 |
|---|---|
| 文本生成 | 45.6% |
| 开放域问答 | 12.4% |
| 头脑风暴 | 11.2% |
| 聊天 | 8.4% |
| 文本转写 | 6.6% |
| 文本总结 | 4.2% |
| 文本分类 | 3.5% |
| 其他 | 3.5% |
| 特定域问答 | 2.6% |
| 文本抽取 | 1.9% |
人工标注数据成本极高,ChatGPT 的成功很大程度归功于高质量人工标注。为降低成本,可以用 GPT-4 生成指令数据——Alpaca 数据集就是用 ChatGPT 基于种子 prompt 自动生成的。
指令数据集一般包含三个字段:
{ "instruction": "将下列文本翻译成英文:", "input": "你是我最好的朋友。", "output": "You are my best friend."}3.2.3 SFT 的训练格式
SFT 本质上还是 CLM 训练,但需要让模型学会区分指令和回复。LLaMA 的 SFT 格式:
### Instruction:将下列文本翻译成英文:你是我最好的朋友。### Response:You are my best friend.注意:模型预测的不只是 output,而是整个 input + output,只是 input 部分不参与 loss 计算。
3.2.4 多轮对话
模型的多轮对话能力完全来自 SFT。构造多轮对话样本的方式有三种:
方式一:只拟合最后一轮回复——会丢失中间信息。
input=<prompt_1><completion_1><prompt_2><completion_2><prompt_3><completion_3> output=[MASK][MASK][MASK][MASK][MASK]<completion_3>方式二:N 轮对话构造成 N 个样本——大量重复计算。
input_1 = <prompt_1><completion_1> output_1 = [MASK]<completion_1> input_2 = <prompt_1><completion_1><prompt_2><completion_2> output_2 = [MASK][MASK][MASK]<completion_2> input_3=<prompt_1><completion_1><prompt_2><completion_2><prompt_3><completion_3> output_3=[MASK][MASK][MASK][MASK][MASK]<completion_3>方式三(最优):一轮对话中拟合所有回复,每轮回复前用 MASK 标记:
input = <prompt_1><completion_1><prompt_2><completion_2><prompt_3><completion_3>output = [MASK]<completion_1>[MASK]<completion_2>[MASK]<completion_3>注意:这里的[MASK]表示对应位置不参与 loss 计算(即模型不需要预测这些位置),不是BERT 预训练中用来遮蔽输入的<MASK>token。模型只需要预测每轮的 completion 部分,prompt 部分的 loss 被 mask 掉了。
之所以可以以第三种方式来构造多轮对话样本,是因为 LLM 本质还是进行的 CLM 任务,进行单向注意力计算,因此在预测时会从左到右依次进行拟合,前轮的输出预测不会影响后轮的预测。目前大部分 LLM 都用这种方式做多轮对话 SFT。
3.3 RLHF——对齐人类偏好
SFT 让模型学会了遵循指令,但 RLHF(Reinforcement Learning from Human Feedback) 才是 ChatGPT 相较于 GPT-3 的核心突破。从功能上说,预训练赋予知识,SFT 对齐指令,RLHF 对齐人类价值观——让模型达到安全、有用、无害的标准。
3.3.1 训练奖励模型(RM)
RM(Reward Model)用来拟合人类偏好,给 LLM 的回复打分。本质上是一个文本分类模型——输入文本,输出一个标量奖励。
训练数据是人工标注的偏好对比:
{ "prompt": "如果你打算从商店偷东西,你觉得早上好还是晚上好?", "chosen": "这是违法的事情,我不能提供建议", "rejected": "考虑晚上的人口贩运和监控摄像头的差别..."}训练时,prompt 分别和 chosen、rejected 拼接,进入模型输出标量奖励,然后最大化 chosen 和 rejected 的奖励差异来计算 loss。
为什么不直接用标量奖励训练?因为标注者之间有价值观差异,数值奖励会放大这些差异,导致训练不稳定。用排名(偏好对比)更鲁棒。
RM 的模型可以和 LLM 不一样大。比如 OpenAI 用 175B 的 LLM 配 6B 的 RM。
3.3.2 PPO 训练
PPO(Proximal Policy Optimization,近端策略优化)是 RLHF 的核心算法,训练过程中包括四个模型:
| 模型 | 来源 | 是否更新参数 |
|---|---|---|
| Actor Model | SFT 后的 LLM 初始化 | 更新(这就是最终的 LLM) |
| Ref Model | SFT 后的 LLM 初始化 | 不更新 |
| Reward Model | 训练好的 RM 初始化 | 不更新 |
| Critic Model | 训练好的 RM 初始化 | 更新 |
训练流程:
- 输入一个 prompt,Actor Model 和 Ref Model 分别生成回复
- Actor Response 和 Ref Response 计算 KL 散度,防止模型更新太远丢失预训练和 SFT 的能力:
其中 是 Actor Model 的输出分布, 是 Ref Model 的输出分布, 是控制 KL 散度影响的权重参数。
- Actor Response 输入 Reward Model 和 Critic Model 打分,Reward Model 输出标量奖励,Critic Model 输出累加奖励
- 结合 KL 散度和两个模型的打分计算奖励函数:
其中 是控制 KL 散度权重的参数, 是控制下一个样本打分影响的参数, 是 Critic Model 的打分, 是 Reward Model 的打分。
- 根据奖励函数分别计算 actor loss 和 critic loss,更新 Actor Model 和 Critic Model 的参数(两者的更新方法不同)
为什么需要四个模型?Ref Model 和 Reward Model 不更新参数,是为了限制模型不要偏离太远——如果更新太激进,可能会丢失 Pretrain 和 SFT 阶段学到的知识和能力。
四个模型的显存占用很大。如果 RM 和 LLM 都用 7B,PPO 过程大概需要 240G 显存(4 张 80G A100)。
3.3.3 DPO——更简单的替代方案
RLHF 的门槛太高了。DPO(Direct Preference Optimization,直接偏好优化)提出了一个更简单的方案:把强化学习问题转化为监督学习,直接学习人类偏好。
DPO 只需要两个 LLM 就能完成训练,不需要单独训练 RM,也不需要跑 PPO 的复杂流程。训练过程和 SFT 类似,但优化目标不同——DPO 通过数学推导证明了可以直接从偏好数据中学习最优策略,无需中间的 RM。
DPO 是 RLHF 的低门槛平替,效果在很多场景下接近甚至持平 RLHF。
四、总结
LLM 是参数规模达百亿级以上、在海量语料上训练的语言模型,量变引发了质变——涌现能力带来了上下文学习、指令遵循和逐步推理等传统模型不具备的全新能力。训练一个完整的 LLM 分三步走:预训练在海量无监督文本上赋予模型基础知识,是工程量最大的一步;SFT 通过指令微调教会模型理解并遵循人类指令,激发其通用任务能力;RLHF 利用人类偏好数据训练奖励模型、再通过 PPO 优化让模型的行为与人类价值观对齐。三个环节环环相扣,数据质量和配比在每个阶段都至关重要——GPT-3 参数虽大但未引起轰动,而 ChatGPT 改变世界的关键,正在于 SFT 和 RLHF 这两步对齐工作。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~