因果语言建模(CLM)
要解决的问题
预训练需要可扩展的自监督信号:无需人工标注即可从海量文本学习。因果语言建模(Causal LM, CLM)通过预测「下一个 token」,迫使模型学习语法、事实关联、世界知识与长程依赖,并成为 GPT、LLaMA、Qwen 等 Decoder-only 模型的标准目标。
核心概念
对序列 ,模 型参数 最大化:
训练时使用因果掩码(causal mask),位置 只能 attend 到 的位置。推理时自回归解码同一分布。
| 目标 | 注意力 | 代表架构 |
|---|---|---|
| CLM | 单向 | GPT、LLaMA、Mistral |
| MLM | 双向 | BERT |
| Prefix LM | 前缀双向 + 后缀因果 | PaLM、UL2 部分 |
方法/算法
实现要点:
- Shift labels:输入
tokens[:-1],预测tokens[1:],交叉熵在有效位置求平均。 - packing:多条样本拼进固定长度,用 attention mask 或
cu_seqlens防止跨样本 attend(FlashAttention 变长支持)。 - loss 归一化:按 token 平均 vs 按样本平均会影响有效学习率。
- 特殊 token:BOS/EOS 是否计入 loss 需在 recipe 中固定。
与 分词 结合:监督在 subword 边界,改变 tokenizer 即改变任务难度。