PolyBlocks: A Compiler Infrastructure for AI Chips and Programming Frameworks

本論文は、MLIR ベースのモジュール型コンパイラ基盤「PolyBlocks」の設計と実装を提案し、その自動コード生成能力が PyTorch や JAX 向けに NVIDIA GPU で Torch Inductor や XLA と同等、あるいはそれ以上の性能を発揮し、個別演算においてもベンダー最適化ライブラリや手書きカーネルと競合する結果を示したものである。

Uday Bondhugula, Akshay Baviskar, Navdeep Katel, Vimal Patel, Anoop JS, Arnab Dutta

公開日 Tue, 10 Ma
📖 1 分で読めます☕ さくっと読める

Each language version is independently generated for its own context, not a direct translation.

PolyBlocks:AI 用「万能調理ロボット」の設計図

この論文は、**「PolyBlocks(ポリブロック)」という新しいシステムの紹介です。これを一言で言うと、「AI の計算を、どんな新しいハードウェア(チップ)でも、自動で最高性能にしてくれる『魔法のコンパイラ』」**です。

少し難しい話になりがちですが、料理とレストランの例えを使って、わかりやすく解説します。


1. 今までの問題:「レシピ」と「厨房」の壁

AI を動かすには、大きく分けて 3 つのレベルがあります。

  1. 高級レストラン(高レベル:PyTorch, JAX など)

    • 料理人(開発者)は「この材料で、あの料理を作って」という大まかなレシピを書くだけです。
    • しかし、実際の料理(計算)は、プロの料理人が手作業で調理するか、あらかじめ作られた**「冷凍食品(ベンダーライブラリ)」**を使う必要があります。
    • 問題点: 冷凍食品は特定の厨房(NVIDIA の GPU など)にしか使えません。新しい厨房を作ろうとすると、また冷凍食品を作る必要があり、非常に手間がかかります。また、レシピを一つ一つ調理するより、**「一気通貫で調理する(融合)」**方が速いのに、冷凍食品を使うとそれができません。
  2. 中級厨房(中レベル:Triton など)

    • 料理人が「この食材はここで切る、この鍋で炒める」という詳細な指示を書く必要があります。
    • 性能は良いですが、毎回指示を書くのは大変で、ミスも起きやすいです。
  3. 低レベル厨房(低レベル:CUDA など)

    • 料理人が「包丁を 3 回振る、火加減を 5 にする」という極端に細かい指示を書く必要があります。
    • 最高性能が出ますが、プロの職人(ハイレベルなエンジニア)しかできません。

今の課題:
新しい AI チップ(新しい厨房)を作りたいとき、既存のシステムは「冷凍食品(ライブラリ)」に頼りすぎていて、新しい厨房には対応できません。また、冷凍食品を使わないで「ゼロから調理(コード生成)」しようとすると、プロの料理人(手書きの最適化コード)に勝てないというジレンマがありました。


2. PolyBlocks の登場:「万能調理ロボット」

PolyBlocks は、この問題を解決する**「完全自動化の調理ロボット」**です。

  • 高レベルのレシピを受け取る:
    PyTorch や JAX などの高級レシピ(高レベル言語)をそのまま受け取ります。
  • 自動で最適化して調理:
    「冷凍食品」を使わず、ゼロから最高の料理(コード)をその場で作り出します
  • どんな厨房でも動ける:
    厨房(ハードウェア)が変わっても、ロボットの「調理手順(変換パス)」を少し直すだけで、新しい厨房でも最高性能を出せます。

具体的な魔法(技術的な仕組み)

PolyBlocks がやっていることを料理に例えると以下のようになります。

  • 「融合(Fusion)」の魔法:

    • 例え: 「玉ねぎを炒める」→「肉を入れる」→「ソースをかける」という工程を、**「一つの鍋で、一度も食材を移さずに」**調理する技術です。
    • 効果: 食材(データ)を冷蔵庫(メモリ)から出して、鍋(チップ)に戻す回数が激減し、調理が爆速になります。既存のシステムは、この「一度に調理する」のが苦手でしたが、PolyBlocks は得意です。
  • 「タイル化(Tiling)」の魔法:

    • 例え: 巨大なピザを一度に焼くのではなく、一口サイズ(タイル)に切って、小さなオーブン(オンチップメモリ)で次々と焼く技術です。
    • 効果: 大きな冷蔵庫から取り出す手間を減らし、小さなオーブン(高速なメモリ)の中で効率よく調理できます。
  • 「Attention(注意機構)」の最適化:

    • 例え: 最近の AI(LLM など)は、文章の「どこに注目するか」を計算する「Attention」という工程があります。これは通常、非常に時間がかかります。PolyBlocks は、この工程を**「計算とメモリの移動を完全に重ね合わせ」**、無駄な動きをゼロにします。
    • 結果: 既存の最高性能のライブラリ(FlashAttention など)と同等か、それ以上の速さを出します。

3. 実験結果:「冷凍食品」に勝つ

このロボットを実際にテストした結果は驚くべきものでした。

  • 既存の「冷凍食品」に匹敵:
    NVIDIA 製の GPU 向けに、世界中のプロが何年もかけて作り込んだ「冷凍食品(CuDNN や CuBLAS などのライブラリ)」を使わずに、PolyBlocks がゼロから作った料理は、それらと同等か、それ以上の速さでした。
  • 新しい厨房への対応:
    既存のシステムは、新しいチップが出ると「冷凍食品」を作るまで時間がかかりますが、PolyBlocks は**「調理手順(コンパイラ)」**を少し直すだけで、新しいチップでもすぐに最高性能を出せます。

まとめ

PolyBlocksは、AI 開発者が「新しいチップを作りたい」「既存のライブラリに依存したくない」と悩む時に、**「高レベルのレシピを、自動で、最高性能の低レベルな料理に変換してくれる、再利用可能な魔法のコンパイラ」**です。

これにより、AI の未来は「特定のメーカーの冷凍食品に依存する」時代から、「どんな新しいハードウェアでも、自動で最高性能を発揮できる」時代へと変わっていく可能性があります。