【トライトン(GPUげんご)】

Triton(GPU言語) とは?

最終更新:
💡 GPUの計算をデータのかたまりで書き、コンパイラーと一緒に速さを引き出す

Tritonは、Pythonを使ってGPUのカーネルを記述する言語とコンパイラーです。CUDAとの考え方の違い、PyTorchとの関係、最適化や対応環境の確認点を説明します。

📌 このページのポイント
データのブロックでGPU計算を書くCUDAの考え方個々のスレッドTritonの考え方データのブロックGPUカーネル機器に合うコード✓ 正しさと性能を測って確かめる
書き方の考え方を比べた図。対応環境や計算内容によって、作れるコードと性能は変わります。
ひよこ ひよこ
Pythonを書けば、そのままGPUで動く?
ペンギン先生 ペンギン先生
通常のPython全体がGPUへ移るわけではないよ。Tritonのカーネルでは、Tritonが扱う演算でデータの読み込み・計算・書き込みを記述する。GPUで多くのデータをまとめて処理する部分を作る道具なんだ。
ひよこ ひよこ
CUDAと、考え方はどう違う?
ペンギン先生 ペンギン先生
CUDAで個々のスレッドの処理を書くのに対し、Tritonではデータのブロックに対する計算を中心に書くよ。コンパイラーがスレッドへの割当てやメモリを使う処理を組み立てる。ただし、ブロックのサイズや読み書きの形などは設計が必要で、GPUの仕組みを知らなくても常に最適になるわけではないね。
ひよこ ひよこ
PyTorchを使う人にも関係する?
ペンギン先生 ペンギン先生
torch.compileの既定バックエンドTorchInductorは、対応GPU向けのコード生成でTritonを使うよ。自分で書くカーネルと、コンパイラーが生成するカーネルは使い方が違う。選ぶバックエンドや機器によって処理が変わるので、すべてのモデルが全部Tritonになる、とは考えないでね。
ひよこ ひよこ
AttentionもTritonで作れる?
ペンギン先生 ペンギン先生
公式チュートリアルには行列積やfused attentionの例があるよ。ただし、Attentionの実装が全部Tritonというわけではない。特定のモデルが何を使うかや何倍速いかは実装と計測条件による。既存のライブラリで十分なら、先にそれを使う選択肢もあるね。
ひよこ ひよこ
どのGPUでも使えて、必ず速い?
ペンギン先生 ペンギン先生
使うTritonの版とGPU・ドライバー・OSなどの条件を確認しよう。公式リポジトリには対応プラットフォームが案内されている。速度は計算、データの形、メモリ転送、コンパイル時間などで変わるので、基準の実装と比べて測り、出力の正しさも確かめることが大切だよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Triton」って出てきたら「PythonでGPUの計算カーネルを書く言語とコンパイラー」と思えばだいたいOK!
📖 おまけ:英語の意味
「Triton」 = トライトンというGPU言語の名前
💬 ここではTriton言語を指すよ。NVIDIA Triton Inference Serverという推論配信の製品とは別のものなんだ。

参考資料

← 用語集にもどる