当前位置: 首页 > news >正文

FlagOS 社区 Triton 增强版编译器 FlagTree v0.3发布,性能全面提升,适配 12+ 芯片生态!

2025 年 9 月底,首届 FlagOS 开放计算开发者大会上,众智 FlagOS 社区重磅发布 FlagOS v1.5 版本!此次版本里各子项目也都进行了不同程度的升级,比如,AI 统一编译器 FlagTree 升级到 v0.3 版本,并行训推一体框架 FlagScale 升级到 v0.9.0 版本,统一通信库 FlagCX 推出 v0.5.0 版本。

本文,我们将带领大家深度了解 Triton 增强版编译器 FlagTree v0.3 版本的新功能和新特性,并从芯片后端(GPGPU、DSA等)视角出发详细拆解适配 FlagTree 的步骤。希望更多芯片后端与我们携手前行,共同构建更智能、更高效、更开放的 AI 基础设施!

图片

在继承前一版本功能特性的基础上,FlagTree v0.3 持续集成更多后端组件,兼容各类芯片后端现有的适配方案,构建统一代码仓库,打造开放共建的代码平台,以高效实现单仓库对多后端的支持,进一步扩展生态系统。同时,FlagTree v0.3 持续推进统一编程接口的扩展,加强中间表示层及其转换能力(FLIR),并增强硬件感知与编译指导能力(通过 flagtree_hints 机制),以提升整体支持范围与效能。

一、版本亮点

1、新增功能

多后端支持

本次版本新增对 hcu 后端的支持,各芯片后端均继承 FlagTree 前一版本的核心能力,包括跨平台编译与快速验证、高差异度模块插件化、CI/CD以及质量管理能力。

持续对接上游生态

FlagTree 新增适配框架 PaddlePaddle、操作系统 OpenAnolis、北京超级云计算中心。

持续建设 FLIR

持续进行 DSL 扩展、TTIR 扩展、Linalg 中间层表示及转换扩展、MLIR 扩展,提供编程灵活性,丰富表达能力,完善转换能力。

统一多后端编译管理

确定编译指导规范,flagtree_hints 对硬件单元映射、编译转换优化选择进行指导,并通过统一模块管理多后端的指导差异。

联合 FlagGems 算子库建设

在版本适配、后端接口统一、算子注册机制完善及测试流程优化等方面,与 FlagGems 算子库协同推进,共同增强系统整体功能与兼容性。

2、性能提升

特性一:基于硬件感知的编译优化技术Hints

通过注释嵌入硬件优化提示,指导硬件相关优化,提升算子性能。已在英伟达、华为昇腾和 Arm China AIPU 构建编译链路,其中部分重点算子在华为昇腾提速10%以上。

特性二:CPP JIT Runtime 提升算子速度

Python 开发算子提升易用性,CPP 运行时提升性能。基于 CPP 语言的运行时包装机制,降低运行时开销,应用于20余个算子,平均性能提升20%以上。该技术已支持英伟达、天数和华为昇腾。

特性三:PreTune 离线搜寻最优内核配置

通过预执行自动调优提升效率,彻底消除运行时开销;持久化存储使 PreTune 结果可复用、可共享、便于分发;借助多级缓存加速自动调优,即使缓存部分未命中也能节省时间。经验证,在 Qwen2.5-7B-Instruct 模型上推理性能提升40%。

针对以上三个特性,下文会逐一介绍 FlagTree v0.3 是如何实现的。

2.1、基于硬件感知的编译优化技术Hints

图片

整体设计上,Hints 在前端层扩展 Triton 抽象语法树解析,将 flagtree_hints 编码为 MLIR 属性。中间层,基于 flagtree_hints 属性设计优化过程,以增强优化效果。后端层,使硬件供应商能够基于 flagtree_hints 选择性地注册 pass。

(1)前端语言扩展

  语法: #@hints: 后面紧跟着注释指导内容,需要为特定的字符串

  Example:

图片

注释分为两类:

  • 硬件单元映射有关:指导数据存储、并行分配等,如:共享内存的分配

  • 编译优化有关:帮助编译器选择合适的优化策略、优化参数等,如:pipeline阶段数

(2)AST 解析扩展

  • hints 识别:解析#@hints注释,建立语法节点与对应提示之间的映射关系

  • hints 前端验证:初步进行合法性检查,如:验证 hints 与目标架构是否匹配。静默忽略无效提示,以确保编译成功

(3)TTIR Attribute 扩展

  扩展 TTIR Dialect,将 hints 内容作为 attribute 带入 TTIR,后续 pass 将进行对应的优化或继续传递 hints attribute

图片

(4)中端实现一系列 hints 驱动的优化pass

具体流程:

  • 对照已有 pass,注册 hints 有关的 pass

  • 在每个 pass 进行优化前,备份原始 mod

  • 根据 hints 和 unified haredware 内容进行优化和下降,及时进行合法性检查,若遇错误则返回备份的mod

图片

(5)后端组织相关 pass,并注册 Unified Haredware

基于 Hints 技术,FlagOS 1.5已经在华为昇腾、ARM China “周易” NPU 和英伟达实现全链路,具备一些基础的编译指导能力,为社区提供开发规范,持续完善编译指导能力。

类别  

功能

具体hints支持

硬件映射指导

内存分配

tl.load # @hints: shared_memory/UB_buffer/layout

访存通路

tl.load # @hints: dma

并行映射

for # @hint: bind_sub_block

编译pass指导

指导padding  

tl.load # @hint: dot_pad_only_k    

指导buffer    

tl.load # @hint: multibuffer    

warp specialize  

for # @hint: warp specialize    

已支持的编译指导信息

2.2、基于 CPP JIT Runtime 的算子封装层,提升算子速度

图片

整体的思路是将运行时和编译器解耦合,采用 C++ 重构运行时,同时复用编译器;采用可变参数模板与折叠表达式来实现核心计算的特化处理和参数路由机制(为内核精准筛选参数);单个 TritonJITFunction 类即可支持多种 Triton 内核(无需为每个函数创建子类或生成额外代码)。

图片

进而,封装设备驱动 API 以调用编译后的二进制文件(可扩展支持其他后端)

图片

2.3、PreTune 离线搜寻最优内核配置

  • 基于 SQL 的存储架构赋予 PreTune 结果多级缓存与离散化键值存储优势,既加速查询又简化数据分析。

  • 智能性能优化通过懒加载实现,仅在缓存未命中时查询,启动时无需加载整个数据库。

  • SQL 驱动的并发能力通过多线程与多进程提升自动调优效率,完美适配现代推理框架的工作流程。

图片

3、生态适配

目前,FlagTree 已覆盖包括 iluvatar、xpu (klx)、mthreads、metax、aipu (arm npu)、ascend npu & cpu、tsingmicro、cambricon 和 hcu 在内的 12+ 芯片后端。而且,FlagTree 已经适配框架 PaddlePaddle、操作系统 OpenAnolis、北京超级云计算中心等上游生态。

二、芯片后端适配流程详解

AI 芯片如何适配 FlagTree 编译器 ?

下面,我们将从芯片后端视角,详细介绍其适配 FlagTree 的流程。主要包括的步骤有:工程构建、后端发现与注册、后端驱动与启动、编译流程、后端 Dialect 与 Pass 注册、PyTorch 后端扩展、不同芯片架构差异化实现、接入 FlagGems 等。

图片

1、工程构建

以文件https://github.com/FlagTree/flagtree/tree/main/python 为例,通过 python/setup.py 构建工程入口,在 Triton 基础上添加后端构建功能,并通过 setup_tools 管理多后端构建,支持包括多后端构建参数、三方库下载、安装打包范围、二进制插件、LLVM 等软件依赖下载及缓存管理等。

  • python/setup_tools/utils/__init__.py后端三方库具体下载地址及版本

  • 提供离线构建支持

  • python/setup_tools/utils/ascend.py 构建包管理的后端差异化实现

  • python/setup_tools/utils/tools.py 提供离线构建管理

实现多芯片后端的完整构建命令,具体操作如下:

  • 从源码开始安装依赖(注意使用正确的 python3.x 执行)

图片

  • 构建安装(网络畅通环境下推荐使用)

图片

自动下载依赖库的速度可能受限于网络环境,编译前可自行下载至缓存目录 ~/.flagtree(可通过环境变量 FLAGTREE_CACHE_DIR 修改),无需自行设置 LLVM_BUILD_DIR 等环境变量。

  • 部分后端完整构建命令如下,完整信息访问 https://github.com/FlagTree/flagtree/blob/main/README_cn.md

图片

图片

图片

图片

图片

2、后端发现与注册

通过 backends/__init__.py 中的发现机制自动加载,发现并接入后端。每个后端需提供 compiler.py 和 driver.py;运行时通过 runtime/driver.py 获取活跃后端。

图片

图片

3、芯片后端驱动与启动

每个后端需实现:

  • Driver:继承 DriverBase,负责设备管理、目标信息获取等;

  • Launcher:负责内核启动,可适配编译产物的不同执行方式,如 CudaLauncher、AIPULauncher;

  • is_active():静态方法,用于检测后端是否可用。

4、编译流程

编译过程分为多个阶段,以文件 third_party/backendxxx/backend/compiler.py 为例,可通过 add_stages 注册 triton kernel、ttir、ttgir、llir、cubin。

图片

  • GPGPU 后端(如 Nvidia)编译流程

  参考文件 third_party/nvidia/backend/compiler.py,通过 add_stages 注册 Triton IR(ttir) → TritonGPU IR(ttgir) → LLVM IR(llir) → PTX → Cubin

图片

  • DSA/NPU 后端(如 aipu)编译流程

  参考文件 third_party/aipu/backend/compiler.py,通过 add_stages 注册 ttir → linalg → 目标二进制

图片

以文件 python/tutorials/01-vector-add.py 为例,展示Triton JIT Function 的 lowering。

图片

注册 make_ttir (tt + arith)

图片

注册 make_linalg( linalg + arith + memref + bufferization + tensor)

图片

图片

5、后端 Dialect 与 Pass 注册

后端需注册自定义 MLIR Dialect 和优化 Pass 。在 python/src/main.cc 中通过宏拼接的形式规定方法名,进行声明和初始化。调用 C++ 实现的各种 pass,如 TritonToLinalg、BufferizationToMemRef 等,注册使用到的方言,支持 Triton、Linalg、Arith、MemRef 等 Dialect。

图片

6、PyTorch 后端扩展

PyTorch 后端扩展方案通常有 fork 和 standard extension 两种。我们在文件 third_party/aipu/backend/aipu_torch_dev.cpp 里提提供了 PyTorch 后端标准扩展范例。

图片

图片

图片

图片

7、差异化实现机制

统一抽象接口

以 backend/flagtree_backend_specialization 这一规范统一的接口,承接后端差异化行为,消除冗余代码,提升代码可复用性和灵活性。

图片

插件化支持

对于芯片高差异度模块,支持以插件形式接入:

  • 主仓库通过环境变量 FLAGTREE_PLUGIN 加载插件,使用动态库/静态库接入

  • 非公开仓库负责生成二进制库,插件代码结构仍可与主仓库保持同构设计,代码仅用宏区分,构建命令使用环境变量区分。

图片

8、FlagGems 算子库共建

高性能 AI 算子库 FlagGems 是 FlagTree 生态中的通用算子库,支持多芯片后端的统一管理与优化。新后端接入 FlagGems 的操作流程如下:

  • PyTorch 功能函数接口封装

  • Triton Language 原语接口标准化接入

  • ATen 算子注册后端键值

  • 运行设备保护,张量设备指定

  • 模块导入时自动检测后端

  • 定制自动调参空间、启发式调参及算子特化实现

这里重点介绍性能优化的调参实现方式。以文件src/flag_gems/runtime/backend/_ascend/heuristics_config_utils.py 为例,用于限制 AI 芯片计算处理数据块大小,并检查是否能整除,以保证编写 AI 算子时,程序在不同的硬件上都能跑得又快又稳。

图片

文件 src/flag_gems/runtime/backend/_ascend/tune_configs.yaml 用于定制自动调参,让 AI 芯片达到最佳性能。

图片

三、总结

FlagTree 通过统一的编译器架构、灵活的接入机制和强大的生态支持,为各类 AI 芯片提供了高效、易用的算子编译与运行时支持。v0.3 版本通过基于硬件感知的 Hints 编译优化技术、CPP JIT Runtime 与 PreTune 预执行离线自动调优三大核心技术,显著提升算子性能与推理效率。同时,以标准化接口以及与 FlagGems 算子库的共建机制,极大降低了从 GPGPU 到 DSA/NPU 等多种 AI 芯片的接入门槛,为构建开放、高性能、易扩展的多芯片编译平台奠定了坚实基础。

就在今年10月底,在 Triton 开发者大会与 PyTorch Conference 2025两大 AI 盛会上,FlagOS 社区系统展示了构建跨硬件统一智算基座的技术成果,集中呈现了以下核心内容:

  • FlagOS 基于 PyTorch 构建了从云端到终端(具身智能机器人)的一体化AI软件栈,全链路训练推理、跨芯迁移、性能优化的智算基座能力;

  • FlagOS软件栈整合了全球规模最大的 Triton 算子库 FlagGems 、统一编译器 FlagTree 和训练推理框架 FlagScale 等核心技术形成完整技术生态。并进一步推出 FlagRelease 平台,用户无需手动迁移即可直接获取开源模型的多芯片版本,显著降低开发者使用门槛;

  • 鉴于目前行业内算子语言繁多且较分化的局面,亟需建立统一的编译器兼容不同AI芯片后端,FlagTree 在此背景下,实现了统一、兼容多种 AI 芯片的开源编译器技术。

最后,感谢每一位 FlagOS 开源社区成员的持续付出与技术贡献,正是你们的集体智慧与创新热情,共同推动了 FlagTree v0.3 的顺利升级与性能突破。也欢迎大家体验,使用过程中如有任何问题或建议,请到 FlagTree 的 GitHub 仓库提交反馈(https://github.com/FlagTree/flagtree)。

关于 FlagOS 社区

为解决不同 AI 芯片大规模落地应用,北京智源研究院联合芯片企业、系统厂商、算法和软件相关单位、科研机构等十多家国内外机构共同发起并创立了 FlagOS 开源社区。

FlagOS 社区致力于打造相面多种AI芯片的统一、开源的系统软件栈,构建「模型-系统-芯片」三层贯通的开放技术生态,通过“一次开发跨芯迁移”释放硬件计算潜力,打破不同芯片软件栈之间生态隔离,有效降低开发者的迁移成本。FlagOS 社区构建人工智能软硬件生态,突破单一闭源垄断,推动AI硬件技术大范围落地发展,立足中国、拥抱全球合作。

图片

文末福利

欢迎大家为 FlagTree 点亮 Star ,

抽取 10 名幸运观众,赠送 1 份 FlagOS 周边礼物~

图片

参与方式:扫码进入 FlagTree 的 Github 主页,点亮 star。扫描以下抽奖二维码,进入抽奖小程序并上传有效截图凭证,即可参与抽奖。

抽奖二维码:

图片

抽奖操作流程

图片

活动说明:

  • 奖品有水杯3份、毛绒玩具3份、手机支架4份,种类随机发放。

  • 请上传正确有效的截图凭证,后台审核通过后获得抽奖资格。

  • 本次抽奖由第三方小程序自动开奖,结果公平公正,开奖时间为10月31日12:00整。

  • 本次奖品将以邮寄方式发放,请填写真实有效的邮寄信息以便我们及时邮寄您的奖品。若因中奖人原因,未提供邮寄信息或提供错误的信息,导致奖品邮寄失败的,由中奖人承担后果。

http://www.dtcms.com/a/544351.html

相关文章:

  • 复杂环境下驾驶员注意力实时检测: 双目深度补偿 + 双向 LSTM
  • 强化 门户网站建设wordpress添加视频插件吗
  • 用于电容器的绝缘材料中,所选用的电介质的相对介电常数应较大。用于制造电缆的绝缘材料中,所选用的电介质的相对介电常数应较小。
  • 用Lua访问DuckDB数据库
  • 制作人在那个网站能看情侣wordpress模板
  • Linux网络的HTTPS
  • 改进 shell 搜索
  • Rust异步并发:业务落地的三个关键细节
  • TDengine 数据函数 TAN 用户手册
  • 【数据结构】顺序结构二叉树详解
  • 魔法自助建站网站建设需要准备什么软件
  • 酒吧网站设计大连网站建设ewaylife
  • Oracle_E_Business 远程命令执行漏洞复现(CVE-2025-61882)
  • P1228 地毯填补问题(分治)
  • 苍穹外卖 —— 文件上传和菜品的CRUD
  • 高性能MySql阅读
  • 第3章、MySQL乱码的解决-字符集
  • Ubuntu 安装 Rancher
  • 什么是慢SQL
  • 【人工智能数学基础】多元高斯分布
  • 做网站加入广告联盟做网站的前端是做什么
  • 郑州网页网站制作汕头网站推广优化
  • python电影票房数据可视化分析系统 不同档期电影票房Flask框架 艺恩电影票房网站 requests爬虫(建议收藏)✅
  • webrtc弱网-VivaceUtilityFunction源码分析与算法原理
  • 科技行业ERP系统选择指南:Oracle NetSuite的全面解析
  • 第一个程序HelloWorld
  • 数据分析过程中,发现数值缺失,怎么办?
  • 电商网站设计图海口网站建设好
  • 【自动化测试函数 (上)】Web自动化测试实战精要:定位、操作与窗口管理三部曲
  • 超越传统管理:迈向无感衔接、全域协同的医美运营新范式