Communityコーディング&開発github.com

最適化ハンドオフ (kernel-optimize)

Primus-Turboから自律カーネル最適化ループへハンドオフするためのスキルです。カーネルパス、テスト/ベンチマークコマンド、スコアリング指標、実行モード、高速バリデーションハーネスなど、カーネルキャンペーンに必要な前提情報を収集して引き渡します。パフォーマンスのスポットチェックではなく、カーネルをハードウェア限界まで押し上げる際に使用します。

最適化ハンドオフ (kernel-optimize) とは?

このスキルは、Primus-Turboカーネルの最適化キャンペーンを自律的に実行するためのインターフェースです。具体的には、最適化ループに必要な前提情報(カーネルソースパス、テスト/ベンチマークコマンド、評価指標、実行モード、高速バリデーションハーネス)を収集し、kernel-optimizeループに引き渡す役割を担います。ループは「DEFINE_TARGET→PREPARE_ENVIRONMENT→BASELINE→(ANALYZE→OPTIMIZE→VALIDATE)*→REPORT」のプロセスで進行し、各ラウンドで1仮説のテスト、正しさのゲート、受け入れ/ロールバックの管理が行われます。高速バリデーションには`quick_test_bench.py`を使用し、ラウンド間の形状ごとのリグレッションゲートとして機能します。スキーマ固定のCSV(例:ラベル、B/M/N/K次元、TFLOPS、チェック)を通じて一貫した計測が保証され、Triton(Python)およびHIP/CK(C++)の両方のバックエンドをサポートします。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Z-Y00/rocm-skills/tree/main/skills/primus-turbo-develop/optimize-handoff

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

最適化ハンドオフ (kernel-optimize) は何をしますか?

目標がカーネルをハードウェア限界まで押し上げることである場合(単なるパフォーマンスのスポットチェックではなく)、このファイルがPrimus-Turboと../../kernel-optimize/SKILL.mdの自律最適化ループとの間のインターフェースとなります。このループが必要とする前提情報を提供します。最初にハブ../SKILL.mdを読んでください。

プロセス

  1. 環境を確認 — pip show primus_turbo;編集可能インストールでなければ再インストール(ハブ SKILL.md → ビルド)。
  2. kernel-optimize/SKILL.md 「前提情報」を読む — ループが必要とするものを理解する。
  3. 前提情報を収集する 対象のオペレーションについて(以下の表 + ハブ SKILL.md のコードマップ/コマンド)。
  4. ハンドオフ — kernel-optimize/SKILL.md へ;ループは DEFINE_TARGET → PREPARE_ENVIRONMENT → BASELINE → (ANALYZE → OPTIMIZE → VALIDATE)* → REPORT を実行する。
  5. 受け入れ — プロジェクトに戻り:完全なスイート pytest tests/pytorch/ -v を実行し、レポートを確認し、クリーンな差分/コミットを確認する。

ループを開始する前に、../../../rules/iteration_rules.mdc を読んでください:1ラウンドにつき1仮説、パフォーマンスの前に正しさのゲート、受け入れ/ロールバックの系列、受け入れられたすべての改善は実際のトレーニングステップに移行可能でなければならない(id(...) キーの活性化/勾配出力キャッシュなし、一様分布のみのGroupGemmショートカットなし)。

前提情報(オペレーションごと)

要件入手先
カーネルソースファイルパスハブ SKILL.md → コードマップ
集中テストコマンドハブ SKILL.md → テスト・ベンチマーク;例:pytest tests/pytorch/ops/test_gemm_fp8.py -v -k "blockwise and TRITON"
集中ベンチマークコマンド../verify-performance/SKILL.md;例:PRIMUS_TURBO_GEMM_BACKEND=TRITON python benchmark/ops/training/bench_gemm_turbo.py --dtype fp8 --granularity blockwise
ベンチマーク出力形式/メトリクス../verify-performance/SKILL.md (Forward/Backward TFLOPS、Check ゲート)
高速バリデーションハーネス以下の「高速バリデーション」
スコアリングルール以下の「最適化スコアリング」
execution_mode + 再ビルド以下の「最適化環境」

最適化環境

バックエンド/言語推奨 execution_mode変更後の再ビルド
Triton (Python)repo-modeなし(編集可能インストール)
HIP / CK (C++)、小さな/パラメータ変更repo-modeGPU_ARCHS=<arch> pip install --no-build-isolation -e . -v
HIP / CK (C++)、新しいカーネル/大量の試行錯誤workspace-modekernel-optimize/SKILL.md の最小スタックに従う

最適化スコアリング

Check 列は厳格なゲートです — FAIL/ERROR の形状がある候補は拒否されます。

キャンペーン種別primary_metric(集約 = PASS形状の幾何平均)
計算バウンド、フォワードのみForward TFLOPS
計算バウンド、フォワード+バックワード(トレーニング)Combined Step TFLOPS(フォワード/バックワードは診断用に保持)
メモリバウンド(要素演算、量子化)Forward GB/s / Backward GB/s

結合ステップの導出(fwd+bwd GEMMクラスのオペレーションに推奨)は ../verify-performance/SKILL.md にあります。primary_metric は DEFINE_TARGET でユーザーと確認してください。

高速バリデーション

2つのツール、別々の役割 — 絶対値を比較しないでください(異なるタイミングエンジンを使用します):

  • quick_test_bench.py(このフォルダ内、キャンペーンディレクトリにコピー)は、ラウンド間の形状ごとのリグレッションゲートの信頼できる情報源です。BASELINE(ラウンド1)および各VALIDATEラウンドはこのスクリプトを実行し、その --summary-csv 出力を比較します。手作りの time.perf_counter ループを使用します。
  • 完全な bench_<op>_turbo.py(../verify-performance/SKILL.md 参照、torch.utils.benchmark.Timer)は、(i) 完全な形状セットから representative_shapes を選択するため、および (ii) キャンペーン後の最終受け入れのためにのみ使用されます。

両方のバリデーションレベルは quick_test_bench.py を介して実行され、SHAPES のみが異なります:

  • 完全バリデーション(BASELINE + 最終受け入れ)→ SHAPES = すべての target_shapes。
  • 高速バリデーション(各VALIDATEラウンド)→ SHAPES = 3–5個の representative_shapes サブセット。

representative_shapes:BASELINE実行からの Check=PASS 形状のみで、小規模(起動オーバーヘッド)+ 大規模(計算/メモリ)スケールをカバーし、高分散形状を優先します。manifest.yaml: representative_shapes に記録します。

ハーネス: テンプレート quick_test_bench.py が標準リファレンスです。PREPARE_ENVIRONMENT 中に、SHAPES を空にして <target_backend> を設定した状態で <campaign_dir>/quick_test_bench.py にコピーします。BASELINE では SHAPES をすべての target_shapes で埋め、VALIDATE ラウンドでは representative_shapes に絞ります。対象のオペレーション/設定に応じて調整し、--summary-csv ライターとカラムスキーマは維持してください(非GEMMオペレーションについては以下のスキーマ範囲の注釈を参照)。

測定一貫性契約: BASELINE(ラウンド1)および各VALIDATEは、同じ信頼できるCSVを --summary-csv を介して読み取り、ラウンド間で同一のパーサーによって解析されます。そのパーサーは、設定されていればオプションの mcp__turbo__parse_bench_csv MCPヘルパー、そうでなければ以下のカラムをキーとした直接の csv.DictReader です。特定のリーダーは重要ではありません;スキーマを固定することが重要です。スキーマはこれらのカラムと完全に一致する必要があります(ずれると形状ごとのリグレッションゲートが暗黙的に無効になります):

label,B,M,N,K,Check,Forward TFLOPS,Forward TFLOPS_stddev,Backward TFLOPS,Backward TFLOPS_stddev,Forward Time (ms),Backward Time (ms),out_snr,da_snr,db_snr

Check は PASS / FAIL を使用します;*_stddev はメトリクスの単位での絶対標準偏差です。呼び出しを manifest.yaml に quick_command: "python <campaign_dir>/quick_test_bench.py" として記録します。BASELINEおよび各VALIDATEは --summary-csv <round_dir>/artifacts/benchmark.csv を追加します。

スキーマ範囲: 上記のカラムは GEMMクラス固有 です(M,N,K 次元、Forward/Backward TFLOPS、out_snr/da_snr/db_snr)。非GEMMオペレーションの場合は、label、Check、*_stddev の規則は維持しつつ、GEMM専用カラムを primary_metric が必要とするカラムに置き換えてください。例えば、「最適化スコアリング」に従ったメモリバウンドオペレーションは、TFLOPS の代わりに Forward GB/s / Backward GB/s を使用し、単一出力オペレーションは out_snr/da_snr/db_snr を独自の正しさメトリクスに置き換えます。どのスキーマを選んでも、BASELINE で固定し、全ラウンドでバイト単位で同一に保ち、使用する CSV リーダー(設定されていれば mcp__turbo__parse_bench_csv マッピング、そうでなければ直接の csv.DictReader)をそれに合わせて更新してください — 形状ごとのリグレッションゲートは正確なカラム名に依存します。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル