- KarpathyのAutoresearchをGPUカーネル最適化に適用
- PyTorchモデルを入力すると、自動でTritonまたはCUDA C++カーネルを最適化するGPUカーネル自動研究ツール
- モデルのボトルネックカーネルをプロファイリング・抽出・最適化・検証する完全自動化パイプラインを提供
- Amdahlの法則ベースのオーケストレーションで優先順位を調整し、各実験は約90秒で、夜間に数百回の反復が可能
- KernelBenchと統合され、250件以上の問題に対して50〜300回の反復実験を実施し、単発生成よりも体系的な探索が可能
- TritonとCUDA C++のデュアルバックエンド、正確性優先の検証、単一ファイル修正構造により、効率的で再現可能なカーネル最適化を支援
仕組み
- AutoKernelはPyTorchモデルを入力として受け取り、次の段階を実行
- プロファイリングでGPUのボトルネックカーネルを特定
- 抽出して独立したTritonまたはCUDA C++カーネルに分離
- 自動最適化ループを通じて修正・ベンチマーク・維持/ロールバックを反復
- 正確性検証後に全体の速度向上を報告
program.mdに含まれる指示に基づいてkernel.pyを修正し、bench.pyを通じて5段階の正確性検査とroofline分析を実行
- 各実験は約90秒、1時間あたり約40回、ひと晩で約320回の実験が可能
実行と構成要素
- 必須環境: NVIDIA GPU(H100/A100/RTX 4090)、Python 3.10+、uvパッケージ
- 主なスクリプト構成
profile.py: GPU時間基準でカーネルを順位付け
extract.py: 上位のボトルネックカーネルを抽出
bench.py: 5段階の正確性および性能ベンチマーク
orchestrate.py: Amdahlの法則ベースのマルチカーネルスケジューリング
verify.py: モデル全体を検証し、速度向上を報告
program.mdには6段階の最適化戦略、競合処理、意思決定フレームワークが含まれ、長時間の自動実行が可能
対応カーネルとサンプルモデル
- 9種類のカーネルタイプに対応: matmul, softmax, layernorm, rmsnorm, flash_attention, fused_mlp, cross_entropy, rotary_embedding, reduce
- 各カーネルにはPyTorch基準実装(
reference.py)と、Triton/CUDAの初期版(kernels/, kernels/cuda/)を同梱
- サンプルモデル: GPT-2、LLaMA(7Bを含む)、BERT-base、ユーザー定義モデル
- HuggingFaceモデルも
uv sync --extra modelsで連携可能
KernelBench統合
- KernelBench(Stanford Scaling Intelligence Lab)と統合され、AI生成GPUカーネルの標準ベンチマークを実施
- AutoKernelは問題ごとに50〜300回の反復実験を行い、最適化空間を体系的に探索
- 主なツール
bridge.py: 問題のロードと初期カーネル生成
bench_kb.py: 正確性・性能評価
scorer.py: 全レベルのスコア計算
program_kb.md: KernelBench専用エージェント指示
HuggingFace Hubへのエクスポート
- 最適化済みカーネルをHuggingFace Hubへエクスポートし、
get_kernel()で簡単に読み込み可能
export_hf.pyでCUDAカーネルのエクスポートとアップロードをサポート
設計原則
- Triton + CUDA C++のデュアルバックエンド: Tritonは高速な反復、CUDAは最高性能を提供
- 正確性優先: PyTorchの結果と一致しなければ即座にロールバック
- Amdahlの法則ベースのオーケストレーションにより、全体性能への寄与度に応じて優先順位を決定
- 単一ファイル修正構造(
kernel.py)により、変更追跡と復旧が容易
- TSVログ(
results.tsv)で実験結果をシンプルかつ可読性高く記録
結果記録形式
results.tsvには各実験の番号、カーネルタイプ、スループット(TFLOPS)、レイテンシ、GPUピーク比、PyTorch比の速度向上、正確性、VRAM使用量、説明が記録される
プロジェクト背景
- Andrej Karpathyのautoresearchの概念に着想を得て、LLM研究向けの自律AIエージェント構造をGPUカーネル最適化に適用
- KernelBench統合はStanford Scaling Intelligence Labの研究に基づいており、AutoKernelは単発生成ではなく反復的な最適化を実行
- プロジェクトはRightNow AIのForgeチームが開発し、MITライセンスで公開
1件のコメント
Hacker Newsのコメント
本当に素晴らしいプロジェクトだと思う
自分もここ数週間、似たようなものを作っていたが、もっと汎用的で過剰設計なバージョンだった
Triton と特定のカーネルだけに絞ったこのアプローチは、シンプルでありながら効率的だ
ただ、進捗グラフがわかりにくい。4096x4096x4096 の fp16 matmul ベンチマークのように見えるが、cuBLAS 比で 1.31 倍向上と言いつつ、187 TFLOPS、つまりピーク利用率 18.9%しか出ていない
cuBLAS はもっとピークに近い性能を出せるはずなので、おそらく CPU オーバーヘッドか別のボトルネックがあるのだと思う
ベンチマークは本当に難しいが、今後 6 か月でこの分野は非常に有望だと思う
これが llama.cpp のような場所で動くようになれば、もっと大きな恩恵がありそうだ
さまざまな量子化カーネルやハードウェア構成が存在し、個人ユーザーも多いため、効率改善の幅は大きいはずだ
このプロジェクトがそこにコントリビューターとして参加してくれるとよいと思う
llama.cpp には Q4_K_M、Q5_K_S、Q8_0 など、さまざまな手作業でチューニングされた CUDA カーネルがあり、それぞれ異なるハードウェアプロファイルを狙っている
GPU ごとに自動最適化できれば、とてつもなく大きな変化になるだろう
現状では、同じ量子化フォーマットでも RTX 3090 と 5070 Ti の間で性能差が大きいからだ
llama.cpp のようにハードウェアの多様性が大きい環境こそ、自動カーネル探索が最も力を発揮する場所だ
すごい!
私は Apple Silicon 向けに同じ機能を追加しているところだ
自分のプロジェクト autoresearch-everywhere で、autoresearch を本格的なツールにする作業を進めている
何かおかしい
4kx4kx4k fp16 GEMM を基準にすると、cutlass のほうが 3 倍ほど速い
TVM のAnsorのような自動スケジューリングと比較ベンチマークを行ったのか気になる
まだ始まったばかりだ
参考までに、Google はすでに 2 世代前のモデルで似たようなことをやっていた
2025 年 5 月のブログ記事 AlphaEvolve では、大きな行列積をより小さな部分問題に分割する方式によって、Gemini アーキテクチャの中核カーネルを 23% 高速化し、学習時間を 1% 短縮したと発表していた
こうした技術が今や「自宅でも」可能な時代になったということだ
特に最近はRL ベースの学習が増えているため、推論速度の向上がそのまま学習速度の向上につながるだろう
Swift や Rust のようなオープンソース言語ランタイムにもこうした最適化が入り、最後の一滴まで性能を搾り取れる日がいつ来るのか気になる