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 ワークスペースがプライベート エンドポイントで構成されている場合、VNet での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 サービスに対して SSL を有効にするかどうか。 既定値は False です。
appInsightsEnabled enable_app_insights この Web サービスに対して AppInsights を有効にするかどうか。 既定値は False です
sslCertificate ssl_cert_pem_file SSL が有効な場合、証明書ファイルが必要です
sslKey ssl_key_pem_file SSL が有効な場合、キー ファイルが必要です
cname ssl_cname SSL が有効な場合の 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 に接続しているすべてのユーザーには一切の変更が不要です。 作成される基になるリソースの名前については、一切保証しません。

次のステップ