Triton for MTIA: Bridging the Programming Model Gaps for Custom AI Accelerators
本論文は、MetaのカスタムアクセラレータMTIA-2i上におけるTritonプログラミング言語の初のプロダクション規模でのデプロイメントを提示するものであり、新しいコンパイラバックエンドと最小限の言語拡張が、MLフレームワークとカスタムハードウェアの間の溝を埋める高性能かつ効率的なカーネル開発を可能にすることを実証している。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
あなたは、大陸を横断して乗客(データ)を運ぶための、巨大で高速な鉄道システムを構築しようとしていると想像してください。長年、利用可能な列車は、誰もが運転方法を知っている標準的なハイテク電気列車(GPU)だけでした。それらには自動ドア、内蔵GPS、そしてスムーズな乗り心地が備わっていました。しかし最近、新しいタイプのエンジンが発明されました(カスタムAIアクセラレータ)。この新しいエンジンは、非常に強力で重貨物の輸送に特化していますが、非常に独特です。自動ドアはなく、手動で開閉しなければなりません。GPSも搭載されておらず、自分で地図を描かなければなりません。そして、古い列車と同じ線路は走りません。
問題は、列車の車両を作るエンジニア(ソフトウェア開発者)が、使いやすい古い電気列車に慣れすぎていることです。もし彼らがこの新しい超高速エンジンを使いたいと思ったら、全く新しい、難しい運転方法を学ぶか、あるいは新しいルートができるたびにゼロから新しい車両を作り直さなければなりません。これがすべてを遅らせています。大きな疑問は、「古い、使いやすい運転スタイルを、スピードの利点を失うことなく、この奇妙で新しいエンジンで機能させるように教え込むことはできるのか?」ということです。この論文は、まさにそのギャップを埋めることを試みており、標準的なAIソフトウェアの馴染み深い世界と、Metaのような企業がAIモデルを実行するために構築した、一風変わったカスタムハードウェアの世界を繋ごうとしています。
ストーリー:新しいエンジンに古い言葉を教える
FacebookやInstagramの運営元であるMetaは、AIモデルをより速く、より安価に実行するために、MTIA-2iと呼ばれる独自の特殊なコンピュータチップを構築してきました。MTIA-2iを、カスタムメイドのレーシングカーのエンジンだと考えてください。それは特定の作業において驚異的な性能を発揮しますが、ほとんどのAIプログラマーが使い慣れている標準的なエンジン(GPU)とは構造が異なります。
AIの世界には、Tritonと呼ばれる人気のプログラミング言語があります。Tritonは、AIのための「ユニバーサルリモコン」だと考えることができます。開発者は、標準的なGPUに対してデータの動きを指示するために複雑で乱雑なコードを書く代わりに、Tritonを使ってシンプルでクリーンなコードを書きます。すると、スマートなコンパイラが、それをGPUが理解できるマシン言語へと翻訳してくれます。これは、機械と話す術を知っている翻訳者に、英語で話しかけているようなものです。
しかし、Tritonはもともと標準的なGPUエンジンのためだけに設計されました。Metaが自社のカスタムエンジンであるMTIA-2iでTritonを使用しようとしたとき、それは機能しませんでした。「リモコン」が新しいエンジンのボタンに適合しなかったのです。MTIA-2iエンジンは非同期的に動作し(命令を受けてから後で実行する)、独自の「サーキュラーバッファ(循環バッファ)」方式でメモリを管理し、すべてをスムーズに流すために非常に具体的な指示を必要とします。標準的なTritonコードでは、これらの癖に対処できなかったのです。
論文の内容:新しいアダプターの構築
Metaのチームはこの問題を解決することに決めました。単に古いリモコンを無理やり適合させるのではなく、MTIA-2i専用の新しいコンパイラ・バックエンドを構築したのです。この新しいシステムは、超スマートなアダプターのように機能します。開発者が書くシンプルで読みやすいTritorコードを受け取り、それをMTIA-2iエンジンが必要とする複雑で低レベルな命令へと完璧に翻訳します。
彼らがどのようにこれを実現したのか、いくつかの楽しい比喩を用いて説明します。
- 「FIFO」ビュッフェライン: 標準的なGPUでは、コンピュータはスマートなビュッフェのように、皿が即座に取られ、入れ替えられる形でメモリを自動管理します。一方、MTIA-2iは、より手動に近い組み立てライン、つまり「先入れ先出し(FIFO)」バッファのようです。新しいコンパイラはこのラインを完璧に管理することを学習し、プログラマーが手動で一つ一つの皿を押し込まなくても、マシンが必要とする瞬間にデータが正確に到着するようにしました。
- 二人のシェフがいるキッチン: MTIA-2iチップには、同時に作業できる2つの「コア」(キッチンの2人のシェフのようなもの)があります。コンパイラは、作業中に互いにぶつかったり待ち時間が発生したりしないよう、調理タスクを2人の間で分割する方法を編み出しました。さらに、熟練のプログラマーが、こだわりたい場合には「誰が玉ねぎを刻み、誰がスープを混ぜるか」をシェフに正確に指示できる機能も備えています。
- 「ジグザグ」配送ルート: 例えば、64軒の家に荷物を届けなければならないとします。もし通りに沿って一直線(リニア)に進むだけなら、最初の数軒は素早く終わりますが、最後の家は永遠に待ち続けることになります。チームは、「ジグザグ」の配送ルート(行ったり来たりするルート)を用いることで、作業のバランスがより良く保たれることを発見しました。彼らは、プログラマーがこのよりスマートなルートを簡単に選択できるように、Tritonにこの機能を追加しました。
結果:高速、柔軟、そして実戦への準備完了
チームはこれを研究室の中だけで作ったのではありません。実際に実社会で稼働させました。彼らは、これらの新しいTritonカーネルを、60種類もの異なるAIモデルのプロダクション環境へのデプロイに成功しました。
判明したことは以下の通りです:
- スピード: シンプルなTriton言語で書かれたコードは、エキスパートが書いた複雑な低レベルC++(チップの「ネイティブ」言語)によるコードと同じ速度で動作しました。実際、行列積(GEMM)という重い数学的タスクにおいて、Tritonコードはチップの理論上の最大速度の80%以上に達しました。
- 普及率: わずか1四半期のうちに、Tritonを使用しているモデルのタイプは3倍に増加しました。
- インパクト: 現在、Tritonはこれらのモデルにおけるレイヤーの50%、および**非GEMM実行時間の47%**を処理しています。これは、作業のほぼ半分がこの新しい使いやすいシステムによって行われていることを意味します!
なぜこれが重要なのか
この論文は、「書きやすさ」と「超高速」のどちらか一方を選ぶ必要はないと主張しています。これまでは、MTIAのようなカスタムチップを使いたい場合、低レベルのコーディングの達人になり、すべてをゼロから書かなければなりませんでした。一方で、Tritonのような高レベル言語を使いたい場合は、標準的なGPUに縛られていました。
このギャップを埋めることで、Metaは、高レベル言語がほぼあらゆるカスタムハードウェアに適応できることを示しました。これは、将来、企業がさらに奇妙で特化したAIチップを構築したとしても、開発者がそのたびに新しい難しい言語を学ぶ必要がないことを意味します。彼らは使い慣れた強力なツールを使い続け、コンパイラが新しいハードウェアの面倒な詳細を処理してくれるのです。
また、論文では、以前にKNYFEという別の非常に低レベルな言語を試みたものの、多くの人々にとって学習が難しすぎたため断念したことについても述べています。彼らは、柔軟な高レベル言語であるTritonに、いくつかの小さなカスタム調整を加えることで、AI開発を迅速かつ効率的に保つための勝利の方程式であることを証明しました。
要約すると、適切なコンパイラの魔法があれば、たとえ「テレビ」がどれほど奇妙なカスタムメイドのものであっても、画質を落とすことなく、「ユニバーサルリモコン」を機能させることができるということを、この論文は示しているのです。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。