CUDA Academy · レッスン

ディープラーニングのための cuDNN

大規模な畳み込みとテンソル演算

レッスン 4/413 ステップ

「ディープラーニングのための cuDNN」はCoddyKit上の無料CUDA Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCUDA Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CUDA Academyコースには全4レッスンが含まれています。

AIフレームワークを支えるエンジン

cuDNNはNVIDIAのディープラーニングライブラリです。PyTorchやTensorFlowは、高速な畳み込みやその他のニューラルネットワーク構成要素のためにcuDNNを利用しています。🧠

畳み込みに支援が必要な理由

畳み込みは画像上で小さなフィルターを移動させながら、大量の計算を行います。cuDNNはこれを単純なカーネルよりはるかに高速に実装します。

まずハンドルから始める

cuBLASと同様に、cuDNNはハンドルに状態を保持します。ハンドルは1回作成してすべての処理で再利用し、終了時に破棄します。

cudnnHandle_t h;
cudnnCreate(&h);

データを記述する

cuDNNはディスクリプタを介して動作します。テンソルディスクリプタには形状、データ型、レイアウトが記録されるため、ライブラリは処理対象を正確に把握できます。

cudnnTensorDescriptor_t xDesc;
cudnnCreateTensorDescriptor(&xDesc);

NCHWレイアウト

テンソルは通常NCHW形式です。これはバッチ、チャネル、高さ、幅を表します。計算を正しく対応させるには、このレイアウトを正しく設定することが不可欠です。

cudnnSetTensor4dDescriptor(xDesc,
  CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, N, C, H, W);

フィルターにも専用のディスクリプタがある

畳み込みカーネルの重みには、出力チャネル、入力チャネル、フィルターの高さと幅を記述するフィルターディスクリプタを別途使用します。

cudnnFilterDescriptor_t wDesc;
cudnnCreateFilterDescriptor(&wDesc);

畳み込みの設定

畳み込みディスクリプタには、パディング、ストライド、膨張率が格納されます。これらが、フィルターを入力テンソル上でどのように移動させるかを決めます。

アルゴリズムを選ぶ

cuDNNは、速度とメモリ使用量のトレードオフが異なる複数の畳み込みアルゴリズムを提供します。テンソルの形状に最適なものを問い合わせます。

ワークスペースを確保する

高速なアルゴリズムには作業用領域が必要です。cuDNNが事前に通知するサイズのワークスペースバッファをデバイス上に確保します。

size_t bytes;
cudnnGetConvolutionForwardWorkspaceSize(...,&bytes);

順方向パスを実行する

cudnnConvolutionForwardは、ハンドル、ディスクリプタ、アルゴリズム、ワークスペースをまとめて処理し、1回の呼び出しで出力特徴マップを生成します。

cudnnConvolutionForward(h, &alpha, xDesc, x,
  wDesc, w, convDesc, algo, ws, bytes, &beta, yDesc, y);

畳み込みだけではない

cuDNNは、現代のニューラルネットワークを構成するその他の層であるプーリング、活性化、正規化も高速化します。

クイックチェック

cuDNNが高速化するよう設計されているものを思い出しましょう。

まとめ

ハンドルを設定し、NCHW形式でテンソルとフィルターを記述し、ワークスペースを使うアルゴリズムを選択して、畳み込みの順方向パスを実行しました。🎓

無料で開始

AI チューターと学ぶ C++ — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「ディープラーニングのための cuDNN」レッスンは無料ですか?

はい。「ディープラーニングのための cuDNN」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CUDA Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CUDA Academyコースには全4レッスンが含まれています。

「ディープラーニングのための cuDNN」で何を学びますか?

大規模な畳み込みとテンソル演算 ブラウザで直接実行するハンズオンコードでCUDA Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

CUDA Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCUDA Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「ディープラーニングのための cuDNN」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCUDA Academyレッスンでコードを書いて実行できますか?

はい。すべてのCUDA Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. cuBLAS GEMM を正しく使う
  2. Thrust のベクターと変換
  3. Thrust の Reduce、Scan、Sort
  4. ディープラーニングのための cuDNN
← CUDA Academyに戻る