← 返回博客列表
大模型预训练后训练

大模型是怎么炼成的:LLM 训练过程全解析

2026-05-05⏱ 7 分钟

大模型是怎么炼成的:LLM 训练过程全解析

# LLM

训练一个大型语言模型,是人类迄今为止工程复杂度最高的软件项目之一。理解这个过程,不仅是技术的必修课,也是认识AI能力边界的关键。

本文以一个典型的百亿参数级LLM为例,完整还原其训练流程。

一、训练全流程概览

原始文本数据
    ↓ 数据清洗与预处理
训练数据集(Token化)
    ↓ 预训练(Pre-training)
基础模型(Base Model)
    ↓ 监督微调(SFT)
指令模型(Instruct Model)
    ↓ 偏好对齐(RLHF / DPO)
对齐模型(Aligned Model)
    ↓ 评估与安全测试
发布版本(Released Model)

二、第一阶段:数据准备

数据来源

预训练数据是大模型的"基因",决定了模型能知道什么、会说什么。

典型数据来源包括:

  • 网页数据:Common Crawl(PB级规模,需大量过滤)、C4、FineWeb
  • 书籍:Books3、Gutenberg(高质量长文本,逻辑连贯)
  • 代码:GitHub(The Stack)、Stack Overflow
  • 学术论文:ArXiv、PubMed、S2ORC
  • 百科知识:Wikipedia、Wikidata
  • 对话数据:Reddit、论坛、新闻评论
  • 多语言数据:mC4、CC-100 等
  • 一个典型的1000亿参数模型,预训练数据量约为 1-5万亿 token(~1-5TB文本)。

    数据清洗

    原始互联网数据质量参差不齐,必须经过严格过滤:

    1. 去重:MinHash LSH 算法进行文档级、段落级去重

    2. 质量过滤:困惑度(Perplexity)过滤、语言检测、有害内容过滤

    3. 格式化:统一编码(UTF-8)、去除HTML标签、规范化标点

    4. 数据配比:不同来源数据按比例混合,代码/数学数据通常上采样

    Tokenization(分词)

    将文本转换为模型可处理的 token 序列。

    BPE(Byte Pair Encoding) 是目前最主流的分词算法:

  • 从字节级别出发,迭代合并高频字节对
  • GPT-4 使用 cl100k_base,词表大小约 100K
  • LLaMA 3 词表扩展至 128K,中文编码效率显著提升
  • 三、第二阶段:预训练

    模型架构

    以 Decoder-only Transformer 为例(GPT系列的标准架构):

    输入 Token IDs
        ↓ Embedding Layer(词嵌入)
        ↓ × N 个 Transformer Block:
        │   ├── RMSNorm(层归一化)
        │   ├── Multi-Head Self-Attention(多头自注意力)
        │   │   └── RoPE 位置编码
        │   ├── 残差连接
        │   ├── RMSNorm
        │   ├── FFN / MoE层(前馈网络)
        │   └── 残差连接
        ↓ RMSNorm
        ↓ LM Head(线性层 + Softmax)
        ↓ 下一个 Token 的概率分布

    关键超参数举例(以70B模型为参考):

  • 层数(Layers):80
  • 隐藏维度(Hidden Dim):8192
  • 注意力头数(Heads):64
  • KV Heads:8(GQA分组查询注意力)
  • 词表大小:128K
  • 训练目标:自回归语言建模

    核心损失函数:

    L = -Σ log P(token_t | token_1, ..., token_{t-1})

    即:给定前文,预测下一个token的交叉熵损失。看似简单,却迫使模型内化语言的所有统计规律。

    分布式训练

    训练一个百亿参数模型,单张GPU远远不够,需要多种并行策略:

    并行类型原理适用场景
    数据并行(DP)不同GPU处理不同数据批次最基础的并行
    流水线并行(PP)模型层分配到不同GPU超大模型
    张量并行(TP)单层矩阵拆分到多GPU大隐藏维度
    序列并行(SP)长序列切分并行处理超长上下文
    ZeRO优化优化器状态、梯度、参数分片内存优化利器

    典型训练配置(以LLaMA 3 70B为参考):

  • 训练芯片:16,000 × H100 GPU
  • 训练时长:~90天
  • 训练数据量:15万亿 token
  • 训练总计算量:约 6.4 × 10²⁴ FLOPs
  • 关键训练技术

    混合精度训练(FP16/BF16):参数以BF16存储,前向后向计算,优化器状态保留FP32,平衡精度与显存。

    梯度检查点(Gradient Checkpointing):以重计算换内存,显存可减少50%以上。

    FlashAttention:重写注意力计算的IO模式,在不损失精度的情况下,速度提升2-4倍,支持更长上下文。

    学习率调度:通常采用 Warmup + Cosine Decay,从低学习率启动避免早期不稳定。

    四、第三阶段:监督微调(SFT)

    预训练完成后,模型只是"文字接龙"机器,不懂得遵循指令。SFT让模型从"续写者"变成"助手"。

    SFT数据格式

    [指令数据示例]
    {
      "instruction": "用一句话解释什么是量子纠缠",
      "input": "",
      "output": "量子纠缠是指两个粒子无论相距多远,对其中一个的测量会瞬间影响另一个粒子状态的量子现象。"
    }

    SFT数据集构建

  • 高质量人工标注:标注人员按照指令规范撰写回答
  • 模型辅助生成(Self-Instruct):用现有强模型生成SFT数据,再人工审核
  • 公开数据集:Alpaca、ShareGPT、FLAN等
  • SFT通常只需要 数千到数十万条 高质量数据,但质量远比数量重要。

    SFT训练特点

  • 学习率比预训练低1-2个数量级(避免灾难性遗忘)
  • Epoch数较少(1-3轮,避免过拟合)
  • 通常只对 output 部分计算损失
  • 五、第四阶段:RLHF 对齐

    SFT模型仍可能输出有害内容或不符合用户期望的回答。RLHF让模型真正"为人服务"。

    RLHF 三步流程

    步骤1:收集人类偏好数据

    给定同一问题,模型生成多个回答,人类标注员按质量排序:

    问题:如何提高代码可读性?
    回答A:写注释。
    回答B:写清晰的注释、有意义的变量名、模块化设计...(详细)
    人类评级:B > A

    步骤2:训练奖励模型(Reward Model)

    以SFT模型为基础,在偏好数据上训练一个奖励模型 R(x, y),使其能预测人类对回答的满意度分数。

    步骤3:PPO强化学习优化

    目标:maximize E[R(x, y)] - β·KL(π_θ || π_ref)

    用PPO算法更新LLM参数,使奖励分数提升,同时KL散度约束防止模型偏离SFT版本太远(即"不要为了高分变成另一个模型")。

    DPO:RLHF的轻量替代

    直接偏好优化(DPO)绕过了训练奖励模型的步骤,将RLHF的目标重写为:

    L_DPO = -log σ(β·log(π_θ(y_w|x)/π_ref(y_w|x)) - β·log(π_θ(y_l|x)/π_ref(y_l|x)))

    其中 y_w 是偏好回答,y_l 是被拒绝的回答。DPO训练更稳定,但效果上限略低于精调的RLHF。

    六、算力需求

    训练计算量估算

    Chinchilla定律给出了最优的计算量与参数量、数据量关系:

    最优Token数 ≈ 20 × 参数量
    例:70B模型最优训练量 = 20 × 70B = 1.4万亿 token

    FLOPs 估算(前向+反向约6倍参数量乘以token数):

    模型规模训练Token大约总FLOPsH100集群 × 天数
    7B1T~4×10²²64卡 × 30天
    70B2T~8×10²³512卡 × 90天
    405B15T~3×10²⁵16K卡 × 90天

    显存需求

    项目占用(BF16训练,70B模型)
    模型参数~140 GB
    优化器状态(Adam)~560 GB
    梯度~140 GB
    激活值数百 GB(视批次大小)

    这解释了为什么训练70B模型需要至少数百张A100/H100。

    七、评估体系

    训练完成后,模型需通过多维度评估:

  • 自动化评估:MMLU(综合知识)、GSM8K(数学)、HumanEval(代码)、TruthfulQA(事实准确性)
  • 人类评估:A/B测试、盲测排名(Chatbot Arena)
  • 安全红队测试:越狱尝试、有害内容生成测试
  • 业务专项测试:针对具体使用场景的专属评测集
  • 总结

    LLM的训练是一个数据工程 + 分布式系统 + 数学优化 + 人类对齐的综合工程。每个阶段都有大量细节决定最终质量。理解这个过程,能帮助我们更清醒地认识大模型的能力来源与局限所在。

    探索智能,酷在前沿