NVIDIA/cudnn-frontend
cuDNN Frontend is NVIDIA's modern, open-source entry point to the cuDNN library and a growing collection of high-performance open-source kernels.
NVIDIA cuDNN Frontend (cuDNN‑FE)
何であるか – NVIDIAのcuDNN Graph APIをラップする、軽量でヘッダーのみのC++ライブラリとPythonバインディング。現代のNVIDIA GPU(Hopper H100/H200、Blackwell B200/GB200/GB300)上で、高速なディープラーニングプリミティブ(畳み込み、GEMM、アテンション、正規化など)を構築・実行するための高レベルで使いやすい方法を提供します。また、JITコンパイル可能で実行時に選択可能な、増加するオープンソースカーネル群(Flash‑Attention / SDPA、結合GEMM‑+‑アクティベーション、ブロックスパースアテンションなど)も同梱されています。
主な特徴
- 統一されたグラフAPI – 一度
cudnn_frontend::graph::Graphオブジェクトを作成し、複数回の実行で再利用可能。 - ヘッダーのみのC++ – リンク対象のライブラリなし。単に
#include <cudnn_frontend.h>するだけ。 - Python / PyTorch統合 –
pip install nvidia‑cudnn‑frontendでcudnnPythonモジュールが提供され、pybind11バインディングとtorch.compile用のカスタムオペレータが利用可能。 - 自動チューニング&プランランク – 新しいOSS「FROST」カーネルを含む複数のエンジン候補を構築し、最速のものを自動選択。
- オープンソースカーネル – Flash‑Attention(SDPA)、Mixture‑of‑Experts向けグループGEMM、結合RMSNorm+SiLU、ブロックスパースおよびネイティブスパースアテンションなど。すべてCuTe DSLで記述され、Apache‑2.0ライセンスで提供。
- FP16、BF16、FP8、MXFP8のサポート – Hopper/Blackwellでの最新の低精度フォーマットを可能にします。
一般的な利用例
- H100/Blackwell上で最速のアテンションカーネルを必要とするカスタムTransformerモデルを構築する研究者。
- CUDAカーネルを書かずにPyTorchパイプラインにcuDNN加速レイヤーを統合するエンジニア。
- Mixture‑of‑Expertsモデルをトレーニングするチームで、メモリトラフィックを削減するための結合グループGEMM + アクティベーションカーネルを希望する人。
- 最新のGPUカーネルを検査・修正・貢献したい人(OSSカーネルはJITコンパイル可能でカスタマイズ可能)。
インストール
- Python:
pip install nvidia-cudnn-frontend(Python 3.10+、NVIDIAドライバ、CUDA Toolkit、cuDNN ≥ 8.5.0が必要)。 - C++:
include/ディレクトリをコンパイラのインクルードパスに追加し、CUDAおよびcuDNNライブラリとリンクしてコンパイルする。 - ソースから: Pythonバインディング用に
pip install -v git+https://github.com/NVIDIA/cudnn-frontend.git、C++サンプル用にはCMakeでビルド(cmake … && cmake --build .)。
エコシステムと統合
- PyTorchと連携可能(カスタムオペレータは
python/cudnn/experimental/opsに配置)。 - CUDA Graphと互換性があり、
torch.compileパイプライン内で使用可能。 - 畳み込み、行列乗算、SDPA/Flash‑Attention、RMSNormなどに関するサンプルノートブックとC++例が提供。
- ドキュメントはNVIDIAの開発者サイトにホストされ、詳細な記事を掲載するブログも運営中。
成熟度
- NVIDIAによって積極的にメンテナンスされており、PyPIにバージョン付きリリースが公開されています。
- コアのフロントエンドAPIは安定しており、新しいOSSカーネルは段階的に追加(例:FROST GEMM、Flex Attention、HSTU、DSA)。
- ロギングおよび環境レポートユーティリティにより、デバッグと再現性が向上。
ライセンス
- 主に Apache License 2.0;一部のファイルはMITライセンス(明確にマーク済み)。すべての第三者ライセンスは
THIRD_PARTY_LICENSES.txtに記載。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト