9 ポイント 投稿者 GN⁺ 2026-03-12 | 1件のコメント | WhatsAppで共有
  • 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件のコメント

 
GN⁺ 2026-03-12
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 のようなオープンソース言語ランタイムにもこうした最適化が入り、最後の一滴まで性能を搾り取れる日がいつ来るのか気になる