cuDNN

CUDA Deep Neural Network library

cuDNN(CUDA Deep Neural Network library)とは、NVIDIAが提供するGPU向けのディープラーニング用高速ライブラリです。畳み込み演算、プーリング、正規化、活性化関数など、ニューラルネットワークの基本演算をGPU上で高度に最適化して実行するためのプリミティブを提供します。

cuDNNの役割

cuDNNは深層学習フレームワーク(PyTorch、TensorFlowなど)のバックエンドとして動作し、ユーザーが明示的に呼び出すことは稀ですが、GPU上でのニューラルネットワーク演算の高速化に不可欠な存在です。畳み込み演算では複数のアルゴリズム(Winograd、FFTベースなど)から最適なものを自動選択する機能も備えています。

表:cuDNNの要点まとめ
ひとことで言うとディープラーニングの基本演算を高速化する、NVIDIA製の専用ライブラリ。
何がうれしいか畳み込みなどの計算が、自前実装より何倍も速くなる。
注意点CUDAとのバージョン対応が厳密。組み合わせを間違えると動かない。

主要な最適化機能

cuDNNは畳み込みの順伝播・逆伝播、バッチ正規化、RNN/LSTM演算、マルチヘッドアテンション、ソフトマックスなど、幅広いDNN演算をカバーしています。Tensor Coreを活用した混合精度演算にも対応し、FP16やBFloat16での学習・推論を効率的に行えます。

図:cuDNNの役割
1フレームワークが呼ぶPyTorch/TensorFlow
▶
2cuDNNが最適実装畳み込み・正規化など
▶
3GPUで実行ハードに合わせて最適化
▶
4高速に結果を返す自前実装より大幅に速い

バージョンの進化

cuDNNはNVIDIAのGPUアーキテクチャの進化に合わせて継続的にアップデートされ、新しいGPU世代の性能を最大限引き出すための最適化が行われています。深層学習フレームワークのバージョンと対応するcuDNNバージョンの互換性に注意が必要です。