Skip to main content
QUICK REVIEW

[論文レビュー] cuDNN: Efficient Primitives for Deep Learning

Sharan Chetlur, Cliff Woolley|arXiv (Cornell University)|Oct 3, 2014
Parallel Computing and Optimization Techniques参考文献 16被引用数 1,026
ひとこと要約

cuDNN は、畳み込み、プーリング、活性化関数を含む、深層学習ワークロード向けに GPU で最適化された低レベルプリミティブを提供するライブラリである。高度にチューニングされたカーネルと最小限の補助メモリを活用することで、学習と推論の両方を高速化し、Caffe では 36% の高速化を達成し、メモリ使用量も削減される。Caffe や PaddlePaddle といった既存の深層学習フレームワークへのシームレスなドロップイン統合が可能である。

ABSTRACT

We present a library of efficient implementations of deep learning primitives. Deep learning workloads are computationally intensive, and optimizing their kernels is difficult and time-consuming. As parallel architectures evolve, kernels must be reoptimized, which makes maintaining codebases difficult over time. Similar issues have long been addressed in the HPC community by libraries such as the Basic Linear Algebra Subroutines (BLAS). However, there is no analogous library for deep learning. Without such a library, researchers implementing deep learning workloads on parallel processors must create and optimize their own implementations of the main computational kernels, and this work must be repeated as new parallel processors emerge. To address this problem, we have created a library similar in intent to BLAS, with optimized routines for deep learning workloads. Our implementation contains routines for GPUs, although similarly to the BLAS library, these routines could be implemented for other platforms. The library is easy to integrate into existing frameworks, and provides optimized performance and memory usage. For example, integrating cuDNN into Caffe, a popular framework for convolutional networks, improves performance by 36% on a standard model while also reducing memory consumption.

研究の動機と目的

  • HPC 分野の BLAS に類似した標準的で高度に最適化された深層学習プリミティブ用ライブラリの欠如に対処すること。
  • 畳み込みやプーリングといったコア演算のポータブルで高性能な実装を提供することで、深層学習フレームワークの負担を軽減すること。
  • フレームワーク開発者がカーネルを手動で再最適化する必要なく、進化する GPU アーキテクチャ間でのパフォーマンスポータビリティを実現すること。
  • さまざまなワークロード、特に小さなミニバッチサイズを含むものに対し、メモリのオーバーヘッドを最小限に抑えつつスループットを最大化すること。
  • 柔軟なデータレイアウトをサポートし、モデルスキーマやデータ構造を変更せずに、既存の深層学習フレームワークへのシームレスな統合を可能にすること。

提案手法

  • ライブラリは、テンソルやフィルタの不透明な記述子をサポートする C 言語 API を提供し、任意のストライドとデータレイアウトを可能にすることで、多様なフレームワークとの統合を可能にする。
  • 単精度および倍精度の両方で、畳み込み、プーリング、活性化関数の順方向および逆方向パスの最適化ルーチンを公開する。
  • 実装は、畳み込み演算の基盤として、高度に最適化された GEMM(一般行列乗算)カーネルを活用しており、GPU アーキテクチャ上で高いパフォーマンスを発揮する。
  • 補助バッファを回避することでメモリ使用量を最小限に抑え、データはユーザーが制御する GPU メモリバッファを直接管理する。
  • 柔軟なテンソル変換とサブテンソルインデクシングをサポートし、非正方形入力や非対称パディングの効率的処理が可能である。
  • 標準フレームワークレイヤーのドロップイン置き換えにより統合を実現し、必要に応じてネイティブ実装への自動フォールバックを提供する。

実験結果

リサーチクエスチョン

  • RQ1最適化された深層学習プリミティブのライブラリは、深層学習フレームワークにおけるパフォーマンスとメモリ効率をどのように向上させることができるか?
  • RQ2既存のモデルアーキテクチャーやデータレイアウトを変更せずに、GPU で最適化されたライブラリが多様な深層学習ワークロードで顕著な高速化を達成できるか?
  • RQ3このようなライブラリが、進化を続ける GPU ハードウェアプラットフォーム間でのパフォーマンスポータビリティをどの程度実現できるか?
  • RQ4このライブラリの最小限のメモリ使用量は、より大きなモデルやより大きなミニバッチサイズの学習を可能にする上で、どのような影響を及ぼすか?
  • RQ5Caffe や PaddlePaddle といった既存のフレームワークに、最小限の工学的負荷で効果的に統合できるか?

主な発見

  • NVIDIA Tesla K40 GPU を使用した bvlc_reference_caffenet モデルにおいて、Caffe に cuDNN を統合することで、全体の学習時間が 36% 速くなった。
  • 順方向パスでは 1.45 倍、逆方向パスでは 1.30 倍、テストでは 1.49 倍の高速化が達成され、学習フェーズ全体にわたり一貫した向上が確認された。
  • 行列乗算ベースの代替実装と比較してメモリ消費量が削減されたため、より大きなモデルやミニバッチサイズの学習が可能になった。
  • Tesla K10 GPU 上で Baidu の PaddlePaddle フレームワークにおいて、行列乗算ベースの畳み込み実装と比較して、平均で 30% のパフォーマンス向上を達成した。
  • 柔軟な記述子ベースのインターフェースのおかげで、モデルスキーマやデータ構造のレイアウトを変更せずに、既存のフレームワークへのシームレスな統合が実現した。
  • 非正方形入力や非対称パディングを含む、広範な入力サイズと設定をサポートしており、特に音声および自然言語処理において有用である。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。