Attivare applicazioni, processi o flussi di lavoro CI/CD basati su eventi di Azure Machine Learning

Questo articolo illustra come configurare applicazioni, processi o flussi di lavoro CI/CD basati su eventi di Azure Machine Learning. Ad esempio, i messaggi di posta elettronica di notifica degli errori o le esecuzioni della pipeline di Machine Learning, quando vengono rilevate determinate condizioni usando Griglia di eventi di Azure.

Azure Machine Learning gestisce l'intero ciclo di vita del processo di apprendimento automatico, tra cui il training del modello, la distribuzione del modello e il monitoraggio. È possibile usare Griglia di eventi per rispondere a eventi di Azure Machine Learning come il completamento delle esecuzioni di training, la registrazione e distribuzione dei modelli e il rilevamento della deriva dei dati, usando architetture serverless moderne. È quindi possibile sottoscrivere e usare eventi quali modifica dello stato di esecuzione, completamento dell'esecuzione, registrazione del modello, distribuzione del modello e rilevamento della deriva dei dati in un'area di lavoro.

Quando usare Griglia di eventi per le azioni guidate dagli eventi:

  • Invio di messaggi di posta elettronica in caso di errore e di completamento dell'esecuzione
  • Utilizzo di una funzione di Azure dopo la registrazione di un modello
  • Streaming di eventi da Azure Machine Learning a diversi endpoint
  • Attivazione di una pipeline ML quando viene rilevata la deriva dei dati

Importante

Gli elementi contrassegnati come (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. La versione di anteprima viene messa a disposizione senza contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Prerequisiti

Per usare Griglia di eventi, è necessario l'accesso di collaboratore o proprietario all'area di lavoro di Azure Machine Learning per cui si creano eventi.

Modello e tipi di eventi

Griglia di eventi di Azure legge gli eventi dalle origini, ad esempio Azure Machine Learning e altri servizi di Azure. Questi eventi vengono quindi inviati a gestori degli eventi come Hub eventi di Azure, Funzioni di Azure, App per la logica e altri. Il diagramma seguente mostra come Griglia di eventi connette origini e gestori, ma non è un elenco completo delle integrazioni supportate.

Modello funzionale di Griglia di eventi di Azure

Per altre informazioni sulle origini evento e sui gestori degli eventi, vedere Che cos'è Griglia di eventi?

Tipi di eventi per Azure Machine Learning

Azure Machine Learning offre eventi in vari punti del ciclo di vita dell'apprendimento automatico:

Tipo di evento Descrizione
Microsoft.MachineLearningServices.RunCompleted Generato quando viene completata l'esecuzione di un esperimento di Machine Learning
Microsoft.MachineLearningServices.ModelRegistered (anteprima) Generato quando un modello di Machine Learning viene registrato nell'area di lavoro
Microsoft.MachineLearningServices.ModelDeployed (anteprima) Generato quando viene completata la distribuzione di un servizio di inferenza con uno o più modelli
Microsoft.MachineLearningServices.DatasetDriftDetected (anteprima) Generato quando viene completato un processo di rilevamento della deriva dei dati per due set di dati
Microsoft.MachineLearningServices.RunStatusChanged Generato quando viene modificato uno stato di esecuzione

Filtrare e sottoscrivere eventi

Questi eventi vengono pubblicati tramite Griglia di eventi di Azure. Dalla portale di Azure, PowerShell o dall'interfaccia della riga di comando di Azure, è possibile sottoscrivere facilmente gli eventi specificando uno o più tipi di eventi e filtrando le condizioni.

Quando si configurano gli eventi, è possibile applicare filtri per far sì che l'attivazione avvenga solo in base a dati degli eventi specifici. Nell'esempio seguente, per gli eventi di modifica dello stato di esecuzione, è possibile filtrare in base ai tipi di esecuzione. L'evento viene attivato solo quando vengono soddisfatti i criteri. Per altre informazioni sui dati degli eventi che è possibile filtrare, vedere lo schema di Griglia di eventi di Azure Machine Learning.

Le sottoscrizioni per gli eventi di Azure Machine Learning sono protette dal controllo degli accessi in base al ruolo di Azure. Solo chi ha il ruolo di collaboratore o proprietario di un'area di lavoro può creare, aggiornare ed eliminare le sottoscrizioni agli eventi. È possibile applicare filtri alle sottoscrizioni di eventi durante la creazione della sottoscrizione stessa o in un secondo momento.

  1. Accedere al portale di Azure, selezionare una nuova sottoscrizione o una sottoscrizione esistente.

  2. Selezionare la voce Eventi nell'area di spostamento a sinistra e quindi selezionare + Sottoscrizione di eventi.

  3. Selezionare la scheda filtri e scorrere verso il basso fino a Filtri avanzati. Per Chiave e Valore, specificare i tipi di proprietà in base ai quali si desidera filtrare. Qui è possibile visualizzare i trigger di evento quando il tipo di esecuzione è un'esecuzione della pipeline o un passaggio della pipeline.

    filtrare gli eventi

  • Filtro in base al tipo di evento: una sottoscrizione di eventi può specificare uno o più tipi di eventi di Azure Machine Learning.

  • Filtro in base all'oggetto dell'evento: Griglia di eventi di Azure supporta i filtri per oggetto in base alle corrispondenze comincia con e termina con, in modo che gli eventi con un oggetto corrispondente vengano recapitati al sottoscrittore. Diversi eventi di Machine Learning presentano diversi formati dell'oggetto.

    Tipo di evento Formato dell'oggetto Oggetto di esempio
    Microsoft.MachineLearningServices.RunCompleted experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
    Microsoft.MachineLearningServices.ModelRegistered (anteprima) models/{modelName}:{modelVersion} models/sklearn_regression_model:3
    Microsoft.MachineLearningServices.ModelDeployed (anteprima) endpoints/{serviceId} endpoints/my_sklearn_aks
    Microsoft.MachineLearningServices.DatasetDriftDetected (anteprima) datadrift/{data.DataDriftId}/run/{data.RunId} datadrift/4e694bf5-712e-4e40-b06a-d2a2755212d4/run/my_driftrun1_1550564444_fbbcdc0f
    Microsoft.MachineLearningServices.RunStatusChanged experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
  • Filtro avanzato: Griglia di eventi di Azure supporta anche il filtro avanzato in base allo schema evento pubblicato. Per i dettagli sullo schema degli eventi di Azure Machine Learning, vedere Schema degli eventi di Griglia di eventi di Azure per Azure Machine Learning. Per l'evento Microsoft.MachineLearningServices.ModelRegistered, per filtrare il valore del tag del modello:

    --advanced-filter data.ModelTags.key1 StringIn ('value1')
    

    Per altre informazioni su come applicare i filtri, vedere Filtrare gli eventi per Griglia di eventi.

Usare gli eventi di Machine Learning

Per le applicazioni che gestiscono gli eventi di Machine Learning è consigliabile seguire alcune procedure:

  • Dal momento che vi possono essere più sottoscrizioni configurate per instradare gli eventi allo stesso gestore eventi, è importante non presupporre che gli eventi derivino da un'origine specifica, ma controllare l'argomento del messaggio per assicurarsi che provengano dall'area di lavoro di Machine Learning prevista.
  • Controllare anche che il tipo di evento che si verifica, eventType, sia un oggetto che si è preparati a elaborare e non presupporre che tutti gli eventi che si ricevono siano dei tipi previsti.
  • Dal momento che i messaggi non arrivano in ordine e giungono con un po' di ritardo, usare i campi etag per verificare se le informazioni disponibili sugli oggetti sono ancora aggiornate. È possibile usare anche i campi del sequencer per comprendere l'ordine degli eventi relativi a un oggetto specifico.
  • Ignorare i campi che non si conoscono. Questa procedura consentirà di rimanere flessibili alle nuove funzionalità che potrebbero essere aggiunte in futuro.
  • Le operazioni non riuscite o annullate di Azure Machine Learning non attiveranno alcun evento. Ad esempio, se la distribuzione modello ha esito negativo, Microsoft.MachineLearningServices.ModelDeployed non viene attivato. Prendere in considerazione tale modalità di errore durante la progettazione delle applicazioni. È comunque possibile usare l'SDK di Azure Machine Learning, l'interfaccia della riga di comando o il portale per verificare lo stato di un'operazione e comprendere dettagliatamente i motivi dell'errore.

Griglia di eventi di Azure consente ai clienti di creare gestori di messaggi disaccoppiati, che possono essere attivati dagli eventi di Azure Machine Learning. Di seguito sono riportati alcuni esempi significativi di gestori di messaggi:

  • Funzioni di Azure
  • App per la logica di Azure
  • Hub eventi di Azure
  • Pipeline di Azure Data Factory
  • Webhook generici, che potrebbero essere ospitati nella piattaforma Azure o altrove

Eseguire la configurazione nel portale di Azure

  1. Aprire il portale di Azure e accedere all'area di lavoro di Azure Machine Learning.

  2. Nella barra a sinistra selezionare Eventi, quindi selezionare Sottoscrizioni di eventi.

    Screenshot che mostra la selezione della sottoscrizione di eventi.

  3. Selezionare il tipo di evento da usare.

    Screenshot del modulo Crea sottoscrizione eventi.

  4. Selezionare l'endpoint in cui pubblicare l'evento. Nello screenshot seguente Hub eventi è l'endpoint selezionato:

    Screenshot che mostra il riquadro Crea sottoscrizione eventi con Seleziona hub eventi aperto.

Dopo aver confermato la selezione, selezionare Crea. Dopo la configurazione, questi eventi verranno inseriti nell'endpoint.

Eseguire la configurazione con l'interfaccia della riga di comando

È possibile installare la versione più recente dell'interfaccia della riga di comando di Azure o usare Azure Cloud Shell fornito come parte della sottoscrizione di Azure.

Per installare l'estensione Griglia di eventi, usare il comando seguente dall'interfaccia della riga di comando:

az extension add --name eventgrid

L'esempio seguente illustra come selezionare una sottoscrizione di Azure e creare una nuova sottoscrizione di eventi per Azure Machine Learning:

# Select the Azure subscription that contains the workspace
az account set --subscription "<name or ID of the subscription>"

# Subscribe to the machine learning workspace. This example uses EventHub as a destination. 
az eventgrid event-subscription create --name {eventGridFilterName} \
  --source-resource-id /subscriptions/{subId}/resourceGroups/{RG}/providers/Microsoft.MachineLearningServices/workspaces/{wsName} \
  --endpoint-type eventhub \
  --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.EventHub/namespaces/n1/eventhubs/EH1 \
  --included-event-types Microsoft.MachineLearningServices.ModelRegistered \
  --subject-begins-with "models/mymodelname"

Esempi

Esempio: inviare avvisi tramite e-mail

Usare App per la logica di Azure per configurare i messaggi di posta elettronica per tutti gli eventi. Personalizzare usando le condizioni e specificare i destinatari per consentire la collaborazione tra team che lavorano insieme.

  1. Nel portale di Azure accedere all'area di lavoro di Azure Machine Learning e selezionare la scheda eventi nella barra a sinistra. Da qui, selezionare App per la logica.

    Screenshot che mostra la selezione di App per la logica.

  2. Accedere all'interfaccia utente App per la logica e selezionare il servizio Machine Learning come tipo di argomento.

    Screenshot che mostra la finestra di dialogo Quando si verifica un evento di risorsa con Machine Learning selezionato come tipo di risorsa.

  3. Selezionare l'evento per cui ricevere una notifica. Ad esempio, come nello screenshot seguente, RunCompleted.

    Screenshot che mostra il servizio Machine Learning come tipo di risorsa.

  4. Successivamente, aggiungere un passaggio per usare questo evento e cercare la posta elettronica. Sono disponibili diversi account di posta elettronica che è possibile usare per ricevere eventi. È anche possibile configurare delle condizioni per l'invio di un avviso di posta elettronica.

    Screenshot che mostra la finestra di dialogo Scegli un'azione con il messaggio di posta elettronica immesso nella riga di ricerca.

  5. Selezionare Invia un messaggio di posta elettronica e specificare i parametri. Nell'oggetto è possibile includere Tipo di evento e Argomento per filtrare meglio gli eventi. È possibile includere anche un collegamento alla pagina dell'area di lavoro per le esecuzioni nel corpo del messaggio.

    Per salvare questa azione, selezionare Salva con nome nell'angolo sinistro della pagina.

    Screenshot che mostra la finestra di dialogo Invia un messaggio di posta elettronica con Argomento e Tipo di evento aggiunto alla riga dell'oggetto dall'elenco a destra.

Esempio: ripetizione del training attivata dalla deriva dei dati

Importante

Questo esempio si basa su una funzionalità (deriva dei dati) disponibile solo quando si usa Azure Machine Learning SDK v1 o l'estensione dell'interfaccia della riga di comando di Azure v1 per Azure Machine Learning. Per altre informazioni, vedere Che cos'è l'interfaccia della riga di comando di Azure Machine Learning e SDK v2.

I modelli non sono aggiornati nel tempo e non rimangono utili nel contesto in cui è in esecuzione. Un metodo per stabilire se è il momento di ripetere il training del modello è rilevare la deriva dei dati.

Questo esempio illustra come usare Griglia di eventi con un'app per la logica di Azure per attivare la ripetizione del training. Nell'esempio, quando si verifica la deriva dei dati tra il training di un modello e la gestione dei set di dati viene attivata una pipeline di Azure Data Factory.

Prima di iniziare, eseguire le azioni seguenti:

In questo esempio viene usata una semplice pipeline di Data Factory per copiare i file in un archivio BLOB ed eseguire una pipeline di Machine Learning pubblicata. Per altre informazioni su questo scenario, vedere come configurare un passaggio di Machine Learning in Azure Data Factory.

Screenshot che mostra la pipeline di training in Azure Data Factory.

  1. Iniziare con la creazione dell'app per la logica. Accedere al portale di Azure, cercare le App per la logica e selezionare Crea.

    search-logic-app

  2. Inserire le informazioni richieste. Per semplificare l'esperienza, usare la stessa sottoscrizione e lo stesso gruppo di risorse della pipeline di Azure Data Factory e dell'area di lavoro di Azure Machine Learning.

    Screenshot che mostra il riquadro Crea app per la logica.

  3. Dopo aver creato l'app per la logica, selezionare Quando si verifica un evento di risorsa di Griglia di eventi.

    Screenshot che mostra la finestra di progettazione di App per la logica con Start con un'opzione di trigger comune, tra cui Quando si verifica un evento di risorsa griglia di eventi.

  4. Accedere e inserire i dettagli relativi all'evento. Impostare Nome risorsa sul nome dell'area di lavoro. Impostare Tipo di evento su DatasetDriftDetected.

    Screenshot che mostra l'elemento del tipo di evento drift dei dati.

  5. Aggiungere un nuovo passaggio e cercare Azure Data Factory. Selezionare Crea un'esecuzione della pipeline.

    Screenshot che mostra il riquadro Scegliere un'azione con l'opzione Crea un'esecuzione della pipeline selezionata.

  6. Accedere e specificare la pipeline di Azure Data Factory pubblicata da eseguire.

    Screenshot che mostra il riquadro Crea un'esecuzione della pipeline con vari valori.

  7. Salvare e creare l'app per la logica usando il pulsante salva nell'area in alto a sinistra della pagina. Per visualizzare l'app, passare all'area di lavoro nel portale di Azure e selezionare Eventi.

    Screenshot che mostra gli eventi con l'app per la logica evidenziata.

Ora la pipeline data factory viene attivata quando si verifica la deriva. Visualizzare i dettagli sull'esecuzione della deriva dei dati e sulla pipeline di Machine Learning nello studio di Azure Machine Learning.

Screenshot che mostra gli endpoint della pipeline.

Passaggi successivi

Sono disponibili altre informazioni su Griglia di eventi e la possibilità di provare a usare gli eventi di Azure Machine Learning: