Condividi tramite


Distribuire processi di pipeline esistenti in endpoint batch

SI APPLICA A:Estensione ml dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)

Gli endpoint batch consentono di distribuire i componenti della pipeline, offrendo un modo pratico per rendere operative le pipeline in Azure Machine Learning. Gli endpoint batch accettano componenti della pipeline per la distribuzione. Tuttavia, se si dispone già di un processo della pipeline che viene eseguito correttamente, Azure Machine Learning può accettare tale processo come input per l'endpoint batch e creare automaticamente il componente della pipeline. In questo articolo, si apprenderà come usare il processo della pipeline esistente come input per la distribuzione batch.

Si apprenderà come:

  • Eseguire e creare il processo della pipeline da distribuire
  • Creare una distribuzione batch dal processo esistente
  • Testare la distribuzione

Informazioni su questo esempio

In questo esempio si distribuirà una pipeline costituita da un semplice processo di comando che stampi "hello world!". Anziché registrare il componente della pipeline prima della distribuzione, viene indicato un processo della pipeline esistente da usare per la distribuzione. Azure Machine Learning creerà quindi automaticamente il componente della pipeline e lo distribuirà come distribuzione di componenti della pipeline di endpoint batch.

L'esempio contenute in questo articolo si basa sugli esempi di codice contenuti nel repository azureml-examples. Per eseguire i comandi in locale senza dover copiare o incollare il file YAML e altri file, innanzitutto clonare il repository quindi cambiare le directory nella cartella:

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

I file per questo esempio si trovano in:

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

Prerequisiti

  • Una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare. Provare la versione gratuita o a pagamento di Azure Machine Learning.

  • Un'area di lavoro di Azure Machine Learning. Per creare un'area di lavoro, vedere Gestire le aree di lavoro di Azure Machine Learning.

  • Assicurarsi di disporre delle autorizzazioni seguenti nell'area di lavoro di Azure Machine Learning:

    • Creare o gestire endpoint e distribuzioni batch: usare un ruolo di proprietario, collaboratore o personalizzato che consenta Microsoft.MachineLearningServices/workspaces/batchEndpoints/*.
    • Creare distribuzioni di Azure Resource Manager nel gruppo di risorse dell'area di lavoro: usare un ruolo di Proprietario, Contributore o Personalizzato che consenta Microsoft.Resources/deployments/write nel gruppo di risorse in cui viene distribuita l'area di lavoro.
  • Installare il software seguente per usare Azure Machine Learning:

    Eseguire il comando seguente per installare l'interfaccia della riga di comando di Azure e l'mlestensione per Azure Machine Learning:

    az extension add -n ml
    

    Le distribuzioni dei componenti della pipeline per gli endpoint batch sono state introdotte nella versione 2.7 dell'estensione ml per l'interfaccia della riga di comando di Azure. Usare il comando az extension update --name ml per ottenere la versione più recente.


Connettersi all'area di lavoro

L'area di lavoro è la risorsa di primo livello per Machine Learning. Fornisce una posizione centralizzata per lavorare con tutti gli artefatti creati durante l'uso di Machine Learning. In questa sezione ci si connette all'area di lavoro in cui verranno eseguite le attività di distribuzione.

Immettere i valori per l'ID sottoscrizione, l'area di lavoro, la posizione e il gruppo di risorse nel codice seguente:

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

Eseguire il processo della pipeline da distribuire

In questa sezione, si inizia eseguendo un processo della pipeline:

Il file pipeline-job.yml seguente contiene la configurazione per il processo della pipeline:

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

Creare il processo della pipeline:

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

Creare un endpoint batch

Prima di distribuire il processo della pipeline, è necessario distribuire un endpoint batch per ospitare la distribuzione.

  1. Specificare un nome per l'endpoint. Il nome di un endpoint batch deve essere univoco in ogni area poiché viene usato per costruire l'URI di chiamata. Per garantirne l'univocità, aggiungere tutti i caratteri finali al nome specificato nel codice seguente.

    ENDPOINT_NAME="hello-batch"
    
  2. Configurare l'endpoint:

    Il file endpoint.yml contiene la configurazione dell'endpoint.

    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. Creare l'endpoint:

    az ml batch-endpoint create --name $ENDPOINT_NAME  -f endpoint.yml
    
  4. Eseguire una query sull'URI dell'endpoint:

    az ml batch-endpoint show --name $ENDPOINT_NAME
    

Distribuire il processo della pipeline

Per distribuire il componente della pipeline, è necessario creare una distribuzione batch dal processo esistente.

  1. È necessario indicare ad Azure Machine Learning il nome del processo da distribuire. In questo caso, il processo è indicato con la variabile seguente:

    echo $JOB_NAME
    
  2. Configurare la distribuzione.

    Il file deployment-from-job.yml contiene la configurazione della distribuzione. Si noti che viene usata la chiave job_definition anziché component per indicare che la distribuzione viene creata da un processo della pipeline:

    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
    

    Suggerimento

    Questa configurazione presuppone che sia presente un cluster di calcolo denominato batch-cluster. È possibile sostituire questo valore con il nome del cluster.

  3. Creare la distribuzione:

    Eseguire il codice seguente per creare una distribuzione batch nell'endpoint batch e impostarla come distribuzione predefinita.

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

    Suggerimento

    Si noti l'uso di --set job_definition=azureml:$JOB_NAME. Poiché i nomi dei processi sono univoci, il comando --set viene usato qui per modificare il nome del processo quando viene eseguito nell'area di lavoro.

  4. La distribuzione è pronta per l'uso.

Testare la distribuzione

Dopo aver creato la distribuzione, questa è pronta per ricevere i processi. È possibile richiamare la distribuzione predefinita nel modo seguente:

JOB_NAME=$(az ml batch-endpoint invoke -n $ENDPOINT_NAME --query name -o tsv)

È possibile monitorare lo stato di avanzamento del contenuto e trasmettere i log usando:

az ml job stream -n $JOB_NAME

Pulire le risorse

Al termine, eliminare le risorse associate dall'area di lavoro:

Eseguire il codice seguente per eliminare l'endpoint batch e la relativa distribuzione sottostante. --yes viene usato per confermare l'eliminazione.

az ml batch-endpoint delete -n $ENDPOINT_NAME --yes

Passaggi successivi