摘要:导读在知乎技术沙龙第一期活动中,知乎机器学习平台负责人王新分享了知乎大模型推理框架 ZhiLight(https://github.com/zhihu/ZhiLight) 在开发与应用中的经验。本文提炼了此次分享的核心干货,围绕知乎大模型的运行机制、模型推理基
导读在知乎技术沙龙第一期活动中,知乎机器学习平台负责人王新分享了知乎大模型推理框架 ZhiLight(https://github.com/zhihu/ZhiLight) 在开发与应用中的经验。本文提炼了此次分享的核心干货,围绕知乎大模型的运行机制、模型推理基础、开源技术应用、自研框架的实践展开阐释和讨论。
分享中讨论了知乎是如何应对 LLM 带来的大规模计算与参数量的挑战,对比了单机多卡推理中流水并行和张量并行两种方法。其中张量并行在实践中表现出优势,但也依赖底层硬件能力。
分享中还介绍了开源推理框架在知乎的应用以及自研框架在多卡并行、内存管理和异步计算等方面的实践。
主要内容包括以下几个部分:
1. 大模型是如何运行的
2. 开源推理框架在生产中的应用
3. 知乎自研框架 ZhiLight
分享嘉宾|王新 知乎 机器学习平台负责人
编辑整理|潘志明
内容校对|李瑶
出品社区|DataFun
首先来探讨一下大模型负载及 GPU 设计。
1. 大模型负载分析
在讨论 LLM 推理优化之前,先通过视觉模型来理解一下如何分析 GPU上workload 的性能与瓶颈。视觉模型主要由卷积组成,卷积基本上都会最终优化为矩阵计算。典型的模型结构是 ResNet 结构,参数量约为 25M,计算量为 4.14G FLOPS。ResNet 计算主要是 3*3 的卷积核,虽然需要做很频繁的计算,但单个计算的矩阵规模并不是很大。应对这种规模的计算,芯片设计的主要目标是提高计算密度。
大模型出现之后发生了一些变化。如下图所示,是非常经典的 Transformer 模型。
现在的 GPT 系列模型都是采用 Decoder Only 架构。Decoder 结构每一层主要分为两部分,一部分是 Multi-Head Attention,当然它现在有很多变种,比如 Multi-Query Attention,重要计算都是在线性层,FFN 层其实也是非常大的线性层。整体而言,模型主要的计算是线性层,而线性层就是 AX+B,模型的主要算子还是在矩阵乘。
模型参数规模的变化给大模型的推理带来了很大挑战。比如 Llama 等模型,动辄就是百亿的参数量,比以前的几百万参数规模高出不止一个数量级,计算量也有很大的变化。
2. 多卡并行
基于对大模型负载的分析,单卡已难以负担大模型的计算量,需要把一个模型分到多卡上去跑。
并行方式:
流水并行。大模型有很多层,比如 70 层、128 层等,可以按 32 的倍数分卡,前 32 层在一张卡上,中间 32 层在一张卡上,这种方法的治理负担较小。张量并行。因为用到了矩阵乘,所以稍微复杂一些。比如一个 M×N 的矩阵乘以一个 N×K 的矩阵,可以切 M 也可以切 K,把它分成多个矩阵乘。专家并行。在 MoE 这类模型中,专家并行使得 batch size 大大增加,从而提高 GPU 矩阵乘法的效率,提高吞吐。其次 EP 使得专家分散在不同的 GPU 上,每个 GPU 只需要计算很少的专家(因此更少的访存需求),从而降低延迟。我们在 LLaMA2 架构的模型上,针对不同的 token 长度,从 200 到 4000,分别对流水并行和张量并行进行了效果对比,从实验上看张量并行性能更优,大概有一倍以上的延迟的降低。
3. GPU 设计
英伟达的 GPU 一般每两年推出一个核心版本,其后会分别在计算、存储和网络三部分去降低最初的配置。比如 GA102 芯片,最初卖的版本是 A100,是全功率的,算力、显存等各个方面都做到了极致。后续再基于原规格减配,做成不同的卡型。
英伟达 GPU 架构演进及技术特性分析
作为具有里程碑意义的 GPU 架构,截止 2023 年底,安培架构目前仍是国内大规模 AI 模型训练与推理的主流计算平台。其旗舰产品 A100 计算卡采用该架构,可提供 312 TFLOPS 的 FP16 算力性能。
(2)Ada Lovelace 架构(中期改款)
在安培架构发布两年后,英伟达推出架构微调的 Ada Lovelace 产品线。此次升级主要涉及变化:
核心架构:将第三代 Tensor Core 升级至第四代互联带宽:卡间带宽从 NVLink 的 600GB/s 降至 PCIe 的 32GB/s尽管仅通过张量核心升级便使算力提升至 330 TFLOPS(较 A100 提升 5.7%),但出于产品线差异化考量,英伟达通过大幅降低互联带宽来维持各产品线的市场定位。
(3)Hopper 架构(新一代架构)
作为全新架构解决方案,Hopper 架构仅在 Tensor Core 配置方面与 Ada Lovelace 保持兼容性,其余架构组件均进行彻底重构。其旗舰产品 H100 计算卡实现 989 TFLOPS 的 FP16 算力,较前代提升达 217%。但需注意的是:
功耗水平:TDP 功耗较前代产品翻倍架构革新:虽然算力提升显著,但核心架构创新幅度不及 Ada Lovelace 的制程升级效果应用场景:更适合需要极致算力的特定场景,常规训练任务仍以安培架构产品为主流选择注:以上数据基于英伟达官方技术白皮书及第三方基准测试结果整理,实际性能可能因系统配置及工作负载类型有所差异。
如前文中提到,通讯问题也是制约性能的一个重要因素。卡间通讯目前有两种架构,分别是 NVLink 和 PCIe 方式。其中 Ampere 架构的 NVLink 通信带宽大概是 400 到 600G。RTX 4090 没有 NVLink 设备,卡间通讯使使用 PCIe 接口通讯,其带宽只有 32G。可见在多卡推理中,PCIe 卡间通讯的设备要比 NVLink 设备低效很多。
02
开源推理引擎在生产中的应用
1. vLLM 和 SGLang 的实践
无论是 2023 年广泛好评的 vLLM,还是 2024 年的 SGLang 框架都在知乎得到了广泛的应用。下图展示了知乎实测的一组数据。
SGLang 在性能上有非常强的竞争力。在多个模型上都稳稳的超过 vLLM,最近一年以来 SGLang 不仅仅性能表现强劲,在稳定性、模型支持、系统可观测性等多方面都有非常明显的进步。
2. 开源引擎的局限
我们在使用开源引擎时遇到一个困惑。如下图所示。
裸算力接近的两种卡型,比如 A100-80G 和 RTX4090,在同一个模型上性能表现差异很大。
我们通过通讯计算比和缓存计算比来评估算力使用的效率。可以看到 RTX 4090 通讯计算比与其它卡相比明显要低一个数量级,这是其性能表现不佳的一个主要原因。
实测数据也证实了上述理论推断。在不同的芯片组上分别去做点对点通讯实测其带宽整体上仍是一个数量级的差异。理论和实践都证明了两个卡的差异就是差在卡间通讯上。
03
知乎自研引擎 ZhiLight
在 Transformer 架构的每一层计算过程中,计算流程主要由两个核心组件构成:注意力部分(Attention)和前馈神经网络(Feed-Forward Network,FFN)。这两个关键计算单元在分布式训练与推理过程中均需执行全局 AllReduce 集合通信操作,这常常成为性能瓶颈。为了优化推理性能,我们实施了计算-通信重叠优化策略。该技术通过精细设计的流水线调度机制,使计算操作与通信操作在时间维度上实现并行执行,有效降低了通信延迟对整体执行时间的影响。经实测,单层推理延迟从原先的 19 毫秒显著降低至 12 毫秒。
在计算-通信重叠优化的基础上,我们进一步分析发现,AllReduce 操作中传输的梯度信息具有较高的冗余度,这为我们提供了进一步优化的空间。针对这一特性,我们实现了通信数据的精度量化,将 AllReduce 操作中使用的数据类型从 FP16(16 位浮点数)降级为 INT8(8位整数),在保证模型性能的前提下显著减少了通信开销。通过这一量化优化,单层 Decode 操作的延迟进一步缩短至 10 毫秒,与初始状态相比,整体计算时间降低了 40% 以上。这种通信优化策略在大规模模型推理场景中展现出显著的性能提升效果。
综上所述,我们通过计算-通信重叠技术和通信数据量化两项关键优化策略,有效解决了大语言模型推理过程中的性能瓶颈问题,为高效部署大规模语言模型提供了技术支持。
接下来介绍一下性能基准测试结果。从展示的图表中可以看出,首 token 的延迟数据是关键指标,数值越小表示性能越好。图表上部展示的是平均延迟数据,下部则是 P95 延迟情况。图中绿色线条代表 ZhiLight 的性能表现,蓝色代表 vLLM 系统,红色则是 SGLang 的数据。通过对比可以明显发现,ZhiLight 在所有模型规模下都具有明显优势,并且随着模型规模的增大,这种性能优势变得更加显著。
如上图,在测试与实验环境中,100B 规模模型在 ZhiLight 上运行时,使用英伟达 RTX 4090 其延迟低于 vLLM 在 A800 上的表现。ZhiLight 在 RTX 4090 上的表现,性能已经非常接近 SGLang 在 A800 上的水平。
开源模型的适配
ZhiLight 框架目前主要针对 PCIe 接口的设备,比如 RTX 4090 做了优化,支持 Ampere、Ada Lovelace 架构显卡。
ZhiLight 目前支持的模型包括:CPM 1/2/3, MiniCPM,Llama 1/2/3,Mixtral MoE, Command+R,Qwen 1/2/3, DeepSeek MoE V2/V3, DeepSeek R1,DeepSeek VL
04
未来展望
目前我们的工作聚焦于在 PCIe 设备上面运行大语言模型的多卡推理。未来希望能够做成完整的大模型推理工程架构,比如基于 NVLink 和 RDMA 设备的 PD 分离架构,以及多模态模型的支持。
以上就是本次分享的核心内容。
05
Q&A
Q:大模型推理,面对很多 query 需要同时处理,在这方面有哪些主要问题以及如何解决?
A:我们目前面临两个核心技术挑战:首先是首个 token 生成的延迟问题(First-token Latency);其次是在高并发负载场景下,首 token 资源消耗可能导致后续解码(Decoding)性能下降的问题。
针对首 token 延迟问题,我们观察到在某些成本较低的计算资源上,虽然理论算力充足,但存在其他系统瓶颈。我们采用计算与通信重叠(Compute-Communication Overlap)技术解决此问题,通过并行处理策略最大化算力利用率,有效降低响应延迟。
关于第二个挑战,在大规模应用场景中,用户请求持续涌入时,当前处理中的推理任务可能会因资源竞争而性能下降。从系统工程角度而言,这本质上是一个负载均衡(Load Balancing)问题。首先是在请求初始阶段实现合理的负载分配机制,确保各节点资源使用均衡。在此基础之上,使用 Prefill-Decode(PD)分离架构可以确保不同的负载类型拆到不同机器上。
以上就是本次分享的内容,谢谢大家。
来源:DataFunTalk