尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

大模型推理加速全链路:内存管理、编译优化、量化与并行策略

大模型推理加速全链路:内存管理、编译优化、量化与并行策略 作者 | 金煜阳博士清华大学助理研究员审核 | 罗燕珊策划 | QCon 全球软件开发大会成为 AI 产业落地核心瓶颈的, 是大模型推理成本。由于模型参数规模朝着万亿级前进, 多模态智能体应用场景出现大爆发, 推理引擎便要应对来自多维度的技术挑战。这多维度都包括啥? 有算子实现、内存管理、量化压缩、异构调度, 还有并行策略。本文是依据清华大学助理研究员金煜阳博士在 QCon 全球软件开发大盘于 2026 年举办的北京站的分享所整理。啥分享呢? 就是名为《大模型推理加速全链路: 内存管理、编译优化、量化与并行策略》的那一个。其所身处的实验室, 在大模型推理加速全链路范畴内里进行探究的情况, 被金煜阳完满地予以了系统介绍, 这其中所涵盖的是, 从底层算子优化起始一直上行到呈现出来的上层并行策略的一整套完整技术栈。本文会逐个地将其详细展开, 这里面包括算子级性能调优之中蕴含的细粒度图层优化方法, 针对异构模型结构实施的KV Cache内存管理, 编译阶段与运行流程协同来进行作业的混合精度量化, 依据负载特性而开展的CPU - GPU的异构调度, 以及面对动态性请求场景所采用的自适应并行策略, 最终还得要叙明开源推理引擎赤兔运用在内的国产芯片生态作用的各类实践成果。这里是演讲的实际记录情况, 是经过 InfoQ 来做不改变原本意思的编辑梳理行为而形成的。背景与挑战人工智能市场规模, 正以超乎预期之速度扩张, 去年依托 和艾瑞咨询所提供数据预测至2030年全球AI市场规模, 会达11万亿。只不过今年年初爆发之态势持续性很强持续了, 再加上智能体应用集中地呈现, 导致该个预告数字顿然显得甚为保守呀甚为保守了, 我坚信它必定会再朝着上面进行调整且幅度不小呢必定会上调呀。与此同时, 中国AI产业正恰好处在快速发展一个时期恰位于快速发展期之中句号。与美国就企业数量、人才培养、论文专利等方面进行对比, 我们于产业界以及顶尖人才层面当中, 依旧存在着差距, 然而, 追赶的速度是极其快的, 能够这么讲, 正在从跟跑状态迈入到并跑的阶段之中。不断崛起的智能体显著改变着大模型应用范式, 基座大模型供应基础能力, 智能体把这样的基础能力同人类当前持有的一切软件工具相连, 进而为各个行业赋予能力。可是在这般繁荣景象背后, 推理成本成为整个产业链里头最为沉重的开销。能够开展训练基座大模型作业的厂家少之又少 , 然而几乎每一项AI应用背后都在运用推理API。推理以及推理所需的算力, 是这个产业幕后的主要成本。一件我们团队做的事, 是构建一个供大模型使用的推理引擎, 使其连接在各类AI芯片之上, 以此支撑各种模型, 最终服务于上层的AI应用。提到底层芯片, 除英伟达的GPU外, 国内华为昇腾、摩尔线程、燧原、沐曦、天数智芯等厂商正努力建设国产芯片生态。在上层, 还有VLM等优秀的开源推理引擎。我们清华大学实验室也开源了一个名为赤兔的推理引擎, 这会在后面详细展开说。明白了推理引擎的优化, 得先明白大模型推理的两个基本阶段: 、。当用户输入“今天中饭吃什么”这句话之际, 系统会把整句话一次性予以处理, 此阶段称作, 是计算密集型操作。之后, 模型开始一个字一个字地输出回复, 恰似我当下说话这般, 一个字挨着一个字地往外冒, 这便是阶段, 也叫自回归生成。阶段每一回生成新token, 都得访问以往所有的上下文数据, 计算量不算大, 然而访存量极大所以是访存密集型操作。这两个阶段, 特性是截然不同的, 对于底层资源的需求, 也是完全不一样的, 这给后续的异构调度, 以及并行策略设计, 埋下了重要的伏笔。在这个基础之上, 大模型的发展潮流给做推理的 带来了四个方面的难题。首先是模型的尺寸渐渐变大, 像宣称的那个 V4 的参数已经达到万亿等级, 而实际的规模或许还要更大。其次是模型的构造变得愈发繁杂。在智能个体的场景里, 用户跟模型进行长时间的交流, 前后文变得越来越长, 还会从工具的调用当中产出具有多种形式的信息, 像是视频、图片等。在架构方面, 除了占据主流的 MoE混合专家结构以外, 千问 Next 一类的模型还运用了混合注意力模式: 其中一部分是传统的 Full 型, 而另一部分则是像 Mamba 那样的线性注意力型。这些异构架构所产生的对算力的需求分布全然不同, 推理引擎必须拥有相当程度的灵活性用来进行应对。算子优化源自高性能计算的基础原理起始, 推导系统性能由五个关键维度所决定: 算子优化、内存管理、模型量化、异构调度以及并行优化。算子优化属于最为底层的能力, 恰似一家公司里每个人的个体作战能力。要是每个算子的执行效率皆不高, 即便再好的系统调度, 最终也不会产生效果。将时间限定为去年的那次开源周活动, 其以一种极为恰当的方式有力地证实了这一呈现出来的情况。在他们前后相继予以发布的诸多子模块当中, 像是其中的某些特定子模块等, 存在着两个子模块是直接和算子实现建立起关联关系的, 另外还有两个子模块则是与并行通信方面存在着联系。这一情形切实表明, 底层算子所具备的性能乃是整个系统得以稳固构建的基础支撑所在。而目前横亘在面前的问题是, 现代人工智能硬件领域内其所具备的算力正呈现出迅猛增长的态势, 然而与之相随的是, 新功能自身所内含的复杂性也正以极速的状态在不断上升。以某种特定的Core情况为例, 在GPU这一硬件装置最初的架构设计当中, 原本仅仅配备有用于开展简单运算活动的通用性CUDA Core, 可是基于加速深度学习过程中张量计算任务的实际需求, 英伟达公司针对性地专门额外增添了特定的Core。怎样把Core跟CUDA Core一块儿进行协同调度, 怎样借助等新硬件特性把访存瓶颈加以缓解, 这就变成了算子实现当中的关键难题。硬件针对大模型负载设计新特性, 软件得跟上才可将硬件性能充分利用——这是一种相互依存、持续发展进步相互更新的情形。手写算子能够针对某个特定形状达成极致性能, 只是存在这样一个问题, 那就是模型在并发度出现变化的时候, 会产生不一样形状的算子切分, 并且每一种形状的最佳实现方式都是不同的 给您举个常规例子, 要是针对特定形状进行手动优化, 那么性能会远远超越自动编译器所生成的代码 可是对每种形状都写算子, 开发成本是极高的 然而使用自动编译虽说省力些, 性能却大幅度降低 这里面的根本缘由, 就是编译器很难去自动适配不同硬件架构的底层特性。计算图由深度学习代码首先抽象而成此概念由首倡, 编译过程含有多个关键环节, 我于此处作极简化的阐释说明。接着在图层展开优化, 涵盖算子融合、计算等价或不等价变换等。融合后的算子进而调用算子库或者实施自动代码生成, 最终方可于芯片上运行。于图层面, 不同芯片架构所需的算子聚合或拆分策略各异在算子层面, 又牵涉计算与访存的掩盖、异步流水线调度等细节, 而且每种芯片设计皆不一样。就算是英伟达自身的H系列, H20呀, 其计算访存实力区别于H100, 显存容量范围不一样, 所需要的调度策略也不一致。要把这所有种种全都交由编译器给自动达成, 困难程度非常大。我们的团队, 在图层变换的这个方向之上做了工作, 同时呢, 在算子代码生成的这个方向之上也做了工作, 这里面重点要介绍其中的一项成果, 这项成果是基于张量属性的细粒度图层优化工作, 它在去年的领域顶会上发表了。这个工作的出发点是一个观察所得, 那就是模型参数量在增长, 并且上下文长度也在增长, 然而它们的增长速度并不相同。更大的参数量能够带来更高的精度, 这是Law 的核心结论, 更长的上下文能够带来更好的记忆能力, 这一点, 在代码智能体当中能够非常明显地体现出来。要是模型仅仅能够处理 200K 的上下文, 一旦对话内容超出了这个范围, 那它就只能把 200K 的内容压缩成 10K 当作背景知识, 之后再去进行下一轮的处理活动。然而要是上下文窗口达到了百万 token 的级别, 模型便能够持续地保留最为无损的信息, 其记忆能力会显著地增强。但存在的问题是, 上下文长度的增长速度比参数规模的增长速度要快, 这就致使在计算过程里中间结果的变化幅度并不一致。比如说: 第一个算子所算出的中间结果会被写入显存里面, 然后第二个算子再去读取它。假如上下文维度的增长速度更为迅速, 借由不同维度间的乘法运算, 中间结果会以爆炸式的态势增大, 把这个中间结果写入显存的这么一个过程, 反而摇身一变成为瓶颈, 并且前后计算本身或许规模不大。当下存在着两种现有的针对粗粒度融合的处理办法, 其一乃是将首个算子与第二个算子予以合并, 进而消除了中间结果在写入以及读出方面所产生的开销, 然而合并之后的计算图其依赖关系呈现出复杂的态势, 并行的程度受到了限制, 致使无法使得 GPU 上几千个线程能够同时展开工作, 硬件的效率难以得到有效的发挥, 其二的情形是, 假若编译器辨别出算子无法进行合并且进而将其拆分为诸多的小算子, 此时在中间结果的访存这方面开销是极为巨大的, 尽管每个小算子的计算所需的时间较短, 然而不间断地对中间张量进行写入以及读出必然会使得性能出现骤然下降的状况。我们于A100上进行过一次算子测试, 其计算效率仅为3.45%, 然而一般情形下本应达到80%至90%。我们所提方法如下开始, 更细粒度加以审视一众依赖关系, 定义出细粒度属性用以描述算子间复杂依赖结构, 依据此来开展变换以及切分, 于最大化并行度条件下实行重组计算。在此场景当中, 我们于A100以及H100之上实施了多模型测试, 跟原生实现、TVM等多个基线作出比较。所测量范畴之核心为端到端推理时间, 并非单个算子的加速比——整体推理时间有着1.5到1.86倍的提升。内存管理在大模型推理进程当中, 会生成一类至关重要的中间结果, 那便是 KV Cache。把它直观予以理解的话, 可看成是模型针对上下文的记忆: 模型把用户所输入的内容按照自身能够理解的形式进行存储。对话的长度若是越长KV Cache 也就会变得越大。它所引发的核心难题乃是显存占用方面: 单单一张 GPU 很可能仅有 80GB 显存, 而 KV Cache 会依据对话的持续而不断增长, 迅速超越物理层面的限制。从硬件层面来讲, 固然能够堆砌更大的显存, 然而从软件层面实施更为智能的调度, 明显属于更为经济的方案。基本的思路是这样的: 当 KV Cache 有被访问的需求之时, 它会安置于 GPU 显存之中当不存在这种需求的情况下, 就会转移至 CPU 内存而当用户好像要再次展开对话之际, 又会预先取回至 GPU。用户在感觉层面上是误以为数据始终留存于显存里面的。当下于这个方向内 , 主要存在着两类工作。其一为 KV Cache 压缩 , 剖析哪些过往的 token 对于后续对话具备更高的相关性 , 仅保留极具价值的部分。要是我讲出了一长串的话语 , 或许其中 80%属于无意义的内容 , 仅仅提炼 20%的关键讯息便已充足。此类方法借助量化分析来施行筛选。其二是更为高效的系统管理 , 并非删减任何信息 , 而是参照操作系统的页表机制来实现动态内存分配 , 这便是 VLM 的 Paged 方法。基于页表的管理方式能大幅减少内存碎片。我们所开展的研究关注的是一个更为新颖的场景, 即异构大模型, 这类模型内部融合了不一样的注意力机制, 其中Full通过做压缩滑动窗口来挑选相关信息, Mamba采用的是线性注意力, 在未来它有可能会成为模型架构的一种主要流行形态。关键的发现在于, 不同的注意力层对内存分配机制有着不同的需求。要是运用统一的大页表去管理所有的层, 依旧会存在数量众多的浪费情况。于是我们提出了将大页与定制化小页相结合的多粒度内存管理方案, 把粒度划分得更为精细, 尽可能地防止碎片的产生。在H100平台之上, 针对新型异构模型展开测试, 将其与当前最优的VLM方案相比较, 整体吞吐量实现了提升, 提升幅度为4.92倍。模型量化存在巨大剪刀差, 这个剪刀差是在模型参数规模飞速增长跟前, GPU显存有限增加中间的。采取量化, 也就是运用更低精度数值表示去存储参数以及执行计算, 这是缓解此矛盾的核心技术手段。在计算机里用不同精度表示数字, 精度越高, 有效数字就越长, 然而所需计算资源便越多精度越低, 有效数字越短, 不过计算速度更快。这是个典型的权衡问题。一种平常会出现的量化办法是于推理之际把参数用低精度予以存储, 然而计算依旧维持高精度级别。这样子是能节俭不少显存容量的, 可是没办法借此使用硬件当中配备的低精度计算单元去进行运算。要是能够把权重以及激活值一块儿展开量化, 也就是除了将存储量化之外接着把计算也相应量化, 那就不但能够节约显存方面的资源, 而且还能够让吞吐率有所提高呢。只是麻烦紧随着就上来了, 在完成全部的降精度操作以后, 模型开始那种输出的内容让人难以理解, 输出的质量出现严重下滑的状况。称作混合精度量化的是当前主流方法, 其基本思想为, 仅存极少数关键点于参数和计算里需维持高精度, 恰似公司中有少数几个人要予以特别关照, 此少数“离群值”以高精度处置, 剩余的99%用低精度处理, 理论上既能节省内存又不存在精度损失, 然而在实际硬件上运行之际, 效率会陡然降至仅为原来的30%, 这是全然无法接受的, 因为单独处理这些离群值仿若单独给每个人发送私信, 调度开销极大。我们着手优化, 从编译与运行时这两个不同层面, 去对离群值数据的重构以及调度流程开展系列改进动作, 进而削减专门去进行离群值调度所导致的各项开销使之大幅降低。检验评测工作并非仅仅单在英伟达平台上予以开展, 还于燧原的芯片之上作有验证。于英伟达平台, 算子性能相较于当前最优方案实现提升, 幅度为1.5至1.6倍, 相较于AWQ提升幅度达6倍。在燧原S60加速卡之际开展了对完整流程从起始到结束的精度验证, 其显示出, 经混合精度进行量化之后的模型精度跟原始的FP16版本基本处于同一水平, 而性能普遍获得提升, 提升幅度超过2倍。异构调度回溯到推理的两个阶段, 分别是和。以往或许更着重, 鉴于在聊天场景里用户对逐字吐出的速度极为敏锐, 要是一个字需一秒钟才吐出, 等待的感觉会很强烈。可在智能体工作模式下, 情形出现了转变。就拿写代码来说, 用户不但关注代码输出的速度, 还留意多轮对话的效率。每一轮对话都会生成新的上下文, 要对整个上下文再度施行。这表明和可能都迟缓, 都是对用户体验造成影响的瓶颈。它属于计算密集型, 它属于访存密集型, 这两者负载呈现的特征全然不一样。传统的做法是将它们全都放置在GPU上加以处理, 然而鉴于特征存在差异, 那么是不是应当考虑运用不同的硬件资源去承接呢? 对阶段进行更为深入的拆解, 层以及MLP层在不同的Batch Size规格下显露出的算术密度变化规律各不相同, 其可扩展性相对较强, MLP的扩展性则比较弱。这引出了一个想法: 在现代计算系统里, CPU具备大的内存资源, 尽管其计算能力较为薄弱, 是不是能够就让它去处理那样的部分, 即那些Batch Size增大然而算术密度变化不大的, 对计算需求很少但对内存需求很大的部分呢? 并且把对计算极大的 MLP 依旧留在 GPU 上去执行。这个想法的本质在于, 将显存占用大而且计算密度低的任务, 卸载到CPU上去 , 将计算密集的那些任务, 留存于GPU。在特定那种场景之下 , 如同Batch Size能够拉得特别大的时候一样 , 此方案的吞吐量提升极为显著 , 可以到达7倍左右。我们把这个工作命名为 , 在此基础之上又进行了更为深入的优化 , 称作Max。并行优化现今大模型的参数量已然庞大到难以放置于单台机器之上, 就算历经量化压缩也异常艰难地难以塞入一张 GPU 之中。我们算过一个数据: 全量参数需 9 张 H100 才能放置得下。所以, 分离式架构与各种并行策略的组合成为必定的选择。的部署配置极具说明性, 在PD分离策略的情形下, 其中一个阶段会取用32张GPU当作一个部署单元, 另一个阶段要用144张嘴GPU, 并且每个阶段内部所采用的并行策略也不一样, 一部分运用张量并行加数据并行的4乘8模式, 而MoE部分直接采用32个专家并行, 这表明, 不同子结构所需的并行策略是各异的, 不存在一劳永逸的方案。往前再深入一步, 不同应用场景所带来的负载特征存在着极大的差异, 简单的客服问答, 其上下文长度是很短的, 而科学的研究或者财务上的分析, 上下文有可能是极其之长的, 另外用户有没有开启深度的思考模式, 这也会致使上下文长度产生剧烈的变化, 这些输入方面的差异使得推理负载在计算密集型以及访存密集型之间发生漂移, 这就需要不同的并行策略去应对, 还有一个关键的特征是推理场景的动态性。正常情况下, 用户往往是偏向于在白天时段集中发起请求, 而到了晚间基本就几乎处于停歇状态, 如此一来后端压力便呈现出显著明显的类似潮汐般的起伏现象, 从一部分 Trace 数据当中我们能够清楚明晰地察觉到这种波动变化。针对不同特定时段, 所采取的并行策略也应由彼而异: 当负载压力处于较大状况之时应以吞吐量作为优先主要考量, 而当压力显得较小的情形下则能够通过适时实施变更策略以此来着力降低时延, 进而致力于提供具备更高质量水准的推理服务。动态变化呈现出这般状况, 要求了进行推理的引擎具备这样的能力, 此能力是能够依据负载的具体情形去切换并行策略, 达成自适应性质的调度行为, 而这, 正是于我们而言并行优化的核心导向标点。开源大模型推理引擎——赤兔我们进行最后介绍了, 是关于我们实验室的开源推理引擎赤兔。它的那种核心使命竟然在于, 是要在国产芯片里面实现提供高质量的推理性能。VLM跟另外那个目前已经是相当优秀非凡的开源引擎的, 然而它们, 是在国产芯片上面出现适配度有着有限此等情况的。特别是在诸如H100这样的高端GPU遭到禁运的如此这般环境背景之下, 国产算力必然一定需要强有力崛起好好表现一番的。或许算子已然是编写制作完成了, 可是把那个推理系统完好完整整个运行起来, 并且要运行得相当出色良好, 依旧是存在挺巨大程度的这类挑战的。赤兔所设定的目标就是实现变为成为一个它能够支持国产算力的, 同时也能够支持国产大模型出现的开源推理引擎的。赤兔整合了前面提到的部分技术, 有一些倾向于探究未来模型架构的前沿技术, 像是针对异构模型架构的内存管理, 暂时还没有全部融入, 不过我们不管是在工程还是研究领域, 都投入了大量人力资源进行适配, 当下在国产硬件上已经可以跑出较为出色的性能, 与此同时在英伟达平台上, 赤兔也能够实现与主流引擎性能不相上下。赤兔在A800集群上, 相比VLM速度更快, 我们达成了一个FP8量化方案, 在硬件对FP8量化单元不支持时, 借助软件办法实现了等效加速, 在精度相平行的前提下, 速度显著比VLM更为优胜, 在华为昇腾芯片上, 结合FP4量化能力, 能够在资源更少的状况下提供较高性能, 沐曦芯片也获得了支持。还有一项工作, 是异构调度, 是在一台只有一个 CPU 以及一个 GPU 的机器上, 成功地把有 617B 参数的完整模型装入了, 并且运行。和 VLM 的 8 张 H20 配置相比, 尽管赤兔这个单机方案的吞吐量大概只是其一半, 然而凭借如此有限的资源能够驱动如此庞大的模型, 这本身本就是个不算小的突破我们的开源计划, 持续在推进着, 期间不断地, 有新技术融入进来了。当下的版本, 是0.5.4 , 即将去发布的0.6版本, 会在智能体推理方面, 做进一步的工作。多讲一句, 科研圈的主流工作, 集中在前述的那些, 面向新型模型结构 的技术探索上, 而我们的实验室, 额外投入了大量的精力, 去做国产硬件的适配, 这中间存在着相当多的工程工作。对于整个产业落地, 大模型推理成本极其关键, 我们所尝试做的, 诸如算法层面的量化工作, KV Cache压缩方面的举措, 以及软硬件协同优化的行动, 都是朝着将这个成本予以降低的方向去努力的。我极其认可, 团队始终在搞创新, 而我们所要做的, 皆是先借由技术办法把大模型于底层硬件算力这个方面的需求去打破掉、压低些从而让推理演变得更为高效以及更为普及、惠及大众。作者介绍金煜阳, 他是工学博士, 身为清华大学计算机系的助理研究员, 还是CCF高性能计算专委会的执行委员, 其主要研究领域涵盖并行应用性能分析与优化、高性能人工智能系统, 在诸如并行计算与系统领域顶级会议和期刊SC、PPoPP、ATC、IEEE TPDS等上面发表了16篇论文, 出版了2部专著, 研究成果获得了IEEE TPDS 2022最佳论文-up奖, 主持或者参与了4项国家级项目、1项省部级项目。作为清华大学学生超算团队的指导老师之一, 指导这个团队, 使其3次赢得世界冠军。获得CCF体系结构优秀博士学位论文激励计划, 获得清华大学优秀博士学位论文, 获得博士后创新人才支持计划等。会议推荐聚焦AI 时代工程实践的QCon全球软件开发大会·2026上海站, 眼下已确实正式开启篇章, 本届会议关注点在于AI架构、Agent、AI Infra、Agent安全以及从开始要「构建AI」直至「驾驭AI」还包括Loop、具身智能与世界模型等热门技术方向所涉及的工程实践领域, 随后会邀请全球技术社区以及产业一线那些有着实际操作经验的人员共同参与分享有价值信息和经验在AI时代的工程方面。
返回列表