Come distribuire pipeline con endpoint batch
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)
È possibile distribuire i componenti della pipeline in un endpoint batch, offrendo un modo pratico per renderli operativi in Azure Machine Learning. Questo articolo illustra come creare una distribuzione batch che contiene una pipeline semplice. Si apprenderà come:
- Creare e registrare un componente della pipeline
- Creare un endpoint batch e distribuire un componente della pipeline
- Testare la distribuzione
Informazioni su questo esempio
In questo esempio si distribuirà un componente della pipeline costituita da un semplice processo di comando che stampi "hello world!". Questo componente non richiede input o output ed è lo scenario di distribuzione della pipeline più semplice.
L'esempio contenuto 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
Seguire la procedura nei Jupyter Notebook
È possibile seguire la versione di Python SDK di questo esempio aprendo il notebook sdk-deploy-and-test.ipynb nel repository clonato.
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 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 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:
Usare il comando seguente per installare l'interfaccia della riga di comando di Azure e l'estensione per Azure Machine Learning
ml
: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 l'ultima versione.
Connettersi all'area di lavoro
L'area di lavoro è la risorsa di primo livello per Machine Learning. Fornisce una posizione centralizzata per gestire tutti gli artefatti creati durante l'uso di Machine Learning. In questa sezione ci si connette all'area di lavoro in cui vengono eseguite le attività di distribuzione.
Nel comando seguente, immettere i valori per ID sottoscrizione, area di lavoro, posizione e gruppo di risorse:
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Creare il componente della pipeline
Gli endpoint batch possono distribuire modelli o componenti della pipeline. I componenti della pipeline sono riutilizzabili ed è possibile semplificare la procedura MLOps usando registri condivisi per spostare questi componenti da un'area di lavoro a un'altra.
Il componente della pipeline in questo esempio contiene un singolo passaggio che stampa solo un messaggio "hello world" nei log. Non richiede input o output.
Il file hello-component/hello.yml
contiene la configurazione per il componente della pipeline:
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
Registrare il componente:
az ml component create -f hello-component/hello.yml
Creare un endpoint batch
Immettere 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 componente della pipeline
Per distribuire il componente della pipeline, è necessario creare una distribuzione batch. Per distribuzione si intende un set di risorse necessarie per ospitare l’asset che esegue il lavoro effettivo.
Creare un cluster di elaborazione. Gli endpoint e le distribuzioni batch vengono eseguiti nei cluster di elaborazione. Possono essere eseguiti in qualsiasi cluster di elaborazione di Azure Machine Learning già esistente nell'area di lavoro. Di conseguenza, più distribuzioni batch possono condividere la stessa infrastruttura di calcolo. In questo esempio si utilizzerà un cluster di elaborazione di Azure Machine Learning denominato
batch-cluster
. Verificare che il calcolo esista nell'area di lavoro o, in caso contrario, crearlo.az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
Configurare la distribuzione:
Il file
deployment.yml
contiene la configurazione della distribuzione. È possibile controllare lo schema YAML dell'endpoint batch completo per ottenere proprietà aggiuntive.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
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 -f deployment.yml --set-default
Suggerimento
Si noti che l'uso del flag
--set-default
sta ad indicare che ora questa nuova distribuzione è la distribuzione predefinita.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)
Suggerimento
In questo esempio la pipeline non include input o output. Tuttavia, se il componente della pipeline richiede alcuni elementi, possono essere indicati in fase di chiamata. Per informazioni su come indicare input e output, vedere Creare processi e dati di input per gli endpoint batch o vedere l'esercitazione Come distribuire una pipeline per eseguire l'assegnazione dei punteggi batch con la pre-elaborazione (anteprima).
È 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
(Facoltativo) Eliminare le risorse di calcolo, a meno che non si preveda di riutilizzare il cluster di elaborazione con distribuzioni successive.
az ml compute delete -n batch-cluster
Passaggi successivi
- Come distribuire una pipeline di training con endpoint batch)
- Come distribuire una pipeline per eseguire l'assegnazione dei punteggi batch con la pre-elaborazione
- Creare endpoint batch dai processi delle pipeline
- Creare processi e inserire dati negli endpoint batch
- Risoluzione dei problemi relativi agli endpoint batch