首页 A1训练模型 大模型高效训练部署技术再创新高!

大模型高效训练部署技术再创新高!

标题:大模型的高效训练和部署技术卷出新高度!

简介随着Chat-GPT的流行,大型模型已经成为不可阻挡的趋势。本文从行业软件Colossal-AI入手,介绍如何提高大规模AI训练、微调和部署的效率。

今天的介绍主要围绕以下五点进行:

1. 大模型训练的挑战

2. N维并行系统

3.高效的内存管理系统

4、突出的性能及应用案例

5. 质量保证

分享嘉宾Dr.尤阳新加坡国立大学校长、青年教授、绿辰科技创始人兼董事长

编辑|王继东

内容校对李耀

制作社区DataFun

01

训练大型模型的挑战

1. 大模型开发现状及问题

上图展示了大模型的开发流程,其中纵坐标是AI模型的参数量。过去几年,大型人工智能模型的参数数量迅速增长,大约每18 个月增加40 倍。例如,2016年,世界上最好的大型模型ResNet-50约有2000万个参数;到2020年,GPT-3模型拥有1750亿个参数;截至今日,根据OpenAI披露的信息,MOE混合专家这套系统架构的大模型参数数量约为1.7万亿个; 2021年初,谷歌的Switch Transformer模型采用了同样的混合专家系统架构,参数数量达到了1.6万亿个。

最近,OpenAI正在训练的GPT-5模型预计将达到100万亿个参数。此外,Inception等初创公司甚至认为未来模型的参数数量将超过GPT-5模型100倍。

随着模型规模呈指数级增长,未来可能需要数千甚至数万个GPU。因此,其背后的软件基础设施至关重要,无论是AI框架还是分布式系统,都会起到关键作用。

未来AI训练的核心在于可扩展性和效率。所谓可扩展性是指从1个GPU扩展到10个、100个、1000个、10000个甚至更多GPU,以及在保证可扩展性的同时,可扩展性是否能够始终保持在80%到90%的效率。这就是所谓的可扩展性和效率。

2. 为什么我们相信大型模型?

我们投入了大量的精力来完善基础设施,为未来的大型AI模型做好准备。从源头上看,我们看好大型模型的发展主要有两个原因:一是模型越大,确实能取得更好的性能,其AI智能也越高;第二,大模型中的“大”字其实很难定义(今天100亿个参数就是一个大模型,明天可能1万亿个参数就是一个大模型),但是有一点是肯定的,那就是,未来还将出现小型型号。呈指数级上升。比如我们今天认为Bert已经成为一个小模型,两年后GPT-3也可能成为我们眼中的一个小模型;再过三年,今天的GPT子版本ChatGPT也可能成为一个小型号。

如上图所示,横坐标为时间,纵坐标为模型参数。例如,2015年,中小企业普遍使用LeNet;到2016年,中小企业已经可以使用ResNet-50;到2020年,中小企业甚至可以使用Bert、GPT-2等模型;预计到明年,中小企业将继续使用LLAMA等模型(参数数量约700亿)。如上所述,小模型实际上呈指数级增长。

因此,所有AI模型的训练和微调都需要分布式,因为至少需要数十甚至数百个GPU。最近,Nvidia 的GH 200 通过将CPU 和GPU 连接在一起,使用更高速的网络将它们级联起来。未来GPU训练会更加方便。就像今天的服务器一样,制造商可以购买一套物理服务器或云服务器来训练大型模型。

大型模型的训练往往需要高度的并行性,那么如何提高模型训练的效率呢?

首先,可以关注云计算的价格。如上图所示,横坐标是时间,纵坐标是每美元可以购买的浮点计算次数(T flops)。从图中可以看出,从2015年到2020年,这个数字呈指数级增长了45倍。因此,绝对算力实际上正在变得更便宜,即每美元购买的浮点计算数量正在呈指数级增长。因此,如果算力可以开采,预计到2026年GPT-3的训练成本将从目前的300万美元减少到7万美元左右。

如果进一步优化模型的并行训练效率,设计更好的算法,使收敛速度更快,训练成本可能会降低到2万到3万美元(甚至可能降低到1万美元以下)。

3. 大型模型的挑战

然而,培训成本仍然很高。例如,谷歌的PaLM模型根据云价格计算成本为900万美元。另一方面,如果一家公司想要从头开始训练一个大型模型,至少需要投入五十、六十人,这带来了高昂的人力成本,也增加了模型实施的难度。

对于大多数业务型企业来说,企业本身希望快速实现大模型的训练、部署和微调。这些对于大型模型的实现来说是非常关键的因素。上述现状将对此类企业大型模型作品的发展产生负面影响。变得非常困难。

4. 巨大的人工智能

基于以上原因,我们创建了Colossal-AI这个工具,希望能够帮助更多的企业实现大型模型的快速训练、微调和部署。

Colossal-AI由三部分组成:

高效内存管理系统N维分布式系统低延迟推理系统利用以上三部分三位一体实现大型模型的高效训练。无论用户使用何种编程接口或框架,通过Colossal-AI的核心都可以在CPU、GPU、NPU上获得最佳性能。

上图回顾了Colossal-AI开源社区的发展历程。横轴是时间,纵轴是Github star数。可以看到,Colossal-AI目前的增速已经远远超过同期的Spark、ClickHouse、MongoDB、Kafka。等待。

这背后的原因,除了Colossal-AI自身优秀的开源设计之外,还在于这波AI的规模预计会比之前的大数据浪潮更大。未来,人工智能的价值可能贯穿企业的整个生命周期。因此,未来的机会非常大,降低模型的训练难度和训练成本非常重要。

上图是Colossal-AI的用户分布图。可以看到,目前在中国、美国、欧洲、印度、东南亚等地都有不少用户。

同时,我们很荣幸Colossal-AI被收录在很多国际顶级AI会议的官方教程中,比如今年的Neural NIPS(以前叫NIPS,目前是AI的第一场技术峰会。每年,来自OpenAI、Google等顶尖技术人员,包括图灵奖获得者等将在大会上发表演讲),Colossal-AI很荣幸成为本次大会的官方教程。此外,Colossal-AI已被纳入AAAI、CVPR等顶级AI会议的官方教程。

目前,MLPerf是公认的衡量AI芯片的指标。它是由Nvidia、Intel、Google、阿里巴巴等公司联合推出的基准测试,现在称为mlcomments。现在MLPerf 的官方Github 也依赖于Colossal-AI,因此Colossal-AI 也很荣幸成为MLPerf 标准的一部分。

此外,Colossal-AI目前在全球AI生态中处于非常理想的位置。例如,全球最大的AI生态系统PyTorch的官方生态,直接依赖于Colossal-AI的分布;此外,全球第二大AI生态Hugging Face的很多应用也基于Colossal-AI。目前,开源AI大模型由Facebook主导。 LLAMA 和PyTorch 都是由Facebook 开发的。目前,Facebook的官方大模型OPT已经链接到了Colossal-AI。

02

N维并行系统

未来,大型模型的训练将涉及到处理成百上千个GPU集群的内部关系问题,即如何最大化并行效率。未来的AI超级计算机(例如使用256个GH 200组装而成的超级计算机)将具有高带宽和高通信传输效率,但仍然需要足够的并行性才能充分利用计算能力。

对于其他科技巨头来说,比如华为,使用像NVIDIA的GH 200这样的超级计算机,并行计算使用的主要方法包括数据并行、管道并行和张量并行,而第一个实现该技术的就是NVIDIA。

GPT-3模型是在2020年6月训练的。在随后的GTC峰会上,NVIDIA CEO黄仁勋介绍了他们是如何训练GPT-3的,并在当时提出了3D并行的概念。他们用了3072个GPU(每台服务器8个GPU),每个服务器内部使用Tensor并行进行张量并行,然后64个服务器组成一个组,组内使用管道并行,6组之间使用数据并行,这是8x64x6=3072.

这样的配置主要考虑的是张量并行的通信成本太高。因此,在服务器内部采用进线并行方式,通信成本相对较低。服务器之间,为了扩展到更大规模,引入了数据并行。未来GH200组成的超级计算机的网络带宽可能会很高,可以直接交换芯片,从而可以直接使用张量并行(虽然通信成本很高,但如果网络传输很好,可以很好的解决这个问题)。

回到今天,对于张量并行,首先实现了NVIDIA的microtrain,但是并没有将张量并行优化到极致。

张量的本质是矩阵,矩阵切片非常灵活且易于实现。然而,理论上,每台机器都需要与所有其他机器打交道,这涉及到全局同步。我们的想法是,是否可以用更多的本地同步来替代全局同步,从而实现指数级的速度增长。因此,我们提到了2维张量并行、3维张量并行,甚至2.5维张量并行,其本质就是上面的思想。

第二点,回顾大型模型的变化趋势,我们会发现2016年的Resnet 50模型有2000万个参数,包含50层;到2020年,GPT-3模型拥有近2000亿个参数,包含不到100层;今天的GPT-4 模型只有120 层。模型的参数规模越来越大,但是层数没有明显变化,说明模型的层数变宽了。在这样的趋势下,未来对张量并行性的要求会更高,所以未来张量并行性还有很大的优化空间。对于管道并行来说,优点是通信成本很低,但总是存在气泡开销,这会限制并行的效率。其管道并行性只能在一定规模内使用,无法无限扩展。

第三,我们需要新的并行序列并行性。以大型对话模型为例,如ChatGPT,其序列Lens(隐形眼镜)为8000(Bert为128512)。 GPT的核心原理是利用上下文信息来预测下一个单词。因此,隐形眼镜越长(即续集越少),预测的下一个单词就越准确。有些初创公司甚至想将隐形眼镜的数量增加到100万个,但这会带来巨大的内存开销压力(这部分的优化将在后面介绍)。

国内一些通用大型模型公司着力将AI基础设施从1000卡拓展到1000卡。但随着GPU数量的增加,系统稳定性会下降。即使是像OpenAI、微软这样的公司,他们的Wanka集群的利用率也只有30%左右。如果稳定性问题解决了,下一步就是可扩展性问题。

从100张卡扩展到1000张卡带来了很大的困难,其效率可能会直接从70%下降到30%左右。从1大卡到10000大卡,如果没有足够的并行计算效率,它的训练可能会变慢。

这就引出了另一个问题:人工智能训练的基础设施要发展到万卡训练的规模,还需要哪些方面的欠缺?首先,管道并行只能在本地使用,因此无法扩展到万卡;如果加上张量并行和序列并行,未来数据并行还需要进一步优化。

数据并行的好处是,如果base size增加10倍,并且epoch数尽可能固定,那么计算量也将是恒定的。如果epoch数可以固定,batch size增加10倍,那么循环次数就会减少10倍;如果同时实现数据并行,通信是梯度求和平均,那么单次通信量将减少10倍;因此,数据并行性也会在万卡的训练中发挥更大的作用。如果批量规模扩大10倍,从1000张卡扩大到10000张卡,在保证精度的情况下,通信量会减少10倍,因此效率会更高。

2017年有一篇论文《training ImageNet in one hour》,用了一个小时来训练ImageNet。这篇论文可以算是整个分布式AI训练的开山之作。现在我们可能认为他的技术非常简单,但却是第一个使用Baika训练深度神经网络的高效案例。

当时只采用数据并行,设备也只有以太网。 Infinity band甚至没有使用,但其扩展性却超过了90%,可见数据并行的通信效率还是很高的。因此,这种数据并行性对于未来的Wanka 训练也将非常关键。此外,我们还需要少量的管道并行、更高效的张量并行和序列并行、以及更大的数据并行。

对于上面提到的数据并行,只要保持epoch数不变,batch size增加10倍,循环数就会减少10倍,而且通信的是梯度求和平均,所以还是很稳健的。如果用1000台机器进行训练,即使5-10台机器宕机,也不会影响数据对储备结果的一致性,因为只要样本分布在统计上接近正态分布或其他理想分布,那么使用1000个T5的加权平均和995个T5的加权平均的结果不会有太大差异。

事实上,DIP LSM业务本身也存在一些问题。当batch side开得太大时,循环次数增加得更多(比如by side增加1000倍,循环次数增加2000倍)。这需要在1/1000的循环范围内找到局部最优解,因此变得更具挑战性。因为这种情况下很容易陷入急剧极小值,导致精度严重下降,得不偿失。因此数据并行性的挑战是设计更好的优化方法。

Loss和lamb在Colossal-AI中也得到了很好的实现:首先,在保持图标的同时,以VIP为例,batch size从128扩大到32K,计算时间从733小时减少到40分钟,所以可以看出,它的扩展性也是线性的。

我们的一些方法之前已经帮助腾讯、索尼、谷歌、富士通等公司去除音频并将训练时间从一小时减少到一分钟,并帮助谷歌将批量训练时间从3天减少到76分钟。数据并行未来可能会在万卡训练中发挥更大的作用。

下面介绍管道并行和张量并行。

威震天的一维方法很简单,但是它的通信成本很高,因为它的本质是全局同步,如果每一层都做的话计算量非常可怕;这与数据并行不同,数据并行是在计算一层之后完成的。直接同步通讯。

而张量并行则在计算完这一层后才继续进行下一层,因此不存在重叠的机会,使得每一层一起使用或减少的成本过高。

因此,如上所述,更多地使用本地同步,而不是全局同步。

以2D方法为例,将每台机器视为一个网格,每次训练首先处理同一列中的机器,这样只需要处理p台机器。同理,3D方法就是将其分为三个维度,每次只处理相同维度的机器。

从上图可以看出,2D方法的效率相当高,而且尺度越大,效果越好。

从上图可以看出,参数内存的成本几乎是一样的。在通信层面,带宽延迟开销,可以看出维度的增加确实提高了通信效率。

未来的长序列也将非常具有挑战性。训练大型模型的内存开销已经非常高了。如果训练一个约2000亿个参数的AI模型(如GPT-3),假设使用LP32,则需要200乘以10的9次方;如果每个参数都是LP32,即4个字节,那么参数首先会消耗1000G的内存(梯度优化器也是如此)。因此模型开始训练前需要T内存,而GPU一般只有100G内存。这个问题的严重性在于,如果使用更长的序列,则必须在序列中的每两个标记之间计算注意力分数,这将产生大量的中间内存需求。因此,序列越长,内存开销就越大。当达到某个临界值时,会呈指数级增长。

因此,直观上来说,需要将序列分成几个不同的部分,并将每个部分分配给不同GPU上的不同服务器,以控制其内存开销的上限。然而,当不同的token存储在不同的GPU中时,每个token都需要与其他token计算注意力分数,这会带来p2通信操作,造成非常高的通信成本。基于此,我们提出了Ring Self-Attention方法。

这个方法是基于百度的ring或者reduce。其核心思想是:比如有50个人,每个人都拿着一大袋零食。现在每个人都需要品尝其他人的零食,这将需要2500 次重传。但如果大家手拉手围成一圈,每次从左手边拿一包零食,然后递给右手边的人,那么就只需要一次自操作了。

Ring Self-Attention,每次从左边的邻居那里获取一个key,传递给右边的邻居,然后计算一个张力分数,如此循环往复,这样只需要一次batch check就可以计算出所有的信息并重新手术。

上图展示了一些非常直观的对比。可以看到,吞吐量比之前的方法快了约50%,并且在同一设备上可以同时训练的序列长度比之前长了5%。

03

高效的内存管理系统

目前的AI架构主要是基于GPU服务器进行训练。每个GPU的显存非常有限,因为显存只有100G左右,训练一个千亿参数的模型至少需要T个显存。 CPU上还有大量的内存。 GPU放不下就放CPU,放不下就放NVMe。

然而,这带来的问题是会严重降低效率,因为GPU内部的计算比GPU与CPU之间、CPU与NVMe之间的传输要快得多。因此,使用这种多级内存需要最大限度地减少GPU 和CPU 之间以及CPU 和NVMe 之间的数据移动。

我们的计划是将参数分成块,每次选择有用的块,将暂时不用的块存储在CPU上。这样,参数被动态存储,以最大限度地提高效率。使用这种方法,只要有一块内存,就会用最常用的参数或梯度来填充。

04

卓越的性能和应用案例

与PyTorch相比,Colossal-AI可以训练20倍大的模型,并在相同设备条件下实现3倍加速。从下图对比可以看出,在相同的设备条件下,可训练的参数数量呈指数级增长。

从吞吐量图可以看出,Colossal-AI 的吞吐量也高于DeepSpeed。例如,您可以在稳定扩散上获得大约6 倍的加速。同样,如果你在推理上运行Colossal-AI,你可以获得大约40% 的加速。加速后,内存大大减少,但对图像质量没有影响。

从上图可以看出,Stable Diffusion的渲染效果相当理想。首先,与PyTorch DDP相比,Colossal-AI在推理方面可以实现约40%的加速,在训练方面可以实现约7倍的加速。同等设备条件下,可存储10倍大的模型。

近期,Colossal-AI还对LLAMA模型进行了优化,特别是在训练过程中,实现了约2倍的加速。

以上是Colossal-AI训练平台的介绍,可以实现一站式AI模型训练、微调和部署。如果您有兴趣,欢迎下载并查看Colossal-AI的开源代码。也欢迎您关注公众号并加入微信群。

05

质量保证

Q1:在大模型场景下,不同模型的结构差异较大。以Transformer结构为例,它包括组合的编码器-解码器架构,以及纯编码器或纯解码器架构。所以在训练优化和推理优化的过程中,每个模型可能都需要具体的优化;如何对待开销?

A1:关于开销,我们经常听到抱怨模型太多。我们的每一个优化都只能应用于某个模型,然后我们就可以做混淆之类的事情。这种情况其实是在向好的方向发展,因为最近已经逐渐收敛到了LLAMA、GPT、Falcon 等几个常见的模型,而且上述模型之间的相似度很高。比如未来GPT-4就相当于GPT加MOE;并且添加MOE后,不会对操作者的下部产生影响。正是因为未来大模型的试错成本越来越高,所以会导致未来收敛成几个常见的大模型,这是一个优势。回到这个问题,这种问题如何普遍解决,其实我个人觉得没有什么好的办法。我只能尽量满足通用的要求,并在此基础上进行优化。而更严重的问题是,现在国产芯片的实力已经很大了。如果我们以后考虑布局一些新的东西,在这样的条件下,我们可能需要更多的优化。我觉得短期内如果有新的芯片或者新的型号,让它直接跑起来还是有挑战性的,所以可能真的需要一些优化。

Q2:与应用层相比,模型框架层优化过程中遇到的最大困难是什么?

A2:近期全球算力紧张。由于计算能力有限,我们只能通过与企业合作帮助他们训练模型来验证框架的稳定性。这不利于这个框架的发展。因此,计算资源对于模型框架的开发非常关键。

Q3:与Deep Speed Metro LM 相比,Colossal-AI 最大的技术优势是什么?

A3:每个团队的技术背景都不同。比如Deep Speed主要致力于分片零内存优化,而Megtron则是NVIDIA在芯片后台条件下进行的整体优化。陆辰科技以前是做高性能计算的,所以它认为AI模型的分布式训练本质上是数据移动的优化。因此,核心思想在于通信的优化,从而为数百或数千个GPU实现良好的可扩展性。由于不同的团队有不同的基本背景,所以对同一问题会有不同的看法。

以上就是本次分享的内容,谢谢大家。

热门文章