AWS Deep Learning AMI環境へのTensorRT導入手順

はじめに

この記事では、NVIDIAの深層学習推論用SDKであるTensorRTをAWSのDeep Learning向け環境であるDeep Learning AMI(以下DLAMI)環境に導入し、サンプルプログラムであるsampleMNISTの動作確認を行う手順についてご紹介します。

DLAMIを利用したCUDA環境の構築手順については以下の記事にて紹介していますのでこちらもご覧ください。
AWS Deep Learning AMIを用いたCUDA環境の構築・確認手順

なお、上記の記事ではver.25.0のDeep Learning Base AMIを利用していますが、CUDA・cuDNNのバージョンの都合で本記事では新規に用意したver.31.0のDeep Learning Base AMI環境を利用しています。
DLAMIのアップグレードについてはAWSの以下のドキュメントにて案内されていますので必要に応じてご参照ください。
DLAMI の新しいバージョンへのアップグレード - Deep Learning AMI

TensorRTとは

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

導入環境

本記事では以下の環境へTensorRTの導入を行います。
・Deep Learning Base AMI (Ubuntu 18.04) version 31.0
・CUDA 11.0(上記DLAMIのデフォルトである10.0から切り替えて利用します。切り替え方については後述します。)
・cuDNN 8.0.4(DLAMIのCUDA 11.0にバンドルされています)

導入するTensorRTのバージョン

本記事では以下のTensorRTを導入します。
・TensorRT 7.1.3.4
※互換性の問題により、最新である7.2系ではなく7.1系を導入します。

NVIDIA Developer Programへの登録

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

TensorRTの入手

Developer Programへの登録が完了したら以下よりTensorRTを入手します。なお、入手するにあたりブラウザ上でのログインが必要なため、本記事ではローカル環境へパッケージをダウンロードし、それをDLAMI環境にアップロードするという手順を踏みます。
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」をクリックするとダウンロードが開始されます

画像1

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

サーバへのアップロード

ローカルにダウンロードしたTensorRTのファイルをインスタンスへアップロードします。以下にローカルのターミナル上でscpコマンドにて転送する際の例を紹介します。ファイルのパスなどは適宜読み替えてください。​

以降はDLAMI環境にて作業を行います。

必要なPython3パッケージのダウンロード

サンプルプログラムで利用するデータセットの取得に利用するため、インスタンス上で以下のコマンドを実行し python3-pil 及び python3-numpy を導入します。​

利用するCUDAバージョンの変更

今回利用しているDLAMIではCUDAのデフォルトのバージョンが10.0となっていますが、CUDA 10.0にバンドルされているcuDNNが古くTensorRTの動作要件を満たさないため、CUDA 11.0に切り替えることでバンドルされているcuDNNのバージョンを上げて対処します。
対処手順は以下のようになります。

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 がビルド時に参照されますが、DLAMI環境ではそのパスに予めCUDA・cuDNNが導入されていますので、明示的には指定せずデフォルト値をそのまま利用しています。

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

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

終わりに

以上でDeep Learning AMI環境へのTensorRT環境の構築が完了しました。

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

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