適用於:Azure CLI ml 延伸模組 v2 (目前)
Python SDK azure-ai-ml v2 (目前)
您可以使用批次端點部署管線元件,便利地在 Azure Machine Learning 中運作元件。 在本文中,您將了解如何建立包含簡單管線的批次部署。 您將了解:
- 建立並註冊管線元件
- 建立批次端點並部署管線元件
- 測試部署
關於此範例
在此範例中,我們會一個部署管線元件,其中包含列印「hello world!」的簡單命令作業。 此元件不需要輸入或輸出,是最簡單的管線部署案例。
本文中的範例是以 azureml-examples (英文) 存放庫中包含的程式碼範例為基礎。 若要在本機執行命令,而不需要複製或貼上 YAML 和其他檔案,請使用下列命令來複製存放庫,並移至您程式代碼撰寫語言的資料夾:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
此範例的檔案位於:
cd endpoints/batch/deploy-pipelines/hello-batch
在 Jupyter Notebook 中跟著做
您可以在複製的存放庫中開啟 sdk-deploy-and-test.ipynb (英文) 筆記本,以便按照此範例的 Python SDK 版本說明操作。
必要條件
Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
Azure Machine Learning 工作區。 若要建立工作區,請參閱 管理 Azure Machine Learning 工作區。
Azure 機器學習 工作區中的下列許可權:
- 若要建立或管理批次端點和部署:請使用已指派
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
許可權的擁有者、參與者或自定義角色。 - 若要在工作區資源群組中建立 Azure Resource Manager 部署:請使用已指派
Microsoft.Resources/deployments/write
工作區部署之資源群組中許可權的擁有者、參與者或自定義角色。
- 若要建立或管理批次端點和部署:請使用已指派
Azure 機器學習 CLI 或適用於 Python 的 Azure 機器學習 SDK:
執行下列命令來安裝 Azure CLI 和
ml
Azure Machine Learning 的擴充功能:az extension add -n ml
批次端點的管線元件部署是在 Azure CLI 的
ml
延伸模組 2.7 版中引進。 使用az extension update --name ml
命令來取得最新版本。
連線到您的工作區
工作區是 Azure Machine Learning 的最上層資源。 它提供集中的位置,讓您在使用 Azure 機器學習 時,使用您建立的所有成品。 在本節中,您會連線到要執行部署工作的工作區。
在下列命令中,輸入您的訂用帳戶識別碼、工作區名稱、資源組名和位置:
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
部署管線元件
批次端點可以部署模型或管線元件。 管線元件可重複使用,您可以利用共用登錄 (機器翻譯) 將這些元件從一個工作區移至另一個工作區,以簡化 MLOps 做法。
此範例中的管線元件包含單一步驟,只會在記錄中列印「hello world」訊息, 不需要任何輸入或輸出。
hello-component/hello.yml
檔案包含管線元件的設定:
hello-component/hello.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponent.schema.json
name: hello_batch
display_name: Hello Batch component
version: 1
type: pipeline
jobs:
main_job:
type: command
component:
code: src
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
command: >-
python hello.py
註冊元件:
az ml component create -f hello-component/hello.yml
建立批次端點
提供端點名稱。 批次端點的名稱在每個區域中都不得重複,因為該名稱會用於建構叫用 URI。 若要確保名稱不重複,請將任何尾端字元附加至下列程式碼中指定的名稱。
ENDPOINT_NAME="hello-batch"
設定端點:
endpoint.yml
檔案包含端點的設定。endpoint.yml
$schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json name: hello-batch description: A hello world endpoint for component deployments. auth_mode: aad_token
建立端點:
az ml batch-endpoint create --name $ENDPOINT_NAME -f endpoint.yml
查詢端點 URI:
az ml batch-endpoint show --name $ENDPOINT_NAME
部署管線元件
若要部署管線元件,我們必須建立批次部署。 部署是裝載執行實際工作的資產時所需的一組資源。
建立計算叢集。 批次端點和部署都會在計算叢集上執行。 它們可在工作區中現有的任何 Azure Machine Learning 計算叢集上執行。 因此,多個批次部署可以共用相同的計算基礎結構。 在此範例中,我們將處理名為
batch-cluster
的 Azure Machine Learning 計算叢集。 我們須確認計算存在於工作區上,否則要另外建立。az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
設定部署:
deployment.yml
檔案包含部署的設定。 您可以查看完整的批次端點 YAML 結構描述 (機器翻譯),以取得額外的屬性。deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json name: hello-batch-dpl endpoint_name: hello-pipeline-batch type: pipeline component: azureml:hello_batch@latest settings: default_compute: batch-cluster
建立部署:
執行下列程式碼,在批次端點下建立批次部署,並將其設定為預設部署。
az ml batch-deployment create --endpoint $ENDPOINT_NAME -f deployment.yml --set-default
提示
請注意,使用
--set-default
旗標來指出這項新部署現在是預設值。您的部署已可供使用。
測試部署
建立部署後,即可接收作業。 您可以叫用預設部署,如下所示:
JOB_NAME=$(az ml batch-endpoint invoke -n $ENDPOINT_NAME --query name -o tsv)
提示
在此範例中,管線沒有輸入或輸出。 不過,如果管線元件有需要,可以在叫用期間指定輸入或輸出。 若要了解如何指定輸入和輸出,請參閱建立批次端點的作業和輸入資料 (機器翻譯),或是如何透過前置處理部署管線以執行批次評分教學課程。
您可以使用以下命令監視記錄的顯示和串流進度:
az ml job stream -n $JOB_NAME
清除資源
完成後,請從工作區中刪除相關聯的資源:
執行下列程式碼,以刪除批次端點及其基礎部署。
--yes
用來確認刪除。
az ml batch-endpoint delete -n $ENDPOINT_NAME --yes
(選擇性) 刪除計算,除非您打算在稍後的部署中重複使用計算叢集。
az ml compute delete -n batch-cluster