XLNet: Generalized Autoregressive Pretraining for Language Understanding
XLNet: Generalized Autoregressive Pretraining for Language Understanding - 中文验证版
英文原文卡片:xlnet_2019.md
状态:已翻译。
元数据
- Slug:
xlnet_2019 - 年份: 2019
- 会议: NeurIPS
- 作者: Zhilin Yang et al.
- 阅读状态: read complete
- 计算范式: TPU、加速器与 Transformer 时代
- 主要来源: PDF、抽取文本
计算设置
论文明确给出大规模 TPU 训练设置。XLNet-Large 在 512 个 TPU v3 chips 上训练 500K steps,使用带 weight decay 的 Adam、线性学习率衰减、batch size 8192、完整序列长度 512;运行耗时约 5.5 天。附录超参数给出 24 层、hidden size 1024、16 个注意力头、头大小 64、FFN inner size 4096、dropout 0.1、部分预测常数 K = 6、学习率 4e-4、40,000 warmup steps、Adam epsilon 1e-6、weight decay 0.01。
数据规模也是明确的。除 BooksCorpus 和英文 Wikipedia 外,作者还加入了 Giga5、ClueWeb 2012-B 和 Common Crawl。经过过滤和 SentencePiece 分词,语料包含 2.78B Wikipedia 子词片段、1.09B BooksCorpus、4.75B Giga5、4.30B ClueWeb 和 19.97B Common Crawl,总计 32.89B 子词片段。论文说明模型在训练结束时仍 underfit 数据,这意味着 512 芯片、5.5 天的预算不足以饱和该语料。
瓶颈
XLNet 的瓶颈是使双向上下文与自回归目标兼容的成本。BERT 式去噪有 [MASK] 预训练/微调不匹配,并且以独立性假设预测被 mask 的 tokens。XLNet 通过对因子分解顺序的排列最大化似然来避免损坏,但该目标更难优化,且简单实现更昂贵。
论文明确说明排列语言建模在初步实验中收敛缓慢。它通过部分预测解决这一问题:每次只预测每个采样因子分解顺序的最后部分,未选中 tokens 的 query 表示无需计算。这节省了速度和内存,同时保持了期望中的双向上下文训练信号。K = 6 设置意味着在每种顺序中只有约六分之一的 tokens 被选为预测目标。
长上下文建模是另一个瓶颈。RACE 等任务的段落长于许多 NLU 基准,固定的 512-token 片段会丢失上下文。XLNet 集成 Transformer-XL 循环,使得来自先前片段的隐藏状态可以被缓存和复用。这使得内存带宽和注意力缓存设计成为模型的一部分,而不仅仅是数据集的细节。
方法适配
XLNet 通过四个计算感知的设计选择将自回归预训练适配到 TPU 规模 Transformers。首先,它在输入中保持自然 token 顺序,并使用注意力 mask 来实现采样的因子分解顺序。这保留了与微调的兼容性(文本以正常顺序出现),同时在预训练期间使双向上下文可用。
其次,它使用双流注意力。内容流表示 token 内容,而 query 流在不看到其内容的情况下预测目标位置。这是必要的,因为目标位置在不同排列下变化。它增加了实现复杂性,但避免了泄漏答案 token,使排列目标在 Transformer 中可行。
第三,它使用部分预测来控制优化和内存。由于未选中的 tokens 不需要 query 表示,该方法相对于在每种顺序下预测每个 token 减少了计算。这是关键的 TPU 规模适配:目标仍然比 left-to-right LM 更丰富,但每步工作是有界的。
第四,XLNet 引入 Transformer-XL 循环和相对位置编码。来自先前片段的缓存内容表示被连接到下一个片段的注意力 key 和 value 中,论文指出缓存可以复用而无需知道先前片段的因子分解顺序。相对位置保留了跨片段的位置信息。这是对序列长度 512 时长上下文内存限制的直接回应。
证据
实现部分给出了核心计算证据:512 个 TPU v3 chips、500K steps、batch size 8192、序列长度 512、约 5.5 天。语料有 32.89B 子词片段,论文说明 XLNet-Large 在运行结束时仍 underfit。这是一个罕见的明确陈述,即方法的最终质量仍然受计算限制。
公平比较表显示,即使在全数据/全计算规模提升之前,目标本身就有帮助。XLNet-Large 在与 BERT 相同的 BooksCorpus/Wikipedia 数据和超参数下训练,在报告表格中在 SQuAD1.1、SQuAD2.0、RACE、MNLI、QNLI、QQP、RTE、SST-2、MRPC、CoLA 和 STS-B 上均优于 BERT-Large。在基础模型上的消融表更具诊断性。BERT-Base 在 RACE 上得到 64.3,DAE + Transformer-XL 得到 65.03,XLNet-Base K = 7 得到 66.05,XLNet-Base K = 6 得到 66.66。移除记忆将 RACE 降至 65.55,也损害 SQuAD2.0 和 MNLI;论文强调 RACE 的下降,因为 RACE 在消融任务中具有最长的上下文。
附录超参数表使内存/并行设置具体化:24 层、hidden size 1024、16 个头、4096 FFN inner size、batch 8192、最大序列长度 512。这些是 BERT-Large 级别的密集 Transformer 维度,但双流和循环机制改变了计算的消耗方式。
历史影响
XLNet 展示了 2019 年预训练时代在大规模 TPU 预算下探索计算繁重的目标重新设计。它在历史上很重要,因为它不仅仅是缩放 BERT;它试图解决 BERT 的损坏和独立性假设,同时保留双向上下文。代价是更复杂的训练目标、双流注意力、循环和大规模 TPU 实现。
本文也标记了在该领域部分回归简单配方之前的一个时刻。RoBERTa 和后来的密集 LLM 工作表明数据、训练时长和优化细节可以解释许多收益。XLNet 在本历史中仍然有用,因为它暴露了在加速器预算首次使 500K-step、512-TPU Transformer 预训练变得可行时,替代目标上投入了多少工程努力。
局限
最强限制是计算纠缠。XLNet 结合了新目标、Transformer-XL 循环、更多数据和大型 TPU 运行,使得很难分离哪些成分在全规模下最重要。作者在 XLNet-Base-wikibooks 上提供了消融,但标题模型仍然依赖 512 个 TPU v3 chips 和更大的语料。
目标也很复杂。双流注意力、排列 mask、部分预测、双向输入管线和循环增加了实现负担和潜在的内存开销。模型在 500K steps 后仍 underfit,因此报告的运行不是一个计算完备的终点。最后,收益对较长上下文的理解任务最有说服力;对于更简单的任务,额外的目标复杂性可能不证明训练和系统成本是合理的。
链接
- 所属计算范式:compute spine
- 相关卡片:Transformer-XL 2019
- 方法索引:transformer
- Ledger 更新:compute bottlenecks