从Transformer 问世至 2023年 ChatGPT 爆火,人们逐渐意识到随着模型参数规模增加,模型的效果越来越好,且两者之间符合Scalinglaw规律,且当模型的参数规模超过数百亿后,AI大模型的语言理解能力、逻辑推理能力以及问题分析能力迅速提升。同时,随着模型参数规模与性能提升后,AI大模型训练对于网络的需求相比于传统模型也随之产生变化。相关阅读:
为满足大规模训练集群高效的分布式计算,AI大模型训练流程中通常会包含数据并行、流水线并行及张量并行等多种并行计算模式,不同并行模式下均需要多个计算设备间进行集合通信操作。另外,训练过程中通常采用同步模式,需多机多卡间完成集合通信操作后才可进行训练的下一轮迭代或计算。因此,在AI大模型的大规模训练集群中,如何设计高效的集群组网方案,满足低时延、高吞吐的机间通信,从而降低多机多卡间数据同步的通信耗时,提升GPU有效计算时间占比(GPU计算时间/整体训练时间),对于AI分布式训练集群的效率提升至关重要。以下将从规模、带宽、时延、稳定性及网络部署角度分析AI大模型对于网络的需求。AI 应用计算量呈几何级数增长,算法模型向巨量化发展,人工智能模型参数在过去十年增长了十万倍,当前AI超大模型的参数目前已经达到了千亿~万亿的级别。训练这样的模型,毫无疑问需要超高算力。此外,超大模型对于显存的需求页很高。以1T参数模型为例,使用16bit精度存储,首先需要消耗2TB的存储空间。除此之外,在训练过程中,前向计算产生的激活值、反向计算产生的梯度、参数更新需要的优化器状态等中间变量均需要存储,且中间变量在单次迭代中也会不断增加。一个使用Adam优化器的训练过程,峰值会产生7倍于模型参数量的中间变量。如此高的显存消耗,意味着需要几十上百个GPU才能完整存储一个模型的训练过程。可是,仅仅有了大量GPU,仍然无法训练出有效的大模型。合适的并行方式才是提升训练效率的关键。目前超大模型主要有三种并行方式:数据并行、流水线并行、张量并行。在千亿~万亿级别的大模型训练时,以上三种并行都会存在。训练超大模型需要数千GPU组成的集群。表面上看,这和云数据中心当前已经达到数万服务器的互联规模相比,还处于下风。但实际上,几千节点的GPU互联,比数万服务器的互联更具有挑战,因为网络能力和计算能力需要高度匹配。云数据中心使用CPU计算,网络需求一般在10Gbps~100Gbps,并且使用传统TCP传输层协议。但AI超大模型训练使用GPU训练,算力比CPU高好几个数量级,互联网络需求在100Gbps~400Gbps,此外使用了RDMA协议来减少传输时延,提升网络吞吐。具体来说,数千GPU的高性能组网,在网络规模上有以下问题需要考虑- 大规模RDMA网络遇到的问题,例如链路头阻、PFC死锁风暴
- 网卡连接性能问题,单主机受到硬件性能限制,如何构建数千RDMA的QP连接
- 网络拓扑选择,是传统Fat Tree结构更好,还是可以参考高性能计算的Torus,Dragonfly 等组网
在AI大模型训练场景下,机内与机外的集合通信操作将产生大量的通信数据量。从机内GPU通信角度看,以千亿参数规模的AI模型为例,模型并行产生的AllReduce集合通信数据量将达到百GB级别,因此机内GPU间的通信带宽及方式对于流完成时间十分重要。服务器内GPU应支持高速互联协议,且其进一步避免了GPU通信过程中依靠CPU内存缓存数据的多次拷贝操作。从机间GPU通信角度看,流水线并行、数据并行及张量并行模式需要不同的通信操作,部分集合通信数据将达到百GB级别,且复杂的集合通信模式将在同一时刻产生多对一与一对多的通信。因此机间GPU的高速互联对于网络的单端口带宽、节点间的可用链路数量及网络总带宽提出了高要求。另外,GPU与网卡间通常通过PCIe总线互联,PCIe总线的通信带宽决定网卡单端口带宽能否完全发挥。以PCIe3.0总线(16lane对应单向16GB/秒带宽)为例,当机间通信配备200Gbps的单端口带宽时,机间的网络性能将无法完全被使用。在数据通信传输过程中产生的网络时延由静态时延和动态时延两个部分构成。静态时延包含数据串行时延、设备转发时延和光电传输时延,静态时延由转发芯片的能力和传输的距离决定,当网络拓扑与通信数据量确定时,此部分时延通常为固定值,而真正对网络性能影响比较大的是动态时延。动态时延包含了交换机内部排队时延和丢包重传时延,通常由网络拥塞和丢包引起。以1750亿参数规模的GPT-3模型训练为例,从理论估算模型分析,当动态时延从10us提升至1000us时,GPU有效计算时间占比将降低接近10%,当网络丢包率为千分之一时,GPU 有效计算时间占比将下降13%,当网络丢包率达到1%时,GPU有效计算时间占比将低于5%。如何降低计算通信时延、提升网络吞吐是AI大模型智算中心能够充分释放算力的核心问题。除时延外,网络变化因素引入的时延抖动也对训练效率产生影响。训练过程中计算节点的集合通信过程一般可以拆解成多个节点间并行执行P2P通信,例如N个节点间Ring AllReduce 集合通信包含2*(N-1)次的数据通信子流程,每个子流程中所有节点均完成P2P通信(并行执行)才可结束这个子流程。当网络出现波动时,某两个节点间的P2P的流完成时间(FCT)将明显变长。因网络抖动引入的P2P通信时间变化可理解为木桶效率的最弱一环,将会导致其所属的子流程的完成时间也随之变长。因此,网络抖动导致集合通信的效率变低,从而影响到AI大模型的训练效率。Transformer 诞生以后,开启了大模型快速演进的序章。过去5年时间,模型从61M,增长到540B,翻了近1万倍!集群算力决定了AI模型训练速度的快慢,单块V100训练GTP-3 需要335年,10000张V100的集群,集群系统完美线性扩展需要12天左右时间。网络系统的可用性是作为基础来决定整个集群的计算稳定性。一方面,网络故障域大,集群中一个网络节点的故障可能会影响数十个甚至更多的计算节点的连通性,降低系统算力的完整性;另一方面,网络性能波动影响大,网络作为集群共享资源相较于单个计算节点不容易被隔离,性能波动会导致所有计算资源的利用率都受影响。因此在AI大模型训练任务周期中,维持网络的稳定高效是极其重要的目标,对网络运维带来了新的挑战。在训练任务期间一旦发生故障,可能需要容错替换或者弹性扩缩容的方式来处理故障节点。一旦参与计算的节点位置发生了变化,导致当前的通信模式或许就不是最优的,需要通过作业重新排布和调度,以此来提升整体训练的效率。另外,一些网络故障(例如静默丢包)的发生是不可被预期的,一旦发生不仅会导致集合通信效率降低,同时还会引发通信库超时,造成训练业务长时间卡死,很大程度上影响训练效率。因此需要通过获取细粒度的业务流吞吐、丢包等信息,可避障自愈的耗时控制在秒级别内。智能无损网络的构建往往基于RDMA协议及拥塞控制机制,但与之相伴随的是一系列复杂多样化的配置。其中任一个参数配置错误都可能会影响到业务的性能,还有可能会引出些许不符合预期的问题。据统计,超过90%的高性能网络故障是由配置错误导致的问题,出现这一问题的主要原因是网卡配置参数多,其中参数量取决于架构版本、业务类型和网卡类型。由于AI大模型训练中集群规模大,进一步增大配置的复杂度。因此,高效或自动化部署配置能够有效的提升大模型集群系统的可靠性和效率。自动化部署配置需要能够做到多台并行部署配置的能力,自动选择拥塞控制机制相关参数以及根据网卡类型和业务类型选择相关配置。同样的,在复杂的架构和配置条件下,在业务运行过程中可快速准确地故障定位,能够有效保障整体业务效率。自动化的故障检测一方面可以快速定界问题,精准推送问题至管理人员,另一方面可以减少问题定位成本,快速定位问题根因并给出解决方案。
一个很好的AI平台,融合了多家国内外AIGC平台接口当前国际主流的AIGC大模型有Open AI的:chatgpt4.0、谷歌的Gemini,但国内小伙伴一般很难使用到,国内的主流大厂也都发布了自己的AI大模型,如:百度的:文心一言、阿里的:通义千问、字节的:豆包、腾讯的:混元大模型等等,其中大部分也是免费可以使用的(百度的文心一言3.5版本免费,4.0版本49/月)。如果大家想同时在国内使用chatgpt4.0、Gemini、文心一言4.0等国内外顶级的AIGC大模型(不用费劲FQ),可以使用Hulu AI,一顿饭钱(298元),“永久”使用。转载申明:转载本号文章请注明作者和来源,本号发布文章若存在版权等问题,请留言联系处理,谢谢。温馨提示:
扫描二维码关注公众号,点击阅读原文链接获取“架构师技术全店资料打包汇总(全)”电子书资料详情。