科技魔方

GPU训Llama 3.1疯狂崩溃,竟有大厂用CPU服务器跑千亿参数大模型?

更多场景

2024年08月01日

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

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

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

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

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

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

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

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

图片

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

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

图片

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

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

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

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

图片

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

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

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

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

图片

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

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

  用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入手。

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

  在具体实践的过程中,LC信息的工程师们分别从硬件资源和算法层面入手,攻克了一个个「拦路虎」。 超大内存+高速带宽

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

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

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

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

  允许任意两个CPU之间直接进行数据传输,减少了通信延迟

  提供了高传输速率,高达16GT/s(Giga Transfers per second)

图片

  此外,LC信息的研发工程师还优化了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与内存之间的带宽利用率不高,通信开销极大。

图片

  如何解题?用算法创新

  针对以上难题,LC信息提出了「张量并行」(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参数量化成低比特数据,权重会变小。另一方面,权重缩小之后,在计算时传输的数据量也会变小。

  这里,LC信息采用了一种并不多见的分位数量化方法——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模型推理解码效率的限制,从而进一步提升了模型的推理性能。

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

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

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

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

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

图片

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

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

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

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

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

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

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

  从此,一切计算皆AI。

+1

来源:​新智元公众号

延展资讯