大模型背后,是百度的十年苦功

ea9b679adcb345dedfff971c74ef7efa.gif

当下圈里最火的话题莫过大模型

而国内最拉风的大模型莫过文心一言

反正上千号我司工程师为肝出这个大模型

已经熬出了黑眼圈3a76cf4b4146b0196c9f2f10da6456b3.png

d2b93376c276220517bd5578c78664e9.gif

像「文心一言」这种超级大模型

训练过程太虐人,搁谁都得“吐血”

恐怕,工程师们已在厕所哭晕过好几轮

da2f467a112b6b189222166b1b7253be.png

今天,我们就从技术层面来讲讲

训练一个「文心一言」大模型

到底有多难?到底有多虐人?到底有多吐血?

c888a5efc10384bb36f559d5cd383162.gif

首先

欲炼大模型→必先搞大集群

大集群,指的是超大规模的GPU算力集群

唯有大集群才能 Hold 住大模型

通常千亿参数规模才好意思叫大模型

比如,GPT-3,有1750亿参数

而文心大模型(ERNIE 3.0 Titan)

参数则高达2600亿


86001264bcaccf89f31da4eaa1d40fcf.gif

因为,只有训练参数达到一定巨量级

就像达到某个神秘的临界点

大模型才会突然“开窍”

7dc99101928cf6241466fad116dd27b1.gif

对于这种千亿甚至万亿参数规模的训练

如果按传统老路子配置算力

搞几台GPU服务器,组个算力池

那简直是天方夜谭之一千零一夜

(一千零一夜也训不完)


举个例子说吧

如果选用NVIDIA主打的GPU A100来战

对GPT-3的1750亿参数进行训练

理论上,单卡需要耗费 32 年的时间

28e0c78ae7721816b3e03394e19009cc.gif

还没来得及出门

就直接惨败在「叹息之墙」下

计算墙丨显存墙丨通信墙

4a3fe37ee8c2aad15341866aa37708bc.png

▌计算墙,指的是单卡算力和模型总算力之间的巨大差异。A100 的单卡算力只有 312 TFLOPS,而 GPT-3 则需要 314 ZFLOPs 的总算力,两者相差了 9 个数量级。

▌显存墙,指的是单卡无法完整存储一个大模型的参数。GPT-3 的 1750 亿参数本身就需要 700 GB 的显存空间(每个参数按照 4 个字节计算),而 NVIDIA A100 GPU 只有 80 GB 显存。

▌通信墙,主要是分布式训练下集群各计算单元需要频繁参数同步,通信性能将影响整体计算速度。如果通信墙如果处理得不好,很可能导致集群规模越大,训练效率反而会降低。


所以,为把「文心一言」训练出来

百度也是拼了

建成了国内云计算市场规模最大的

高性能GPU集群

407197ec3e807c54728d66858690cae7.gif

这个巨无霸集群战斗力爆棚

给大家掰开来看看

ed72a78902a0e53e83fc72c05ab8264d.png4f2393865be1c21b6452aee4d0dd7cb2.png900fc91c7d7566f31a0c4d8fb5f162f4.png

集群中的算力节点,是一台台AI服务器

这些AI服务器,名叫:X-MAN

是百度智能云定制的超级AI计算机

目前已经进化到第4代

2483d00e14137527831daa9bd0ab3834.png

我们先把单节点的性能卷到了极限

在一个小小的机箱内,塞下8块GPU

提供单机内部134GB/s的Allreduce带宽

所以,每个节点都是

一个算力十足的“小钢炮”

59d0791964b8cb96dfac278a82c5d2d6.png

好了,搞完单点,就组战队(集群)

想激发出整个集群的战斗力

并不是简单堆堆设备而已

强调的是精妙的架构设计,好比排兵布阵

百度智能云在【集群网络设计】上

完全从大模型训练的实际需求出发

(比如,在训练中,同号卡 Allreduce 操作霸占网络流量最大,如何实现高吞吐和低延时?)

百度采用三层CLOS架构,IB组网

把整个集群的性能瞬间拉满

c6eac63dd1cc337534c91e2e094db84c.png

所以

百度卷出了全国最大的IB组网GPU集群

支持1.6万个GPU卡,2000+AI服务器

能提供单集群 EFLOPS 级别的算力

c9af93e6de604431e0c218401eea6774.png

当然,这种“巨无霸”集群

也不是一夜之间建成的

2021年,百度智能云开始着手建设全新一代高性能 GPU 集群

2022年,集群建成,可容纳万卡以上规模,提供单集群 EFLOPS 级别算力

2023年,集群发力,扛起了文心一言的快速面世

集群继续扩张ing...

1e407fc150d825f6a1f91ec18ae393fc.png

到了这一步,大集群算是 Ready 了

可你以为把大模型放在集群上

就能愉快地要跑起来?

工程师就能松口气?

14f89387163fc75ab7440575c55bc16e.png

训练大模型的过程

是一个全栈协同、软硬兼施的过程

任意一环掉链子,就训练不出来

f395f21b98e3125d986f919c666af561.png

因此,很多人想知道

文心一言到底如何训练出来的?

训练大模型→得靠AI大底座

百度「AI 大底座」

是百度全栈自研的AI基础设施

从云智一体架构全局看

从下到上三层

芯片层、框架层、模型层

将这三层技术栈的能力

融合进两大工程平台:百度百舸和AI中台

就形成了百度AI大底座

8f409653f6fe65d8afec717de8421a6f.png

那这底座,具体怎么用?

我们进一步来看

大模型的训练过程

第❶步,把大模型拆了,并制定策略

大模型的训练一定是分布式训练

把一个任务,分解成无数的小任务

再把这些小任务

放到集群中不同GPU或XPU上进行训练

396c016fe34cd4fd4e022da844277f9b.png

任务分配的时候

需要制定一个“并行策略”,好比刀法

在这个环节中,百度飞桨就是策略制定者

百度飞桨作为业界三大顶流 AI 框架之一

制定的"4D混合并行策略",独步天下

可支持千亿级大模型的训练在月级别完成

7c424953392e000f90d91c61e891f6af.png

好了,现在任务被切得“稀碎”了

等待着投放到计算集群中去训练

可是,辣么大集群

你知道设备之间的链接关系吗?

知道哪台运行正常、哪台出现故障吗?

第❷步,感知集群拓扑,盘点算力资源

这时候,百度百舸,闪亮登场了

提供性能强劲的AI算力

并有超强的集群拓扑感知能力

b3e3db2ad3d701e532bcbae395f6db1c.png

它能感知到每台服务器的算力

能感知有多少GPU、CPU、XPU,是闲是忙

能感知到每个节点之间的连接方式

服务器↔服务器,GPU↔GPU

c78215c67272852f0658badcd08f387c.png

然后

百度百舸把“总账”

交付给百度飞桨处理

a2dc079298cd7bad05426f1044de6a58.png

接下来,飞桨根据这张图

再出一张“统一逻辑计算视图”

OJBK,准备工作全部Ready

手上有图,动作不慌

e3f91b778b09bdfb7037ff42a3cbd1b3.png

第❸步,飞桨开始自动派活

把之前切分的小任务

分配到不同的 GPU/XPU 上去训练

这一步,是最费时费钱的环节

一边要考虑效率,一边要考虑成本

此时,飞桨会根据前面拿到的两张图

执行一个「最优投放策略」


bf86295a1d321d5e2aef3931bff6ab1e.png

兼顾通信需求,兼顾计算资源(带宽、链路)

兼顾成本,兼顾效率,又快又省钱

第❹步,训练和推理,加速!加速!加速!

文心一言,内测一个多月

就完成了4次大的技术升级

看得圈内人目瞪口呆

cf53b6d58b3949bc1631d336ea60e742.png

这么快迭代,凭什么?

一方面是,硬件集群底子足够强

百度千卡规模集群中

多卡线性加速比高达90%

另一方面是,软件加速能力爆表

在训练和推理最费时的两大步

百度自研了秘密武器:加速工具包

12fa571c2aa49024c1fd6b27570d9dfb.png

在训练过程中,文心一言采用了

各项优化的训练加速技术,包括…

42898d0950d144c4dd6cebcf7655d338.png

这种“加速度”,横向测评也是NO.1!在 2022 年 11 月发布的 MLPerf Trainning v2.1 测试结果中,百度使用飞桨加百度百舸提交的模型训练性能结果,位列同等 GPU 配置下世界第一,端到端训练时间和训练吞吐均超越 NGC PyTorch 框架。


在推理过程中,文心一言采用了

各类推理加速优化的方法

能够优化AI框架产出的模型

加快推理速度,提升资源利用率

039e3a50de9dce74afe3fd38ebf86d99.png


第❺步,在训练无限循环中

资源管理和任务调度,两项任务不断交互

百度飞桨、百度百舸,左右护法

ce78bda5ad5213584780393d22313de1.png

百度百舸

为AI任务提供各类高性能的“算网存”资源

实时感知AI任务对资源的需求状态

为每个AI任务,调度匹配的资源

百度飞桨

根据百舸告知的集群最新变化

自动调整模型切分和AI任务放置策略

cea31f7dac28ef7d24ef71802b0ab5b3.png

至此

就能够保证大规模训练的高效性

极大提升自适应分布式训练性能

14e93b0b099f10e82f44197e648f2a16.png

所以,大模型看着难搞

但只要有合适的工具,似乎也没那么难

(可惜大部分人都没有bf53fe373a768a4a3fc40c20ff93f245.png

文心一言背后最大的工具就是

百度智能云的【AI大底座】

目前,AI大底座全部能力已经对外开放

这个底座具有极强的通用性

轻松拿捏各行各业、各种细分场景

3b5c9d4058601e85fd7ddc78a8c5b618.jpeg

对于广大用户来讲

在成熟的AI底座上搞事情

各种坑瞬间都被填平了

①加速AI研发过程,好工具好平台现成的,软硬件全栈支撑,少踩坑,易上手

②技术的先进性,站在巨人的肩膀上看趋势、搞研发,少走弯路

98ab1bc47b09b49da4acee24f0f7ced7.png

③交付的灵活性:交付方式,各个地域的中心云、边缘云 BEC、本地计算集群 LCC、私有云 ABC Stack 等

53e43edefea338a4fe89a9d79b697bba.png

02aaa7c751a298eff3a4c40bb55ecda4.png

都说AI奇点已到,在这样一个大变局下

你可以尝鲜国内最火的大模型「文心一言」

更可以借助其背后的玄妙能力

百度智能云「AI大底座」

炼出自己的行业“仙丹”

2a682f8337e246d18a6f99ee4b0c93d9.gif

ce2703ca1fcef13d8e46680e1304c9f3.gif

彩蛋:遇事不决问「一言」

训练大模型的秘密已经扒完了

可是,在为这篇推文起标题的事儿

我们却犯了难,不知道选哪个好?

怎么办?还是请教一下「文心一言」吧

2245130f6cffa1cb5e52c6d1256f9ed2.png

41554e479a0ea9145144c2b9031e3d7e.png

最终,文心一言帮我们选定了这个标题

咋样,这思维逻辑,还挺带劲吧?

format,pngformat,pngformat,png

*本文来源公众号:特大号

0424245a0ca390a0156477b2b3b077bf.png

1473cb5246bdb3c7654500cb560cf705.png

d45eba8d75e49694d2ffcabe42611ad6.jpeg

2f89633cd33200696357cfac2ba19d19.jpeg

83bd565fa93e8c1fab8bcfe22a758cfb.jpeg

点击“阅读原文”,立即合作咨询

猜你喜欢

转载自blog.csdn.net/weixin_48493350/article/details/131179787