buddy-compiler/buddy-mlir

An MLIR-based compiler framework bridges DSLs (domain-specific languages) to DSAs (domain-specific architectures).

它是什么

Buddy MLIR 是一个基于 LLVM 的 MLIR 基础设施构建的开源编译器框架。它允许开发者定义领域特定语言(DSL),并生成能在领域特定硬件(DSA)上高效运行的代码,例如 CPU、RISC‑V 核心或 NVIDIA GPU。该项目提供了一系列现成的模型流水线(例如 DeepSeek R1、Whisper、Qwen3‑VL),这些模型被编译为自定义二进制格式(.rax),并通过一个轻量级运行时(buddy‑cli)执行。

为什么重要

现代 AI 模型规模庞大且与硬件紧密相关;要获得最佳性能,通常需要模型表示与目标加速器的紧密协同设计。Buddy MLIR 提供了一个单一场所来编写高级 MLIR 优化 pass、插入硬件特定的降级,并生成可运行的二进制文件,而无需手工编写 CUDA 或汇编代码。这降低了研究人员和芯片设计者尝试新 AI 内核以及在 RISC‑V 或定制 ASIC 等新兴架构上进行基准测试的门槛。

谁应该关注

  • AI 编译器研究人员,他们需要一个模块化的基于 MLIR 的栈来原型化新的方言或优化。
  • 硬件架构师,他们正在构建领域特定加速器,并希望将现有的大语言模型工作负载编译到这些加速器上。
  • 机器学习工程师,他们有兴趣在非标准平台(RISC‑V、多 CPU NUMA 节点、GPU)上以最少的手动调优运行最先进的模型(DeepSeek、Whisper、Qwen3‑VL)。
  • 学生,他们正在学习深度学习工作负载的编译器流水线;该仓库包含端到端示例和 Python 友好的 API。

如何开始

  1. 安装系统依赖 – LLVM/MLIR、flatbuffers、libnuma 等。
  2. 使用子模块克隆,并使用 CMake/Ninja 构建捆绑的 LLVM/MLIR。
  3. 创建 Python 虚拟环境,并安装 requirements.txt(pip、uv 或 conda 均可)。
  4. 构建 Buddy MLIR – 将 CMake 指向刚构建的 LLVM/MLIR 目录,启用 Python 绑定,并运行 ninja。
  5. 编译模型 – 使用 JSON 规范(例如 models/whisper/specs/base.json)运行 tools/buddy-codegen/build_model.py。可选地启用基于模板的代码生成的分层分区。
  6. 运行推理 – 使用生成的 .rax 文件与 build/bin/buddy-cli,根据需要提供提示、音频或图像。
  7. 可选 – 构建 wheel(scripts/release.sh)以便轻松 pip 安装,或启用端到端测试套件(-DBUDDY_ENABLE_E2E_TESTS=ON)。

仓库内容

  • llvm/ 子模块 – 用于构建编译器的精简 LLVM/MLIR 源码树。
  • tools/buddy-codegen/ – 将模型规范(JSON)转换为 MLIR,然后降级到自定义运行时的 Python 脚本。
  • models/ – 为 DeepSeek R1、Whisper 和 Qwen3‑VL 准备的现成规范和测试数据。
  • examples/ – 展示 IR 级转换以及如何调用运行时的小程序。
  • scripts/ – 用于发布 wheel 和基于 Docker 的 many‑linux 构建的辅助脚本。
  • 文档 – 广泛的 docs/ 涵盖环境设置、分层分区、many‑linux 注意事项和贡献指南。

总结

Buddy MLIR 是一个真实的、研究级的编译器栈,它连接了高级 AI 模型和定制硬件。它提供了一种统一基于 MLIR 的工作流,让你可以在 CPU、RISC‑V 或 GPU 上编译、优化和运行大型语言‑视觉模型。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目