分享方式:


使用 CLI (v1) 將模型部署至 Azure 容器執行個體

重要

本文說明如何使用 CLI 和 SDK v1 來部署模型。 如需 v2 的建議方法,請參閱使用線上端點來部署和評分機器學習模型

了解如何使用 Azure Machine Learning,在 Azure 容器執行個體上將模型部署為 Web 服務 (ACI)。 如果您有下列情況,請使用 Azure 容器執行個體:

  • 不想管理您自己的 Kubernetes 叢集
  • 對於只擁有服務的單一複本 (這可能會影響運作時間) 可接受

如需 ACI 的配額和區域可用性,請參閱 Azure 容器執行個體的配額和區域可用性文章。

重要

強烈建議您先在本機上偵錯,再部署至 Web 服務。如需詳細資訊,請參閱本機偵錯

您也可以參考 Azure Machine Learning - 部署至本機筆記本

必要條件

限制

將 Azure Machine Learning 工作區設為私人端點時,不支援部署至虛擬網路中的 Azure 容器執行個體。 請考慮改用具有網路隔離的受控線上端點

部署到 ACI

若要將模型部署至 Azure 容器執行個體,請建立部署設定,以描述所需的計算資源。 例如,核心和記憶體數目。 您也需要推斷設定,其中描述裝載模型和 Web 服務所需的環境。 如需建立推斷設定的詳細資訊,請參閱部署模型的方式和位置

注意

  • 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 要作為部署此 Webservice 的 Azure 區域。 如果未指定,則將會使用工作區位置。 如需可用區域的詳細資訊,請參閱:ACI 區域
authEnabled auth_enabled 是否要啟用此 Webservice 的驗證。 預設為 False
sslEnabled ssl_enabled 是否要為此 Webservice 啟用 TLS。 預設為 False。
appInsightsEnabled enable_app_insights 是否要為此 Webservice 啟用 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 模型部署參考。

使用 VS Code

請參閱如何在 VS Code 中管理資源

重要

您不需要事先建立 ACI 容器來進行測試。 會視需要建立 ACI 容器。

重要

我們會將雜湊的工作區識別碼附加至所有建立的基礎 ACI 資源,來自相同工作區的所有 ACI 名稱都將有相同的尾碼。 Azure Machine Learning 服務名稱仍會與客戶提供的 "service_name" 相同,且使用 Azure Machine Learning SDK API 的所有使用者都不需要任何變更。 我們不對所建立基礎資源的名稱提供任何保證。

下一步