基于华为昇腾的大模型推理框架JittorInfer全面升级并正式开源

2025/08/08 Tutorial

基于华为昇腾的大模型推理框架JittorInfer全面升级并正式开源

继上次清华大学计图(Jittor)团队发布在华为昇腾平台上完成DeepSeek系列大模型高效适配的初步成果后,团队持续对自研的推理框架JittorInfer进行深度迭代与优化,引入了多项系统级优化技术,实现了性能的再次显著提升。

图片

今天,这套高性能、自主可控、基于华为昇腾的大模型推理框架 JittorInfer,即日起向全社区开源!在此诚挚邀请社区同仁与我们携手,共同助力国产AI 生态的建设与发展。

项目地址:

https://github.com/Jittor/JittorInfer

Part 1

项目背景与动机

大语言模型(LLMs)的蓬勃发展,对底层算力平台的效率提出了前所未有的挑战。尽管业界涌现了以vLLM为代表的高性能推理框架,但其优化重心长期聚焦于NVIDIACUDA生态,这使得它们在向国产硬件平台迁移时,普遍面临适配成本高、优化经验不共通、性能难以完全发挥等一系列问题。

 为打通国产大模型 × 国产软件 × 国产算力的全栈技术链路,清华大学计图团队在华为昇腾硬件上对DeepSeek系列模型展开了系统性的适配与优化工作。团队前期的工作已经验证了这条技术路线的可行性,成功在单台8卡昇腾服务器上运行了DeepSeek R1模型,并在DeepSeek V2上取得了相较于vLLMAscend版本)平均超53%的性能提升。为了进一步挖掘国产硬件的潜力,近期我们对这套昇腾大模型推理框架JittorInfer进行了再次升级。

Part 2

JittorInfer再次升级

为了进一步提升硬件性能、解决推理过程中的深层瓶颈,JittorInfer在本次升级中引入了算子融合下发全链路服务端优化等一系列关键技术。

升级点一:大模型算子融合下发

大模型推理过程由成千上万个细粒度的算子构成。在传统的执行模式下,CPU需要逐一向AI芯片下发这些算子的执行指令。这个下发动作本身存在不可忽略的开销,当算子数量极多时,CPU会耗费大量时间在调度上,而此刻强大的AI计算单元却处于空闲等待状态,造成了严重的资源浪费

图1 cpu算子融合下发优化前的执行timeline

JittorInfer实现了一种先进的算子融合下发机制,其原理类似于CUDA Graphs。我们将推理图中的一个完整操作序列(包含各类元算子)预先融合成一个单一的、可复用的计算单元。在实际推理时,CPU不再需要进行成百上千次的独立下发,而只需执行一次下发操作,就能触发整个融合后的计算图在AI芯片上端到端地高效执行。这一创新极大地减少了CPUAI芯片之间的交互开销,将CPU从繁重的调度任务中解放出来,从而确保了计算单元能够持续处于高负载状态,最大化硬件的有效利用率   

图2 大模型算子融合下发示意图

图3 cpu算子融合下发优化后的执行timeline

升级点二:全链路服务端优化

一个优秀的推理系统,优化不能止步于模型本身。我们分析了从请求接收到结果返回的整个服务端流程,并针对性地解决了三大性能瓶颈:

  • 优化PCIe传输瓶颈:将采样逻辑下沉至NPU在标准的LLM解码流程中,模型在NPU上计算出代表词汇表概率分布的logits向量后,需要将其完整地通过数据总线传传回CPU,由CPU完成采样(即选择下一个词)。对于拥有数万词汇表的大模型,logits向量体积庞大,频繁的异构传输构成了通信瓶颈,直接限制了token的生成速度。我们将采样/解码逻辑从CPU下沉到了NPU内部执行。整个“logits → token ID”的过程在加速器芯片内闭环完成,最终只需将代表结果的token ID传回CPU。这一改动将CPUNPU数据总线上的通信量基本消除,有效降低了解码延迟,显著提升了吞吐能力。   

图4 采样逻辑下沉至NPU

  • 升级服务端调度机制:从广播精准提醒在高并发场景下,原有的服务端HTTP任务队列机制存在冗余。每当有新请求到来时,系统会向所有等待的HTTP线程进行广播提醒,即便其中大部分线程并非处理该请求的目标。这种全量广播机制在请求密集时会产生不必要的调度开销,加重CPU负载,如图5所示,优化前的任务队列机制会向所有HTTP 线程进行广播唤醒,导致部分线程被无效唤醒。我们对任务队列机制进行了优化,将其从广播模式修改为单播模式。现在,系统仅对消息队列中真正建立了查询请求的目标线程进行精准提醒,避免了无效的唤醒和上下文切换,从而显著降低了高并发下的CPU负载。

图5 优化前的任务队列机制导致部分线程被无效唤醒

  • 升级KV Cache查询效率:用bitset替代平衡树:KV Cache是实现高效生成式推理的关键,需要对其内存块的被请求的使用状态进行管理。原有实现使用平衡树(如C++中的std::set)来维护这一状态。然而,对于仅需表示占用/未占用”(0/1)的二元信息,平衡树这种复杂数据结构的查询开销相对较大,影响了整体效率。我们使用bitset(位表)替代了平衡树。bitset利用单个比特位来表示一个内存块的状态,可以通过高效的位运算来完成状态的查询和修改。这个修改提升了KV Cache的状态管理效率,降低了常数开销,为整体性能的提升做出了贡献

图6 bitset替代平衡树

Part 3

JittorInfer性能结果对比

通过上述一系列系统性的技术升级,结合我们已有的底层算子库深度优化等工作,JittorInfer的推理性能再次实现了飞跃:

  • 单张华为昇腾910系列卡上运行DeepSeek V2-Lite (16B)模型,JittorInfer的推理性能相较于vLLM-Ascend平均提升幅度高达356.7%

  • 单机8卡华为昇腾910系列服务器上运行DeepSeek V2 (236B)模型,JittorInfer的推理性能相较于vLLM-Ascend平均提升87.8%,相比我们上一版成果(53%)提升显著 

下面展示了JittorInfer框架升级后的推理速度的详细对比,以及相关的运行效果。

表1 华为910系列-单卡DeepSeek V2-Lite模型与vLLM速度对比

表2 华为910系列-单机(8卡)DeepSeek V2模型与vLLM速度对比

图7 16并发推理demo

Part 4

开源与下一步规划

开放与协作是技术生态繁荣的基石。JittorInfer正式开源,希望将这些技术成果回馈社区,为所有致力于国产AI技术发展的开发者和企业提供一个强大、高效的工具,共同为华为昇腾AI基础软硬件平台注入新的活力。

项目地址:

https://github.com/Jittor/JittorInfer

JittorInfer微信交流群:

下一步规划

  • 深度优化单卡推理版本,重点提升高并发处理速度,并扩展对更多主流模型的支持

  • 持续挖掘单机8卡推理版本的性能潜力   

  • 开发并优化面向大规模集群的多节点推理版本      

我们诚挚地欢迎所有的人工智能、大模型的爱好者、研究者和开发者加入我们,共同为国产人工智能生态的发展做出贡献。

Part 4

致谢

本项目的开发与开源离不开各方的大力支持与协作。在此,我们谨向所有参与和支持本项目的单位与个人致以诚挚的感谢。感谢计图联盟成员单位的积极贡献,包括清华大学计算机系翟季冬教授团队(黄书鸿、杨雨晴、宗瓒)、南开大学程明明教授团队(范登平教授、朱子轩)以及北京非十科技有限公司,他们在模型调试与实验验证方面做出了重要贡献;感谢华为半导体图灵GE图引擎、昇腾CANN生态等团队在适配过程中提供的宝贵指导与技术支持;此外,感谢清华—华为鲲鹏昇腾卓越中心为本项目提供的算力支持。项目实现过程中参考并借鉴了 GGML、llama.cpp 等优秀开源项目,在此特别向 ggml-org 社区表示感谢。

GGC往期回顾

  1. 计图开源:首个国产情感计算代码库NK-AffectiveComputing

  2. Computational Visual Media第11卷第3期导读

  3. Kunwoo Lee、黄惠、Seung-Hwan Baek分获亚洲图形学学会2025年度三项大奖

  4. 高效掩码自编码器FastMAE | CVMJ Spotlight

  5. CVMJ获最新期刊影响因子18.3,再列计算机学科软件工程类别第一

可通过下方二维码,关注清华大学图形学实验室,了解图形学、深度学习、Jittor框架、CVMJ期刊和CVM会议的相关资讯。

图片

Search

    Table of Contents