作者 | 徐豫
编辑 | 漠影
智东西9月13日消息,百度系统架构师、百度智能云AI计算部负责人王雁鹏向媒体解读了大模型时代的算力成本。为了有效降低AI万卡集群的算力开支,他提出搭载RDMA网络、自动并行策略、保证训练稳定性、动态分配算力、多芯异构混训,共五个方面的解决方案。
过去互联网时代,服务器每台数万元,各大厂商光是采购成本就要花费几个亿。高昂的支出促使互联网大厂自研服务器,百度也是其中一员,该公司自2011年起涉足计算基础设施建设。
然而,伴随深度学习的发展,GPU集群来到万卡规模,大模型时代的算力成本已经远高于人力成本。王雁鹏称,当下浪费仅仅1%的算力,也是很大的一笔花销,算力之贵也体现出计算基础设施的重要性。
近期,不少业内人士认为,“兼容CUDA是AI芯片的决胜点”,但王雁鹏并不认可这个观点。他解释道,不少模型兼容CUDA后,只留住了1/3的性能,失去了原有的竞争力。英伟达是基于CUDA构建了一个加速库生态,王雁鹏则认为,其中生态库的壁垒才是真正的难点。
一、当前的模型训练普遍吃掉了超5成算力
来到AI大模型时代,算力的复杂性已从硬件转移到了软件上,这也导致各大AI开发者利用算力的难度指数级上升。据百度系统架构师、百度智能云AI计算部负责人王雁鹏了解,现阶段的模型训练普遍浪费了超5成的算力。
最初的CPU通用计算时代,硬件和软件之间高度协同,假设CPU的性能提升了一倍,那么使用该CPU的软件,其性能也会相应地翻一番。
后续来到GPU数值加速计算时代,芯片架构更简单,以专注于提供最大的算力。开发者们通常利用GPU突出的算力优势,构建一系列复杂的加速库和框架,有针对性地适配不同应用场景。
目前,我们已处于AI大集群超算时代。单一的芯片已经不足以独立解决问题,因此需要大规模的芯片协同解决一个问题,GPU集群规模甚至达到10万卡。
在王雁鹏看来,上述计算范式的变迁决定了计算体系机构的技术发展,而这种结构上的变化,又催生了云计算的技术和产品格局。“云计算可以看作一种售卖AI基础设施的形式”,他说道。
打个比方,现在可能只有一块GPU,但其算力分给了100个人用;或者说一个训练任务被切分到十万张卡里运算,这背后需要充足的存储资源来支撑。
▲有效算力的5大参考指标
如何在大模型时代发挥出AI大集群的有效算力,王彦鹏给出了一个计算模型训练过程中有效算力的公式,即有效算力相当于能耗有效率(PUE)、单卡算力有效率(MFU)、并行扩展有效率、有效训练时间、资源利用这5项数据的乘积。
二、从五大维度释放万卡集群的GPU算力
为了解决大模型时代算力利用率低的难点,王彦鹏从有效算力公式中的五大方面入手,提出了5个有助于释放算力潜能的GPU设计理念。
1、为万卡AI场景设计的RDMA网络适配AI集群
传统的IB网络是为HPC设计的,并不适用于AI集群。这主要是因为两者的设计理念优先级存在冲突,HPC是延迟优先,AI则是吞吐优先。
据王彦鹏透露,百度长期基于RDMA网络构建万卡级别以上的AI集群,以减少内存带宽瓶颈。从数据结果来看,应用RDMA网络后AI集群的带宽有效率从60%提升至95%,模型性能则增强了5%到10%。
2、自动并行策略是AI集群最重要的演进范式
百度的自动并行策略搜索有两个核心策略。
一方面,百度采取了“边计算边通信”的方式,节省数据搬运所花费的时间,减少算力和能源损耗。
另一方面,显存优化的切分策略将运算中断所浪费的时间,控制在几分钟内。
▲百度通过RDMA网络支撑AI万卡集群的训练
得益于此,百度旗下的模型性能不仅能达到开源模型的130%,也比人工调优的模型效果好。
3、保证稳定不间断的任务运行是一个系统工程
王彦鹏多次强调了稳定性在AI训练中起到的重要作用。AI训练的计算任务是同步进行的,如果中途出现故障,万卡的故障定位是一个非常困难且不可控的事情。
同时,考虑到万卡规模的AI集群中断频率较高,通常是牵一发而动全身。王彦鹏提出,“无效训练时间=故障次数*故障恢复时间+写检查点的时间”。因此,一旦某个点位出现故障,其影响可能被扩大了十万倍。
▲可以通过3个公式综合判断AI集群的训练效率
据王彦鹏介绍,百度通过Hang检测、慢节点检测、秒级捕捉检查点、分钟级任务恢复等方式,来定位和修复出现故障的单张芯片。目前,百度文心一言大模型的有效训练时长比例超99%。
4、训练一体提升资源利用率
目前,主流模型训练存在以下4个劣势。
首先在线推理或计算任务当中,系统在峰值负载时的性能是平均负载时的3倍。这意味着系统在设计时预留了较多的算力以应对峰值。但AI集群的波峰和波谷其实较为明显,这也造成非峰值时资源的大量浪费,后续在设计上还可以进一步优化。
其次,大量微调模型存在冷热分布不均的情况。此外,其实有很多计算任务可以通过离线推理实现,但仍占用了一定的算力资源。最后,从单卡计算转向万卡计算时代,训练任务分布广、数量大。
对于上述问题,王雁鹏认为,总的来说是要实现算力流量和资源的动态分配,以便跑通不同规模的层级。百度的百舸异构计算平台(AIHC)运用单机多推理实力混合布局、弹性层级队列、训练任务弹性伸缩机制三种模式后,公司内部和客户的资源利用率都从50%提升到了90%。
5、多芯混训是解决算力卡脖子的关键技术
据王雁鹏介绍,目前市面上的芯片规格、版本、存量和算力水平都参差不齐。他提出,可以用一套兼容的框架将各式各样的芯片组合起来,形成一个强大的算力集群。
有共同的“大脑”后,AI开发者可以通过该集群统一调动所有芯片的算力,从而提高效率、节省开支。
百度在异构并行切分策略下,搭建了跨芯沟通库,并采用了Accelerator抽象设计方法,从而实现千卡性能损失仅3%,以及万卡性能损失仅5%。
不过,王雁鹏也谈道,多芯的异构混训虽然理论上可行,但实际推广起来,还有诸多技术难点亟待解决。
结语:突破3个核心技术,为十万卡集群做准备
目前,美国AI大模型独角兽OpenAI和xAI的模型训练规模已卷到10万卡级别,百度也将加入这场围绕AI集群算力的竞争,算力应用场景则聚焦于大语言模型和自动驾驶技术。
王雁鹏向媒体透露,后续百度将持续在3个核心技术上寻求芯片设计架构的突破。
首先是实现更高效的拓扑和拥塞控制,该公司希望将无阻塞RDMA域扩大10倍。
除此之外,百度计划将跨地域的RDMA网络范围扩大至方圆30km内。
王雁鹏称,现阶段百度的万卡集群平均4个小时会中断1次,如果扩展到10万卡集群,可能20分钟左右就会出现一次中断。现阶段,其模型比较稳定的恢复时间介于10到20分钟之间,未来致力于达到分钟级别。