共用方式為


將現有的管線作業部署至批次端點

適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)

批次終端點可讓您部署管線元件,提供一個在 Azure Machine Learning 中操作管線的便捷方法。 批次端點接受用於部署的管線元件。 不過,如果您已經有成功執行的管線作業,Azure Machine Learning 可以接受該作業作為批次端點的輸入,並自動為您建立管線元件。 在本文中,您將了解如何使用現有的管線作業作為批次部署的輸入。

您將了解:

  • 執行並建立您想要部署的管線作業
  • 從現有的作業建立批次部署
  • 測試部署

關於此範例

在此範例中,我們將部署管線,其中包含列印 「hello world!」 的簡單命令作業。 我們指出要用於部署的現有管線作業,而不是在部署之前註冊管線元件。 Azure Machine Learning 接著會自動建立管線元件,並將其部署為批次端點管線元件部署。

本文中的範例是以 azureml-examples 存放庫中包含的程式碼範例為基礎。 若要在本機執行命令,而不需要複製/貼上 YAML 和其他檔案,請複製存放庫,然後將目錄變更為該資料夾:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

此範例的檔案位於:

cd endpoints/batch/deploy-pipelines/hello-batch

必要條件

  • Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。 試用免費或付費版本的 Azure Machine Learning

  • Azure Machine Learning 工作區。 若要建立工作區,請參閱 管理 Azure Machine Learning 工作區

  • 請確定您在 Machine Learning 工作區中具有下列權限:

    • 建立或管理批次端點和部署:使用允許 Microsoft.MachineLearningServices/workspaces/batchEndpoints/* 的擁有者、參與者或自訂角色。
    • 在工作區資源群組中建立 Azure Resource Manager 部署:在部署工作區的資源群組中,使用允許 Microsoft.Resources/deployments/write 的擁有者、參與者或自訂角色。
  • 安裝下列軟體以使用 Machine Learning:

    執行下列命令來安裝 Azure CLImlAzure Machine Learning 的擴充功能

    az extension add -n ml
    

    在 Azure CLI 的 ml 延伸模組 2.7 版中引進批次端點的管線元件部署。 使用 az extension update --name ml 命令來取得最新版本。


連線到您的工作區

工作區是 Machine Learning 的最上層資源。 它提供集中的位置,讓您在使用 Machine Learning 時使用您所建立的所有成品。 在本節中,您會連線到要執行部署工作的工作區。

在下列命令中,輸入訂用帳戶識別碼、工作區、位置和資源群組的值:

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

執行您想要部署的管線作業

在本節中,我們會從執行管線作業開始:

下列 pipeline-job.yml 檔案包含管線作業的設定:

pipeline-job.yml

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline

experiment_name: hello-pipeline-batch
display_name: hello-pipeline-batch-job
description: This job demonstrates how to run the a pipeline component in a pipeline job. You can use this example to test a component in an standalone job before deploying it in an endpoint.

compute: batch-cluster
component: hello-component/hello.yml

建立管線作業:

JOB_NAME=$(az ml job create -f pipeline-job.yml --query name -o tsv)

建立批次端點

在部署管線作業之前,我們需要部署批次端點來裝載部署。

  1. 提供端點的名稱。 批次端點的名稱在每個區域中都不得重複,因為該名稱會用於建構叫用 URI。 若要確保名稱不重複,請將任何尾端字元附加至下列程式碼中指定的名稱。

    ENDPOINT_NAME="hello-batch"
    
  2. 設定端點:

    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
    
  3. 建立端點:

    az ml batch-endpoint create --name $ENDPOINT_NAME  -f endpoint.yml
    
  4. 查詢端點 URI:

    az ml batch-endpoint show --name $ENDPOINT_NAME
    

部署管線作業

若要部署管線元件,我們必須從目前的作業建立批次部署。

  1. 我們需要告訴 Azure Machine Learning 我們想要部署的作業名稱。 在我們的案例中,該作業會在下列變數中指出:

    echo $JOB_NAME
    
  2. 設定部署。

    deployment-from-job.yml 檔案包含部署的設定。 請注意,我們如何使用密鑰 job_definition,而不是使用 component,來指出此部署是從管線作業建立的:

    deployment-from-job.yml

    $schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
    name: hello-batch-from-job
    endpoint_name: hello-pipeline-batch
    type: pipeline
    job_definition: azureml:job_name_placeholder
    settings:
        continue_on_step_failure: false
        default_compute: batch-cluster
    

    提示

    此設定假設您具有名爲 batch-cluster 的計算叢集。 您可以將此值取代為您叢集的名稱。

  3. 建立部署:

    執行下列程式碼,在批次端點下建立批次部署,並將其設定為預設部署。

    az ml batch-deployment create --endpoint $ENDPOINT_NAME --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
    

    提示

    請注意,使用 --set job_definition=azureml:$JOB_NAME。 由於作業名稱是唯一的,所以當您在工作區中執行作業時,會在這裡使用命令 --set 來變更作業的名稱。

  4. 您的部署已可供使用。

測試部署

建立部署後,即可接收作業。 您可以叫用預設部署,如下所示:

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

下一步