Hugging Face CUDA カーネル エージェント スキル

Hugging Face は、コーディングエージェントに本番環境対応の CUDA カーネルの書き方を教えるエージェントスキルを開発しました。Claude や Codex といったエージェントにドメイン固有の知識を提供することで、diffusers パイプラインと transformers モデルの両方に対して、PyTorch バインディングとパフォーマンスベンチマークを備えた動作するカーネルを生成することに成功しました。

エージェントが CUDA カーネルを書くことを可能にする

CUDA カーネルの作成は、GPU アーキテクチャ固有のメモリアクセスパターン、ベクトル化戦略、warp シャッフルリダクションなど、深い知識が必要な高いハードルの作業とされてきました。Hugging Face のエージェントスキルは、エージェントがオンデマンドでロードできる構造化された形式で専門的なドメイン知識をパッケージ化することで、このギャップを埋めます。

スキル構成要素

このスキルは、約 550 トークンの構造化ガイダンスと包括的なリファレンス資料で構成されています:

  • GPU Optimization Guides: NVIDIA H100、A100、T4 GPU 向けのアーキテクチャ対応ガイドで、計算能力、共有メモリサイズ、帯域幅プロファイルをカバーします。
  • Integration Patterns: diffuserstransformers ライブラリへのカーネル統合に関する具体的なガイドと落とし穴。
  • Kernel Templates: BF16、FP16、FP32 精度向けのベクトル化メモリアクセスパターン。
  • Workflows: 分離型カーネルマイクロベンチマークとエンドツーエンドパイプライン比較のテンプレート。
  • Hub Integration: get_kernel を使用して HuggingFace Kernel Hub からコミュニティカーネルを取得する手順。

インストールと使用方法

このスキルは kernels ライブラリを通じて配布されます。kernels skills add cuda-kernels コマンドを使用して、さまざまなエージェント環境(Claude Code、Cursor、Codex、OpenCode)にインストールできます。インストール後、エージェントに対して「H100 用のベクトル化 RMSNorm カーネル(transformers の Qwen3-8B モデル対象)」など、特定のカーネルの構築を指示できます。

パフォーマンスベンチマーク

スキルの有効性を検証するため、Hugging Face は H100 80GB HBM3 GPU 上で BFloat16 精度でエージェント生成カーネルを 2 つの実世界ターゲットに対してテストしました。

Diffusers: LTX-Video

エージェントは LTX-Video ビデオ生成パイプライン向けに RMSNorm、RoPE 3D、GEGLU、AdaLN カーネルを生成しました。

  • Isolated RMSNorm Performance: カスタムカーネルは PyTorch ベースラインに対して平均 1.88x の速度向上を達成し、帯域幅効率は H100 の理論最大の 34.7% でした。
  • End-to-End Performance: 最適化カーネルはベースラインと比較して 1.06x の速度向上(12.58 it/s → 13.52 it/s)を提供し、torch.compile と組み合わせると速度向上は 1.43x に増加しました。

Transformers: Qwen3-8B

エージェントは Qwen3-8B LLM(65 個の RMSNorm モジュールを使用)向けに RMSNorm カーネルを構築しました。

  • Isolated RMSNorm Performance: カスタムカーネルは PyTorch ベースラインに対して平均 1.94x の速度向上を達成しました。
  • Scaling: シーケンス長が増加するにつれて速度向上も拡大し、128 トークンで 1.58x、8192 トークンで 2.47x に達し、長文コンテキスト推論時の RMSNorm レイテンシを実質的に半減させました。

カーネルハブを介した生成から配布まで

エージェントスキルは開発フェーズを担当し、HuggingFace Kernel Hub が配布を担当します。エージェント生成カーネルを公開するワークフローは以下の通りです:

  1. Project Structure: エージェントは kernel-builder レイアウトに従ったプロジェクトを生成し、kernel_src/(CUDA ソース)、torch-ext/(C++ バインディング)、および対象 GPU の CUDA 能力(例: H100 の場合は "9.0")を指定した build.toml 設定ファイルを含めます。
  2. Multi-Variant Build: Nix flake を使用して、すべての必要な PyTorch と CUDA 構成向けにカーネルをビルドし、環境マトリックス全体での互換性を確保します。
  3. Hub Publication: ビルドされたバイナリを HuggingFace Hub 上のモデルリポジトリにアップロードします。
  4. One-Line Loading: エンドユーザーは from kernels import get_kernel; rmsnorm = get_kernel("your-org/your-kernel") という 1 行のコードで、ローカルでのコンパイルなしに事前コンパイル済みカーネルをロードできます。

Sources