演習 - NVIDIA DeepStream Graph Composer アプリケーションをコンテナー化されたワークロードにパッケージ化する
NVIDIA DeepStream Graph Composer が IVA アプリケーションの開発にどのように役立つかを説明しました。 ここで、これらのアプリケーションをデータセンターとエッジ環境に配布するために、追加のツールがどのように役立つかを説明します。
コンテナー化は、開発とテスト中にも多くの利点をもたらします。 たとえば、次のようになります。
- 同種のハードウェアでワークロードを実行するときの動作の一貫性。
- ファイル システムの階層化により増分更新が行われるため、デプロイにかかる時間を短縮可能。
- 自己文書化の性質による、依存関係のドキュメントの明確化。
これらの利点を実現するには、Container Builder ツールを使用して、前の例をコンテナーとしてパッケージ化します。
開始する前に、NVIDIA GPU Cloud (NGC) サービスを使用してアカウントをセットアップする必要があります。 このサービスは、GPU 加速化コンテナーを配布するための NVIDIA の公式リポジトリです。 ワークロードでは、このリポジトリにアクセスして、コンテナー化されたワークロードが使用する DeepStream のベース コンテナーをプルする必要があります。 アカウントを作成するか、既存のアカウントでサインインするには、NVIDIA NGC のサインイン ページを参照してください。
NVIDIA NGC のサインイン ページに移動して、サインインするか、新しいアカウントを作成します。 NVIDIA NGC にサインインしたら、右上隅にあるユーザー名を選択し、[Setup] を選択します。 次のオプションが表示されます。
[Get API Key] を選択します。 表示された画面の右上にある [Generate API Key] を選択します。 次に、その結果として表示されるプロンプトで [Confirm] を選択します。
ホスト コンピューターの端末で次のコマンドを実行して、Docker ランタイムに資格情報を付与します。
sudo docker login nvcr.io
[Username] の入力を求められたら、表示されているとおりに $oauthtoken と入力します。 [Password] の入力を求められたら、生成された API キーの値を入力します。 "Login Succeeded" というメッセージが表示されます。
これで、nvcr.io にアクセスできるようになったので、NVIDIA NGC から提供されたベース イメージを使用するコンテナーの構築を開始できます。 Container Builder ツールでは、構成ファイルを指定することでイメージを構築できます。 参照グラフ パッケージに用意されている例のいずれか 1 つを使用します。
Container Builder を呼び出して deepstream-test1 アプリケーションをパッケージ化するには、ホストコンピューターで次のコマンドを実行します。
cd /opt/nvidia/deepstream/deepstream-6.0/reference_graphs/deepstream-test1 sudo container_builder -c ds_test1_container_builder_dgpu.yaml -d /opt/nvidia/graph-composer/config/target_x86_64_cuda_11_4.yaml
正常に完了すると、"Successfully tagged deepstream_test1_dgpu:latest" というメッセージを含む出力が表示されます。
Note
上記のコマンドを実行したときに "docker.errors.DockerException" エラーが発生した場合は、ホスト コンピューターに Docker ランタイムがインストールされていないことを示している可能性があります。 続行するには、このモジュールの NVIDIA DeepStream Graph Composer の依存関係のインストールに関するセクションで Docker のインストール方法の手順を確認してください。
Note
"docker.errors.BuildError: unauthorized: authentication required" が表示された場合、このメッセージは、Docker で使用する NVIDIA NGC アカウントが正しく認証されていない可能性があることを示しています。
このコンテナー化されたワークロードを、ワークロードが理由でコンテナーから実行するときは、実行する前に、種類が EGL (type = 2) の出力シンクを使用して X11 ディスプレイ環境へのアクセスを許可する必要があります。
ホスト コンピューター上の端末から次のコマンドを実行して、X11 サービスへのアクセスを有効にします。
sudo xhost +
ホスト コンピューター上の端末で次のコードを実行して、コンテナー化されたワークロードが予期したとおりに実行されることを確認します。
sudo docker run -it --rm --gpus all -v /tmp/.X11-unix/:/tmp/.X11-unix/ -e DISPLAY=:0 deepstream_test1_dgpu
このコマンドは、
deepstream_test1_dgpu
コンテナー イメージのインスタンスを起動し、それにコンピューター上の使用可能なすべての GPU ハードウェアへのアクセスを付与し、X11 ソケットと現在のDISPLAY
へのアクセスも付与します。execute_graph.sh
を使用して呼び出された前の実行のような出力が表示されます。
これで、作業中のコンテナー化されたワークロードを配布用の安全なコンテナー レジストリに発行する準備ができました。