大规模语言模型预训练全链路深度解析:从语料工程到自回归推断

0 阅读10分钟

大规模语言模型预训练全链路深度解析:从语料工程到自回归推断

本文系统性地梳理当前 Large Language Model (LLM) 预训练阶段的核心技术栈,涵盖语料采集与数据治理、子词分词算法、基于 Transformer 架构的自监督训练范式,以及推断阶段的解码策略。全文以工程实践为导向,结合 GPT-2、LLaMA 3.1 等公开模型的技术细节,旨在为读者提供一份兼具理论深度与工程视角的参考。

image.png


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 算法提取正文:

  • 常用方案包括 TrafilaturaReadability 等基于 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 为例的最终产出:

MetricValueNotes
Disk footprint44 TB纯文本,未压缩
Token count (GPT-4 tokenizer)~15 Trillion15 × 10¹²
Document countBillions经过去重后
Dominant languageEnglish≥65% threshold
Knowledge cutoffEnd 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 之间实现不同的压缩比:

LevelRepresentationVocabulary SizeSequence LengthCompression Ratio
L0Raw Unicode Text~150K codepointsBaseline1x
L1UTF-8 Bitstream2 (binary)~8x longer0.125x
L2Byte Sequence256Baseline1x
L3BPE 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:

  1. 从语料中随机采样一个 token window [x₁, ..., x_T](T 通常为 2K~128K)
  1. 模型对每个位置 i 输出 next-token probability distribution P_θ(· | x<ᵢ) ∈ R^|V|
  1. 计算 cross-entropy loss 并通过 backpropagation 求参数梯度
  1. 使用 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 模型规模与计算需求

SpecificationGPT-2 (2019)LLaMA 3.1 405B (2024)Scale Factor
Parameters1.5B405B~270×
Training tokens100B15T~150×
Context length1,024128K+~125×
ArchitectureTransformer (GPT-style)Transformer (LLaMA-style)同系
Training cost (est.)~$600 (2024 reproduction)~$100M+-
Training hardware8× 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:

  1. Model Architecture Code:定义 Transformer forward pass 的计算图,通常仅数百行 Python/PyTorch 代码
  1. 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 PromptingICL 的具体应用形式,通过 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。


附录:核心术语索引

术语全称定义
CLMCausal Language Modeling自回归语言建模,预测 next token
BPEByte Pair Encoding子词分词算法,迭代合并高频 bigram
ICLIn-Context Learning模型从 prompt 中的示例隐式学习任务
SFTSupervised Fine-Tuning使用标注数据的有监督微调
RLHFReinforcement Learning from Human Feedback基于人类偏好反馈的强化学习
DPODirect Preference Optimization直接偏好优化,RLHF 的简化替代
RoPERotary Position Embedding旋转位置编码
RMSNormRoot Mean Square Normalization均方根归一化
SwiGLUSwish-Gated Linear UnitFFN 中的门控激活函数变体
NVLinkNVIDIA NVLinkGPU 间高速互联总线
TP / DP / PPTensor / Data / Pipeline Parallelism分布式训练的三种并行策略
LSHLocality-Sensitive Hashing局部敏感哈希,用于近似最近邻搜索
WARCWeb ARChiveWeb 归档文件格式

关键数值参考

数值含义
44 TBFineWeb 数据集磁盘占用
15 × 10¹²FineWeb token 总量
2.7 × 10⁹Common Crawl 索引网页数 (2024)
100,277GPT-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/hrH100 按需云租赁参考价格