NVIDIA GPU(レガシー)

追加の Enterprise デプロイメントとして、GPU デバイスにデプロイできる加速推論ソリューションを提供します。

circle-exclamation

インストール要件

これらのデプロイオプションには以下が必要です Roboflow Enterprise ライセンスarrow-up-right.

Enterprise GPU 推論サーバーをデプロイするには、まず NVIDIA ドライバーと nvidia-container-runtimearrow-up-rightをインストールして、Docker が GPU を推論サーバーにパススルーできるようにする必要があります。システムに既に nvidia-container-runtime がインストールされているか、インストールが成功したかを次のコマンドで確認できます:

docker run --gpus all -it ubuntu nvidia-smi

インストールが成功していれば、コンテナ内から GPU デバイスが見えるはずです:

Tue Nov  9 16:04:47 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.91.03    Driver Version: 460.91.03    CUDA Version: N/A      |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla K80           Off  | 00000000:00:1E.0 Off |                    0 |
| N/A   41C    P0    56W / 149W |    504MiB / 11441MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

GPU TRT コンテナをビルドする前に必要な最後の情報はプロジェクト情報です。これには Roboflow API Key、Model ID、Model Version が含まれます。この情報をお持ちでない場合は、次のリンクに従ってください プロジェクト情報を見つけるarrow-up-right。見つかったら、それら3つの変数を後で使えるように保存してください。

Enterprise GPU TRT

Enterprise GPU TRT デプロイは、モデルをデバイス上でコンパイルし、利用可能なハードウェアに最適化します。GPU TRT コンテナには現在 3 つのデプロイオプションがあります。AWS 経由で EC2 にデプロイする方法、Windows 経由で WSL2 にデプロイする方法、Windows 経由で Anaconda にデプロイする方法です。

Amazon EC2 デプロイメント

AMI を選択して EC2 インスタンスを起動する

EC2 インスタンスで TRT GPU コンテナを実行するには、まず適切な AMI を選択する必要があります。AMI はインスタンスを起動するときに設定でき、インスタンスを起動する前に選択しておくべきです。ここでは NVIDIA GPU-Optimized AMI を使用します。これは Ubuntu 20.04、Docker、その他の要件が事前にインストールされたものです。

NVIDIA GPU-Optimized AMI で EC2 インスタンスを構成する

SSH で EC2 インスタンスにログインする

EC2 インスタンスが正常に稼働していれば、SSH と Amazon Keypair を使ってログインできます。Amazon はインスタンスへの接続方法に関するドキュメントを ここarrow-up-rightに提供しています。Keypair が用意できていて EC2 インスタンスの Public DNS を知っている場合、以下のコマンドでインスタンスにログインできます。デフォルトの インスタンスユーザー名ubuntu です。

TRT GPU Docker コンテナを起動する

SSH で EC2 インスタンスにログインしたら、次のコマンドで Docker コンテナを起動できます:

エンジンをコンパイルして推論を実行する

base64 エンコードした画像をサーバーに POST してモデルで推論を実行します — キャッシュなしで初めてモデルをコンパイルする場合は、推論の前にコンパイルが行われます:

Anaconda デプロイメント

Anaconda 環境をセットアップする

TRT コンテナを Anacondaarrow-up-right または Minicondaarrow-up-right上で実行するには、conda 環境を作成し Docker をインストールする必要があります。環境を作成するには、Anaconda ターミナル内で以下のコマンドを使用します。

Anaconda 環境に Docker をインストールする

Docker は以下からダウンロードして実行できます: Docker Desktoparrow-up-right または、 conda-forge経由で Docker をインストールすることもできます。以下のコードは Anaconda のレシピマネージャーを使って Docker をインストールします。

Anaconda 環境内で Docker コンテナを実行する

Docker Desktop をインストールしている場合は、コンテナにアクセスするためにそれを起動しておいてください。Docker Desktop をダウンロードしていない場合は、前述の conda-forge インストール手順

でデーモン版 Docker にアクセスできるはずです。

エンジンをコンパイルして推論を実行する

docker run --gpus all -p 9001:9001 roboflow/inference-server-trt:latest

pybase64 encode your_img.jpg | curl -d @- "http://localhost:9001/[YOUR MODEL]/[YOUR VERSION]?api_key=[YOUR API KEY]"

Windows Subsystem デプロイメント

Microsoft Store から Ubuntu をダウンロードする

WSL2 を Microsoft Store からインストールする

WSL2 上に Docker をインストールする(オプション)

Ubuntu 20.04.5 LTS には Docker がインストールされているはずですが、もしインストールされていない場合のために、Ubuntu に Docker をインストールするための便利なコマンドを以下に示します。Anaconda のインストールと同様に、Docker をインストールする必要を回避するために Docker Desktoparrow-up-right を実行することもできます。完全なドキュメントはここにあります: Ubuntu に Docker Engine をインストールするarrow-up-right

WSL2 内で Docker コンテナを実行する

WSL2 環境に Docker を正常にインストールしたら、TRT コンテナを実行できます。コンテナを実行するには、以下のコマンドを使用してポート 9001 で推論受け付けを開始します。

エンジンをコンパイルして推論を実行する

GPU TRT コンテナが Docker で実行されているので、別の Ubuntu ターミナルを開いて Docker コンテナに推論データを送信できます。以下を使用してください: ls および cd 推論を実行したい画像の場所に移動し、以下のコマンドを使用します。

これが初回の推論であれば、モデルのコンパイルに時間がかかります。モデルが構築された後の推論はより速くなります。

拡張機能

モデルのキャッシュ

場合によっては、サーバーが起動するたびに外部の Roboflow サーバーと通信してモデルをダウンロードする必要がないよう、モデルをローカルにキャッシュしたいことがあります。

モデルをオフラインでキャッシュするには、まず docker ボリュームを作成します:

次に、docker ボリュームを /cache ディレクトリにマウントしてサーバーを起動します:

Docker Compose によるマルチ GPU サポート

Roboflow TRT Docker コンテナの使用例にすぐアクセスできるリポジトリを作成しました。開始するには、以下の git clone コマンドを実行して docker compose テンプレートをダウンロードしてください。

この例では、ロードバランサー付きで 8 GPU を動かすように docker を構成しています。8 GPU 未満で実行する必要がある場合は、後述の方法で対応します。 ここ.

ロードバランサーの構築

ロードバランサーの docker コンテナをビルドするには以下のコマンドを使用します。使用しているロードバランサーの詳細が必要な場合は、次で情報を参照できます。 ここarrow-up-right.

Docker Compose の起動

docker-compose.yaml ファイル内のサービス名が .conf/roboflow-nginx.conf ファイルに正しく反映されていることを確認してから docker compose を実行してください。

これで、複数の GPU コンテナがロードバランサーとボリュームおよびポートを共有して起動するはずです。ロードバランサーは各コンテナのスループットを管理して最適な速度を維持します。Docker Desktop を使用している場合、正常に起動すると次のような表示になります。

推論の実行

GPU コンテナとロードバランサーが稼働していれば、ロードバランサーに対話してリクエストをそれぞれの GPU にルーティングし、最適なスループットを維持できます。

新しいターミナルを開いて以下の curl コマンドのいずれかを使用してロードバランサーをテストできます。

Docker Compose ファイルの構成

デフォルトの 8 GPU 未満で実行するには、このリポジトリ内のいくつかのファイルを変更する必要があります。最初に見るのは docker-compose.yaml で、Roboflow-GPU-1、Roboflow-GPU-2 などの多数のサービスが含まれています。これらのサービスが Docker コンテナを実行し、それぞれの GPU にアタッチします。

たとえば 3 GPU のみを実行したい場合、Roboflow-GPU-1、Roboflow-GPU-2、Roboflow-GPU-3 以外のすべてのサービスを削除できます。サービスを削除するには、そのサービス名を含む行と次のサービス名までのすべての行を削除してください。

次に編集する必要があるファイルは conf フォルダー内にある roboflow-nginx.conf です。

8 GPU から 3 GPU に変更する例を続けると、upstream myapp1 のサーバー行の一部を削除する必要があります。具体的には行 17 から行 21 はもう不要です(目標数を超えるため)。

これら 2 つのファイルを変更したら、docker-compose チュートリアルを続けて ロードバランサーをビルドする.

TRT コンテナでのマルチストリームの使用

場合によっては、同じ GPU 上の同じ TRT コンテナで複数のカメラストリームを並列処理したいことがあります。TRT コンテナ内で複数のモデルサービスを起動するには、次を指定します: --env NUM_WORKERS=[desired num_workers] NVIDIA V100 では、2〜4 ワーカーが最適なレイテンシを提供することがわかりました。

NVIDIA V100 上の Roboflow Accurate モデルにおける TRT マルチストリームのベンチマーク統計

TRT コンテナで GPU デバイス ID を公開する

場合によっては、TRT コンテナを特定の GPU または vGPU で実行したいことがあります。その場合は次を指定できます: CUDA_VISIBLE_DEVICES=[DESIRED GPU OR MIG ID]\

トラブルシューティング

まず、リクエストに正しいモデルバージョンのリクエストパラメータが含まれていることを確認してください:

最新のコンテナが pull されていることを確認してください:\

sudo docker pull roboflow/inference-server-trt:latest キャッシュボリュームを使用している場合は、クリアしてください:

sudo docker volume rm roboflow

sudo docker volume create roboflow

NVIDIA docker GPU ドライバーを再確認してください:

docker run --gpus all -it ubuntu nvidia-smi

再起動! デプロイエラーが続く場合は、サーバーログをコピーして Roboflow の担当者に送ってください。当社が支援いたします。

Last updated

Was this helpful?