buddy-compiler/buddy-mlir

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

これは何か

Buddy MLIR は、LLVM の MLIR インフラストラクチャ上に構築されたオープンソースのコンパイラフレームワークです。開発者はドメイン固有言語(DSL)を定義し、CPU、RISC‑V コア、NVIDIA GPU などのドメイン固有ハードウェア(DSA)上で効率的に実行されるコードを生成できます。このプロジェクトには、カスタムバイナリ形式(.rax)にコンパイルされ、小さなランタイム(buddy‑cli)で実行される、既製のモデルパイプライン(例:DeepSeek R1、Whisper、Qwen3‑VL)が含まれています。

なぜ重要か

現代の AI モデルは巨大でハードウェアを意識しています。最高のパフォーマンスを得るには、モデル表現とターゲットアクセラレータの緊密な共同設計がしばしば必要です。Buddy MLIR は、高レベルの MLIR パスを書き、ハードウェア固有の低レベル化をプラグインし、CUDA やアセンブリを手書きすることなく実行可能なバイナリを生成するための単一の場所を提供します。これにより、研究者やチップ設計者が新しい AI カーネルを試し、RISC‑V やカスタム ASIC などの新しいアーキテクチャでベンチマークするための障壁が低くなります。

誰が見るべきか

  • AI コンパイラ研究者:新しい方言や最適化をプロトタイプするためのモジュール式 MLIR ベースのスタックが必要な方。
  • ハードウェアアーキテクト:ドメイン固有アクセラレータを構築し、既存の大規模言語モデルワークロードをそれらにコンパイルする方法を求めている方。
  • ML エンジニア:最先端のモデル(DeepSeek、Whisper、Qwen3‑VL)を非標準プラットフォーム(RISC‑V、マルチ CPU NUMA ノード、GPU)で最小限の手動調整で実行することに興味がある方。
  • 学生:ディープラーニングワークロードのコンパイラパイプラインを学んでいる方。リポジトリにはエンドツーエンドの例と 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. オプション – 簡単な pip インストールのために wheel をビルド(scripts/release.sh)するか、エンドツーエンドテストスイートを有効にします(-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 ビルドのためのヘルパースクリプト。
  • ドキュメント – 環境設定、レイヤー分割、many‑linux の注意事項、貢献ガイドラインをカバーする広範な docs/。

TL;DR

Buddy MLIR は、高レベル AI モデルとカスタムハードウェアを橋渡しする、本格的で研究レベルのコンパイラスタックです。統一された MLIR ベースのワークフローで、CPU、RISC‑V、または GPU 上で大規模言語ビジョンモデルをコンパイル、最適化、実行する方法を提供します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト