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 altre informazioni, vedere Che cos'è Machine Learning automatizzato (AutoML)?
Nelle sezioni seguenti si apprenderà come distribuire un modello di Machine Learning con training AutoML in 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.
In Studio di Azure Machine Learning andare alla pagina Machine Learning automatizzato.
Selezionare il tipo di esperimento ed eseguirlo.
Scegliere la scheda Modelli + processi figlio.
Selezionare il modello da distribuire.
Una volta selezionato un modello, il pulsante Distribuisci è disponibile con un menu a discesa.
Selezionare l'opzione Endpoint in tempo reale.
Il sistema genera il modello e l'ambiente necessari per la distribuzione.
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 + processi figlio.
Selezionare il modello da usare. Dopo aver selezionato un modello, il pulsante Download è abilitato.
Scegliere Scarica.
Si riceve un file .zip che contiene:
Un file di specifica di ambiente Conda denominato conda_env_<VERSION>.yml
Un file di punteggio Python dei 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.
In Studio di Azure Machine Learning andare alla pagina Modelli.
Selezionare Seleziona + Registra>Da file locali.
Registrare il modello scaricato dall'esecuzione di Machine Learning automatizzato.
Accedere alla pagina Ambienti, selezionare Ambiente personalizzato e successivamente + Crea per creare un ambiente per la distribuzione. Usare il file conda yaml scaricato per creare un ambiente personalizzato.
Selezionare il modello e, nel menu a discesa Distribuisci, selezionare 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. Eseguire il comando seguente per confermare:
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 desidera 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. Salvare 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, 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.
È 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 i contenuti degli esempi precedenti.
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.yml modificare il valore delle chiavi nei percorsi seguenti.
Percorso
Modificare in
model:path
Percorso del file model.pkl scaricato.
code_configuration:code:path
La directory in cui è stato inserito il file di punteggio.
code_configuration:scoring_script
Nome del file di punteggio Python (scoring_file_<VERSION>.py).
environment:conda_file
URL del file dell'ambiente conda scaricato (conda_env_<VERSION>.yml).
Inserire il file di punteggio nella propria directory
Creare una directory denominata src. Salvare 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 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
Creare 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 un elemento 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, viene creato l'endpoint nell'area di lavoro. Questo comando avvia la creazione dell'endpoint. Restituisce una risposta di conferma mentre la creazione dell'endpoint continua.
ml_client.begin_create_or_update(endpoint)
Configurare la distribuzione online.
Una distribuzione è un set di risorse necessarie per ospitare il modello che esegue effettivamente l'inferenza. Creare una distribuzione per l'endpoint, si usa la classe ManagedOnlineDeployment.
In questo esempio, i file scaricati dalla pagina Modelli di AutoML si trovano nella directory src. È possibile modificare i parametri nel codice in base alla situazione.
Parametro
Modificare in
model:path
Percorso del file model.pkl scaricato.
code_configuration:code:path
La directory in cui è stato inserito il file di punteggio.
code_configuration:scoring_script
Nome del file di punteggio Python (scoring_file_<VERSION>.py).
environment:conda_file
URL del file dell'ambiente conda scaricato (conda_env_<VERSION>.yml).
Creare la distribuzione.
Usando MLClient creato in precedenza, creare la distribuzione nell'area di lavoro. Questo comando inizia a creare la distribuzione. Restituisce una risposta di conferma mentre la creazione della distribuzione continua.