Ubuntu 18.04LTS環境へのcuDNN 8.0及びTensorRT 7.1の導入手順

はじめに

この記事では、NVIDIAのGPU高速化ライブラリであるcuDNN及び深層学習推論用SDKであるTensorRTのUbuntu上のCUDA環境への導入と、TensorRTの動作確認としてのsampleMNISTの実行についてご紹介します。

もしAWSのDeep Learning AMIを利用してCUDA環境を構築している場合はAMIにcuDNNが含まれていますので構築手順の省略が可能です。Deep Learning AMIを利用した環境への構築手順については以下の記事にてご紹介しています。
AWS Deep Learning AMI環境へのTensorRT導入手順

cuDNNとは

cuDNN(CUDA Deep Neural Network library)とはNVIDIAによって公開されている深層学習向けのライブラリで、これを利用することで深層学習をより高速に実行することができます。
参考:NVIDIA cuDNN | NVIDIA Developer

TensorRTとは

TensorRTとはNVIDIAの提供している高性能な深層学習推論用SDKで、高性能なオプティマイザーとランタイムを備えています。
NVIDIAの並列プログラミングモデルであるCUDAで構築されており、様々な深層学習フレームワークの推論を最適化することができます。
参考:NVIDIA TensorRT | NVIDIA Developer

導入環境

本記事では、以下の環境に対してcuDNN及びTensorRTの導入を行います。
・Ubuntu 18.04 LTSサーバ(on Amazon EC2 p2.xlargeインスタンス)
・CUDA 11.0
なお、CUDAの導入方法については以前の記事でご紹介しています。
Ubuntu 18.04LTSへのCUDA 11.0環境構築・確認手順|ALT-BRIDGE Technology|note

導入するcuDNN、TensorRTのバージョン

本記事では以下のcuDNN、TensorRTを導入します。
・cuDNN 8.0.4
・TensorRT 7.1.3.4
※TensorRTについては互換性の関係により最新版である7.2系ではなく7.1系を導入します。

導入準備

導入を行う前に以下の準備を行います。
・NVIDIA Developer Programへの登録
・cuDNNとTensorRTの入手及びサーバへのアップロード

NVIDIA Developer Programへの登録

cuDNNやTensorRTの入手にはNVIDIA Developer Programへの登録が必要です。
以下URLより案内に従って登録を行ってください。
NVIDIA Developer Program | NVIDIA Developer

cuDNNの入手

cuDNNを以下より入手します。
cuDNNのダウンロードにログインが必要なため、本記事ではブラウザ経由でローカルへtgzパッケージをダウンロードし、その後GPUサーバへアップロードするという手順を踏みます。
cuDNN Download | NVIDIA Developer

入手手順は以下のようになります。
・License Agreementを確認し、「I Agree To the Terms of the cuDNN Software License Agreement」にチェックを入れます
・ダウンロード候補が表示されるので、「Download cuDNN v8.0.4 (September 28th, 2020), for CUDA 11.0」をクリックします
・「cuDNN Library for Linux (x86_64)」をクリックするとダウンロードが開始されます

画像1

ダウンロードしているファイルが「cudnn-11.0-linux-x64-v8.0.4.30.tgz」であることを確認してください。
サーバへのアップロードは後ほど行いますので、引き続きTensorRTの入手へ進みます。

TensorRTの入手

TensorRTを以下より入手します。
NVIDIA TensorRT 7.x Download | NVIDIA Developer

入手手順は以下のようになります。
・License Agreementを確認し、「I Agree To the Terms of the NVIDIA TensorRT License Agreement」にチェックを入れます
・ダウンロード候補が表示されるので、「TensorRT 7.1 GA」をクリックします
・「Tar File Install Packages For Linux x86」の下の「TensorRT 7.1.3.4 for Ubuntu 18.04 and CUDA 11.0 TAR package」をクリックするとダウンロードが開始されます

画像2

ダウンロードされるファイルが「TensorRT-7.1.3.4.Ubuntu-18.04.x86_64-gnu.cuda-11.0.cudnn8.0.tar.gz」であることを確認してください。
ダウンロードが完了したら次へ進みます。

cuDNNとTensorRTのサーバへのアップロード

ダウンロードした2つのファイルを、実際に環境構築を行うGPUサーバへアップロードします。
以下ではローカルのターミナル上でscpコマンドにて転送する際の例を紹介します。ファイルのパス等は適宜読み替えてください。

以降はサーバ上にて作業を行います。

必要なPython3パッケージの導入

サンプルプログラムで利用するデータセットの取得に利用するため、サーバ上で以下のコマンドを実行し python3-pil 及び python3-numpy パッケージの存在を確認します。
パッケージが無い場合にはインストールを行います。

cuDNNの導入

サーバへアップロードしたtarファイルからcuDNNを展開します。
なお、本環境でのCUDAのインストールパスは /usr/local/cuda です。他の場所にCUDAをインストールしている場合は適宜読み替えてください。
手順は以下インストールガイドの2.3.1を参考にしています。
 Installation Guide :: NVIDIA Deep Learning cuDNN Documentation

TensorRTの導入

サーバへアップロードしたtarファイルからTensorRTを展開します。
手順は以下インストールガイドの4.4を参照しています。
Installation Guide :: NVIDIA Deep Learning TensorRT Documentation

sampleMNISTで使用するデータセットの取得

sampleMNISTとは、画像認識を得意とする深層学習フレームワークであるCaffeにて学習済みの0から9までのいずれかの数字が手書きされた画像データをランダムに読み込み、TensorRT用に処理が最適化された推論を実行するサンプルプログラムです。
参考1:TensorRT/samples/opensource/sampleMNIST at master · NVIDIA/TensorRT
参考2:Caffe | Deep Learning Framework

sampleMNISTの実行にあたり必要な画像データセットを以下の手順にて取得します。

実行後、上記を実行したディレクトリに0.pgm〜9.pgmが取得されています。

sampleMNISTのビルド

sampleMNISTのビルドを以下の手順にて実行します。
なお、環境変数 CUDA_INSTALL_DIR と CUDNN_INSTALL_DIR については、以下の実行手順の6,7行目にあるようにMakefileにて設定されているデフォルト値 /usr/local/cuda がビルド時に参照されるため、明示的には指定せずデフォルト値をそのまま利用しています。
上記と異なるパスにCUDAやcuDNNを導入している場合はmakeの実行前にそれぞれの環境変数を設定してください。

生成されたsampleMNISTバイナリの実行

生成したsampleMNISTバイナリを下記手順にて実行します。
以下の例では7を描いた画像が入力され、推論が実行された結果、数字の7が得られています。
※入力される画像の数字はランダムであるため、結果は実行するごとに変化します。

終わりに

以上でUbuntu 18.04LTS環境へのcuDNN 8.0及びTensorRT 7.1環境の構築ができました。

オルトブリッジ・テクノロジー株式会社では、CUDAやTensorRT等のGPUプログラミングに関する情報を発信しています。
企業向けのCUDAプログラミングの教育事業なども行っておりますので興味のある方は note(at)altbridge-tech.jp までご連絡ください。

この記事が気に入ったらサポートをしてみませんか?