“生成式AI是一个跨越式的技术,和原来的技术有了非常大的变革,可以说是划时代的技术。它最大的特点就是模型大,过去几年以每年10倍参数量的速度在增长。之前AI应用里,很多训练的任务都是单卡或单机就能完成,但在大模型时代,需要千卡、万卡来完成一个任务。”5月23日,百度杰出系统架构师王雁鹏在深圳举行的文心大模型技术交流会上说道。
在王雁鹏看来,在这样的算力要求下,智算基础设施的设计范式演进已经发生转变。要构建这样万卡规模的大模型基础设施,核心需要关注的有四点:
第一,需要构建智算集群,能够支持万卡级别的高速互联,并且支持各种异构算力,包括CPU(中央处理器)、GPU(图形处理器)等算力的高速互联。
第二,光有硬件能力还很难有好的效果,比如要发挥一张GPU或AI芯片的性能,非常难,所以要把软件栈优化好,这最终会体现在训练和推理的性能加速优化上。
第三是高性价比,构建这样一个系统需要有更合理的技术选择,最贵的东西也不能满足全部需求,做存储分层、计算分层,主要是要达到更高性价比。
在这个基础上,易用性是前所未有的挑战,比如万卡规模的运算需要稳定的运行,弹性的容错,并且能够在易用平台上一站式应用。
据百度智能云副总裁朱勇透露,自3月16日“文心一言”内测以来,通过算法和模型的持续优化,在企业服务中,“文心一言”在高频场景下的推理性能已大幅提升50倍。
如何实现这一结果?在演讲中,王雁鹏从技术角度解释了这一个月的工作,以及新的技术范式演进下的思路转换。
以下为澎湃科技(www.thepaper.cn)整理的演讲实录,有删减:
生成式AI是一个跨越式的技术,和原来的技术有了非常大的变革,可以说是划时代的技术。它最大的特点就是模型大,过去几年以每年10倍参数量的速度在增长。之前AI的应用里,很多训练的任务都是单卡或者单机就能完成,但是在大模型时代,需要千卡、万卡完成一个任务。
光增加模型规模,并不能很好提升模型的效果和性能,还要同比去增长数据量级。所以把模型规模乘以数据量级,基本可以看到,数据量也是以指数级提升的。
这和摩尔定律非常像。之前经常说摩尔定律是需要一年半翻一番,新的人工智能时代大模型的“摩尔定律”也有这样的规律,甚至比原来的摩尔定律还要快,基本上每8-10个月就要翻一番。但和原来的摩尔定律又有本质上的不同,原来的摩尔定律基本是半导体的规律,是工艺和半导体生产的规律。对于大模型,光有芯片能力很难发挥出来,还需要芯片、框架、系统全栈的整体优化。
在这么大的算力需求下,智算基础设施的设计范式演进发生了什么转变?
直观理解,首先是计算规模大。按照GPT-3的规模来计算,如果用一张现在最先进的A100卡,需要跑32年。从模型参数来看,350G的存储空间,再加上运行时有大量的参数存储,可能是几个T(1T=1024G)的数据量。如果了解GPU会知道,单卡是80G显存容量。如果跑几个T的模型,意味着需要上千张卡同时运行,最终折算在成本上,跑一次大模型的训练成本需要几千万,乃至于上亿元人民币。如果往后看,推理成本占比更大。
这个背后映射到几点技术的变革。
一个是分布式架构的演进。现在互联网分布式架构其实是一种比较松耦合(提供了更好的可扩展性和可维护性,同时降低了系统之间的依赖性)的方式。现在的数据中心也会有几万台机器,甚至十几万台机器连在一起,但更多是每一台完成自己的任务,它的通信和容错能力都比较低。但千张卡、万张卡大规模同步运行,有大量的数据交互,所以这需要分布式架构的演进。
第二是计算精度,整体向低精度迁移,混合精度是常态。
再向后看,存储也带来更大的瓶颈,光有计算的提升是不够的,还要有大量的数据在系统里流动。像芯片技术中,数据的搬运消耗远高于数据计算,所以在芯片层面,在整个系统层面,怎样解决存储问题,也是非常大的挑战。
在这个模式下,要构建一个大模型基础设施,我们最关注的有四点:
第一,需要构建智算集群,能够支持万卡级别的高速互联,并且支持各种异构算力,包括CPU、GPU等算力的高速互联。
第二,光有硬件能力还很难有好的效果,比如要发挥一张GPU或AI芯片的性能,非常难,所以要把软件栈优化好,这最终会体现在训练和推理的性能加速优化上。
再接着是高性价比。构建这样一个系统也不能什么东西都用最贵的,最贵的东西也不能满足全部需求,我们需要有更合理的技术选择,做存储分层、计算分层也好,主要是要达到更高性价比。
在这个基础上,易用性是前所未有的挑战,比如用万卡的时候需要稳定的运行,弹性的容错,并且能够在易用平台上一站式应用。
从技术栈上,我重点分享一些核心技术和关键点。
第一,怎么构建万卡规模的网络架构?在这么大规模下,要保证网络的扩展性,以及没有拥塞,是非常困难的事。大模型的通信特点是,有很多集合通信的操作,集合通信可以分解成在同号卡之间的集合通信。也就是说,单机要8张卡,多机并行只需要同号卡之间做集合通信。在此基础上,我们优化了网络架构,在同号卡之间构建高速的通信通道,这样可以保证任何通信都能解决,大大提升整体网络的吞吐,以及消除各种网络拥塞和冲突的可能性。
除了计算侧,存储侧是另外一个重点。我们既需要容量大,也需要速度快,所以设计了多级存储系统,对于大量数据还是存在对象存储BOS(云存储服务)系统里,它可以支持非常大规模的容量。在高速训练的时候,就需要它扮演相当于缓存系统的角色。
再向上看就是加速层,尤其对于AI训练来说,这个流程非常长,包括了IO预处理(对计算机输入输出数据进行预处理,包括检查数据有效性、合法性、完整性和一致性),IO读取(输入/输出、Input/Output的简写),还有各种算子高性能的实现,或算子的融合等技术,还包括通信的优化,显存利用率。要把整个软件栈的一整套东西,集成在训练加速套件里。往后看,推理加速套件是更值得关注的地方。对大模型来说,推理会产生非常大的困难。为什么百度在文心一言发布后的一个月时间里,让推理性能提升50倍,我们相当于做了集中攻关和整套软件的优化。
再往上是框架侧,就是所谓的4D混合并行(在机器学习训练过程中,同时使用模型并行、数据并行、流水线并行和分布式并行等四种并行策略)。对这么大的计算,怎么样拆到各个GPU里,有不同的并行策略,这种并行策略的目的是得到更优的计算效能。光有并行策略还不够,并行策略怎样跟计算的集群硬件去映射,这是更关键的地方。如果只是一个模型,可以不断尝试并行策略,基本上能得到相对好的效果,但如果支持更多的模型,就需要做不一样的尝试,这也很难得到比较优的效果。我们在这块投入很大精力,基本上可以做到全自动的并行,不管是什么样的硬件拓扑和硬件的组合,都能够在分布式层做到自动。
这些基础打好了,接下来容错就是非常关键的点,基本上在万卡规模下,不可能不出错。集合通信的通信模式,天生也是容错性比较差的。我们这块也做了大量工作,现在基本上在通信库层、框架层、调度层可以做到不同层次的容错,得到千亿参数大模型训练可以不中断的效果。
(原标题:大模型的基础设施如何建?首先要搭千卡万卡规模的网络架构)
特别声明:本文转载仅仅是出于传播信息的需要,并不意味着代表本网站观点或证实其内容的真实性;如其他媒体、网站或个人从本网站转载使用,须保留本网站注明的“来源”,并自负版权等法律责任;作者如果不希望被转载或者联系转载稿费等事宜,请与我们接洽。