
2025/12/05 6:04
CUDA-l2: Surpassing cuBLAS performance for matrix multiplication through RL
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
改善された概要
CUDA‑L2 は、NVIDIA A100 GPU 上で大規模言語モデルの半精度(16ビット)行列乗算カーネルを約1,000 (M,N,K)構成にわたる強化学習で自動調整する新しいライブラリです。PyTorch の組み込み
matmul、cuBLAS、cuBLASLt‑heuristic、および cuBLASLt‑AutoTuning を上回り、単一の A100 カードにおいて測定可能な速度向上を実現します。これにより LLM ワークロードの推論スループットとコストが改善されます。
主な詳細:
- 2025年12月2日にリリース。A100 用に最適化されたカーネルで、16ビット積算器を使用します。
- 今後のリリースでは 32ビット積算バリアントが追加され、Ada Lovelace、Hopper、および Blackwell GPU へのサポートも拡張予定です。
- 速度向上は A100 にみることが確認されています。RTX 3090 や H100 の結果については保証できませんが、発生する可能性があります。他のハードウェア用カーネルは段階的にリリースされます。
- 1,000 構成セットに含まれない行列サイズの場合は、最も近い大きな構成へゼロパディングを行うか、GitHub のイシューでカスタムカーネルを要求してください。
前提条件と設定:
- PyTorch 2.6.0 以降がインストールされた Python 環境。
- CUTLASS v4.2.1 をクローン (
)。git clone -b v4.2.1 https://github.com/NVIDIA/cutlass.git cutlass
とCUTLASS_DIR=/path/to/cutlass
(A100/Ampere 用)を設定。TORCH_CUDA_ARCH_LIST="8.0"
評価:
eval_one_file.sh を実行し、--mnk、--warmup_seconds、--benchmark_seconds、--base_dir、--gpu_device_id、--mode およびオプションの --target_qps などの引数を指定します。
サポート: GitHub のイシューやメール(jiwei_li@deep-reinforce.com)で質問またはカスタムカーネルリクエストを提出してください。
本文
CUDA‑L2:強化学習でマトリクス乗算のcuBLAS性能を超える
イントロダクション
CUDA‑L2 は大型言語モデル(LLM)と強化学習(RL)を用いて、Half‑precision General Matrix Multiply (HGEMM) CUDA カーネルを自動最適化します。A100 上で 1 000 個の
(M,N,K) 設定に対し、torch.matmul、cuBLAS、cuBLASLt‑heuristic、cuBLASLt‑AutoTuning のいずれよりも一貫して高速です。
スピードアップ結果
- A100 上で 1 000 個の設定を対象に、CUDA‑L2 は
/ cuBLAS / cuBLASLt‑heuristic / cuBLASLt‑AutoTuning を上回る(添付チャート参照)。torch.matmul
新機能
- 2025年12月02日:A100 用 HGEMM カーネルを 1 000 個の設定に最適化してリリース。
次のタスク
- A100 向け 32‑ビット累積器付き HGEMM (
とSM80_16x8x16_F16F16F16F32
) を公開。F32F16F16F32 - より密度の高い行列設定(エントリ数増加)をサポート。
- Ada Lovelace、Hopper、Blackwell など他 GPU へ拡張。
- オープンソース LLM 用にデプロイを簡素化。
FAQ
Q: A100 カーネルは RTX 3090 や H100 でも動作しますか?
A: A100 用に訓練されたカーネルはそのアーキテクチャ向けに最適化されています。他の GPU 上で実行できる場合もありますが、スピードアップは保証されません。各 GPU ファミリー用に段階的にカーネルをリリースします。
Q: 私の行列サイズ (M,N,K) が設定リストにありません。
A:
- もっと大きい近似設定を選び、ゼロでパディングします。
- GitHub Issue に寸法を報告すると、要望があればカーネルを追加します。
インストール & セットアップ
1. 前提条件
- Python – どの環境でも可。
- PyTorch – バージョン ≥ 2.6.0。
2. CUTLASS のクローン
CUDA‑L2 は NVIDIA CUTLASS に依存します。タグ
v4.2.1 を cutlass フォルダにクローンしてください:
git clone -b v4.2.1 https://github.com/NVIDIA/cutlass.git cutlass
⚠️ 注意
正しい CUTLASS バージョン () を使用し、v4.2.1を正しく設定してください。そうでないとビルドが静かに失敗します。CUTLASS_DIR
3. 環境変数
ビルドまたは実行前に:
export CUTLASS_DIR=/path/to/your/cutlass export TORCH_CUDA_ARCH_LIST="8.0" # 例:A100 / RTX 30 系列なら "8.0"
利用方法
評価スクリプト
eval_one_file.sh を実行します。
オフラインモード(バッチ処理)
./eval_one_file.sh \ --mnk 64_4096_64 \ --warmup_seconds 5 \ --benchmark_seconds 10 \ --base_dir ./results \ --gpu_device_id 7 \ --mode offline
サーバーモード(リクエストベースシミュレーション)
./eval_one_file.sh \ --mnk 64_4096_64 \ --warmup_seconds 5 \ --benchmark_seconds 10 \ --base_dir ./results \ --gpu_device_id 7 \ --mode server \ --target_qps 100
引数リファレンス
| 引数 | 説明 |
|---|---|
| 問題サイズ(例:)。 |
| タイミング前のウォームアップ時間。 |
| ベンチマーク実行時間。 |
| コンパイル・出力結果を保存するディレクトリ。 |
| GPU ID(例:)。 |
| 実行モード: または 。 |
| 時に必須;目標クエリ/秒。 |
お問い合わせ
ご質問がある場合は GitHub Issue を開くか、jiwei_li@deep-reinforce.com までメールしてください。