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.
- Creare o gestire endpoint e distribuzioni batch: usare un ruolo di proprietario, collaboratore o personalizzato che consenta
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'
ml
estensione 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 comandoaz 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.
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"
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
Creare l'endpoint:
az ml batch-endpoint create --name $ENDPOINT_NAME -f endpoint.yml
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.
È 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
Configurare la distribuzione.
Il file
deployment-from-job.yml
contiene la configurazione della distribuzione. Si noti che viene usata la chiavejob_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.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.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