# 热门搜索 #
搜索
GPU训Llama 3.1疯狂崩溃,竟有大厂用CPU服务器跑千亿参数大模型?
6649点击    2024-08-01 16:19

马斯克19天建成由10万块H100串联的世界最大超算,已全力投入Grok 3的训练中。


与此同时,外媒爆料称,OpenAI和微软联手打造的下一个超算集群,将由10万块GB200组成。


在这场AI争霸赛中,各大科技公司们卯足劲加大对GPU的投资,似乎在暗示着拥有更多、更强大的GPU,就能让自己立于不败之地。


然而,这种对高端GPU的狂热追求,并非在所有情况下,都是完美无缺的解决方案。


Pytorch之父表示,技术报告中暗藏了很多基础设施的有趣细节,包括如何并行化,如何让系统更可靠等等


就拿稳定性来说,在Llama 3.1训练的54天里,Meta的1.6万块H100集群总共遇到了419次意外中断,相当于平均每3小时发生一次。


而在这之中,有148次(30.1%)是由于各种GPU故障引起的。


相比之下,由CPU故障引发的中断,只有2次。



另一方面,想要把Llama 3.1 405B跑起来,还得搭配2台8×H100的DGX工作站才行——即1280GB的显存。


曾经有位勇士尝试用一张4090运行,结果等了30分钟,模型才缓缓吐出一个「The」。


完整的回复,花了整整20个小时


熟悉模型的训练和推理的朋友都知道,这些事情一点都不奇怪。


集群搭建(GPU配置、网络设计、轨道优化等)、集群管理(实时监控、故障排除等)……个个都是「拦路虎」。


对于缺乏相关经验和资金的公司来说,该怎么办?




最近,浪潮信息的研发工程师,仅靠4颗CPU,就让千亿参数的「源2.0」在通用服务器上跑起来了!


面对用Java编写程序的代码任务,「源2.0」非常迅速地给出了结果。



再给它上一道推理题——船边挂着软梯,离海面2米,海水每小时涨半米,几小时海水能淹没软梯?


同样,AI几乎0延迟给出了详细的解题步骤和答案。



用通用服务器运行千亿参数大模型,可谓是前无古人,这一领域的积累完全是空白,没有任何经验可借鉴。


浪潮信息,究竟是怎么做到的?用通用服务器运行千亿参数大模型,可谓是前无古人,这一领域的积累完全是空白,没有任何经验可借鉴。


浪潮信息,究竟是怎么做到的?


用4颗CPU,撬动千亿参数大模型


若要在单台服务器中,实现千亿参数大模型的推理,包含了2个主要阶段,均对计算能力提出了硬性需求。


首先,是预填充阶段,也叫做前向传播阶段。


这一阶段涉及到输入数据的处理、模型参数第一次读取。


比如,当你输入「给我写一篇有关AI的文章」提示,预填充阶段便会将问题中所有token、模型参数,一次性输入计算。


有时,这一输入可能是几个字,也可能是几千个字,或者是一本著作。


第一阶段的计算需求有多大,主要取决于我们输入的长度。


而在计算第一个token过程中,由于模型首次加载,会在内存中存放全部的权重参数,以及KV Cache等数据。


这是模型参数本身所占内存空间的2-3倍。


对于千亿参数模型来说,大量的参数和数据输入,需要在强大计算单元中处理。对此,它需要支持向量化指令集、矩阵计算指令集,来实现大量的矩阵乘法和张量运算。


其次,是解码阶段,即在问题全部输入之后,模型开始输出结果的阶段。


在这个阶段,对大模型唯一要求便是,输出尽可能快。同时,挑战不再是算力挑战,转而为「数据搬运」的挑战。


它包含了两部分「数据搬运」:


  • 预填充阶段生成的大量KV Cache,需要从显存/内存,搬运到计算单元中(工作量非常大)
  • 模型参数本身的搬运


这些搬运对大模型的计算和推理速度,起到了一个决定性的作用。数据搬运很快,LLM吐字的速度也会快。


LLM输出主要通过KV Catch,逐一生成token,并在每步生成后存储新词块的键值向量。


因此,千亿大模型的实时推理,服务器需要具备较高的计算能力,以及较高的存储单元到计算单元的数据搬运效率。


总而言之,在大模型推理的两阶段中,有着截然不同的计算特征,需要在软硬件方面去做协同优化。


GPU不是万能的


传统上,GPU因其具备优越的并行处理能力,一举成为了AI训练和推理的首选。


成本


然而,高端GPU服务器在市场中经常出现供不应求,极难获取的现象。


仅有资金雄厚的科技巨头们,诸如微软、谷歌,才能够承担起这笔费用。


另一方面,不仅买不起,更是用不起。


基于GPU的云服务租用,在推理任务中的代价却是高昂的。对于科研人员和应用厂商来说,需要实现更高的成本效益,就得另谋他路。


显存


此外,GPU最大的劣势之一在于,显存容量受限。


当前业界LLM的网络架构,已从GPT逐渐走向MoE。通向AGI的大模型参数规模,只会呈指数级增长。


这意味着,闭源/开源主流模型的尺寸只会越来越大,千亿参数,甚至万亿参数模型将会成为主流。


对于百亿参数模型,20-30GB显存就够了。然而,若想跑千亿参数,大约需要200-300GB的显存空间。


目前主流的AI芯片,显存通常只有几十GB,显然放不下这么大的模型。(目前最强的AI芯片也没还没达到200GB)



被低估的通用服务器


GPU不行,那就从CPU入手。


虽然目前还搞不定模型的大规模训练,但通用服务器在推理任务上,却意外有着不小的优势。


在具体实践的过程中,浪潮信息的工程师们分别从硬件资源和算法层面入手,攻克了一个个「拦路虎」。


超大内存+高速带宽


算力方面,目前领先的服务器CPU都已经具备了AI加速功能。


类似于GPU的Tensor core,AMX高级矩阵扩展可以将低精度的计算做加速,编成指令集给CPU的核,利用专用的核做加速。


算法方面,浪潮信息的通用服务器可同时支持PyTorch、TensorFlow等主流AI框架,以及DeepSpeed等流行开发工具,满足了用户更成熟、易部署、更便捷的开放生态需求。


通信方面,全链路UPI(Ultra Path Interconnect)总线互连的设计,则实现了CPU之间高效的数据传输:


  1. 允许任意两个CPU之间直接进行数据传输,减少了通信延迟
  2. 提供了高传输速率,高达16GT/s(Giga Transfers per second)


此外,浪潮信息的研发工程师还优化了CPU之间、CPU和内存之间的走线路径和阻抗连续性。


依据三维仿真结果,他们调整了过孔排列方式,将信号串扰降低到-60dB以下,较上一代降低了50%。


并且,通过DOE矩阵式有源仿真,找到了通道所有corner的组合最优解,让算力性能可以得到充分发挥。


内存方面,可以说是通用服务器的最大优势了。


  • 容量


对于4路服务器来说,只需给每颗CPU插上8根32GB内存,就能轻松达到1TB。插满之后甚至可以扩展到16TB,最大可支持万亿参数的模型。


  • 带宽


搭配DDR5的内存,则可以实现4800MHz × 8bit × 8通道 × 4颗 ÷ 1024 = 1200GB/s的理论上带宽。


实测结果显示,读带宽为995GB/s、写带宽为423GB/s,以及读写带宽为437GB/s。


这个数据,对于一些搭载GDDR显存的GPU或加速卡,可以说是毫不逊色。



但仅靠硬件远远不够


仅仅依靠硬件创新,是远远不够的,CPU很难进行大模型算法的大规模并行计算。


正如开篇所述,大模型对通信带宽的要求是非常高的,无论是数据计算、计算单元之间,还是计算单元与内存之间。


如果按照BF16精度计算,想要让千亿大模型的运行时延小于100ms,内存和计算单元之间的通信带宽,就至少要达到2TB/s以上。


不仅如此,对于基于擅长大规模并行计算的加速卡设计的AI大模型,通用服务器的处理器与之并不适配。


原因很明显:后者虽然拥有高通用性和高性能的计算核心,但并没有并行工作的环境。


通常来说,通用服务器会将先将模型的权重传给一个CPU,然后再由它去串联其他CPU,实现权重数据的传输。


然而,由于大模型在运行时需要频繁地在内存和CPU之间搬运算法权重,这样造成的后果就是,CPU与内存之间的带宽利用率不高,通信开销极大。



如何解题?用算法创新


针对以上难题,浪潮信息提出了「张量并行」(Tensor Parallel)和「NF4量化」两项技术创新,成功实现了千亿大模型Yuan2.0-102B的实时推理。


根据性能分析结果,可以清晰地看到模型中不同部分的计算时间分布——


线性层运行时间占比50%,卷积运行时间占比20%,聚合通信时间占比20%,其它计算占比10%。


注意,在整个推理过程中,计算时间占比达到了80%!


跟使用多个PCIe的AI加速卡相比,这就形成了鲜明的对比——后者的通信开销可能高达50%,从而导致严重的算力浪费。


Yuan2.0-102B模型推理性能分析结果图


张量并行


所谓张量并行,就先将卷积算子进行张量切分,然后把大模型中的注意力层和前馈层的矩阵计算权重,分别输入到多个处理器的内存中。


如此一来,通用服务器中的4颗CPU便可同时获取算法权重,进行计算加速。


不过,张量并行对模型参数的切分粒度较细,要求CPU在每次张量计算后都要进行数据同步。


对于这个需求,前文提到的全链路UPI总线互连技术,完全可以满足(通信带宽高达16GT/s)。


最终,这种协同并行工作,直接让计算效率提升了4倍!


NF4量化


至于内存带宽不足的问题,则需要在不影响精度的情况下对模型进行「瘦身,也就是量化。


其优势在于,一方面可以将LLM参数量化成低比特数据,权重会变小。另一方面,权重缩小之后,在计算时传输的数据量也会变小。


这里,浪潮信息采用了一种并不多见的分位数量化方法——NF4(4位NormalFloat)。


NF4量化方法可将Yuan2.0-102B的尺寸压缩到原来的1/4


具体来说,NF4的核心思想是,确保量化区间内输入张量的值数量相等。


这个特点,恰恰非常适合呈现近似正态分布的LLM权重。


由于可以通过调整标准差来适配量化数据类型的范围,NF4相较于传统的4位整数或4位浮点数量化,可以获得更高的精度。


如此一来,量化之后的模型既能满足精度需求,又能大幅降低大规模并行计算的访存数据量,从而达到了实时推理的解码需求。


整数或浮点数量化方法的数据间隔通常是平均分布或指数分布的


为了进一步压缩模型的权重参数,团队还采用了嵌套量化(Double Quant)技术。


这是在NF4量化基础上,进行了二次量化。


因为NF4量化后会产生大量的scale参数,如果使用32位浮点数(FP32)存储,会占用大量内存。


对于一个千亿参数的LLM,若以每64个参数作为一个量化块(block size=64)来计算,仅存储scale参数就需要额外的6GB内存:(100B ÷ 64) × 4 = 6GB。


团队通过将这些scale参数量化到8位浮点数(FP8),显著减少了所需的存储空间。


在采用256为量化块大小(block size=256)的情况下,存储所有scale参数所需的额外空间仅为1.57GB:(100B ÷ 64 ÷ 256) × 4 + (100B ÷ 64) × 1 = 1.57GB.


通过嵌套量化,模型的每个权重参数最终仅占用4字节的内存空间,比原始FP32节省了大量的内存占用空间。


与此同时,它将从内存到CPU的数据搬运效率,提高了4倍。


这样的优化显著减轻了内存带宽对Yuan2.0-102B模型推理解码效率的限制,从而进一步提升了模型的推理性能。


所谓通用,就是让大家都用上


到这里,浪潮信息就成功交卷了!


通过系统优化,浪潮信息的NF8260G7,在业界首次实现了仅基于通用处理器,支持千亿参数大模型的运行。


至此,通用算力可支持的AI大模型,参数规模突破了千亿,彻底填补了行业空白,成为了企业拥有AI的新起点。


千亿参数AI的模型的部署,从此有了性能更强、成本更经济的选择;AI大模型应用,可以和云、大数据、数据库,实现更紧密的融合。


科技进步的最终目的,一定是落入凡间。


放眼当下,AIGC已经渗透进千行百业。AI已经以惊人的速度,渗透进了每一个计算设备。


2024年1-4月,国内大模型的中标数量,已经超越了2023全年总数,中标披露金额已经达到了2023年全年的77%。


在金融行业、医院门诊部,企业的IT部门,从业者都发现了这一点:传统行业的算力基础设施,已经不够用了!


如今,千亿参数大模型,是千行百业智能涌现的关键。而通用算力能否运行千亿参数大模型,正是衡量其能否支撑千行百业智能涌现的关键。


浪潮信息的创举,让互联网、金融、医疗等行业客户可实现高效部署,首次投入就可节约80%以上的建设成本。


无论是金融防欺诈、财务数据分析、企业CRM营销洞察、医疗智能诊断、个性化诊疗方案、教育培训等等,都将见证AI的广泛应用。


从此,一切计算皆AI。


参考资料:


https://mp.weixin.qq.com/s/1wYt7dfoVy2J1FFkOJjRTg


文章来自微信公众号 “新智元” 作者:新智元





关键词: GPU , AI , Llama 3.1 , 算力 , AI硬件 , 超算集群
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
RAG

【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。

项目地址:https://github.com/microsoft/graphrag

【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。

项目地址:https://github.com/langgenius/dify


【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。

项目地址:https://github.com/infiniflow/ragflow/tree/main


【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目

项目地址:https://github.com/phidatahq/phidata


【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。

项目地址:https://github.com/TaskingAI/TaskingAI