CLI (v1) を使用して Azure Container Instances にモデルをデプロイする
重要
この記事では、CLI と SDK v1 を使用してモデルをデプロイする方法について説明します。 v2 に推奨される方法については、オンライン エンドポイントを使用した機械学習モデルのデプロイおよびスコアリングに関するページを参照してください。
Azure Machine Learning を使用して Azure Container Instances (ACI) にモデルを Web サービスとしてデプロイする方法を説明します。 次の場合に、Azure Container Instances を使用します。
- 独自の Kubernetes クラスターを管理したくない場合
- サービスのレプリカが 1 つしかなくても問題ない場合 (アップタイムに影響する可能性があります)
ACI の利用可能なクォータとリージョンについては、Azure Container Instances のクォータとリージョンの可用性に関する記事を参照してください。
重要
Web サービスにデプロイする前にローカルでデバッグすることを強くおすすめします。詳細については、「ローカル デバッグ」を参照してください
Azure Machine Learning のローカルの Notebook へのデプロイに関する記事を参照することもできます
前提条件
Azure Machine Learning ワークスペース。 詳細については、Azure Machine Learning ワークスペースの作成に関するページをご覧ください。
ワークスペースに登録されている機械学習モデル。 モデルが登録されていない場合は、「Azure Machine Learning service を使用してモデルをデプロイする」を参照してください。
Machine Learning サービス向けの Azure CLI 拡張機能 (v1)、Azure Machine Learning Python SDK、または Azure Machine Learning Visual Studio Code 拡張機能。
重要
この記事の Azure CLI コマンドの一部では、Azure Machine Learning 用に
azure-cli-ml
、つまり v1 の拡張機能を使用しています。 v1 拡張機能のサポートは、2025 年 9 月 30 日に終了します。 その日付まで、v1 拡張機能をインストールして使用できます。2025 年 9 月 30 日より前に、
ml
(v2) 拡張機能に移行することをお勧めします。 v2 拡張機能の詳細については、Azure ML CLI 拡張機能と Python SDK v2 に関するページを参照してください。この記事の Python コード スニペットは、次の変数が設定されていることを前提としています。
ws
- 使用しているワークスペースに設定されている。model
- 登録済みのモデルに設定されている。inference_config
- モデルの推論構成に設定されている。
これらの変数の設定について詳しくは、「Azure Machine Learning service を使用してモデルをデプロイする」を参照してください。
この記事の CLI スニペットは、
inferenceconfig.json
ドキュメントを作成済みであることを前提としています。 このドキュメントの作成の詳細については、「Azure Machine Learning service を使用してモデルをデプロイする」を参照してください。
制限事項
Azure Machine Learning ワークスペースがプライベート エンドポイントを使用して構成されている場合、仮想ネットワーク 内の Azure Container Instances へのデプロイはサポートされていません。 代わりに、ネットワークの分離とマネージド オンライン エンドポイントを使用することを検討してください。
ACI にデプロイする
Azure Container Instances にモデルをデプロイするには、必要なコンピューティング リソースが記述されている デプロイ構成 を作成します。 たとえば、コアの数やメモリなどです。 また、モデルと Web サービスのホストに必要な環境を記述した 推論構成 も必要です。 推論構成の作成の詳細については、「Azure Machine Learning service を使用してモデルをデプロイする」を参照してください。
注意
- ACI が適しているのは、サイズが 1 GB 未満の小さいモデルのみです。
- より大きいモデルの開発テストには、単一ノードの AKS を使用することをお勧めします。
- デプロイされるモデルの数は、デプロイごとに 1,000 モデル (コンテナーごと) に制限されます。
SDK を使用する
適用対象: Python SDK azureml v1
from azureml.core.webservice import AciWebservice, Webservice
from azureml.core.model import Model
deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
service = Model.deploy(ws, "aciservice", [model], inference_config, deployment_config)
service.wait_for_deployment(show_output = True)
print(service.state)
この例で使われているクラス、メソッド、パラメーターの詳細については、次のリファレンス ドキュメントをご覧ください。
Azure CLI の使用
適用対象: Azure CLI ml 拡張機能 v1
CLI を使用してデプロイするには、次のコマンドを使用します。 登録されているモデルの名前とバージョンに mymodel:1
を置き換えます。 このサービスに付ける名前に myservice
を置き換えます。
az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json
deploymentconfig.json
ドキュメントのエントリは、AciWebservice.deploy_configuration のパラメーターにマップされます。 次の表は、JSON ドキュメントのエントリとメソッド用パラメーターの間のマッピングについてまとめたものです。
JSON エンティティ | メソッド パラメーター | 説明 |
---|---|---|
computeType |
NA | コンピューティング ターゲット。 ACI の場合、値は ACI である必要があります。 |
containerResourceRequirements |
NA | CPU およびメモリ エンティティのコンテナー。 |
cpu |
cpu_cores |
割り当てる CPU コアの数。 既定値、0.1 |
memoryInGB |
memory_gb |
この Web サービスに割り当てるメモリの量 (GB 単位)。 既定値、0.5 |
location |
location |
この Web サービスのデプロイ先となる Azure リージョン。 指定されていない場合、ワークスペースの場所が使用されます。 利用できるリージョンの詳細はこちらをご覧ください: ACI リージョン |
authEnabled |
auth_enabled |
この Web サービスに対して認証を有効にするかどうか。 既定値は False です |
sslEnabled |
ssl_enabled |
この Web サービスに対して TLS を有効にするかどうか。 既定値は False です。 |
appInsightsEnabled |
enable_app_insights |
この Web サービスに対して AppInsights を有効にするかどうか。 既定値は False です |
sslCertificate |
ssl_cert_pem_file |
TLS が有効な場合、証明書ファイルが必要です |
sslKey |
ssl_key_pem_file |
TLS が有効な場合、キー ファイルが必要です |
cname |
ssl_cname |
TLS が有効な場合の CNAME |
dnsNameLabel |
dns_name_label |
スコアリング エンドポイントの dns 名ラベル。 指定されていない場合、一意の dns 名ラベルがスコアリング エンドポイントに対して生成されます。 |
次の JSON は、CLI で使用するデプロイ構成の例です。
{
"computeType": "aci",
"containerResourceRequirements":
{
"cpu": 0.5,
"memoryInGB": 1.0
},
"authEnabled": true,
"sslEnabled": false,
"appInsightsEnabled": false
}
詳細については、az ml model deploy のリファレンスを参照してください。
VS Code を使用する
VS Code でリソースを管理する方法を参照してください。
重要
テストするための ACI コンテナーを事前に作成する必要はありません。 ACI コンテナーは必要に応じて作成されます。
重要
作成されるすべての基になる ACI リソースにハッシュされたワークスペース ID を追加します。同じワークスペースからのすべての ACI 名には同じサフィックスが付けられます。 Azure Machine Learning service の名前は、引き続きお客様が指定した同じ "service_name" になり、Azure Machine Learning SDK API に接続しているすべてのユーザーには一切の変更が不要です。 作成される基になるリソースの名前については、一切保証しません。