適用対象:
Azure CLI ml extension v2 (現行)
Python SDK azure-ai-ml v2 (現行)
この記事では、オンライン エンドポイントで Azure Machine Learning で NVIDIA Triton Inference Server を使用する方法について説明します。
Triton は、推論用に最適化されたマルチフレームワークのオープンソース ソフトウェアです。 TensorFlow、ONNX Runtime、PyTorch、NVIDIA TensorRT などの一般的な機械学習フレームワークをサポートしています。 CPU または GPU ワークロードに使用できます。
Triton モデルをオンライン エンドポイントにデプロイするときに使用できる主な方法は、コードなしデプロイとフル コード (Bring Your Own Container) デプロイの 2 つあります。
- Triton モデルは、コードなしでデプロイできるため、モデルを持ってくるだけで簡単にデプロイできます。
- Triton モデルのフル コードデプロイは、Triton 推論サーバーで使用できる構成のカスタマイズを完全に制御できるため、それらをデプロイするためのより高度な方法です。
どちらのオプションでも、Triton Inference Server は NVIDIA によって定義された Triton モデルに基づいて推論を実行します。 たとえば、アンサンブル モデルは、より高度なシナリオに使用できます。
Triton は、マネージド オンライン エンドポイントと Kubernetes オンライン エンドポイントの両方でサポートされています。
この記事では、Triton のコードなしのデプロイを使用して マネージド オンライン エンドポイントにモデルをデプロイする方法について説明します。 Azure CLI、Python SDK v2、Azure Machine Learning Studio の使用に関する情報が提供されます。 Triton Inference Server の構成を直接使用してさらにカスタマイズする場合は、「 カスタム コンテナーを使用してモデルをデプロイする 」および Triton の BYOC の例 (デプロイ定義 と エンドツーエンド スクリプト) を参照してください。
Note
NVIDIA Triton Inference Server コンテナーの使用は NVIDIA AI Enterprise Software ライセンス契約で管理され、エンタープライズ製品サブスクリプションなしで 90 日間使用できます。 詳細については、Azure Machine Learning の NVIDIA AI Enterprise に関するページを参照してください。
前提条件
Azure CLI と Azure CLI の
ml拡張機能(インストールおよび構成済み)。 詳細については、「 CLI のインストールと設定 (v2)」を参照してください。Bash シェルまたは互換性のあるシェル (Linux システム上のシェルや Linux 用 Windows サブシステムなど)。 この記事の Azure CLI の例では、この種類のシェルを使用することを前提としています。
Azure Machine Learning ワークスペース。 ワークスペースを作成する手順については、「 設定」を参照してください。
動作する Python 3.8 以降の環境。
スコア付けのために追加の Python パッケージがインストールされている必要があります。 次のコードを使用してインストールできます。 これには次のようなものがあります。
- NumPy。 配列と数値計算ライブラリ。
- Triton 推論サーバー クライアント。 Triton 推論サーバーへの要求を容易にします。
- 枕。 イメージ操作用のライブラリ。
- Gevent。 Triton サーバーへの接続に使用されるネットワーク ライブラリ。
pip install numpy pip install tritonclient[http] pip install pillow pip install geventAzure サブスクリプションの NCv3 シリーズ VM へのアクセス。
重要
このシリーズ VM を使用するには、事前にサブスクリプションのクォータの引き上げを要求しなければならない場合があります。 詳細については、「NCv3 シリーズ」を参照してください。
NVIDIA Triton Inference Server には、特定のモデル リポジトリ構造が必要です。この構造には、各モデルのディレクトリと、モデル バージョンのサブディレクトリがあります。 各モデル バージョンのサブディレクトリの内容は、モデルの種類とモデルをサポートするバックエンドの要件によって決まります。 すべてのモデルの構造については、「 モデル ファイル」を参照してください。
このドキュメントの情報は、ONNX 形式で格納されたモデルの使用に基づいているため、モデル リポジトリのディレクトリ構造は
<model-repository>/<model-name>/1/model.onnxです。 具体的には、このモデルで画像の識別を行います。
この記事の情報は、azureml-examples リポジトリに含まれているコード サンプルを基にしています。 YAML などのファイルをコピーして貼り付けることなくコマンドをローカルで実行するには、リポジトリを複製し、ディレクトリをリポジトリ内の cli ディレクトリに変更します。
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples
cd cli
まだ Azure CLI の既定値を設定していない場合は、既定の設定を保存する必要があります。 サブスクリプション、ワークスペース、およびリソース グループの値が複数回渡されることを防ぐには、以下のコマンドを使用します。 次のパラメーターを、実際の構成の値に置き換えます。
-
<subscription>は、Azure サブスクリプション ID に置き換えてください。 -
<workspace>は、ご利用の Azure Machine Learning ワークスペース名に置き換えます。 -
<resource-group>は、ワークスペースが含まれている Azure リソース グループに置き換えます。 -
<location>は、ワークスペースが含まれている Azure リージョンに置き換えます。
ヒント
az configure -l コマンドを使用すると、現在の既定値を確認できます。
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
デプロイ構成を定義する
適用対象:
Azure CLI ml 拡張機能 v2 (現行)
このセクションでは、Machine Learning 拡張機能 (v2) で Azure CLI を使用して、マネージド オンライン エンドポイントにデプロイする方法について説明します。
重要
Triton のコードなしのデプロイの場合、 ローカル エンドポイントを使用したテスト は現在サポートされていません。
複数のコマンドでパスを入力せずにすむように、次のコマンドを使用して
BASE_PATH環境変数を設定します。 この変数は、モデルとそれに関連する YAML 構成ファイルが格納されているディレクトリを示します。BASE_PATH=endpoints/online/triton/single-model次のコマンドを使用して、作成するエンドポイントの名前を設定します。 この例では、エンドポイントにランダムな名前を作成します。
export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`エンドポイントの YAML 構成ファイルを作成します。 次の例では、エンドポイントの名前と認証モードを構成します。 次のコマンドで使用するファイルは、前に複製した azureml-examples リポジトリの
/cli/endpoints/online/triton/single-model/create-managed-endpoint.ymlにあります。create-managed-endpoint.yaml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aml_tokenデプロイの YAML 構成ファイルを作成します。 次の例では、前の手順で定義したエンドポイントに
blueという名前のデプロイを構成します。 次のコマンドで使用するファイルは、前に複製した azureml-examples リポジトリの/cli/endpoints/online/triton/single-model/create-managed-deployment.ymlにあります。重要
Triton のコードなしのデプロイを機能させるには、
typeをtriton_model:type: triton_modelに設定する必要があります。 詳細については、「CLI (v2) モデル YAML スキーマ」を参照してください。このデプロイでは、Standard_NC6s_v3 VM を使用します。 この VM を使用するには、事前にサブスクリプションのクォータの引き上げを要求しなければならない場合があります。 詳細については、「NCv3 シリーズ」を参照してください。
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: blue endpoint_name: my-endpoint model: name: sample-densenet-onnx-model version: 1 path: ./models type: triton_model instance_count: 1 instance_type: STANDARD_NC4AS_T4_V3
Deploy to Azure (Azure へのデプロイ)
適用対象:
Azure CLI ml 拡張機能 v2 (現行)
YAML 構成を使用してエンドポイントを作成するには、次のコマンドを使用します。
az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yamlYAML 構成を使用してデプロイを作成するには、次のコマンドを使用します。
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f $BASE_PATH/create-managed-deployment.yaml --all-traffic
エンドポイントをテストする
適用対象:
Azure CLI ml 拡張機能 v2 (現行)
デプロイが完了したら、次のコマンドを使用して、デプロイされたエンドポイントにスコアリング要求を行います。
ヒント
スコアリングには、azureml-examples リポジトリのファイル /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py が使用されます。 エンドポイントに渡される画像は、サイズ、型、および形式の要件を満たすために前処理を行い、予測されたラベルを表示するための後処理が必要です。
triton_densenet_scoring.py ファイルは、tritonclient.http ライブラリを使用して Triton 推論サーバーと通信します。 このファイルはクライアント側で実行されます。
エンドポイント スコアリング URI を取得するには、次のコマンドを使用します。
scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv) scoring_uri=${scoring_uri%/*}認証キーを取得するには、次のコマンドを使用します。
auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)エンドポイントを使用してデータをスコア付けするには、次のコマンドを使用します。 孔雀 の画像をエンドポイントに送信します。
python $BASE_PATH/triton_densenet_scoring.py --base_url=$scoring_uri --token=$auth_token --image_path $BASE_PATH/data/peacock.jpgスクリプトからの応答は、次の応答のようになります。
Is server ready - True Is model ready - True /azureml-examples/cli/endpoints/online/triton/single-model/densenet_labels.txt 84 : PEACOCK
エンドポイントとモデルを削除する
適用対象:
Azure CLI ml 拡張機能 v2 (現行)
エンドポイントの使用が完了したら、次のコマンドを使用して削除します。
az ml online-endpoint delete -n $ENDPOINT_NAME --yesモデルをアーカイブするには次のコマンドを使用します。
az ml model archive --name sample-densenet-onnx-model --version 1
次のステップ
詳細については、次の記事を参照してください。