Questo articolo illustra come distribuire un modello di Machine Learning con training AutoML in un endpoint online (inferenza in tempo reale). Machine Learning automatizzato, o ML automatizzato, è il processo che consente di automatizzare le attività iterative per lo sviluppo di modelli di Machine Learning che richiedono molto tempo. Per ulteriori informazioni, vedere Informazioni su Machine Learning automatizzato.
Questo articolo illustra come distribuire un modello di Machine Learning con training AutoML in un endpoint online usando:
Studio di Azure Machine Learning
Interfaccia della riga di comando di Azure Machine Learning v2
Per eseguire la distribuzione dallo studio di Azure Machine Learning senza codice:
La distribuzione di un modello con training AutoML dalla pagina Machine Learning automatizzato è un'esperienza senza codice. Ciò significa che non è necessario preparare uno script di assegnazione del punteggio e un ambiente, poiché entrambi vengono generati automaticamente.
Passare alla pagina Machine Learning automatizzato nello studio
Selezionare il tipo di esperimento ed eseguirlo
Scegliere la scheda Modelli
Selezionare il modello da distribuire
Una volta selezionato un modello, il pulsante Distribuisci si attiverà mostrando un menu a discesa
Selezionare l'opzione Distribuisci in endpoint in tempo reale
Il sistema genererà il modello e l'ambiente necessari per la distribuzione.
Completare la procedura guidata per distribuire il modello in un endpoint online
Eseguire la distribuzione manualmente dallo studio o dalla riga di comando
Per avere un maggiore controllo sulla distribuzione, è possibile scaricare gli artefatti di training e distribuirli.
Per scaricare i componenti necessari per la distribuzione:
Accedere all'esperimento di Machine Learning automatizzato ed eseguirlo nell'area di lavoro di Machine Learning
Scegliere la scheda Modelli
Selezionare il modello che si intende usare. Dopo aver selezionato un modello, verrà abilitato il pulsante Download
Scegliere Download
Verrà scaricato un file ZIP contenente:
Un file di specifica di ambiente Conda denominato conda_env_<VERSION>.yml
Un file di punteggio Python denominato scoring_file_<VERSION>.py
Il modello stesso, in un file di Python .pkl denominato model.pkl
Per eseguire la distribuzione usando questi file, è possibile usare lo studio o l'interfaccia della riga di comando di Azure.
Accedere alla pagina Modelli nello studio di Azure Machine Learning
Selezionare l'opzione + Registra modello
Registrare il modello scaricato dall'esecuzione di Machine Learning automatizzato
Accedere alla pagina Ambienti, selezionare Ambiente personalizzato e poi + Crea opzione per creare un ambiente per la distribuzione. Usare il file yaml conda scaricato per creare un ambiente personalizzato
Selezionare il modello e, nell'opzione a discesa Distribuisci, selezionare Distribuisci nell'endpoint in tempo reale
Completare tutti i passaggi della procedura guidata per creare una distribuzione e un endpoint online
Per creare una distribuzione dall'interfaccia della riga di comando, sono necessarie l'interfaccia della riga di comando di Azure e l'estensione ML v2. Per confermare che siano presenti, eseguire il comando seguente:
Se si ha accesso a più sottoscrizioni di Azure, è possibile impostare la sottoscrizione attiva:
az account set -s "<YOUR_SUBSCRIPTION_NAME_OR_ID>"
Impostare il gruppo di risorse predefinito e l'area di lavoro in cui si vuole creare la distribuzione:
az configure --defaults group=$GROUP workspace=$WORKSPACE location=$LOCATION
Inserire il file di punteggio nella propria directory
Creare una directory denominata src/ e inserirvi il file di punteggio scaricato. Questa directory viene caricata in Azure e contiene tutto il codice sorgente necessario per eseguire l'inferenza. Per un modello di AutoML, è presente solo il singolo file di punteggio.
Creare il file yaml dell'endpoint e della distribuzione
Per creare un endpoint online dalla riga di comando, è necessario creare un file endpoint.yml e un file deployment.yml. Il codice seguente, tratto dal repository di esempi di Azure Machine Learning, mostra endpoint/online/managed/sample/, che acquisisce tutti gli input necessari:
Sarà necessario modificare questo file per usare i file scaricati dalla pagina Modelli di AutoML.
Creare un file automl_endpoint.yml e automl_deployment.yml e incollare il contenuto dell'esempio precedente.
Modificare il valore name dell'endpoint. Il nome dell'endpoint deve essere univoco all'interno dell'area di Azure. Il nome di un endpoint deve iniziare con una lettera maiuscola o minuscola ed è costituito solo da caratteri '-' e alfanumerici.
Nel file automl_deployment modificare il valore delle chiavi nei percorsi seguenti:
Percorso
Modificare in
model:path
Il percorso del file model.pkl scaricato.
code_configuration:code:path
La directory in cui è stato inserito il file di punteggio.
code_configuration:scoring_script
Il nome del file di punteggio Python (scoring_file_<VERSION>.py).
environment:conda_file
L'URL del file dell'ambiente conda scaricato (conda_env_<VERSION>.yml).
Inserire il file di punteggio nella propria directory
Creare una directory denominata src/ e inserirvi il file di punteggio scaricato. Questa directory viene caricata in Azure e contiene tutto il codice sorgente necessario per eseguire l'inferenza. Per un modello di AutoML, è presente solo il singolo file di punteggio.
Connettersi all'area di lavoro di Azure Machine Learning
Importare le librerie necessarie:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration,
)
from azure.identity import DefaultAzureCredential
Configurare i dettagli dell'area di lavoro e ottenere un handle per l'area di lavoro:
# enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Creare l'endpoint e la distribuzione
Successivamente verranno create le distribuzioni e gli endpoint online gestiti
Configurare l'endpoint online:
Suggerimento
name: nome dell'endpoint. Deve essere univoco nell'area di Azure. Il nome di un endpoint deve iniziare con una lettera maiuscola o minuscola ed è costituito solo da caratteri '-' e alfanumerici. Per altre informazioni sulle regole di denominazione, vedere i limiti degli endpoint.
auth_mode: usare key per l'autenticazione basata su chiave. Usare aml_token per l'autenticazione basata su token di Azure Machine Learning. Un elemento key non scade, mentre uno aml_token scade. Per altre informazioni sull'autenticazione, vedere Eseguire l'autenticazione a un endpoint online.
# Creating a unique endpoint name with current datetime to avoid conflicts
import datetime
online_endpoint_name = "endpoint-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
description="this is a sample online endpoint",
auth_mode="key",
)
Creare l'endpoint:
Usando l'oggetto MLClient creato in precedenza, verrà ora creato l'endpoint nell'area di lavoro. Questo comando avvia la creazione dell'endpoint e restituisce una risposta di conferma mentre la creazione dell'endpoint è ancora in corso.
ml_client.begin_create_or_update(endpoint)
Configurare la distribuzione online:
Per distribuzione si intende un set di risorse necessarie per ospitare il modello che esegue l'inferenza effettiva. Verrà creata una distribuzione per l'endpoint usando la classe ManagedOnlineDeployment.
Nell'esempio precedente si presuppone che i file scaricati dalla pagina Modelli di AutoML si trovino nella directory src. È possibile modificare i parametri nel codice in base alla situazione.
Parametro
Modificare in
model:path
Il percorso del file model.pkl scaricato.
code_configuration:code:path
La directory in cui è stato inserito il file di punteggio.
code_configuration:scoring_script
Il nome del file di punteggio Python (scoring_file_<VERSION>.py).
environment:conda_file
L'URL del file dell'ambiente conda scaricato (conda_env_<VERSION>.yml).
Creare la distribuzione:
Usando l'oggetto MLClient creato in precedenza, verrà ora creata la distribuzione nell'area di lavoro. Questo comando avvia la creazione della distribuzione e restituisce una risposta di conferma mentre la creazione della distribuzione è ancora in corso.