人工智能时代,大模型的发展带来了智能算力需求的大爆发。据估算,自 2012 年以来,AI 模型训练算力需求每 3~4 个月就翻一番,每年训练 AI 模型所需算力增长幅度高达 10 倍。同时,OpenAI 曾在 2020 年提出 Scaling law 定律。该定律指出,大模型的最终性能与计算量、模型参数量及训练数据量的大小密切相关。换言之,若要提升大模型的能力,就需要不断增加模型参数和训练数据量,这就需要部署大规模的训练集群,随着集群规模的不断扩大,训练成本也呈指数级增长。
9月13日,在百度智能云举办的媒体技术沙龙上,百度杰出系统架构师、百度智能云AI计算部负责人王雁鹏表示,2024年大模型市场发展迅速,很多企业加大了在大模型领域的投入,但大家在大模型训练时遇到了一个共性问题,那就是算力利用率很低。目前企业训练大模型的算力有效利用率不足 50%,这意味着,一半以上的算力被浪费了。在算力短缺且昂贵的当下,这无疑是一种巨大的浪费。
那么,究竟该如何提升算力的有效利用率呢?王雁鹏指出,算力有效利用率=能耗有效率✖单卡算力有效率✖并行扩展有效率✖有效训练时间✖资源利用率,其中每一项都是乘积关系,任何一项的表现有细微偏差,都会对整体算力利用率产生系统性影响。然而,目前一个行业共识的难点是,提升任意一项都绝非易事,系统性提升更是难上加难。
王雁鹏表示,针对以上5大核心技术难题、系统性提升GPU算力的有效利用率,百度智能云已经连续3年升级百舸AI异构计算平台。
从百度云的实践经验看,在提升能耗有效率方面,依托百舸打造的智算中心已经能够实现 PUE 值低于 1.1;在提升单卡算力有效率方面,百舸所提供的大模型训推加速套件 AIAK,可在主流开源大模型训练任务中,将 MFU 大幅提升至 70% 以上;在提升并行扩展有效率方面,百舸提供自动并行策略,把策略调优时间缩短至分钟级别;在提升有效训练时间方面,百舸能够提供全面的故障诊断手段以及自动容错能力,在万卡任务中实现大于 99% 的有效训练时长占比;在提升资源利用率方面,百舸支持训推一体技术,能够将算力资源利用率提升到90%。
“尽管今年百舸实现了技术突破,在万卡集群的GPU算力有效利用率上达到了国际领先水平,但面向未来10万卡超大规模的计算,还有很多工作要做。”王雁鹏说。
据悉,在9月25日举办的2024百度云智大会上,针对大模型的训练和推理服务,百舸将再次升级。
如何提升能耗有效率?
降低数据中心能耗,中国电网比美国有优势
最新数据显示,在整个社会用电量中,大约有 1% 至 3% 的电力消耗在计算领域,大模型训练对电力的消耗极为巨大。因此,如何实现电力的有效利用,让电力用在任务上而不是用在散热上,已然成为当前行业所面临的一项巨大挑战。
数据中心能源效率的指标通常用 PUE(Power Usage Effectiveness)来衡量,PUE 值越低意味着数据中心的能源效率就越高,即更多的能源被用于实际的计算任务(IT 设备),而较少的能源被浪费在辅助设施上。因此,降低 PUE 对于提高算力的有效利用率至关重要。
王雁鹏表示,从百舸的实践来看,为了降低 PUE,通常的做法是优化数据中心的制冷系统、提高设备的能效。百度云自建数据中心的平均 PUE 小于 1.1,目前业界平均水平为大于 1.2,这主要归功于百度云领先的数据中心制冷方案。百度云在自建的数据中心里采用自研的液冷方案。相较于传统的风冷方案,该液冷方案能够实现机器性能提升 10%,同时使机器故障率降低 60%-70%。
如何提升单卡算力有效率?
使用AI加速套件,提升大模型训练的MFU
GPU 最初是为图形处理而设计的,其具有大量的并行计算单元,擅长处理大规模的并行计算任务。然而,在用于通用计算尤其是人工智能模型训练时,会面临一些限制。
一方面,GPU 的内存架构和数据传输机制会导致瓶颈。虽然 GPU 拥有高速的显存,但在处理大规模数据时,数据在显存和系统内存之间的传输可能会成为性能瓶颈,影响算力的充分发挥。
另一方面,GPU 的指令集和编程模型也可能限制其算力的发挥。GPU 的指令集通常是针对图形处理优化的,对于一些复杂的通用计算任务,可能需要进行大量的指令转换和优化才能高效执行。
我们通常使用 MFU(Model FLOPS Utilization)这个参数来去衡量 GPU 的有效利用率。MFU 越高,算力利用率越高。业内通常提升 MFU 的做法主要包括:进行算法优化、使用 AI 加速套件等方式。
如何提升 MFU 呢?王雁鹏表示,针对 GPU 有效利用率低这一问题,百舸选择的路径是:自主研发出了大模型训推加速套件 AIAK。该套件针对主流开源大模型,在显存、算子等层面进行了深度优化,相比于英伟达自研的算子加速库,实现了10%的性能提升。同时,在主流开源大模型训练任务中,能够将 MFU 大幅提升至 70% 以上,达到了行业领先水平。
如何提升并行扩展有效率?
使用自动并行策略,降低策略调优时间
为了提高训练效率、缩短训练时间以及处理大规模数据和模型,大模型训练通常采用并行训练方式。并行训练是指利用多个计算资源同时进行模型训练的过程,以往的并行训练需要手动进行复杂的并行编程和任务分配,这种方式效率低、上手难度高。
王雁鹏表示,自动并行策略的出现为解决这些难题带来了重大突破。
自动并行策略通过自动分析计算任务和计算资源,实现了任务在多个计算单元上的合理分配并行执行,这一方式具有多方面的显著优势。首先,它能够充分利用计算资源,避免了资源的闲置和浪费。无论是 CPU、GPU 还是分布式计算节点,都能被高效地调动起来,共同为复杂的计算任务服务。其次,它大大降低了开发难度,开发者无需再进行繁琐的手动并行编程和任务分配,只需专注于计算任务的逻辑实现,极大地提高了开发效率。最后,自动并行策略显著提高了计算效率,通过合理的任务分配和资源利用,能够大幅缩短计算时间,为各种应用场景的快速迭代和优化提供了有力支持。
以百度云为例,百舸平台提供的大模型训推加速套件AIAK在并行策略方面进行了深度优化,与开源方案相比,实现了30%的性能提升。同时,使模型并行策略调优时间大幅降低,从原先的小时级缩短至分钟级。这种高效的调优能力使得开发者能够更加快速地进行模型训练和优化,极大地提高了工作效率。
如何提升有效训练时间?
提升AI基础设施稳定性,减少故障恢复时间
Meta 在近期的一份研究报告中揭示了训练 Llama3-405B 参数模型的重大挑战:该系统在包含 16384 个英伟达 H100 GPU 的集群上运行,在训练期间平均每三个小时就发生一次故障, 54 天内经历了 419 次意外故障。大规模计算任务的复杂性使得故障几乎成为必然。
马斯克近日也分享了一段全新「Cortex」AI 超级集群的视频。它位于特斯拉奥斯汀总部,建成后将包含 50,000 个英伟达 H100 和 20,000 台特斯拉硬件,是“世界上最强大的 AI 训练集群”。但有了 Meta 的前车之鉴,业内普遍认为,按 GPU 规模比例来看,「Cortex」AI 超级集群可能会面临指数级更高的故障率,预计每10-20分钟就会出现一次故障,这给其未来的 AI 训练带来了更大的挑战。
看来,大模型时代,企业需要稳定性高的 AI 基础设施已成为行业共识。那么如何提高 AI 基础设施的稳定性呢?我们来看看主流大模型厂商是如何做的。
王雁鹏表示,Meta 开发了多种工具和优化策略,优化措施包括缩短任务启动和检查点时间,并广泛采用 PyTorch 自带的 NCCL 飞行记录器进行故障诊断,以及识别通信缓慢的节点。目前实现了模型训练任务 90%以上的有效训练时间。
再来看百度云。百舸平台针对模型训练的稳定性进行了优化,百舸可以提供全面的故障诊断手段,可以快速自动侦测到导致训练任务异常的节点故障,同时提供自动化的容错能力,重新调度任务到健康节点,继续完成训练,目前已经将故障恢复时间从小时级降低到分钟级。
“经过几年的研发,目前,百舸在万卡任务上实现了大于99%的有效训练时长占比,这是非常不容易的。”王雁鹏说。
如何提升资源利用率?
训推一体,提升资源利用率
在传统的人工智能应用中,模型的训练和推理通常是在不同的集群中进行的。训练阶段需要大量的计算资源和数据,通常在高性能计算集群中进行。而推理阶段则需要将训练好的模型部署到实际应用场景中,对算力的要求显著低于训练阶段。
为了提高算力资源的利用率,针对一些特殊场景,可以将训练和推理过程混合在同一集群中进行,也就是我们所说的训推一体。训推一体技术让集群能同时支持在线推理服务部署和离线训练任务,实现推理和训练之间的算力自由无缝切换。训练和推理场景在不同时间复用相同 GPU 资源,在推理时把高算力高显存的训练卡分给多个业务应用以提高卡利用率和推理效率。
王雁鹏指出,行业平均算力资源利用率达 50%,这是一个比较理想的数据。然而,借助百舸所提供的训推一体技术,能够实现高达 90% 的算力资源利用率。在未来的人工智能应用中,训推一体将成为一种重要的技术趋势。