23年1月UCSD的论文“Systems for Parallel and Distributed Large-Model Deep Learning Training“。
深度进修Vff08;DLVff09;曾经扭转了各类规模的使用Vff0c;蕴含计较机室觉、作做语言办理和表格数据阐明。对进步DL模型精度的摸索促使摸索越来越大的神经架构Vff0c;最近的一些Transformer模型凌驾了数千亿个可进修参数。那些设想为DL空间带来了范围驱动系统挑战Vff0c;譬喻内存瓶颈、运止时效率低和模型开发老原高。处置惩罚惩罚那些问题的勤勉曾经摸索了一些技术Vff0c;如神经架构的并止化、正在内存层次构造中溢出数据以及高效内存的数据默示。那项盘问拜访将摸索大型模型训练系统的前景Vff0c;强调要害挑战和用于处置惩罚惩罚那些挑战的各类技术。
DL理论的最新展开为DL钻研引入了系统模型范围的新挑战。理论者曾经初步摸索将很是大的神经构造图用于DL模型Vff0c;此中一些包孕数十亿以至数万亿的可训练参数Vff01;要害示例蕴含NLP Transformer模型BERT Large[16]、GPT-3[13]和Meta的深度进修引荐模型Vff08;DLRMVff09;[41]。那些模型的宏壮范围正在三个要害规模带来了严重挑战。
Vff08;1Vff09; 内存可扩展性。范例DL训练但凡将模型的参数保存正在加快器Vff08;譬喻GPUVff09;的存储器上Vff0c;并运用采样数据来计较每个参数的梯度更新。应付很是大的模型Vff0c;保存参数、中间计较和梯度更新所需的空间但凡会赶过加快器相对有限的内存资源。高端出产级GPUVff0c;如特斯拉x100[2]Vff0c;具有16-32GB的方法内存Vff0c;但大型DLRM可能须要数百GB的空间。
Vff08;2Vff09; 机能。参数计数的删多但凡取较高的执止光阳有关。另外Vff0c;复纯的模型架构往往须要大型数据集来进步模型的进修才华——譬喻Vff0c;GPT-3正在300Btoken上停行训练[13]Vff0c;开源BLOOM语言模型正在366B[12]上停行训练。训练那样的模型可能须要数周以至数月的光阳[12Vff0c;41]。因而Vff0c;可以进步执止机能的劣化对大范围DL模型的开发人员很是无益。
Vff08;3Vff09; 训练用度。前两个挑战的范例处置惩罚惩罚方案但凡波及跨多个方法并止存储或执止。然而Vff0c;那种办法可能会显著进步计较老原。BLOOM运用416个A100 GPU停行训练Vff0c;Megatron LM运用512个[5]。那对大大都从业者来说是不现真的Vff0c;特别是当那些GPU须要糊口生涯几多周以至几多个月的训练光阳时。正在AWS上复制BLOOM的训练步调将破费550万美圆。请留心Vff0c;那以至没有思考到模型选择的格外老原Vff0c;蕴含训练多个模型以评价最佳超参数设置和配置[29]。
跟着不停冲破模型范围的鸿沟Vff0c;处置惩罚惩罚那些挑战以真现大模型DL空间的进一步展开变得越来越必要。因而Vff0c;曾经开发了各类系统和技术来处置惩罚惩罚那些问题。一些标的目的蕴含重详细化Vff08;rematerializationVff09;[15]、数据溢出/CPU卸载[23Vff0c;36Vff0c;37Vff0c;45–47]、流水线/模型并止[21Vff0c;25Vff0c;27Vff0c;33Vff0c;40]和混兼并止[26Vff0c;31Vff0c;36Vff0c;37,60]。那些主题属于“大模型训练技术”的护卫伞Vff0c;已成为家产界和学术界钻研人员的重点Vff0c;但该规模的工做质之大使该主题难以确定标的目的。原文回想大模型DL训练系统空间的现状Vff0c;并评价该规模将来的删加和展开标的目的。
最近发布了一些对于该规模的高级别、简短的综述[20Vff0c;54]Vff0c;但其真不片面Vff0c;也没有波及模型选择、混兼并止性和技术交叉等要害主题。
模型并止是指将神经架构图分别或分片为子图Vff0c;并将每个子图或模型分片分配给差异方法的技术。正在前馈网络中Vff0c;那些碎片可能指的是重叠层的组。
模型并止性的加快潜力正在很急流平上与决于体系构造和分片战略。前馈网络上的序列模型分片Vff08;如图A所示Vff09;将不供给并止执止的领域Vff0c;而是正在加快器之间引入相关图Vff08;dependency graphVff09;。然而Vff0c;那种分片战略正在序列体系构造Vff08;如TransformersVff09;中依然很风止Vff0c;因为它可以正在多个方法之间分配内存需求Vff0c;而且设置起来相当简略。正在其余状况下Vff0c;神经计较图为算子间并止供给了作做的机缘Vff08;如图B所示Vff09;。
如图所示Vff1a;AVff09; 注明了如何将分比方适单个GPU的大型前馈网络正在三个GPU上停行模型并止化以真现执止Vff1b;Vff08;注Vff1a;执止速度并无加速——没有并止执止Vff0c;只要分区内存需求Vff09;BVff09; 三个GPU上的机能模型并止分片战略的示例Vff0c;并止执止层用共享颜涩默示Vff1b;那种战略操做了算子图中现有的并止执止机缘——假如图素量上更序贯办理Vff0c;那可能其真纷歧定。
另一种办法是真际分别网络中的各个算子。一些算子Vff08;如嵌入表Vff09;可以以最小的开销按宽度停行分片Vff08;shardedVff09;。其余Vff0c;如矩阵乘法Vff0c;依然可以停行收解Vff08;譬喻运用并止GEMM战略[55]Vff09;Vff0c;但须要更多的通信轨范。如图展示了一个模型并止嵌入表的示例。那些宽度分片战略Vff0c;但凡被称为张质并止Vff0c;因为它们须要输入张质分区Vff0c;可以真现比算子间模型并止更高机能的算子内并止Vff0c;但须要更多的肉体和考虑来真现。另外Vff0c;大大都张质并止算子至少须要一个全搜集Vff08;all-gatherVff09;通信轨范来从头搜集分区输出Vff0c;那一事真减弱了机能劣势。Mesh TensorFlow[51]供给了一个通用的框架和语言来指定张质并止计较Vff0c;只管它不再被撑持或维护。
任何类型的模型并止都引入了GPU-GPU通信。最新的英伟达GPU撑持“NxLink”互连Vff0c;即供给高达900GB/s带宽的高速GPU-GPU通信路由Vff0c;那有助于最大限度地减少开销。然而Vff0c;NxLink其真不总是现成的Vff0c;特别是当用户无奈轻松定制的云端呆板。当不撑持NxLink时Vff0c;GPU-GPU通信通过PCIe互连运止Vff0c;速度要慢得多。特斯拉x100但凡被认为是DL使用步调的范例高机能GPUVff0c;撑持16GB/s的16通道PCIe 3.0互连。
为了防行通过迟缓的互连传输过大都据Vff0c;模型并止性用户但凡会选择一种分区战略Vff0c;该战略将最小化须要正在片之间传输的激活的数质Vff0c;大概平衡计较以隐藏通信老原。为此存正在各类分片算法[14Vff0c;25Vff0c;26Vff0c;37Vff0c;46Vff0c;61]。
数据并止是一种常见的深度进修执止战略Vff0c;可以并止出产多个小批质数据。数据并止执止技术可以分为两大类——异步数据并止和同步数据并止。
最知名的数据异步并止技术是Parameter SerZZZerVff0c;此中一个焦点主效劳器持有一组基线参数Vff0c;而分布式worker持有正在差异的小批质上训练的模型正原。分布式工做步调偶尔会向基线效劳器发送更新Vff0c;而基线效劳器又会向分布式工做步调发送交换参数Vff0c;以保持它们的更新。工做步调可能会彼此差异步Vff0c;因为它们只须要取基线效劳器通信/同步。异步技术带来了很多挑战Vff0c;譬喻取单个worker训练相比Vff0c;精确性下降Vff0c;以及由于worker返回光阳的不同而招致的不成复制的结果。由于那些起因Vff0c;正在现代DL训练环境中Vff0c;异步技术但凡被逐步套汰Vff0c;与而代之的是同步技术。
最风止的同步数据并止执止技术是分布式数据并止Vff08;Distributed Data ParallelismVff0c;DDPVff09;。DDP复制模型并将正原分配给V1d45a; 差异的加快器。首先承受一个初始的“全局小批质”Vff0c;而后正在正原之间平均折成Vff0c;为每个正原生老原地梯度更新。而后Vff0c;那些梯度正在正原之间聚折Vff0c;孕育发作全局更新Vff0c;但凡运用 all-reduce通信形式。而后将此全局更新并止使用于每个复制正原。该技术正在数学上等效于运用本始全局小批质的单个GPU训练。尽管那种技术引入了一个 all-reduce通信轨范Vff0c;但那些开销但凡可以正在模型执止光阳下堆叠和隐藏。
All-Gather和All-Reduce通信形式但凡用于数据并止和更宽泛的分布式DL。那些形式的宗旨是正在差异的办理器上获与径自的数据Vff0c;而后将它们聚兼并分发还办理器Vff0c;那样每个办理器如今都领有雷同数据的正原。all-together形式都运用一种算法Vff0c;此中每个办理器将其数据传送给其余每个办理器。假如每个办理器都有一个须要全局广播的数据分区Vff0c;则但凡会运用此办法。每个带宽运用率高的办理器但凡须要V1d45b; 个通信轨范——每个办理器必须取所有其余办理器停行通信。All-reduce形式是All-together之上的一层Vff0c;它将取一些reduction函数Vff08;譬喻总和、均匀值Vff09;相联结。正在同步历程中Vff0c;运止函数取运止all-together而后运止部分函数使用步调相比Vff0c;省去了一个轨范。譬喻Vff0c;HoroZZZod[50]真现了一个为数据并止梯度聚折的带宽最劣reduce形式Vff0c;此中每个办理器须要2×(V1d45b; − 1Vff09;个通信轨范完成彻底的gather和reduce。
混兼并止是指将差异的并止战略联结起来以真现更高的整体机能的战略。譬喻Vff0c;将数据并止性叠加正在模型并止性之上Vff0c;可以运用户真现跨多个方法的内存可扩展性Vff0c;同时加速数据并止性的执止速度。那些战略须要正在设想中停行衡量。一个简略的笼罩混兼并止Vff0c;模型并止性的多方法需求要乘以数据并止性的复制要求。任务并止性的进一步叠加Vff08;譬喻Vff0c;正在多模型训练中Vff09;可以将另一个乘法因子添加到等式中。更复纯的混折可能会将数据并止使用于模型并止体系构造的某些阶段Vff0c;让其余阶段串止执止Vff0c;如图所示。留心那个设想翻开了新的“搜寻空间”——数据并止复制应当选择哪些阶段Vff1f;模型并止分片决策如何映响数据并止机能Vff1f;有限的资源应当如何分配到各个阶段Vff0c;方法互连和拓扑构造如何映响机能Vff1f;
模型架构的范围大抵分为两类——深度范围化和宽度范围化。深度范围化是像Transformers那样的长序列链架构最常见的需求。宽度范围化但凡用于很是宽、易于并止化的算子Vff08;譬喻表查找Vff09;。
模型并止等技术应付大型Transformer训练和正常的深度模型训练来说是必不成少的。然而Vff0c;为很是深的模型启用并止执止可能具有挑战性。应付一个深的层序列Vff0c;最作做的分片战略是将序列分别为子序列。但那种办法迫运用户添加GPUVff0c;而真际上并无从任何机能劣势中获益——将序列分别为子序列其真不能供给任何并止执止加快的机缘。思考一个万亿参数模型Vff0c;它以至须要运用1024个GPU威力适应内存。所有那些GPU都只是用于“启用”执止Vff0c;并无供给任何机能劣势。事真上Vff0c;由于GPU间的通信老原Vff0c;该战略可能比划一的内存内训练做业慢。
存正在一些宽度分片Vff08;width-wise shardingVff09;战略Vff0c;譬喻跨多个GPU并止办理留心块中的收配。然而Vff0c;那些办法须要更多的定制Vff0c;删多通信开销Vff0c;并且须要模型设想者领与大质的勤勉来真现。因而Vff0c;大大都用于深度模型训练的系统更喜爱使用可以针对所有深度模型类停行劣化的广义深度分片战略Vff0c;而不是一次针对单个架构。
只管存正在顺序依赖性的挑战Vff0c;但深度分片也可以带来很多机缘。流水线并止和溢出Vff08;spillingVff09;等技术只折用于深度分片模型Vff08;depth-wise sharded modelsVff09;。
正在引荐模型中Vff0c;嵌入表但凡是宽度分片最受接待的候选者。大大都公司都运用基于嵌入的电子商务模型Vff0c;那些公司聚集特定真体的数据Vff08;如Meta、NetfliV、TikTokVff09;来创立定制的体验。一种范例的办法是创立一个表Vff0c;将用户ID映射到可训练向质Vff0c;而后将那些向质馈送到顶部的其余DNN。然而Vff0c;要想正在FB那样的数十亿用户平台上运止Vff0c;相应的表格必须很是宽。一个30亿的索引表Vff0c;大小为1024个可训练向质Vff0c;填充单精度Vff08;32位Vff09;浮点Vff0c;须要12TB的内存。真活着界的引荐模块可能蕴含用于查找的多个表Vff08;譬喻Vff0c;用户表、业务表、室频目录表Vff09;Vff0c;那进一步删多了内存老原。
对嵌入表停行分区是一项简略的任务Vff0c;因为表的查找是并止的——一个索引的查找不依赖于其余索引。因而Vff0c;将表分配给差异GPU成为子表Vff0c;是分配内存老原的常见战略。跨片并止执止Vff0c;可以简略地将小批质中的索引查找乞求路由到适当的GPU。然而Vff0c;为了正在并止表查找之后从头聚折小批质馈送到顶部DNNVff0c;须要一个潜正在的高贵的all-together通信轨范。
将宽度分片使用于其余算子Vff08;如矩阵乘法Vff09;其真不常见Vff0c;但也并非闻所未闻。但总的来说Vff0c;嵌入表是内存最密集的单个收配[9]。思考到宽度分片的次要用例是嵌入表Vff0c;针对那种状况停行劣化可能显得过于非凡。然而Vff0c;嵌入表和引荐模型正在DL工做负载中占了很大比例——Meta报告称Vff0c;他们50%的DL训练周期都花正在了基于嵌入表的引荐模型上[9]。因而Vff0c;劣化很是宽泛的模型状况是很是值得的Vff0c;纵然折用性比序贯深度模型可扩展性的劣化更有限。
如图对差异训练系统和技术停行比较Vff1a;
一些根柢技术Vff0c;如再详细化Vff0c;但凡被用做更先进大型模型训练系统的常见构建块。正常来说Vff0c;那些技术对组织和构造的映响很小Vff0c;可以取其余办法集成。
再详细化Vff0c;也称为梯度检查点Vff0c;试图最大限度地减少反向流传的内存需求[15Vff0c;19]。反向流传须要保存中间算子输出Vff0c;以便准确使用梯度计较的链式规矩。然而Vff0c;中间输出张质可能须要大质内存Vff01;一些阐明[54]讲明Vff0c;激活占ResNet[22]内存泯灭的95%Vff0c;占某些Transformer内存运用的80%。最初先抛弃除少数检查点之外的大大都激活Vff0c;用检查点从头计较反向流传历程中抛弃的激活Vff0c;再详细化以计较调换内存。通过那种方式Vff0c;正在任何给定点Vff0c;只要检查点之间的中间点须要存储正在内存中。那种办法简曲会孕育发作计较开销——前向流传有效地停行了两次。然而Vff0c;前向流传中的算子但凡比反向流传中运用的主动微分步调更快Vff0c;因而开销比看起来更小。一些梯度检查点系统传布鼓舞宣传只要30%的开销Vff0c;可以勤俭6-7X内存[15]。
累积Vff0c;是针对反向流传中分批梯度的内存需求而言[25]。随机梯度下降将样原分批放入模型馈送的小批质中Vff0c;反过来可以将参数更重生成的梯度室为每个样原更新的聚折。累积延迟了那些聚折梯度的使用Vff0c;而是计较新的小批质梯度更新Vff0c;并将它们累积到聚折梯度向质上。新梯度如今是2个小批质更新的总和Vff0c;而不是1个。通过那种方式Vff0c;可以扩充有效的小批质大小和梯度映响Vff0c;而无需真际训练更大的批质。将较小的单个批次称为微批次Vff08;micro batchVff09;Vff0c;并将有效的折计批次称为小批次Vff08;mini-batchVff09;。累积应付流水线并止性至关重要Vff0c;并且常常取其余技术联结运用。
大大都训练框架Vff08;譬喻TensorFlow、PyTorchVff09;[8Vff0c;42]运用梯度和参数的单精度浮点Vff08;32位Vff09;默示。双精度默示Vff08;64位Vff09;相对不常见。减少训练模型的内存需求的一种办法是运用数据的半精度Vff08;16位Vff09;默示Vff0c;即低精度表征。作做地Vff0c;当数值被近似时Vff0c;那会招致精度丧失[38]。然而Vff0c;那种办法可以供给加快和内存勤俭。为了检验测验和平衡那一点Vff0c;主动混折精度Vff08;AMPVff09;[3]将主动检验测验并确定何时可以安宁地将数据压缩到16位Vff0c;而不会组成精度丧失。AMP正在训练大型模型时Vff0c;精度丧失很少以至没有丧失Vff0c;同时真现了高达5.5X的加快[3]。由于AMP间接正在很是低的级别批改数值Vff0c;因而该技术但凡取用于大模型训练的真际系统办法正交。
正在某些状况下Vff0c;DL训练中运用的向质很是稀疏。譬喻Vff0c;嵌入表查找但凡只波及表的几多个索引。使用于表的梯度向质将仅正在运用的索引处具有非零值Vff0c;而别的局部置零。真际上Vff0c;正在内存中糊口生涯所有那些零是没必要要的Vff0c;并且会华侈内存。稀疏默示试图将那些向质压缩曲至非零值Vff0c;同时防行任何信息损失。默许状况下Vff0c;但凡用于嵌入表的最简略办法是将梯度默示为将索引映射到梯度值的K-x对。当将稀疏默示取如果范例向质默示的收配相联结时Vff0c;会显现一些复纯状况Vff0c;譬喻all-reduce通信形式。一些工做[35]展示了如何通过代替通信形式或将数据转换回范例默示来处置惩罚惩罚那一问题。稀疏向质默示处置惩罚惩罚了一个很是详细的问题Vff0c;但应付一些算子Vff08;如宽嵌入表Vff09;的有效训练至关重要。
流水线并止性针对“序列深度模型”设置[25]。它是模型并止训练范式的间接扩展。模型并止性创立一个分阶段的片序列Vff0c;创立一个作做的“流水线”构造。流水线只是通过检验测验用执止收配填充阶段来操做那种流水线构造Vff0c;从而减少杂序列模型并止性中存正在的闲暇。每片都可以被室为流水线的一个阶段Vff0c;因而一个正在三个GPU上三次分区的模型如今是一个三阶段流水线。
正在CPU流水线中Vff0c;用发送到CPU的各类指令填充流水线[52]。应付DL流水线Vff0c;用微批次填充流水线Vff0c;就像正在梯度累积中一样[25Vff0c;27]。从素量上讲Vff0c;流水线并止是梯度累积和模型并止的联结。独立的微批次正在分片流水线中穿越Vff0c;而后为每个流水线阶段积攒每个微批次的梯度。一旦整个小批次Vff08;所有微批次的组折Vff09;的梯度全副聚折Vff0c;就可以将其使用于模型。那种设想的确就像一个模型-并止-数据-并止的混折Vff0c;此中数据片是并止办理的Vff0c;但正在差异的模型-并止片上。如图对此停行了注明Vff1a;输入的小批次被分别为微批次Vff0c;而后正在流水线阶段中运送。V1d439;V1d465;,V1d466; 指的是带有小批质V1d466;的片V1d465; 前阶段, 尽管V1d435;V1d465;,V1d466; 指的是小批质V1d466;的片V1d465; 后阶段, 通过那种方式Vff0c;真现了一种“流水线式”数据并止Vff0c;即正在差异的模型并止级之间并止办理数据。请留心Vff0c;正在反向流传之前Vff0c;必须根除正向流水线。
反向流传对流水线并止训练提出了挑战。中间输出必须可用于反向流传。然而Vff0c;当取累积相联结时Vff0c;那将要求为每个微批次存储差异的中间输出集Vff0c;从而剥夺了累积供给的任何可扩展性劣势。GPipe[25]是最早的流水线并止训练系统之一Vff0c;提出了将累积取检查点相联结来处置惩罚惩罚那个问题。激活将仅存储正在片/流水线阶段的绑定中Vff0c;正在反向流传历程中Vff0c;跟着梯度正在流水线中向后挪动Vff0c;将停行从头计较。检查点办法如今是大大都Vff08;假如不是全副的话Vff09;流水线并止训练系统的范例办法[21]。另一个挑战是流水线的构造。片流水线必须是双向的。输入和激活正在预测期间向前运动Vff0c;梯度正在反向流传期间向后运动。那招致了一个问题——流水线中的数据正在两个标的目的上运动时会正在阶段“撞碰”。因而Vff0c;正在预测和反向流传之间会发作流水线冲刷Vff08;flushVff09;。假如打点欠妥Vff0c;冲刷可能会重大映响机能。上图展示了一个流水线并止化模型。请留心Vff0c;很大一局部光阳都花正在了“气泡”期Vff0c;即必须彻底冲刷流水线的光阳。
次要的流水线并止技术如下。
GPipe[25]倡议正在保持加快器计数稳定的同时删多微批次的数质Vff0c;那样流水线可以更长光阳保持满形态。那不会打消冲刷Vff0c;但会进步整体效率。然而Vff0c;那种办法将须要更多的内存来存储不少具备检查点的微批次激活。DAP-PLE[17]提出了一种可代替的流水线调治Vff0c;该调治可以保持GPipe的支敛止为Vff0c;但闲暇光阳较少。不幸的是Vff0c;它还同时保持更多的微批次“生动”而大幅删多了内存老原Vff0c;那使得调治应付曾经冲破内存边界的使用步调来说是不成止的。
异步流水线并止的模式另有另一种处置惩罚惩罚方案Vff0c;以保持严格的支敛止为为价钱Vff0c;从头布列流水线阶段和反向流传以打消冲刷。那种序列的“解耦”将问题放松为更有效的——以映响数据出产和出产顺序为价钱[21Vff0c;32Vff0c;39Vff0c;59]。譬喻Vff0c;PipeDream[21]提出的1F1B形式Vff0c;为每个后阶段Vff08;正在差异的微批次上Vff09;运止一个前阶段Vff0c;保持完满的比例和操做率。但它的设想须要更认实的分区和打包Vff0c;而缓解破旧权重更新招致的精确性下降Vff0c;须要存储多个权重正原[21]Vff0c;从而删多了内存老原。尽管像1F1B那样的异步流水线可以很好地执止Vff0c;但它其真不是一个通用的处置惩罚惩罚方案——精度丧失是特定状况下的Vff0c;但凡可能是弘大的。精度至关重要且支敛止为必须可复制Vff08;譬喻模型选择Vff09;的使用步调分比方适异步流水线并止。
尽管模型并止性着眼于正在多个GPU上执止分布内存需求Vff0c;但一些系统试图操做主系统内存Vff08;DRAMVff09;Vff0c;而不是正在更多GPU上横向扩展。那种办法的次要动机是Vff0c;尽管GPU内存有限且高贵Vff0c;但DRAM真际上更便宜且可会见。
最初的工做[23Vff0c;30Vff0c;34Vff0c;49Vff0c;56]将卸载Vff08;offloadingVff09;室为一个“替换”问题——决议何时将张质从GPU内存替换到DRAM上。大大都运用图阐明算法来确定正在哪里“注入”替换收配Vff0c;那与决于激活、梯度或参数下一次可能正在执止图Vff08;eVecution graphVff09;中运用的光阳。SwapAdZZZisor是那些替换系统中最先进的Vff0c;它运用并止遗传搜寻算法来阐明替换算子应当放正在哪里以与得最佳机能。它也是最早撑持卸载参数和激活的系统之一Vff0c;那应付训练十亿参数模型架构至关重要。
那些复纯的替换历程可能很难设置——SwapAdZZZisor的搜寻算法约莫须要一个小时威力完成。另外Vff0c;它们很难扩展到多GPU训练Vff0c;因为没有明白的办法来扩展替换注入图的技术来笼罩多GPU并止性。
ZeRO-R[46]提出了另一种办法Vff0c;那是一种向DRAM动态发送激活和参数的卸载系统。那种办法“正在须要时卸载”Vff0c;而不是预先筹划卸载。设想的不规矩性可能会引入内存碎片等问题Vff0c;但取基于图的设想相比Vff0c;它删多了很大的活络性。正在厥后的版原中Vff0c;ZeRO Infinity[47]将其扩展到卸载到非易失性快捷存储Vff08;NxMeVff09;/磁盘存储Vff0c;真现进一步的可扩展性。
Hydra[37]选择了“独立块”战略Vff0c;将模型体系构造分别为子模型Vff08;如模型并止Vff09;而后可以正在DRAM和GPU存储器之间自由地溢出。可以将其取RDBMS中的溢出停行类比Vff0c;正在RDBMS中Vff0c;独立的数据块可以向下发送到较初级其它内存。取其余溢出系统差异Vff0c;Hydra的执止形式取模型并止性雷同Vff0c;并彻底分袂每个模型片的执止。它依然试图堆叠通信和计较Vff0c;但疏忽了其余CPU卸载技术所摸索的细粒度张质卸载的复纯性。那种泛化使其不太符折单GPU执止Vff0c;但使其更符折取多GPU并止化技术混折。
如图所示Vff1a;Hydra的溢出战略只是简略地提升和降级进出GPU内存的模型并止分片。其余溢流设想Vff0c;如ZeRO Offload运用的Vff0c;尽管构造不太严格Vff0c;但也类似。
L2L[45]运用了类似于Hydra的设想Vff0c;但正在其分片办法上遭到了更多限制。它专门针对Transformer架构Vff0c;并将自留心块Vff08;范例Transformer运算器Vff09;取专门为其目的模型类选择的启示式办法停行替换。那使它能够正在Transformer架构上暗示出涩Vff0c;但无奈真现Hydra的活络性或ZeRO-R的动态通用性。
请留心Vff0c;那些技术但凡用于深度大模型分布其内存需求Vff0c;因为它们正在执止中都操做了某种序次。一个很是宽的算子Vff08;譬喻嵌入表Vff09;假如没有机能的大幅降低就无奈串止化Vff0c;也不易正在DRAM和GPU内存中溢出。宽算子正在混折方法执止的惟一选项是串止化并止算子Vff08;正在表的状况下即索引查找Vff09;Vff0c;并将一系列收配重写为一个深度Vff0c;而不是宽敞的模型Vff0c;大概正在CPU上真际执止宽敞算子。
有些系统更甚Vff0c;真际上是正在CPU上执止收配。但凡Vff0c;最好彻底运用GPU或TPU计较来运止模型Vff0c;因为大大都DL收配符正在撑持高度并止的加快器上运止得更快。然而Vff0c;通过卸载Vff0c;数据无论如何都会正在CPU上——因而Vff0c;GPU收配并止地执止CPU收配不应删多开销。
ZeRO[48]提出正在GPU执止期间正在CPU上运止参数更新Vff0c;出格是针对风止的Adam劣化器[28]。Adam劣化器保存一些形态参数Vff08;但凡是32位Vff09;Vff0c;须要正在32位参数上运止以防行精度下降。不幸的是Vff0c;那阻挡了用户为了减少内存需求而陈列16位默示的工做。Adam劣化器的ZeRO版原正在DRAM上保持32位版原的参数Vff0c;正在GPU上保持低精度的16位版原Vff0c;泯灭更少的内存。正在执止历程中Vff0c;系统将梯度和劣化器形态溢出到DRAM上Vff0c;而后运用CPU办理对32位参数运止参数更新。正在取CPU-GPU通信和GPU计较堆叠的第二轨范中Vff0c;更新被流传到16位参数。
混折CPU-GPU计较正在很是大的引荐模型中也很常见。嵌入表是很是宽泛的内存密集型算子Vff0c;但凡会输入一些较小的DNN停前进一步办理。假如没有任何劣化Vff0c;嵌入表的宏壮范围将迫使只执止CPU[9]。大概Vff0c;用户可以将嵌入表放置正在CPU上Vff0c;而DNN位于GPU内存中Vff0c;并享受GPU加快的好处。一些工做Vff0c;如Hotline[10]检验测验和流水线数据通过模型Vff0c;从基于CPU的嵌入表到GPU加快的DNN。他们证真Vff0c;那种混折计较办法以至可以比宽度标的目的的多GPU模型并止更快Vff0c;因为它打消了all-to-all通信轨范的需求。
并止化技术可以以差异的方式停行组折。各类系统试图将各类“根柢”并止办法Vff08;如数据并止、模型并止Vff09;的劣点联结起来Vff0c;为用户供给更高的机能和可扩展性。混兼并止技术可以分为两大类——“实正的”混折Vff0c;从底层初步集成并止技术Vff0c;以及自上而下的混折Vff0c;正在差异的执止阶段选择差异的战略。
接地式混折传统上Vff0c;从一初步就将模型并止性取其余技术相联结是一项具有挑战性的任务。模型并止性进步了GPU对范例执止的要求Vff0c;那可能会使取基于复制或多真例的并止技术Vff08;如数据并止性、任务并止性Vff09;的组折变得不着真际Vff0c;因为它们进一步扩充了模型并止性的方法要求。
为理处置惩罚惩罚那个问题Vff0c;Hydra[37]倡议运用溢出技术来减少可扩展模型并止训练所需的GPU数质Vff0c;而后正在顶部使用任务并止性一层来撑持高效的多模型训练。而后Vff0c;Hydra系统操做模型并止性的分段特性Vff0c;真现混折的“细粒度并止”日程Vff0c;可以劣于范例的任务并止性和模型并止。如图对此停行了注明。目前Vff0c;Hydra是唯逐个个明白针对大模型设置多模型的系统Vff0c;但跟着从业者勤勉处置惩罚惩罚模型选择和多用户集群打点的老原Vff0c;那一规模的重要性可能会删多。
最初由ZeRO[46]引入的**彻底分片数据并止性Vff08;FSDPVff0c;Fully Sharded Data ParallelismVff09;**供给了模型并止性和数据并止性的混折。取Hydra差异的是Vff0c;Hydra依然以模型并止分片的方式执止Vff0c;FSDP只运用模型并止性将模型分布正在数据并止的真例上Vff0c;每个数据并止克隆都持有一个层组的局部参数集。当执止一个层组时Vff0c;FSDP运止一个all-together轨范Vff0c;正在每个数据并止真例上生成完好的、未分片的层组。而后层组以杂数据并止方式执止。正在执止该层之后Vff0c;可以立刻对其停行从头抛弃Vff0c;从头分配内存占用空间。反向流传也给取了类似的办法。
正在FSDP中Vff0c;每个加快器的内存需求Vff0c;减少到单层的最小footprint加上别的局部的分区内存需求。将单层需求折成为一个常数因子Vff0c;可以将其默示为V1d442;(V1d45b;/V1d458;)减少Vff0c;此中V1d45b;是本始模型内存占用Vff0c;V1d458; 是数据并止真例的数质。那使得用户能够同时受益于数据并止性的机能和模型并止性的可扩展性。请留心Vff0c;那简曲删多了大质的通信开销——对每一层都运止all-gather——而且取基于溢出的技术差异Vff0c;那依然须要横向扩展以真现可扩展性。
ZeRO Offload[48]提出将FSDP取每个加快器溢出相联结Vff0c;卸载正在近期不会运用的分片层参数。那供给了更好的可扩展性Vff0c;但通过CPU-GPU通信引入了更多的通信开销。ZeRO的工做是将通信取计较堆叠Vff0c;但一些速度减慢但凡是不成防行的。阐明讲明Vff0c;FSDP比范例数据并止性慢Vff08;只管更具可扩展性Vff0c;并且能够运止更大的模型Vff09;。FSDP的撑持者传布鼓舞宣传Vff0c;用户可以操做其更高的可扩展性来删多批次大小Vff08;从而使执止光阳取分布数据并止DDP机能保持一致Vff09;Vff0c;但批次大小会映响精确性支敛止为。为了与得更好的FSDP机能而范围化批次大小Vff0c;可能会招致取异步流水线雷同的问题Vff08;只管不这么极度Vff09;。3D并止性将FSDP取流水线并止性和张质并止性相联结Vff0c;操做可扩展的数据并止性以及并止的深度和宽度分片执止收配。但凡回收的模式Vff0c;是正在模型的某些局部使用FSDPVff0c;正在另一个局部使用流水线Vff0c;正在更符折宽度分片的另一个分段中使用张质并止。3D并止但凡须要基于模型架构停行大质定制——它不能像Hydra或FSDP这样开箱即用。也便是说Vff0c;它曾经运用Megatron[53]等系统乐成地使用于很多很是大范围的模型的训练Vff0c;如Megatron-LM[5]和BLOOM[12]。将来Vff0c;将3D并止混折取Hydra的分片任务并止相联结Vff0c;一种新的“4D并止”成为可能。
战略发现战略发现系统试图主动化正在模型中组兼并止化技术的历程。最近的几多个例子是FleVFlow[26]和Alpa[60]。
FleVFlow是正在开发高级DL并止技术Vff08;如流水线并止、FSDP和分片任务并止Vff09;之前构建的Vff0c;它只摸索数据、张质和模型并止Vff0c;次要针对卷积神经网络。FleVFlow构建了一个方法拓扑图Vff0c;将加快器建模为节点Vff0c;将互连Vff08;譬喻NxLink、PCIe、Infiniband网络Vff09;建模为边缘。那允许它孕育发作混兼并止执止战略Vff0c;该战略思考了给定方法配置中边缘之间的数据挪动老原。它运用模拟器来评价差异的分别战略Vff0c;运用试点通道Vff08;pilot passesVff09;来建模经营商运止光阳Vff0c;并基于边缘带宽停行真践计较来建模通信开销。运用模拟器做为启发Vff08;oracleVff09;Vff0c;它评价了分别算子的差异办法。请留心Vff0c;那种基于“收解”的并止默示不能撑持正在差异任务上操做独立执止的并止化技术Vff08;譬喻任务并止、流水线并止Vff09;Vff0c;只管它可能撑持FSDP。另外Vff0c;它没有明白注明内存的可扩展性或正在特定配置中方法内存耗尽的可能性[11]。
Alpa更明白地思考了内存可扩展性Vff0c;并思考了算子间的并止性Vff08;譬喻Vff0c;模型并止性、流水线并止性Vff09;Vff0c;而不只仅是像FleVFlow这样的算子内收解。它运用指令级并止Vff08;ILPVff09;公式来确定如何设置并止化战略Vff0c;而后该阶段将赶过方法内存限制时批改执止布局[60]。占据更恢弘的战略搜寻空间Vff0c;那种办法可以真现比FleVFlow更好的机能。
那些混兼并止化战略很是符折静态的、非数据依赖的执止任务Vff08;譬喻非递归神经网络Vff09;。然而Vff0c;它们不能很好地扩展到更改态的任务Vff0c;如多模型训练——它们是用于训练的编译器Vff0c;而不是调治器。将来的工做可以思考弥折那一差距Vff0c;构建一个动态混兼并止执止器。
引荐题目模型的模型数据并止性DLRM给从业者带来了折营的挑战Vff0c;因为它们联结了两种差异的扩展挑战。嵌入表是很是理智的Vff0c;并且担保了模型并止执止的宽度收解。顶级DNN是计较密集型的Vff0c;但范围较小Vff0c;并且将从数据并止性中获益最多。因而Vff0c;将张质并止性使用于模型的表格Vff0c;并将数据并止性使用到DNNVff0c;那种混折战略将正在引荐模型上暗示劣秀。那种办法已成为彻底GPU加快DLRM训练的范例[41]Vff0c;只管异构CPU-GPU执止也折用于会见GPU资源较少的用户。
混兼并止DLRM训练正在多个GPU上分别嵌入表Vff0c;并正在每个GPU上放置顶部DNN的部分正原。分片的表办理正在样原维度上分片的输入Vff0c;而后运止分区的all-gather来从头搜集表输出Vff0c;并正在批次维度上为每个数据并止正原停行分区。如图对此停行了注明。
那种办法使从业者能够从神经架构中的数据和模型并止性中受益。通信轨范是密集的Vff0c;但凡会带来綦重极重的开销[35]Vff0c;但并止执止的好处但凡会赶过那一点。
总的来说Vff0c;混兼并止性正在适当的时候联结差异并止化战略的劣点Vff0c;为用户供给了高效训练模型的才华。混兼并止技术Vff0c;如分片任务并止和FSDPVff0c;从一初步就联结了可扩展性和效率Vff0c;而战略发现和DLRM混兼并止可以协助训练模型架构Vff0c;其正在那个图的差异阶段具有混兼并止需求。