ディープラーニングのための cuDNN
大規模な畳み込みとテンソル演算
「ディープラーニングのための 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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- cuBLAS GEMM を正しく使う
- Thrust のベクターと変換
- Thrust の Reduce、Scan、Sort
- ディープラーニングのための cuDNN