跳到主要内容

大模型训练与微调技术

深入理解大语言模型的训练流程、微调策略和优化技术

目录

🎯 学习目标

通过本章学习,你将能够:

  • 理解大模型预训练的完整流程和关键技术
  • 掌握监督微调(SFT)和强化学习(RLHF)的原理和实践
  • 了解参数高效微调(PEFT)技术如LoRA、Adapter等
  • 理解分布式训练和优化策略
  • 具备设计和实施大模型训练方案的能力

🏗️ 大模型训练全流程

训练阶段概览

大语言模型的训练通常分为「预训练 + 后训练」两大块。后训练(post-training)在 2026 已成为模型效果差异的主要来源,包含 SFT 与多种偏好对齐/推理强化方法。

训练阶段主要目标数据类型训练方法计算资源需求训练时长
预训练(Pre-training)学习语言统计规律和世界知识大规模无标注文本自监督学习(下一词预测)极高(数千GPU-月)数周到数月
监督微调(SFT)学习指令跟随和对话格式指令-回答对监督学习中等(数十GPU-天)数天到数周
偏好对齐(Alignment)对齐人类价值观和偏好成对偏好/AI 反馈RLHF(PPO) / DPO / ORPO / RLAIF中~高数天到数周
推理强化(Reasoning RL)提升多步推理正确率可验证答案(数学/代码)GRPO 等 RL on verifiable rewards数天到数周

2026 后训练全景一句话预训练 → SFT → 偏好对齐(DPO/RLHF) → (可选)推理强化(GRPO) → 蒸馏到小模型。其中 DPO 已是开源界对齐主流(简单稳定、无需奖励模型),GRPO 是 DeepSeek-R1 把模型练成推理模型的关键。

训练数据处理流水线

处理阶段主要任务技术方法质量指标工具示例
数据收集获取大规模文本数据网页爬取、API采集、数据购买数据量、覆盖面Common Crawl, C4
数据清洗去除低质量和有害内容规则过滤、模型过滤、去重质量分数、重复率CCNet, fastText
数据预处理格式标准化和编码文本规范化、分词、编码一致性、完整性SentencePiece, tiktoken
数据混合平衡不同来源和类型采样策略、权重分配分布均衡性自定义采样器
数据验证确保数据质量和合规性统计分析、人工审核合规率、质量评分数据质量检测工具

🎓 预训练技术深度解析

自监督学习原理

预训练阶段使用自监督学习,通过预测下一个词汇来学习语言模式和知识。

学习任务输入格式目标输出学习内容难点挑战
下一词预测(CLM)[w1, w2, ..., wn]wn+1语言模式、语法结构长距离依赖建模
掩码语言建模(MLM)[w1, [MASK], w3, ...]w2双向上下文理解预训练-微调差异
前缀语言建模(PLM)prefix + [w1, w2, ...]续写内容条件生成能力前缀选择策略
文档级建模多段落文档段落间关系长文本理解内存和计算限制

训练目标函数

目标函数类型数学表达式优化目标适用场景计算复杂度
交叉熵损失L = -∑log P(wi|w<i)最大化下一词概率标准语言建模O(V×d)
对比学习损失L = -log(exp(sim(h+,h))/∑exp(sim(h-,h)))学习表示区分性表示学习O(B²×d)
知识蒸馏损失L = KL(P_student, P_teacher)知识传递模型压缩O(V×d)
多任务损失L = ∑λi Li多目标优化多任务学习各任务复杂度之和

大规模训练优化技术

优化技术核心原理性能提升内存节省实现复杂度
梯度累积累积多个小批次梯度模拟大批次训练
混合精度训练FP16计算+FP32存储2x速度提升50%内存节省
梯度检查点重计算激活值80%内存节省
ZeRO优化器分布式优化器状态线性扩展8x内存节省
模型并行模型分片到多GPU突破单卡限制按分片比例
流水线并行层级流水线执行提高GPU利用率

🎯 监督微调(SFT)技术

SFT训练流程

监督微调是在预训练模型基础上,使用高质量的指令-回答对进行有监督训练。

训练步骤具体操作关键参数注意事项评估指标
数据准备构建指令-回答数据集数据量、质量、多样性避免数据泄露数据质量分数
模型初始化加载预训练权重模型架构匹配权重冻结策略初始性能基线
超参数设置学习率、批次大小等lr=1e-5, batch=32避免灾难性遗忘验证集性能
训练执行梯度下降优化训练轮数、早停过拟合监控训练损失曲线
模型评估多维度性能测试准确率、流畅度等人工评估结合综合评估分数

指令数据构建

数据类型构建方法质量特征数量需求应用效果
任务指令人工编写+模板生成清晰、具体、多样10K-100K提升任务执行能力
对话数据人机对话收集自然、连贯、有用50K-500K增强对话能力
推理链数据步骤分解标注逻辑清晰、完整5K-50K提升推理能力
代码数据代码-注释对正确、规范、实用20K-200K增强编程能力
多模态数据图文配对标注准确、相关、丰富10K-100K支持多模态理解

微调策略对比

微调策略更新参数计算开销内存需求效果保持适用场景
全参数微调所有参数100%100%最佳资源充足,追求最佳效果
冻结底层顶层参数30-50%30-50%良好资源有限,任务相关性高
逐层解冻渐进解冻50-80%50-80%很好平衡效果和效率
任务特定层特定层参数20-40%20-40%中等特定任务优化

🔄 强化学习人类反馈(RLHF)

RLHF训练流程

RLHF通过人类反馈训练奖励模型,再用强化学习优化语言模型,使其输出更符合人类偏好。

训练阶段主要任务输入数据输出结果技术挑战
奖励模型训练学习人类偏好回答对比较数据奖励分数预测器偏好一致性建模
强化学习优化最大化奖励分数提示词集合优化后的语言模型训练稳定性
安全性过滤确保输出安全安全性检查数据安全约束模型平衡有用性和安全性

奖励模型设计

模型组件设计选择技术实现性能指标优化方向
基础架构与语言模型相同Transformer编码器预测准确率架构一致性
输出层标量奖励预测线性层+激活函数分数分布合理性数值稳定性
训练目标排序损失函数Bradley-Terry模型排序一致性偏好建模准确性
正则化防止奖励黑客KL散度约束与原模型相似度保持原有能力

PPO算法详解

近端策略优化(PPO)是RLHF中常用的强化学习算法。

PPO组件数学表达式作用机制超参数调优策略
策略比率r(θ) = π_θ(a|s) / π_θ_old(a|s)衡量策略变化监控比率分布
裁剪目标L^CLIP = min(r(θ)A, clip(r(θ), 1-ε, 1+ε)A)限制更新幅度ε=0.2根据训练稳定性调整
价值函数L^VF = (V_θ(s) - V^target)²基线估计提高估计准确性
熵正则L^ENT = -H(π_θ(·|s))保持探索性β=0.01平衡探索和利用

🧭 偏好对齐方法全景(2026 必会)

RLHF(PPO) 虽强但(要训奖励模型 + 在线 RL,工程复杂、易不稳)。2024 起业界涌现更轻、更稳的对齐方法,DPO 已成开源主流;推理模型则催生了 GRPO 这类面向可验证奖励的 RL。

PPO vs DPO vs GRPO 对比

维度RLHF / PPODPO(直接偏好优化)GRPO(群组相对策略优化)
核心思想训奖励模型 + 强化学习最大化奖励用「好/坏成对数据」直接优化策略,跳过奖励模型对同一题采样一组回答,用组内相对优势做 RL,省去价值网络
数据需求偏好对 + 在线采样离线成对偏好数据(chosen/rejected)题目 + 可验证奖励(答案对错/单测通过)
是否需奖励模型需要不需要不需要(用规则/可验证信号当奖励)
稳定性/实现复杂、调参敏感(KL、clip)简单稳定、像有监督训练中等,需采样多条、设计奖励
典型用途通用对齐(早期 ChatGPT)开源对齐主流(指令/价值观)训练推理模型(数学/代码)
代表InstructGPT、早期 GPTZephyr、Llama/Qwen 对齐、众多开源DeepSeek-R1、推理类模型

面试一句话

  • DPO:「把 RLHF 的奖励模型 + RL 两步,合成一个直接在成对偏好上做的分类式损失,简单稳定,所以开源都用它。」
  • GRPO:「DeepSeek 的做法——同一道题采样多条答案,用可验证奖励(答案对不对、单测过不过)算组内相对优势,去掉 PPO 的价值网络,专门把模型练成会『想很久再答』的推理模型。」

其它对齐范式

  • ORPO:把 SFT 与偏好对齐合成一步(在 SFT 损失里加一个 odds-ratio 偏好项),不需要单独的参考模型,进一步简化流程。
  • RLAIF(AI 反馈强化学习):用更强的 AI 模型代替人来标注偏好/打分,降低人工标注成本,规模化生成偏好数据。
  • Constitutional AI(Anthropic):给模型一部「宪法」(原则集合),让模型自我批评+修订生成对齐数据,再用 RLAIF 训练;是「无害性」对齐的代表路线。

推理强化:RL on verifiable rewards

推理模型(o 系列、DeepSeek-R1、QwQ、Qwen3-thinking)的关键不在更大,而在训练时用 RL 鼓励更长、更对的思维链

  • 奖励来自可验证信号:数学题对答案、代码过单测、逻辑题查规则——奖励客观可判,避免奖励模型被「刷分」(reward hacking)。
  • 效果:模型学会在输出 content 前先生成大段 thinking tokens(推理痕迹),推理时投入越多 test-time compute,难题正确率越高。
  • R1 的启示:纯 RL(R1-Zero)即可涌现推理能力;再配少量冷启动 SFT + GRPO 得到可用的 R1。

🔧 参数高效微调(PEFT)

PEFT技术对比

参数高效微调技术通过只更新少量参数来实现模型适配,大大降低了计算和存储成本。

PEFT方法核心思想参数量性能保持实现复杂度适用场景
LoRA低秩矩阵分解 W=W₀+BA0.1-1%95-99%通用微调主流
QLoRA4bit 量化基座 + LoRA adapter0.1-1%95-99%单卡微调大模型
DoRA权重分解为「幅度+方向」再对方向做 LoRA0.1-1%≥LoRA想逼近全参效果
Adapter插入小型网络1-5%90-95%多任务学习
Prefix/P-Tuning v2优化输入前缀/深度提示0.1-1%85-98%低-中生成/理解任务
BitFit只调优偏置项<0.1%80-90%极低资源极限场景

QLoRA:单卡微调大模型的关键

QLoRA = 4bit 量化的冻结基座 + 可训练的 LoRA adapter,让 7B~70B 模型能在消费级/单张 GPU 上微调:

  • 基座 4bit(NF4)量化并冻结,只在前向时反量化参与计算,显存大幅下降;只训练 LoRA 的 A/B 小矩阵(BF16)。
  • 配合 double quantization(量化常数再量化)+ paged optimizer(显存峰值分页到内存) 进一步省显存。
  • 显存直觉对比(量级,随实现/序列长变化):
方式7B 微调显存(量级)说明
全参数微调(FP16/BF16)~60–80 GB+需多卡或 A100/H100
LoRA(BF16 基座)~16–20 GB单张高端卡
QLoRA(4bit 基座)~6–12 GB单张消费级卡(如 24G/16G)可训

面试一句话:「LoRA 是只训低秩增量、冻结原权重;QLoRA 在此基础上把基座再压成 4bit,所以单卡就能微调几十 B 的模型;DoRA 则把权重拆成幅度和方向、只对方向做低秩更新,效果更接近全参微调。」

LoRA技术深度解析

低秩适应(LoRA)是最流行的PEFT技术之一。

LoRA特性技术细节数学表示优势局限性
低秩分解W = W₀ + BAW₀固定,优化B∈R^(d×r), A∈R^(r×k)参数量大幅减少表达能力受限
秩选择通常r=8,16,32rank越大表达能力越强灵活的复杂度控制需要任务特定调优
缩放因子α/r缩放控制LoRA贡献度稳定训练过程需要经验调参
模块选择通常应用于注意力层只对关键层应用LoRA效率和效果平衡可能错过重要参数

Adapter架构设计

Adapter类型架构设计插入位置参数量性能特点
串行Adapter两层MLP每层之后2×d×bottleneck简单有效
并行Adapter与原层并行与FFN并行2×d×bottleneck训练更稳定
混合Adapter串行+并行结合多个位置更多参数性能更好
条件Adapter任务条件激活动态选择共享参数多任务友好

💻 用现成训练栈跑通微调(真实命令,替代手写模拟)

此前此处是 600+ 行 Node.js 模拟训练代码LLMTrainer / LoRATrainer),其循环、损失、矩阵乘全是 Math.random() 占位,与真实训练无关,容易让人误以为「会写这些类 = 会训大模型」。真实大模型训练几乎都用 Python 生态的现成框架。下面给出主流工具与最小可用命令

工具选型一览

工具定位适合
Hugging Face transformers + peft + trl + bitsandbytes官方基础栈:SFT/DPO/PPO/GRPO + LoRA/QLoRA想理解每一层、灵活定制
unsloth对 LoRA/QLoRA 做内核优化,更快更省显存单卡微调、追求速度
AxolotlYAML 配置驱动,封装 SFT/DPO/QLoRA少写代码、跑标准 recipe
LLaMA-FactoryWeb UI + CLI,覆盖 SFT/DPO/PPO/多模型国内常用、上手快
verl / OpenRLHF面向大规模 RL(PPO/GRPO)训练推理模型、RLHF 工程

TRL 做 SFT / DPO 的最小骨架

trl 提供 SFTTrainerDPOTrainerGRPOTrainer 等高层封装,几十行即可跑通(核心是数据 + config,不需要手写训练循环):

# SFT:监督微调(QLoRA 风格,4bit 基座 + LoRA)
from datasets import load_dataset
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import LoraConfig
from trl import SFTTrainer, SFTConfig

model_id = "Qwen/Qwen3-8B" # 换成你要微调的开源权重模型
bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype="bfloat16", bnb_4bit_use_double_quant=True)
model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=bnb, device_map="auto")
tok = AutoTokenizer.from_pretrained(model_id)
ds = load_dataset("json", data_files="train.jsonl", split="train") # 你的指令数据

trainer = SFTTrainer(
model=model, train_dataset=ds, processing_class=tok,
peft_config=LoraConfig(r=16, lora_alpha=32, lora_dropout=0.05,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj"]),
args=SFTConfig(output_dir="out", per_device_train_batch_size=2,
gradient_accumulation_steps=8, learning_rate=2e-4,
num_train_epochs=3, bf16=True, logging_steps=10),
)
trainer.train()
# DPO:偏好对齐(数据是 prompt + chosen + rejected)
from trl import DPOTrainer, DPOConfig
dpo = DPOTrainer(model=model, args=DPOConfig(output_dir="dpo_out", beta=0.1,
learning_rate=5e-6, bf16=True),
train_dataset=pref_ds, processing_class=tok)
dpo.train()
# GRPO(推理强化)则用 trl 的 GRPOTrainer,传入一个可验证奖励函数 reward_funcs=[...]

LLaMA-Factory / Axolotl 命令行(更少代码)

# LLaMA-Factory:一条命令跑 LoRA SFT(参数也可写进 YAML)
llamafactory-cli train --stage sft --model_name_or_path Qwen/Qwen3-8B --dataset alpaca_zh --finetuning_type lora --quantization_bit 4 --lora_target q_proj,v_proj --output_dir out --bf16

# Axolotl:YAML 驱动
axolotl train qlora-qwen3.yml

训练曲线怎么读(面试常问)

现象含义处理
train loss 稳降、eval loss 同降正常学习继续,按 eval 选最优 checkpoint
train loss 降、eval loss 回升过拟合减 epoch/加正则/早停/增数据
loss 不降或剧烈震荡学习率过大、数据脏调小 lr、检查模板/标签对齐
loss 突然 NaN/爆炸数值不稳(fp16 溢出)改 bf16、加 grad clip、降 lr
DPO 中 reward margin(chosen-rejected) 上升偏好学到位关注 KL 别偏离参考模型太远
GRPO 中平均奖励/通过率上升推理能力在涨关注回答长度与奖励是否同向

关键指标:SFT 看 eval_loss;DPO 看 rewards/chosenrewards/rejectedrewards/marginskl;GRPO 看 reward 均值与可验证通过率。用 wandb / swanlab / tensorboard 看曲线,不要靠 print。

蒸馏:把大模型能力压进小模型

蒸馏类型做法2026 代表
响应/logits 蒸馏学生学教师的输出分布(soft label)通用模型压缩
数据蒸馏(SFT on teacher outputs)用强模型生成高质量答案当训练数据大量小模型走此路
reasoning distillation(推理蒸馏)R1 / o 系列 生成「带思维链的解题轨迹」,SFT 到小模型DeepSeek-R1-Distill-Qwen/Llama、o-mini 路线

面试一句话:「DeepSeek 把 R1 的长思维链数据蒸馏到 Qwen/Llama 小模型,得到 R1-Distill 系列——小模型不必自己做昂贵 RL,直接模仿大模型的推理过程就能获得不错的推理能力;OpenAI 的 o-mini 也是类似的『小而能想』路线。」

🎯 学习检验

理论理解检验

  1. 训练流程:能否解释预训练、SFT、RLHF三个阶段的目标和方法?
  2. 优化技术:能否说明各种训练优化技术的原理和适用场景?
  3. PEFT方法:能否比较不同PEFT技术的优劣和选择标准?
  4. 数据处理:能否设计完整的训练数据处理流水线?

实践能力检验

  1. 训练实现:能否实现简化版的训练流程?
  2. 参数调优:能否根据任务特点调整训练超参数?
  3. 问题诊断:能否识别和解决训练中的常见问题?
  4. 效果评估:能否设计合理的训练效果评估方案?

🚀 实践项目建议

基础训练项目

  1. Mini训练框架:实现简化版的大模型训练框架
  2. 数据处理流水线:构建完整的训练数据预处理系统
  3. LoRA微调工具:开发易用的LoRA微调工具
  4. 训练监控系统:实现训练过程的可视化监控

高级优化项目

  1. 分布式训练:实现多GPU/多节点训练
  2. 混合精度优化:集成自动混合精度训练
  3. 梯度检查点:实现内存优化的梯度检查点
  4. 自适应学习率:开发智能的学习率调度策略

📚 延伸阅读

核心论文

  1. "Training language models to follow instructions" - InstructGPT论文(RLHF/PPO)
  2. "Direct Preference Optimization (DPO)" - 跳过奖励模型的偏好对齐
  3. "DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via RL" - GRPO + 可验证奖励训练推理模型
  4. "Constitutional AI: Harmlessness from AI Feedback" - RLAIF / 宪法对齐
  5. "LoRA""QLoRA: Efficient Finetuning of Quantized LLMs" - PEFT 与 4bit 微调
  6. "DoRA: Weight-Decomposed Low-Rank Adaptation" - 幅度/方向分解的 LoRA 增强

技术博客

  1. OpenAI Blog - GPT系列模型训练经验
  2. Anthropic Research - Constitutional AI和RLHF研究
  3. Hugging Face Blog - PEFT技术实践分享
  4. DeepSpeed Blog - 大规模训练优化技术

开源工具

  1. DeepSpeed - 微软的大规模训练框架
  2. FairScale - Facebook的分布式训练工具
  3. PEFT - Hugging Face的参数高效微调库
  4. Transformers - 预训练模型和微调工具

💡 学习提示:大模型训练是一个复杂的工程问题,需要理论知识和实践经验的结合。建议从小规模实验开始,逐步理解各个组件的作用,然后扩展到更大规模的训练。关注最新的优化技术和工具,因为这个领域发展很快。