微盟宣布赔偿1.5亿,称数据已全部恢复
06-18
今年2月底,字节跳动发布了一篇名为《MegaScale: Scaling Large Language Model Training to More Than 10,GPUs》的论文。
标题中的MegaScale指的是大型语言模型的生产框架,类似于NVIDIA的开源框架Megatron-LM。
NVIDIA的框架主要通过三点来提高大规模GPU的效率:数据并行、张量并行、管道并行。
我们曾经从Silicon Star的文章《Gemini背后,谷歌真正可怕之处并不在模型本身……》了解到Google提出了一个叫做MFU的概念,它代表Model FLOPs Utilization。
数字越大,训练速度越快。
在处理1亿参数规模的语言模型时,MegaScale在8个GPU上实现了55.2%的MFU,比Megatron-LM高出约1.34倍。
为了保证训练过程的高效和稳定,团队特别注重深度可观测性,开发了一系列诊断工具来监控系统组件的深层事件,找出问题的根源,从而实现容错和修复。
减轻滞后节点的影响。
当选择一个事件时,将显示其依赖关系。
接下来我们仔细拆解一下,说说MegaScale和这个“诊断工具”的主要实现方法。
MegaScale 采用了一种称为“3D 并行性”的设计。
正如我们刚才所说,Megatron-LM使用了三种并行方法,而MegaScale则结合了这三种并行方法。
用一句话概括这样做的好处:减少GPU之间的通信消耗,从而提高并行计算能力。
在数据并行性方面,MegaScale将模型参数分配给数据并行级别内的worker,每个worker持有模型参数的副本。
在前向传播阶段,通过全收集操作收集其他工作人员的最新模型参数。
在反向传播阶段,使用reduce-scatter操作来聚合每个worker计算的梯度。
MegaScale 借鉴了 PyTorch FSDP,提前预取初始全收集操作,并允许其与数据加载操作重叠。
这样做的最大好处是减少每次迭代中的通信时间。
在张量并行和序列并行中结合并行变压器块实现重叠通信。
所谓的all-gather和reduce-scatter其实是分布式计算和深度学习中常用的通信原语,主要用在并行环境中。
实现数据聚合和分发。
在深度学习训练中,all-gather常用于数据并行场景。
当模型在多个GPU或节点上并行计算时,每个GPU计算完自己的梯度或更新模型参数后,需要通过所有 -gather 操作将所有节点上的梯度或参数聚合到每个节点上,以用于后续的全局梯度平均或参数同步。
减少分散用于梯度聚合。
每个节点完成局部梯度计算后,通过reduce-scatter操作汇总所有节点的梯度,然后将汇总的全局梯度均匀分布到所有节点,使得每个节点都可以用相同的全局梯度进行更新。
自己的模型参数。
你可能还是有点晕,不过不用担心,等我整理完这三种并行计算后,我会用一个故事来解释一下。
在张量并行中,MegaScale 实现了基于模型块的通信重叠。
单个设备可以承载多个模型片段,对每个片段独立地执行前向和反向传播,并在此基础上调度通信操作。
all-gather操作在模型片段的前向传递之前触发,而reduce-scatter操作在其后向传递之后开始。
对于第一个全收集和最后一个减少分散操作无法隐藏的情况,MegaScale 使用优化方法来尽可能减少这种开销。
在流水线并行性方面,MegaScale采用了交错的1F1B调度方式。
在预热阶段,前向传播仅依赖于之前的接收操作,因此可以解耦发送和接收,打破原本可能存在的阻塞关系。
这样就可以在等待计算的同时执行发送操作,实现计算和通信的重叠。
冷却阶段是热身阶段的逆过程,并且可以应用类似的技术。
1F1B 接下来我简单解释一下。
想象一下,老师惩罚你抄课文,但一个人抄太慢了,所以你把书分成很多页,让每个同学抄一部分。
这是数据并行的基本概念。
如果你发现书中的某一页太大,一个人无法复印,你可以选择将大纸水平分割,每个人可以复印一部分,然后将其拼接在一起。
这就是张量并行。
然后老师看你抄课文这么快,就惩罚你不仅要抄课文,还要画插图,而且工作的不同环节必须有条不紊地衔接起来。
为此,你组织了一个流水线作业,每个人负责一个流程。

例如,一个人绘图,另一个人描图,第三人上色。
这就构成了平行装配线。
至于3D并行,是你对这次文本复制工作的统筹规划,让系统能够有效平衡计算资源的利用率和通信成本,解决单GPU无法承载超大规模模型的问题,从而在保证训练效率的同时,保证模型训练的可扩展性大大提高。
先说一下MegaScale的诊断工具,它记录了每台机器排名运行过程中关键代码段的执行时间。
与之前的工具(例如 Torch 分析器或 Megatron-LM 计时器)不同,该诊断工具基于 GPU 中的 CUDA 事件方法来计时事件。
这种方法最大限度地减少了 CUDA 同步的需要,防止性能下降并允许它始终在生产训练作业中运行。
该工具提供两种可视化模式,可以从不同角度分析收集到的数据。
颜色的深浅代表代码段在不同计算节点(rank)上的运行时间。
该工具记录在统一时间线上收集的事件流。
当选择特定事件时,会显示相关的依赖关系,尤其是在 3D 并行训练场景中。
,可以直观地显示GPU Worker之间的逻辑拓扑结构、数据流向以及相关通信操作。
如果出现错误,可以直接查看所选GPU Worker的错误信息,协助快速定位训练异常。
当GPU Worker无法执行NCCL通信操作并导致整个集群陷入阻塞状态时,该工具允许每个GPU在通信超时时记录自己的当前事件,从而构建基于3D并行的数据依赖关系设置逻辑拓扑。
可视化表示快速定位问题节点。
使用CUDA事件监视器记录各个计算节点上关键代码段的执行时间,比较分析不同机器之间的性能差异。
该工具采用CUDA事件方法进行精确测量,避免了CUDA过度同步带来的性能损失,可直接应用于生产环境的训练任务。
热图等可视化模式清楚地显示了设备之间耗时计算阶段的差异,有助于识别拖慢训练速度的“落后者”。
是的,即使它们是相同的 GPU,它们在不同算法中的表现也不同。
就像有的人同样接受了九年义务教育,考上了清华北大,但我只记得自己是如何被老师罚抄课文的。
尤其是在超过10000个GPU并行运行的情况下,可以通过诊断工具快速发现问题,从而提高整体并行计算效率。
而且团队考虑得非常周到,甚至“捏”开关。
研究团队专门设计了网络拓扑并安排了网络流量,以减少 ECMP 哈希冲突。
首先,在交换机 (ToR) 级别的顶部,一个 G 下游端口被拆分为两个 G 下游端口,并使用特定的 AOC 电缆。
由于每个上行链路的带宽是下行链路的两倍,因此减少了冲突的可能性。
其次,服务器上的八个 G NIC 多线连接到八个不同的交换机。
通过同一组 ToR 交换机连接的 GPU 服务器数量可以达到 64 个。
我们策略性地将训练任务中的数据密集型节点安排在同一台顶级交换机 (ToR) 下运行。
这种方法显着减少了通信所需的交换机跳数,并进一步降低了 ECMP 哈希冲突的概率。
MegaScale给我们带来什么启示?从设计逻辑上来说,MegaScale确实非常具有创新性。
同时他们还验证了在8个GPU的情况下,该框架的运行效率远远超过了Megatron-LM。
但问题是,我们熟悉的大型语言模型,例如ChatGPT4,必须至少有0个NVIDIA A,而GPT5估计使用0 H左右的计算能力。
MegaScale想要获得市场认可,团队需要将其带出实验室,体验实际环境的压力。
Megatron-LM在2018年3月4日还在更新中。
另外,无论是Megatron-LM还是DeepMind的Mesh-TensorFlow,它们都是开源工具,而且在我写这篇手稿时Megatron-LM甚至已经更新了(2018年3月) )。
4),仍在更新,内容是在ChatGPT模型中添加--rotary-base参数(该参数通常用于指定基准旋转角度,可以指定相对于特定基准角度进行旋转操作,而不是相对于默认的底角,通过该参数,可以指定旋转操作是相对于特定的底角进行的,而不是相对于默认的底角)。
MegaScale目前仅处于实验室闭源阶段,没有开源。
当然,由于MegaScale本身是大学和企业共同开发的,这种涉及商业合作的项目往往需要知识产权保护,所以不会开源。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-18
06-18
06-17
06-18
06-18
06-17
06-17
最新文章
首先告诉我什么是智能汽车!
盲盒明星卡的暴利与泡沫:2元卡卖700万,直播卖卡月入百万
黑色星期五轰轰烈烈地回来了,结果这些中国企业扛起了全场
锂电池隔膜疯狂扩产:兴源材料欲夺回C位?
当我考上缅语专业时:凌晨三点我还在走廊里背单词,毕业后,我不仅仅是一名翻译者
被遗弃,被收获?老年人上网到底有多难?
海外日报 -今年,我国自主研发游戏海外实际销售收入实现两位数增长;三星电子正式成立机器人业务团队36氪海外·15分钟前
腾讯音乐:爱、相信、坚持