九源开源技术周 07|从一个推理框架,到一套统一智能计算软件栈

一个模型在一款卡上跑通了,换一款卡,算子调用、内存搬运和设备通信可能又要重新处理。模型继续更新,芯片继续增加,要维护的软件组合也越来越多。

九源的开源工作,就是从这些具体问题出发,逐步扩展起来的。

这次技术周,我们陆续介绍了模型加载、算子编程、异构通信、智能体运行和代码开发的新进展。最后一篇,我们把这些工作放在一起,看看九源怎样从早期的推理框架,发展出覆盖底层计算、编译、训练推理和开发工具的开源软件体系。

让模型和芯片分别演进

早期的 InfiniTensor 主要围绕模型推理展开。随着大模型推理和更多芯片的接入,很多工作开始反复出现:设备怎么管理,内存怎么申请和搬运,算子怎么调用,多张卡之间怎么交换数据。

这些问题如果一直留在各个模型和框架里,就需要各自维护一遍。于是,我们把共性能力提取出来,逐步形成了九源统一智能计算架构 InfiniCore,由三个公共组件承担底层工作。

组件 主要负责什么
统一算子库 InfiniOps 提供统一计算接口,接入厂商库、自研内核和九齿生成的算子
统一硬件运行时 InfiniRT 统一设备管理、内存操作、图管理等运行时能力,对接不同芯片的原生实现
统一通信库 InfiniCCL 组织多卡、多机之间的数据交换,连接同构与异构设备

比如,同样是矩阵乘,上层模型沿用统一接口,底层可以调用厂商已有的高性能库,也可以使用针对目标平台优化的内核。新的算子实现进入公共库后,使用这一接口的模型就能继续复用。九齿编译生成的算子,也可以通过这一入口进入模型执行。

这样,新模型能够复用已有硬件支持,新芯片也能复用已经接入的模型与算法。对于基于统一接口开发的上层计算代码,换到已适配的平台,可以保持源码不变。 目前,底层算子与运行时已接入昇腾、海光、沐曦、天数智芯、摩尔线程、寒武纪等各类国产平台,当然也支持 NVIDIA GPU。

通信层则让设备之间进一步协同。InfiniCCL 可以在同构节点内利用厂商通信能力,在异构节点间结合 MPI、RDMA 等方式交换数据。打通这些路径后,上层框架就有了组织异构计算的基础,可以进一步按不同设备的计算、带宽和容量特点安排任务。

这些组件也分别开源、独立演进。开发者可以按需要把其中的能力接入自己的框架和系统。

算子写得简单,底层仍然可以做深

统一接口解决了已有能力如何复用。遇到新算法、新算子,开发者还需要一种更容易写出高效实现的方式。

九齿一直沿着这个方向发展:按串行思路描述计算,把并行化和复杂访存交给编译器。 这次编程接口的调整,进一步简化了矩阵乘等算子的数据排布表达,让代码更接近开发者想描述的计算过程。

代码好写之后,还要把性能做好。在部分国产平台上,一些算子的性能会受到 Triton 后端的限制。为此,九齿在 Triton 之外增加了 TileLang、CUDA C、Ascend C 和 BANG C 后端,让编译器可以通过不同路径发挥硬件能力。

这些后端共用前端和中端:

  • 前端理解用户的计算
  • 中端完成公共分析与优化
  • 后端再映射到具体语言和硬件。

新增后端时,已有的程序分析和优化可以继续使用;中端改进了一项公共优化,多个后端也能沿用相应成果。开发者保留简洁的算子表达,编译器持续积累更好的实现方法。

从底层组件,走到完整的训练和推理任务

在大模型推理侧,InfiniLM 基于 InfiniCore 组织模型执行,复用公共算子、运行时和通信能力,并向应用提供模型服务。最近补充的工具调用支持,也让它能够通过兼容 OpenAI 风格的接口接入智能体框架。

InfiniTensor 则围绕计算图的导入、变换与执行,支撑包括文本向量模型在内的推理任务。它的加速器执行复用 InfiniOps 和 InfiniRT;在文本向量场景中,还可以保留模型权重和计算图,适应不同批次、不同长度的输入,减少反复准备模型的工作。

训练这边,InfiniTrain 采用原生 C++ 架构,从前向计算、自动微分到参数更新,构建完整的训练流程,并支持多维并行、混合精度和计算通信重叠。开发者可以在这套开源实现上开展模型训练与微调,也可以研究梯度同步、流水调度和显存管理等系统问题。

把它们放进一个实际任务,分工会更直观。比如,让智能体查阅本地资料、排查服务问题:InfiniLM 提供大模型推理与工具调用接口,InfiniTensor 计算用于检索的文本向量,上层智能体负责执行工具、组织多轮任务。找到的资料再送回模型,帮助它继续判断下一步该做什么。

从底层设备到模型服务,这些能力由不同项目承担,也能围绕同一个应用配合起来。

开发时的成本,也要降下来

改代码的时候,下一轮要用的模型就可以先准备好。

InfiniLoader 把模型文件预先缓存到主机内存,并由独立进程保留。后续启动通过缓存路径读取,减少系统文件缓存被内存压力回收后重新读盘的等待。它既可以用于 InfiniLM,也可以配合 vLLM、SGLang 等推理引擎,把反复加载模型消耗的时间省下来。

InfiniCoder 关注的是另一件事:怎样让模型更好地参与代码开发。

它将程序分析、代码记忆、任务记忆和执行工具结合起来,帮助模型理解项目结构、保留有效进展,并完成实现与验证。项目支持通用编程任务,重点增强十亿级、百亿级边端模型的代码能力,并围绕算子开发与优化、训练推理框架开发继续强化。

这些工具来自日常研发中的实际需求。一次启动少等一会儿,一段调用链更容易找到,长任务中少丢一些已经确认的信息,都会影响开发工作能不能顺畅地推进。

让更多开发者能接着做

开源让不同团队有机会在同一份实现上继续改进:芯片团队补充硬件支持,系统开发者优化执行和通信,模型开发者带来新的计算需求,使用者则反馈真实环境中的问题。

九源智能计算系统生态联合体,也在围绕这些需求推进共同研发。此次大会上,九源与飞腾、TileLang、商汤分别发布了国产 CPU 与软件栈协同、算子与编译协同、多模态大模型训推套件等联合成果,合作覆盖了芯片、编译器、框架和模型。

开发者的参与同样需要具体入口。九源的课程、训练营和技术竞赛持续围绕开源项目组织实践:从实现一个算子、在不同设备上检查正确性和性能开始,逐步进入编译器和训练推理框架开发。

新一届秋季启元人工智能大赛也设置了九齿算子、训练系统、推理引擎和智能体四个赛道。学习者可以沿着自己感兴趣的方向,参与真实研发问题;经过测试和评审的改进,则继续成为开源项目的一部分。

接下来,九源会继续完善模型与硬件支持,让跨平台开发、异构协同和云边端部署更方便。我们也会推进模型辅助开发,让大模型参与算法设计、代码实现与优化探索,再把经过验证的共性方法写进编译器和公共组件,供后续开发直接使用。

九源希望积累的,是一套能够被持续使用、改进和扩展的智能计算软件。
如果你正在做算子、编译、训练推理或智能体开发,欢迎把九源用到自己的项目里,也欢迎把遇到的问题和做出的改进带回社区。

🔗相关链接

开源项目: https://github.com/InfiniTensor
社区、课程与活动: https://www.infinitensor.com/

关注与交流