Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation
Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation - 中文验证版
英文原文卡片:gnmt_2016.md
状态:已翻译。
元数据
- Slug:
gnmt_2016 - 年份: 2016
- 会议: arXiv
- 作者: Yonghui Wu et al.
- 阅读状态: read complete
- 计算范式: 多 GPU 密集训练
- 主要来源: PDF、抽取文本
计算设置
论文明确列出了训练和推理设备。GNMT 在 TensorFlow 中训练,使用跨 replica 的数据并行和每个 replica 内部的模型并行。一个模型 replica 按 8 路切分到 8 块 GPU,通常在一台主机上。该设置中的架构有 8 层encoder LSTM,其中底层encoder是双向的,后续 7 层是单向的,外加 8 层decoder LSTM。论文还指出 softmax 层被切分到多块 GPU 上,可以与encoder/decoder GPU 共享或使用专用 GPU,取决于词汇量大小。
在训练系统层面,论文指出经典数据并行设置使用 12 个 replica 在不同机器上并发运行,对共享参数进行异步更新。在模型并行描述中,n 通常约为 10 个 replica,每个 replica 使用 128 个句对的 minibatch。对于 WMT'14 英语到法语,具体规模是使用 96 块 NVIDIA K80 GPU 训练基础模型约 6 天。
推理在一台配有两颗 Intel Haswell CPU(共 88 个超线程 CPU 核心)的单机上描述。同一台机器配备一块 NVIDIA Tesla K80 GPU 或一块 Google TPU。CPU 和 GPU 解码使用全精度浮点数。TPU 解码将量化操作卸载到 TPU,而嵌入查找和注意力模块保留在 CPU 上。
瓶颈
GNMT 处于这样一个节点:循环 NMT 准确到足以具有生产价值,但昂贵到训练和服务架构都至关重要。训练瓶颈是深层循环计算加上大型输出 softmax。LSTM 时间步是顺序的,因此唯一可行的并行是在层、样本、replica 和词汇切片之间。完全双向encoder会改善上下文,但会减少层流水线并行,因为后续层需要等待两个方向完成。
推理瓶颈则不同。束搜索执行许多小的顺序解码步骤,需要主机/设备协调。论文报告在其设置中 CPU 解码比 GPU 解码更快,部分因为双 Haswell 机器具有可观的峰值 FLOPs,部分因为束搜索在每个解码步骤都强制进行非平凡的主机-GPU 数据传输。这是一个设备利用率问题:GPU 具有理论算术能力,但解码控制流和传输模式阻碍了实现有效利用它。
方法适配
GNMT 以多种方式将模型适配到设备。残差连接从encoder和decoder的自底向上第三层开始,使 8 层堆栈可训练。encoder和decoder沿深度切分,使不同层运行在不同 GPU 上;由于大多数encoder层是单向的,第 i+1 层可以在第 i 层完成全句之前开始。注意力被有意地从底层decoder层输出连接到顶层encoder输出。作者指出,将顶层decoder层对齐到顶层encoder层会消除decoder并行,使超过一块 GPU 对解码无益。
输出 softmax 进行了词汇切分,这解决了早期 seq2seq 工作中已经可见的大 softmax 压力。词片是另一种计算适配。32K 共享词片词汇使序列比字符模型短得多,同时避免了词模型的罕见词失效模式。论文明确指出 8K-32K 词片在准确率和快速解码之间取得平衡,表 4 显示 WPM-32K 在单模型中具有最佳 En→Fr BLEU。
对于服务,量化感知训练使 TPU 推理可行。生产切分并非"全 TPU",而是 CPU 加 TPU,注意力和嵌入仍在 CPU 上,量化后的密集循环工作被卸载。
证据
推理表格是最清晰的计算结果。在 WMT En→Fr 开发集上,CPU 解码耗时 1322 秒,BLEU 31.20,log 困惑度 1.4553。GPU 解码耗时 3028 秒,同样的 BLEU 和 log 困惑度,表明 K80 实现对该束搜索工作负载未充分利用 GPU 能力。TPU 解码耗时 384 秒,BLEU 31.21,log 困惑度 1.4626,相对 CPU 加速 3.4 倍且基本无 BLEU 损失。
训练过程也暴露了计算范式。系统将梯度裁剪到范数 5.0,以 Adam 开始 60K 步,切换为 SGD,使用 minibatch 128,在 En→Fr 上 1.2M 步后退火,基础 WMT 模型在 96 块 K80 上耗时约 6 天。
翻译证据与设计选择相关联。在 WMT En→Fr 上,WPM-32K 在 8 个训练模型的平均中达到 38.95 BLEU,最高 39.37,报告表格中每句 CPU 解码时间为 0.2118 秒。在 WMT En→De 上,WPM-32K 达到 24.61 BLEU 且是词片选项中最快的 CPU 解码时间。在主要语言对的生产人工并排测试中,论文报告相比 Google 的基于短语的生产系统,翻译错误减少超过 60%。
历史影响
GNMT 是由加速器塑造的桥梁,连接早期单机 seq2seq 和后来的全并行 Transformer。它表明循环模型在仅注意力架构占据主导之前,就已经需要模型并行、数据并行、softmax 分片、量化和面向 TPU 的服务。其计算故事也提醒我们,训练和推理可能具有相反的硬件瓶颈。
局限
模型仍是循环的,因此 token 级解码和大部分训练是顺序的。确切的 K80 训练设置有明确说明,但许多生产细节仍属内部信息。TPU 服务仅部分在 TPU 上,注意力模块在所述比较中保留在 CPU 上。论文还指出强化学习对 BLEU 的改善大于对人工评估的改善,因此部分额外训练计算优化了指标而非感知翻译质量。
链接
- 所属计算范式:compute spine
- 相关卡片:Seq2Seq 2014
- 方法索引:seq2seq、parallelism
- Ledger 更新:compute bottlenecks