pytorch/helion
A Python-embedded DSL that makes it easy to write fast, scalable ML kernels with minimal boilerplate.
Helion – Pythonに埋め込まれたGPUカーネル記述用DSL
概要 – Helionを使うと、GPU上で動作する小さなプログラムであるカーネルコードを、通常のPyTorchのような構文でPython内で直接記述できます。内部では、コードはTritonカーネル(高速なGPUマシンコードにコンパイルされる低レベル言語)に変換されます。
重要性 – 効率的なGPUカーネルを書くのは困難です。タイルサイズ、グリッド次元、メモリアクセスパターンなど、多くの低レベルな調整項目を決定する必要があります。Helionはその作業のほとんどを自動化します。単一のHelion関数は1つのGPUカーネルにコンパイルされますが、最初の起動前にオートチューナーが実行され、数百のTritonバリアントを試して最速のものを選択します。その結果、作成が容易でありながら、手動で調整されたパフォーマンスに近いカーネルが得られます。
主な機能
- PythonファーストのAPI –
@helion.kernel()でカーネルを定義し、内部で通常のPyTorchテンソルを使用します。外側のPythonコードはCPU上で実行され(割り当て、形状チェック)、内側のループはGPUコードになります。 - 自動タイル化とグリッド選択 –
hl.tileが反復空間を分割し、Helionがタイル次元、ループ順序、グリッドサイズを決定します。 - 豊富なオートチューニング – 大規模な構成空間(ブロックサイズ、ループ順序、インデックス戦略、ワープ特殊化など)を検索し、最適な構成をキャッシュして後続の実行に利用できます。また、独自の構成を指定して高価な検索をスキップすることもできます。
- メモリアクセス戦略 – ポインタベース、ブロックポインタ、TensorDescriptor(TMA)インデックスを自動的に選択し、上書きも可能です。
- リダクション、マスキング、永続カーネルのサポート – softmax、sum、大規模リダクションなどの一般的なパターンを追加コードなしで処理します。
- バックエンド – 主にTritonですが、実験的なTileIR(NVIDIA Blackwell GPU用)とCuTeバックエンド(CUDA 13+)もサポートしています。
- デバッグおよび開発ツール – 生成されたTritonコードの表示、再現可能なスクリプトの出力、インタープリターモードでのカーネル実行によるステップバイステップのデバッグが可能です。
典型的なワークフロー
@helion.kernel()とhl.tileを使用してカーネル関数を記述します。- CUDAテンソルで関数を呼び出します。最初の呼び出しでオートチューニングがトリガーされます(行列乗算の例では約10分)。
- 必要に応じて最適な
helion.Configを抽出し、ハードコードして将来のチューニングを回避します。 - 保存した構成でカーネルをデプロイし、起動時間を予測可能にします。
対象ユーザー – カスタムGPUカーネルが必要だが、TritonやCUDAを手書きしたくない研究者やエンジニア。PyTorchコードベースに自然に統合でき、既存ライブラリに特化した実装がないワークロードを高速化できます。
インストール – pip install helion(Python 3.10〜3.14、PyTorch ≥ 2.9、Triton ≥ 3.5が必要)。開発環境ではuvツールとCuTeバックエンド用のオプションの追加パッケージを使用します。
コミュニティ – ディスカッションはGPU MODE Discord(#helion)で行われています。このプロジェクトはガバナンスモデルに従い、BSDライセンスで提供されています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch