大规模语言模型预训练全链路深度解析:从语料工程到自回归推断
本文系统性地梳理当前 Large Language Model (LLM) 预训练阶段的核心技术栈,涵盖语料采集与数据治理、子词分词算法、基于 Transformer 架构的自监督训练范式,以及推断阶段的解码策略。全文以工程实践为导向,结合 GPT-2、LLaMA 3.1 等公开模型的技术细节,旨在为读者提供一份兼具理论深度与工程视角的参考。
0. 预训练 Pipeline 总览
大规模语言模型的预训练可抽象为一条四阶段串行 pipeline,每一阶段的输出即为下一阶段的输入:
Raw Internet ──▶ [Stage 1: Corpus Curation] ──▶ Clean Text
│
▼
[Stage 2: Tokenization] ──▶ Token Sequence
│
▼
[Stage 3: Pre-training] ──▶ Base Model θ*
│
▼
[Stage 4: Inference] ──▶ Generated Text
Pre-training 产出的 Base Model 本质上是一个 next-token probability estimator,其参数 θ* 编码了训练语料的分布特征。需经过后续 Post-training 阶段(Supervised Fine-Tuning / RLHF / DPO 等 alignment 技术)方可作为对话式 assistant 部署。
1. 语料工程:大规模文本数据的采集与治理
1.1 设计目标与约束
预训练语料的构建需同时满足三个互相制约的优化目标:
| 维度 | 目标 | 工程约束 |
|---|---|---|
| 规模 (Scale) | 覆盖足够大的知识面与语言模式 | 存储、带宽、处理吞吐 |
| 质量 (Quality) | 高信噪比,排除有害/低质内容 | 需要多级 heuristic 与 classifier |
| 多样性 (Diversity) | 领域、文体、语言的均衡分布 | 避免 distribution shift 与 mode collapse |
这三者之间存在天然的张力——追求规模往往引入噪声,过度过滤则损害多样性。工业级语料工程的核心挑战在于在这组 Pareto frontier 上找到最优平衡点。
1.2 数据源:Common Crawl 与种子扩展策略
当前主流 LLM 的语料基底几乎均源自 Common Crawl——一个自 2007 年持续运作的大规模 web archiving 项目。截至 2024 年,其索引规模已达 2.7 billion web pages,采用 breadth-first crawling strategy 从种子 URL 集出发递归扩展。
原始 Common Crawl archive 以 WARC (Web ARChive) 格式存储,包含完整的 HTTP response(含 header、HTML body、embedded resources 等),信噪比极低,不可直接用于模型训练。各 LLM 厂商(OpenAI、Anthropic、Google DeepMind、Meta FAIR 等)均在此基础上构建了各自的 proprietary data pipeline。
1.3 多级数据治理 Pipeline
以 HuggingFace 公开的 FineWeb 数据集为参考实现,工业级语料治理通常包含以下级联阶段:
Stage 1: URL-Level Filtering
基于预维护的 domain blocklist 实施粗粒度过滤,目标排除以下类别:
- Malicious content:malware distribution sites、phishing domains
- Low-quality sources:content farms、SEO spam、auto-generated pages
- Policy-violating content:adult material、hate speech domains
- Commercial noise:aggressive marketing、affiliate link aggregators
该阶段的 precision-recall trade-off 倾向于 high recall(宁可误杀),因后续阶段可进一步过滤。
Stage 2: Content Extraction & Boilerplate Removal
原始 HTML 文档包含大量非内容元素(navigation bars、sidebars、footers、CSS/JS inline code、ad scripts 等),需要通过 main content extraction 算法提取正文:
- 常用方案包括 Trafilatura、Readability 等基于 DOM tree analysis 的启发式提取器
- 需处理的边界情况:多栏布局、动态加载内容(SPA/CSR)、table-heavy pages
- 提取质量直接影响下游模型对语言模式的学习,是整个 pipeline 中 ROI 最高的环节之一
Stage 3: Language Identification & Filtering
使用 fastText-based language classifier 对每个文档进行语言识别,依据预设的语言分布策略进行过滤:
- FineWeb 采用 English ≥ 65% 的阈值策略,属于 English-centric 设计
- 该阈值是一个关键的 hyperparameter,直接决定模型的多语言能力(multilingual capability)
- 工业实践中通常采用 stratified sampling 策略,按语言族群设定不同的配比权重
Stage 4: Document-Level & Passage-Level Deduplication
互联网存在大量 near-duplicate content(syndication、scraping、templated pages),去重是提升语料有效信息密度的关键步骤:
- Exact deduplication:基于 document hash(SHA-256 / MD5)的精确匹配
- Near-duplicate detection:基于 MinHash + LSH (Locality-Sensitive Hashing) 的近似去重
- Passage-level dedup:对文档内部的重复段落进行检测,处理 boilerplate paragraphs
- 充分去重可有效缓解模型的 memorization tendency,降低 training data extraction attack 的风险
Stage 5: PII Redaction
为满足 GDPR 等数据隐私法规要求,需检测并移除 Personally Identifiable Information:
- 采用 NER (Named Entity Recognition) 模型识别 addresses、phone numbers、SSN、email addresses 等
- 高敏感文档直接从语料中剔除,低敏感文档进行 entity-level masking
- 该阶段需平衡隐私保护与数据可用性(redaction 过度会引入分布偏差)
1.4 语料统计特征
以 FineWeb 为例的最终产出:
| Metric | Value | Notes |
|---|---|---|
| Disk footprint | 44 TB | 纯文本,未压缩 |
| Token count (GPT-4 tokenizer) | ~15 Trillion | 15 × 10¹² |
| Document count | Billions | 经过去重后 |
| Dominant language | English | ≥65% threshold |
| Knowledge cutoff | End of 2023 | 时效性上界 |
值得注意的是,尽管原始互联网规模庞大,经过多级过滤后的高质量文本语料在存储空间上相当紧凑——44 TB 已可容纳于单块企业级 HDD 中。这一事实反映了互联网文本的 高冗余度 与 低信噪比 特征。
2. Tokenization:从连续文本到离散符号序列
2.1 问题定义与核心 Trade-off
Neural Language Model 要求输入为有限符号集上的一维离散序列。Tokenization 即为建立从原始文本到此表示的 bijective mapping 的过程。
该过程面临一个根本性的 trade-off:
Vocabulary Size ↑ ⟺ Sequence Length ↓ ⟺ Computational Efficiency ↑
Vocabulary Size ↓ ⟺ Sequence Length ↑ ⟺ Computational Efficiency ↓
Sequence length 是 Transformer 架构中最为稀缺的计算资源(self-attention 的时空复杂度为 O(n²)),因此需要在 vocabulary size 与 sequence length 之间寻找 Pareto-optimal 的平衡点。
2.2 编码层级与压缩递进
文本到 token 序列的转换可分解为多个层级的表示变换,每一级在 vocabulary cardinality 与 sequence length 之间实现不同的压缩比:
| Level | Representation | Vocabulary Size | Sequence Length | Compression Ratio |
|---|---|---|---|---|
| L0 | Raw Unicode Text | ~150K codepoints | Baseline | 1x |
| L1 | UTF-8 Bitstream | 2 (binary) | ~8x longer | 0.125x |
| L2 | Byte Sequence | 256 | Baseline | 1x |
| L3 | BPE Tokens | ~100K | ~4x shorter | ~4x |
从 L2 到 L3 的压缩由 Byte Pair Encoding (BPE) 算法实现,是当前工业标准。
2.3 Byte Pair Encoding 算法
BPE 是一种 bottom-up subword segmentation 算法,其核心思想是通过迭代合并高频相邻符号对(bigram)来构建 vocabulary:
算法流程:
Input: byte sequence B = [b₁, b₂, ..., bₙ], initial vocab V = {0, 1, ..., 255}
Repeat K times:
1. 统计 B 中所有 adjacent pair (bᵢ, bᵢ₊₁) 的频次
2. 选取频次最高的 pair (bₐ, bᵦ)
3. 创建新符号 s = |V|,加入 V
4. 将 B 中所有 (bₐ, bᵦ) 替换为 s
5. |V| += 1, len(B) -= count(bₐ, bᵦ)
Output: compressed sequence B', vocabulary V with |V| = 256 + K
每次迭代的效果:vocabulary cardinality +1,sequence length −N(N 为该 bigram 的出现次数)。
实践中 K 的取值约为 ~100,000,使最终 vocabulary size 达到 ~100K 量级。GPT-4 的 tokenizer(cl100k_base)vocabulary size 为 100,277。
2.4 Tokenization 的工程特性
BPE tokenization 具有以下值得关注的特性:
- Case-sensitive:
"Hello"与"hello"映射到不同的 token ID
- Whitespace-aware:前导空格通常被编码进 token 内部(e.g.,
" world"是一个完整 token)
- Subword granularity:常见词为单一 token,罕见词被拆分为多个 subword units
- Compression ratio:典型英文文本的 tokens/characters 比约为 1:4,即一行文本约编码为 ~60 tokens
- Deterministic:给定 vocabulary 和 merge rules,tokenization 过程是确定性的
3. 神经网络训练:基于 Transformer 的自监督预训练
3.1 训练范式:Causal Language Modeling
预训练采用 Causal Language Modeling (CLM) 目标函数,即在给定前文 context 的条件下最大化 next token 的 log-likelihood:
目标函数:
max_θ Σᵢ log P(xᵢ | x₁, x₂, ..., xᵢ₋₁ ; θ)
等价地,最小化 cross-entropy loss:
L(θ) = -1/T Σᵢ log P_θ(xᵢ | x<ᵢ)
其中:
θ = 模型参数(weights & biases)
xᵢ = 第 i 个 token(ground truth)
x<ᵢ = 前 i-1 个 token 构成的 context
T = 序列长度(context window size)
P_θ = 模型的条件概率估计
训练流程的每个 optimization step:
- 从语料中随机采样一个 token window
[x₁, ..., x_T](T 通常为 2K~128K)
- 模型对每个位置 i 输出 next-token probability distribution
P_θ(· | x<ᵢ) ∈ R^|V|
- 计算 cross-entropy loss 并通过 backpropagation 求参数梯度
- 使用 AdamW optimizer 更新参数 θ(learning rate 通常遵循 cosine annealing schedule)
该过程在每个 window 内的所有 token 位置并行执行(teacher forcing),单次 forward-backward pass 可同时优化 T 个 next-token prediction。
3.2 Transformer 架构
当前所有主流 LLM 均采用 decoder-only Transformer 架构(Vaswani et al., 2017 的变体),其 forward pass 可概括为:
Input Token IDs: [x₁, x₂, ..., x_T] ∈ Z^T
│
▼
┌──────────────────────┐
│ Token Embedding │ E(xᵢ) ∈ R^d_model
│ + Positional Encoding│ (RoPE / ALiBi / Learned)
└──────────────────────┘
│
▼
┌──────────────────────┐
│ Transformer Block │ ─┐
│ ┌─ RMSNorm │ │
│ ├─ Multi-Head │ │
│ │ Causal Attention │ │
│ ├─ Residual Add │ │ × N layers
│ ├─ RMSNorm │ │ (N = 32~128)
│ ├─ SwiGLU FFN │ │
│ └─ Residual Add │ │
└──────────────────────┘ ─┘
│
▼
┌──────────────────────┐
│ Final RMSNorm │
│ Linear → R^|V| │ (projection to vocab size)
│ Softmax → P(next) │ output ∈ R^|V|, Σ = 1
└──────────────────────┘
Multi-Head Self-Attention 机制
Attention 是 Transformer 的核心计算单元。其作用对象是当前输入序列中的 token representations(而非 vocabulary 中的全部 token):
对于序列中的每个 position i,attention 机制执行以下计算:
Q = X · W_Q, K = X · W_K, V = X · W_V (线性投影)
Attention(Q, K, V) = softmax( Q · K^T / √d_k ) · V
其中:
Q (Query): 当前位置 "在寻找什么信息"
K (Key): 每个位置 "携带什么信息标签"
V (Value): 每个位置 "实际提供的信息内容"
Q · K^T: query-key 点积相似度 → attention score matrix
√d_k: scaling factor,防止点积值过大导致 softmax 饱和
softmax: 归一化为概率权重
· V: 按权重聚合所有位置的 value
"Multi-Head" 指将 d_model 维度拆分为 h 个独立的 attention head,每个 head 在不同的 subspace 中学习不同类型的 dependency pattern(syntactic、coreference、positional 等),最终 concatenate 后通过线性投影合并。
Causal Mask:为确保自回归属性,attention score matrix 应用下三角 mask,使得 position i 只能 attend to positions ≤ i,防止信息泄漏。
Feed-Forward Network (SwiGLU Variant)
FFN(x) = (Swish(x · W₁) ⊙ (x · W₃)) · W₂
其中 ⊙ 为 element-wise product,Swish(z) = z · σ(z)
FFN 在每个 position 独立执行,可理解为对 attention 聚合后的表示进行非线性特征变换。隐层维度通常为 d_model 的 8/3 倍(SwiGLU 的标准配置)。
3.3 训练动态与收敛行为
预训练过程的 loss 曲线呈现典型的 power-law decay 特征:
Loss
5.0 │●
│ ●●
4.0 │ ●●●
│ ●●●●
3.0 │ ●●●●●●
│ ●●●●●●●●●
2.0 │ ●●●●●●●●●●●●●●
│ ●●●●●●●●●●●●●●●
1.5 │ ──────
└───────────────────────────────────────────────────────────────── Step
0 5K 10K 15K 20K 25K 30K
不同训练阶段模型 generation quality 的质变过程:
| 阶段 | 模型行为 | 语言学层面的习得 |
|---|---|---|
| Step 1 (初始化) | 输出近似 uniform random tokens | 无任何语言知识 |
| ~1% training | 出现局部 token co-occurrence patterns | 习得 character-level 与 subword-level statistics |
| ~10% training | 句子基本通顺,语法大致正确 | 习得 syntactic structure 与 common collocations |
| ~50% training | 段落连贯,具备基础世界知识 | 习得 semantic coherence 与 discourse structure |
| 100% training | 生成高质量、多样化的连贯文本 | 习得 long-range dependency 与 factual knowledge |
该现象与 Scaling Laws (Kaplan et al., 2020) 的理论预测一致:loss 随 compute budget 的增长呈 power-law 下降,但 marginal improvement 递减。
3.4 模型规模与计算需求
| Specification | GPT-2 (2019) | LLaMA 3.1 405B (2024) | Scale Factor |
|---|---|---|---|
| Parameters | 1.5B | 405B | ~270× |
| Training tokens | 100B | 15T | ~150× |
| Context length | 1,024 | 128K+ | ~125× |
| Architecture | Transformer (GPT-style) | Transformer (LLaMA-style) | 同系 |
| Training cost (est.) | ~$600 (2024 reproduction) | ~$100M+ | - |
| Training hardware | 8× V100 (original) | 10,000+ H100 clusters | - |
计算基础设施
LLM 训练的计算密集度使其成为当前 HPC(High-Performance Computing)领域最具挑战性的 workload 之一:
- 计算单元:NVIDIA H100 SXM(80GB HBM3, 989 TFLOPS BF16)为当前主力训练芯片
- 单节点配置:8× H100 通过 NVLink/NVSwitch 全互联,节点内带宽 900 GB/s
- 集群规模:主流训练集群规模从数千到 100,000+ GPU,通过 InfiniBand/RoCE 网络互联
- 并行策略:综合使用 Data Parallelism (DP)、Tensor Parallelism (TP)、Pipeline Parallelism (PP)、Sequence Parallelism (SP) 等混合并行方案
- 云端租赁:以 Lambda Labs 为例,8× H100 节点按需价格约 24/hr (3/GPU/hr)
GPU 集群的核心计算负载可归结为一个简洁的循环:在大规模 token 序列上反复执行 forward pass → loss computation → backward pass → parameter update。这一 workload 的天文级算力需求是驱动 NVIDIA 市值突破 $3.4T 的根本技术因素。
3.5 模型发布与 Artifact 构成
一个完整的 base model release 包含两个核心 artifact:
- Model Architecture Code:定义 Transformer forward pass 的计算图,通常仅数百行 Python/PyTorch 代码
- Model Weights (Parameters) :经过训练优化后的参数张量集合,是全部计算投入的结晶
Model = Architecture(code) + Parameters(weights)
= 数百行 Python + 数十亿个 float16/bfloat16 数值
= 标准化的 + 核心价值所在
4. 推断:自回归解码与采样策略
4.1 自回归生成(Autoregressive Generation)
推断阶段的 generation 过程遵循严格的 autoregressive factorization:
P(x₁, x₂, ..., x_T) = ∏ᵢ P(xᵢ | x₁, ..., xᵢ₋₁)
具体的 decoding loop:
Initialize: sequence S = [prompt tokens]
For t = 1, 2, ..., max_length:
1. Forward pass: logits = Model(S)[-1] ∈ R^|V|
2. Apply temperature scaling: logits = logits / τ
3. Apply top-k / top-p filtering
4. Compute distribution: P = softmax(logits)
5. Sample: x_t ~ Categorical(P)
6. Append: S = S ∥ [x_t]
7. If x_t == EOS: break
Return S
每一步仅生成 一个 token,然后将其追加至 context 中作为下一步的输入。这一 sequential dependency 是当前 LLM inference 延迟的主要瓶颈。
4.2 解码策略与采样超参数
Softmax 输出的 probability distribution 可通过多种策略调控生成行为:
Temperature Scaling
在 softmax 之前对 logits 进行缩放:P(xᵢ) = softmax(zᵢ / τ)
| τ | 效果 | 数学性质 | 应用场景 |
|---|---|---|---|
| τ → 0 | 退化为 argmax(greedy decoding) | 分布坍缩为 one-hot | 确定性任务:代码生成、数学推理 |
| τ = 1.0 | 保持原始分布 | 无变换 | 通用对话 |
| τ > 1.0 | 分布熵增大,趋向 uniform | 增加 exploration | 创意写作、brainstorming |
Top-k Sampling
将概率排序后仅保留 top-k 个 token,其余 token 的概率置零后重新归一化:
P'(xᵢ) = P(xᵢ) / Σⱼ∈top-k P(xⱼ) if xᵢ ∈ top-k
P'(xᵢ) = 0 otherwise
Top-p (Nucleus) Sampling
保留累积概率达到阈值 p 的最小 token 集合(Holtzman et al., 2020):
V_p = argmin_{V' ⊂ V} |V'| s.t. Σ_{x∈V'} P(x) ≥ p
P'(xᵢ) = P(xᵢ) / Σⱼ∈V_p P(xⱼ) if xᵢ ∈ V_p
P'(xᵢ) = 0 otherwise
Top-p 相较 top-k 的优势在于其自适应性:当模型对 next token 高度确定时(distribution sharp),V_p 自动收缩;反之则自动扩展。
重要:以上所有采样超参数仅在 inference 阶段生效,与 training 过程完全正交。 Training 阶段使用 teacher forcing,不涉及任何采样操作。
4.3 Base Model 的行为特征
Pre-training 阶段产出的 base model 具有以下 characteristic behaviors:
本质定位
Base model 是一个 conditional token distribution estimator,而非 conversational agent。其行为模式为 document completion——给定任意 token prefix,模型输出符合训练语料分布特征的 continuation。
Emergent Capabilities
尽管训练目标仅为 next-token prediction,base model 展现出多种 emergent abilities:
| Capability | 机制 | 实现方式 |
|---|---|---|
| In-context Learning (ICL) | 模型在 forward pass 中隐式地从 context 中提取 task specification | 在 prompt 中提供 input-output exemplars |
| Few-shot Prompting | ICL 的具体应用形式,通过 K 个示例定义任务 | 构造 K-shot prompt template |
| Knowledge Retrieval | 参数中编码的训练语料知识可通过特定 prompt 格式引出 | 使用 elicitation prompts(如列表格式、问答格式) |
| Format Following | 模型可延续 prompt 中建立的格式模式 | 构造目标格式的 prefix(如 JSON、Markdown、对话体) |
已知局限
| 局限 | 技术根因 | 表现 |
|---|---|---|
| Hallucination | 训练目标是 distribution matching 而非 factual grounding | 生成事实性错误的内容,尤其在低频知识领域 |
| Knowledge Cutoff | 参数仅编码训练数据截止日期前的信息 | 无法回答训练截止后的时事问题 |
| Verbatim Memorization | 高频文档(如 Wikipedia)被多次采样导致 overfitting | 逐字复现训练语料片段(regurgitation) |
| Non-assistant Behavior | 未经 alignment,模型行为是 document completion 而非 instruction following | 直接提问不会得到结构化回答 |
参数即有损压缩
从信息论视角,base model 的 parameter set θ* 可理解为训练语料的一种 lossy compression:
- 405B float16 参数 ≈ 810 GB 的存储空间
- 训练语料(15T tokens)≈ 44 TB 的原始文本
- 压缩比约 54:1
这一压缩是 lossy 的——模型保留了语料的 statistical regularities(语法、常识、推理模式),但丢失了精确的 verbatim content(除高频重复文档外)。生成内容是训练分布的 stochastic sample,在统计性质上近似训练语料,但并非其子集。
5. 从 Base Model 到 Assistant:后训练路径
Pre-training 产出的 base model 需经过 post-training alignment 方可作为实用的 conversational assistant 部署:
Base Model (document completion)
│
├── SFT (Supervised Fine-Tuning)
│ 使用人工标注的 instruction-response pairs 进行有监督微调
│
├── RLHF (Reinforcement Learning from Human Feedback)
│ 训练 reward model → 使用 PPO 优化 policy
│
├── DPO (Direct Preference Optimization)
│ 直接从 preference pairs 优化,绕过显式 reward model
│
└── 其他 alignment 技术(Constitutional AI, RLAIF, etc.)
│
▼
Instruct / Chat Model (instruction following)
当终端用户在 ChatGPT 等产品中进行对话时,其交互过程完全处于 inference 阶段——模型参数已 frozen,不发生任何 gradient update。用户输入被 tokenize 后作为 context prefix,模型执行 autoregressive decoding 生成 response tokens。
附录:核心术语索引
| 术语 | 全称 | 定义 |
|---|---|---|
| CLM | Causal Language Modeling | 自回归语言建模,预测 next token |
| BPE | Byte Pair Encoding | 子词分词算法,迭代合并高频 bigram |
| ICL | In-Context Learning | 模型从 prompt 中的示例隐式学习任务 |
| SFT | Supervised Fine-Tuning | 使用标注数据的有监督微调 |
| RLHF | Reinforcement Learning from Human Feedback | 基于人类偏好反馈的强化学习 |
| DPO | Direct Preference Optimization | 直接偏好优化,RLHF 的简化替代 |
| RoPE | Rotary Position Embedding | 旋转位置编码 |
| RMSNorm | Root Mean Square Normalization | 均方根归一化 |
| SwiGLU | Swish-Gated Linear Unit | FFN 中的门控激活函数变体 |
| NVLink | NVIDIA NVLink | GPU 间高速互联总线 |
| TP / DP / PP | Tensor / Data / Pipeline Parallelism | 分布式训练的三种并行策略 |
| LSH | Locality-Sensitive Hashing | 局部敏感哈希,用于近似最近邻搜索 |
| WARC | Web ARChive | Web 归档文件格式 |
关键数值参考
| 数值 | 含义 |
|---|---|
| 44 TB | FineWeb 数据集磁盘占用 |
| 15 × 10¹² | FineWeb token 总量 |
| 2.7 × 10⁹ | Common Crawl 索引网页数 (2024) |
| 100,277 | GPT-4 tokenizer vocabulary size |
| 1.5 × 10⁹ | GPT-2 parameter count |
| 405 × 10⁹ | LLaMA 3.1 largest model parameter count |
| O(n²) | Self-attention 的时空复杂度 (n = sequence length) |
| $3/GPU/hr | H100 按需云租赁参考价格 |