大模型的崛起带来了前所未有的机遇与挑战。这些模型以其强大的理解力和学习能力,为各种复杂任务提供了解决方案。然而,大模型的成功训练依赖于巨大的计算资源,这对分布式训练技术提出了新的要求。本文将深入探讨阿里云研究员、阿里云人工智能平台PAI技术负责人林伟在GTC2024大会上介绍的TorchAcc框架,这是一个基于PyTorch/XLA的大模型分布式训练框架,旨在解决大模型训练中的算力瓶颈问题。
大模型的挑战与分布式训练的必要性
过去五年中,大模型的规模增长迅速,平均每两年增长15倍,特别是Transformer等语言模型和多模态模型,其规模增长更是惊人。然而,单个GPU的计算能力和显存容量的发展速度远远跟不上模型规模的扩张。这一矛盾直接催生了对分布式训练技术的迫切需求。
分布式训练不再局限于数据并行模式,而是更加重视模型并行策略,以弥补单个计算单元算力与存储提升速度相对于模型规模增长的滞后性。模型并行的分布式训练系统相比数据并行更为复杂,需要根据模型的规模和结构来决定如何恰当地“分割”模型,以实现平衡的计算负载。
TorchAcc框架的核心特性
TorchAcc框架围绕四个核心方面展开:
多样化的并行策略:TorchAcc支持数据并行、模型并行(如算子并行、流水线并行)以及FSDP(FullyShardedDataParallel,又称ZeRO)。它能自动探寻并整合各类并行策略,提供自动化的分布式策略配置方案,并为高级开发者提供半自动化的控制接口。
显存智能分配器:针对显存瓶颈问题,TorchAcc提供了显存智能分配器,通过精细化调度与地址分配策略,提高模型并行训练的效率。
计算与通信优化:随着模型结构的复杂化,优化计算密集度和减少访存开销变得至关重要。TorchAcc通过一系列技术手段,将模型训练过程转化为统一的中间表示层(ModelIR)的graph,并实施多元化的优化策略。
高效的底层执行:TorchAcc将优化后的执行Plan交由底层Backend执行,实现模型训练性能的最大化提升。
TorchAcc的技术实现
TorchAcc的技术实现包括以下几个关键点:
模型计算图的捕获:TorchAcc采用符号式追踪和LazyTensor技术捕获计算图,转化为IRGraph。
并行策略的实现与优化:TorchAcc在FXGraph层面实现数据并行、流水并行和FSDP等策略,并利用PyTorch/XLA的marksharding接口实现张量并行和序列并行。
算子优化:引入FlashAttention技术提升Attention模块的执行效率,并充分利用XLA的Kernelfusion等算子优化功能。
通信优化:通过合并collective通讯算子、异步执行和LatencyHidingScheduler功能,提升分布式训练效率。
显存优化:采用ROAM(ReorderOperatorsandArrangeTensorsAddresstoReduceMemoryUsage)内存优化探索方式,有效降低显存开销。
性能测试与应用
在Llama2-7B模型的性能测试中,TorchAcc展现了显著的性能优势,部分模型的训练过程实现了高达3倍的性能提速。通过显存优化,与原生PyTorch和其他优化方法相比,ROAM节省了显著的显存开销,并在求解时间上实现了显著的缩减。