Mesh-TensorFlow: Deep Learning for Supercomputers

TL;DR

Mesh-TensorFlow实现多维处理器网格,支持大规模Transformer训练,参数达5亿,超越SOTA。

cs.LG 🔴 高级 2018-11-06 47 次浏览
Noam Shazeer Youlong Cheng Niki Parmar Dustin Tran Ashish Vaswani Penporn Koanantakool Peter Hawkins HyoukJoong Lee Mingsheng Hong Cliff Young Ryan Sepassi Blake Hechtman
深度学习 分布式计算 模型并行 TPU Transformer

核心发现

方法论

本文提出Mesh-TensorFlow,支持任意维度的张量切分,通过定义多维处理器网格实现模型和数据的高效分布。该框架将张量维度命名,结合全局布局映射到网格,利用SPMD程序生成并行操作和Allreduce通信。作者在TPU集群上实现了Transformer模型的模型并行和数据并行结合,训练参数达5亿,显著提升翻译和语言模型性能。

关键结果

  • 在WMT'14英法翻译任务中,最大模型参数达2.9亿,BLEU得分达43.9,超越以往所有公开结果。使用512核TPU,训练时间缩短至22小时,模型性能提升明显。语言模型在一亿词级别的基准中,困惑度降低至24.0,达到最新最佳。
  • 多维布局实现了模型参数规模的线性扩展,同时保持高效通信和计算性能。多核TPU集群上,模型参数从数千万到数十亿均表现出良好的扩展性。
  • 结合模型和数据并行,训练大规模Transformer,隐藏层达262144,注意头数达256,验证了布局设计的优越性和训练效率。

研究意义

该研究突破了大规模模型训练的瓶颈,提供了灵活的分布式张量操作语言,极大提升深度学习在超算环境中的应用潜力。支持训练超大模型,有助于推动自然语言处理、计算机视觉等领域的模型规模和性能极限,为未来模型设计和硬件利用提供新思路。

技术贡献

引入Mesh-TensorFlow语言,定义多维网格映射,支持任意维度切分,结合SPMD程序生成机制。实现了高效的模型并行和数据并行融合,优化了通信策略,支持大规模Transformer训练。提供了详细的布局设计指南和性能分析,为深度学习的分布式训练提供了新工具和理论基础。

新颖性

首次系统性提出支持任意维度切分的Mesh-TensorFlow框架,突破了传统批量切分限制,结合多维网格布局实现模型参数的线性扩展。相较于现有的矩阵乘法和模型并行算法,提供了更灵活、更高效的分布策略,显著提升大模型训练能力。

局限性

  • 当前实现依赖TPU硬件,硬件拓扑对通信性能影响较大,实际部署需考虑网络拓扑匹配。
  • 模型布局设计需手动调优,自动布局搜索尚未实现,可能影响使用便捷性。
  • 大规模训练仍面临通信瓶颈,未来需优化通信策略和硬件支持。

未来方向

未来将探索自动化布局搜索算法,提升布局优化效率。扩展支持卷积等空间操作,优化halo区域通信。推广到GPU和多机CPU环境,增强通用性,并结合硬件感知优化策略,推动深度学习大规模分布式训练的普及。

AI 总览摘要

随着深度学习模型规模不断扩大,传统的数据并行策略面临显存限制和通信瓶颈,难以支持超大模型的训练。本文提出Mesh-TensorFlow,一种支持任意维度切分的分布式张量计算语言,突破了批量切分的限制,实现模型和数据的高效融合。通过定义多维处理器网格,结合全局布局映射,Mesh-TensorFlow能生成高效的SPMD程序,极大提升大规模模型的训练效率。

在TPU集群上,作者成功训练了参数达5亿的Transformer模型,超越了现有的最优结果。在WMT'14英法翻译任务中,最大模型BLEU得分达43.9,训练时间仅22小时,表现出优异的扩展性和效率。同时,模型在一亿词的语言建模任务中,困惑度降至24.0,刷新了性能纪录。这些成果验证了Mesh-TensorFlow在自然语言处理等领域的巨大潜力。

该框架的核心创新在于引入多维网格布局,支持任意张量维度的切分,结合高效通信策略,解决了大规模分布式训练中的通信瓶颈和布局优化难题。其灵活性和扩展性,为未来深度学习模型的规模扩展提供了坚实基础。尽管目前主要依赖TPU硬件,未来将向GPU和多机CPU环境推广,自动布局搜索和空间操作支持也在研发中,预示着深度学习分布式训练的广阔前景。

深度分析

研究背景

近年来,深度学习模型不断扩大,推动了Transformer、BERT等模型的兴起,但训练大规模模型面临显存限制和通信成本高企的问题。传统的批量切分(数据并行)虽易实现,但难以突破模型规模极限。模型并行策略如切分层或参数分块,虽能缓解内存压力,却复杂难以优化,且在大规模集群中实现困难。现有框架如Megatron-LM、GPipe等虽支持部分模型并行,但缺乏统一的表达和优化工具。随着硬件(TPU、GPU集群)性能提升,需求日益增长,亟需一种通用、灵活的分布式张量计算语言,支持多维切分,兼顾通信效率与扩展性。

核心问题

现有分布式训练策略多局限于批量切分,难以应对模型参数规模的指数级增长。模型参数超出单机内存时,训练变得不可行或极其低效。模型并行算法复杂,难以自动化调优,通信成本高,限制了模型的扩展。如何设计一种既支持多维切分,又能高效通信的统一框架,成为深度学习社区的核心挑战。特别是在TPU等硬件环境中,如何充分利用硬件资源,减少通信瓶颈,是亟待解决的问题。

核心创新

本文提出Mesh-TensorFlow,支持任意维度的张量切分,通过定义多维处理器网格,实现模型和数据的灵活布局。核心创新包括:• 命名的张量维度,便于逻辑映射和布局调整;• 全局布局映射,将张量维度映射到网格维度,实现多维切分;• 生成SPMD程序,结合通信原语(如Allreduce)优化通信路径。该框架允许用户定义复杂的布局策略,结合硬件拓扑,优化通信和计算效率。作者在Transformer模型上验证了布局设计的有效性,训练参数达5亿,显著提升性能。

方法详解

  • �� 定义张量维度命名,确保布局一致性。• 构建多维处理器网格,支持不同拓扑结构(如二维、三维)。• 设计全局布局映射,将张量维度映射到网格维度,实现多维切分。• 将模型定义为张量操作,支持einsum、reshape、reduce等。• 编译成SPMD程序,自动插入通信原语(Allreduce、Allgather等)。• 利用TPU硬件特性,优化通信和计算路径。• 实现模型并行和数据并行的结合,支持大规模训练。• 通过实验验证不同布局的性能差异,指导布局优化。

实验设计

作者在TPU集群(最高512核)上,训练Transformer模型,参数规模从数千万到5亿。采用WMT'14英法翻译任务和语言模型任务,比较不同布局(如批量切分、模型切分、多维切分)的性能。训练时间、BLEU分数和困惑度作为主要指标。通过布局调优,实现参数规模的线性扩展,通信成本的最小化。实验还包括不同网格维度(二维、三维)对性能的影响分析,验证了布局设计的有效性和可扩展性。

结果分析

最大模型参数达2.9亿,BLEU得分43.9,训练时间22小时,超越以往所有公开结果。语言模型困惑度降至24.0,刷新纪录。多维布局实现了参数规模的线性扩展,隐藏层达262144,注意头数达256,保持50%以上的计算效率。布局优化显著降低通信成本,模型训练的时间和资源利用率大幅提升。这些结果证明Mesh-TensorFlow在大规模模型训练中的优越性和实用性。

应用场景

该框架适用于自然语言处理、计算机视觉等需要大规模模型的场景。支持多硬件平台(TPU、GPU、CPU),可用于训练超大模型、提升模型性能。企业和研究机构可以借助此技术,加速模型研发,降低训练成本,推动AI技术的广泛应用。

局限与展望

目前主要依赖TPU硬件,硬件拓扑影响性能。布局设计需手动调优,自动布局搜索尚未实现。大规模通信仍存在瓶颈,未来需优化通信策略和硬件支持。模型空间操作(如卷积)支持有限,需扩展halo区域通信机制。整体而言,框架在复杂场景中的适应性和易用性仍有提升空间。

通俗解读 非专业人士也能看懂

想象你在一个大型工厂里,生产线上的工人负责不同的任务。传统上,所有工人都做一样的事情(数据并行),这样简单但当生产线变长时,协调变得困难。现在,工厂引入多维的分工方式,把不同的任务(模型的不同部分)分配给不同的工人组(多维网格),每个工人只负责一部分工作。这样,工厂可以同时生产更多的产品(大模型),而且每个工人只需要处理自己的一部分,减少了等待和协调时间。Mesh-TensorFlow就像这个智能分工系统,帮助深度学习模型在超级计算机上高效运行,支持训练参数多达数十亿的模型,就像工厂能同时制造出大量复杂的产品一样。

简单解释 像给14岁少年讲一样

想象你在学校的厨房里做披萨,很多学生一起合作。以前,大家都做一样的事情(比如切菜),这样很快就会堵车(通信变慢)。现在,老师告诉每个人负责不同的任务,比如有人只负责切菜,有人只负责放料。这样,大家可以同时工作,效率大大提高。Mesh-TensorFlow就像这个聪明的厨房管理系统,让很多学生(处理器)可以同时合作,做出超级大、超级复杂的披萨(大模型)。它让每个人只做自己擅长的部分,然后再合起来,节省时间,也让披萨变得更大更好吃!这样,科学家们就可以用超级快的“厨房”做出更厉害的AI模型,帮助我们解决很多难题。

术语表

SPMD (Single Program Multiple Data)

一种并行计算模型,所有处理器运行相同程序,但处理不同数据。

Mesh-TensorFlow将其用于生成高效的分布式程序。

Allreduce (全归约)

一种通信操作,将多个处理器上的数据合并(如求和),并广播结果。

用于同步梯度,确保模型一致性。

Tensor (张量)

多维数组,深度学习中的基本数据结构。

Mesh-TensorFlow中的操作对象。

Layout (布局)

定义张量在多维网格中的切分方式。

决定模型参数和激活的分布策略。

Mesh (网格)

多维处理器集合,用于定义硬件拓扑。

支持复杂的分布式切分方案。

开放问题 这项研究留下的未解疑问

  • 1 自动布局搜索算法尚未实现,手动调优复杂,影响使用效率。
  • 2 空间卷积等空间操作的通信机制还需优化,支持更复杂模型。
  • 3 硬件拓扑对通信性能影响大,如何设计硬件感知的布局仍是挑战。

应用场景

近期应用

大规模自然语言模型训练

企业和研究机构可利用Mesh-TensorFlow在TPU集群上训练超大模型,提升性能和效率,降低成本,推动AI应用发展。

远期愿景

普适的分布式深度学习平台

未来将实现自动布局优化,支持多硬件平台,推动深度学习模型的规模化和普及,开启智能新时代。

原文摘要

Batch-splitting (data-parallelism) is the dominant distributed Deep Neural Network (DNN) training strategy, due to its universal applicability and its amenability to Single-Program-Multiple-Data (SPMD) programming. However, batch-splitting suffers from problems including the inability to train very large models (due to memory constraints), high latency, and inefficiency at small batch sizes. All of these can be solved by more general distribution strategies (model-parallelism). Unfortunately, efficient model-parallel algorithms tend to be complicated to discover, describe, and to implement, particularly on large clusters. We introduce Mesh-TensorFlow, a language for specifying a general class of distributed tensor computations. Where data-parallelism can be viewed as splitting tensors and operations along the "batch" dimension, in Mesh-TensorFlow, the user can specify any tensor-dimensions to be split across any dimensions of a multi-dimensional mesh of processors. A Mesh-TensorFlow graph compiles into a SPMD program consisting of parallel operations coupled with collective communication primitives such as Allreduce. We use Mesh-TensorFlow to implement an efficient data-parallel, model-parallel version of the Transformer sequence-to-sequence model. Using TPU meshes of up to 512 cores, we train Transformer models with up to 5 billion parameters, surpassing state of the art results on WMT'14 English-to-French translation task and the one-billion-word language modeling benchmark. Mesh-Tensorflow is available at https://github.com/tensorflow/mesh .

cs.LG cs.DC stat.ML