使用 CLI (v1) 將模型部署至 Azure 容器執行個體
重要
本文說明如何使用 CLI 和 SDK v1 來部署模型。 如需 v2 的建議方法,請參閱使用線上端點來部署和評分機器學習模型。
了解如何使用 Azure Machine Learning,在 Azure 容器執行個體上將模型部署為 Web 服務 (ACI)。 如果您有下列情況,請使用 Azure 容器執行個體:
- 不想管理您自己的 Kubernetes 叢集
- 對於只擁有服務的單一複本 (這可能會影響運作時間) 可接受
如需 ACI 的配額和區域可用性,請參閱 Azure 容器執行個體的配額和區域可用性文章。
必要條件
Azure Machine Learning 工作區。 如需詳細資訊,請參閱建立 Azure Machine Learning 工作區。
在您的工作區中登錄的機器學習模型。 如果您沒有已註冊的模型,請參閱部署模型的方式和位置。
適用於 Machine Learning 服務的 Azure CLI 延伸模組 (第 1 版)、Azure Machine Learning Python SDK 或 Azure Machine Learning Visual Studio Code 擴充功能。
重要
本文中的 Azure CLI 命令使用
azure-cli-ml
或 v1 (Azure Machine Learning 的擴充功能)。 v1 擴充功能的支援將於 2025 年 9 月 30 日終止。 您將能安裝並使用 v1 擴充功能,直到該日期為止。建議您在 2025 年 9 月 30 日之前轉換至
ml
或 v2 擴充功能。 如需有關 v2 擴充功能的詳細資訊,請參閱 Azure ML CLI 擴充功能和 Python SDK v2。本文中的 Python 程式碼片段會假設已設定下列變數:
ws
- 設為您的工作區。model
- 設為您已註冊的模型。inference_config
- 設為模型的推斷設定。
如需設定這些變數的詳細資訊,請參閱部署模型的方式和位置。
本文中的 CLI 程式碼片段假設您已建立
inferenceconfig.json
文件。 如需建立本文件的詳細資訊,請參閱部署模型的方式和位置。
限制
注意
- 不支援在虛擬網路中部署 Azure 容器執行個體。 相反地,針對網路隔離,請考慮使用 受控在線端點。
- 若要確保有效支援,您必須為 ACI 容器提供必要的記錄。 如果沒有這些記錄,則無法保證技術支援。 建議您在部署組態中指定
enable_app_insights=True
,以有效率地管理和分析 ACI 容器記錄,以使用記錄分析工具。
部署到 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
重要
您不需要事先建立 ACI 容器來進行測試。 會視需要建立 ACI 容器。
重要
我們會將雜湊的工作區識別碼附加至所有建立的基礎 ACI 資源,來自相同工作區的所有 ACI 名稱都將有相同的尾碼。 Azure Machine Learning 服務名稱仍會與客戶提供的 "service_name" 相同,且使用 Azure Machine Learning SDK API 的所有使用者都不需要任何變更。 我們不對所建立基礎資源的名稱提供任何保證。