Esercitazione: finestra di progettazione - distribuire un modello di Machine Learning

Usare la finestra di progettazione per distribuire un modello di Machine Learning per stimare il prezzo delle automobili. Questa esercitazione è la seconda di una serie in due parti.

Nota

La finestra di progettazione supporta due tipi di componenti: i componenti predefiniti classici (v1) e i componenti personalizzati (v2). Questi due tipi di componenti NON sono compatibili.

I componenti predefiniti classici forniscono componenti predefiniti principalmente per l'elaborazione dei dati e le attività tradizionali di Machine Learning, come ad esempio regressione e classificazione. Questo tipo di componente continua a essere supportato, ma non avrà nuove aggiunte future.

I componenti personalizzati consentono di eseguire il wrapping del codice personalizzato come componente. Questa opzione supporta la condivisione di componenti tra aree di lavoro e la creazione semplice nelle interfacce di studio, CLI v2 e SDK v2.

Per i nuovi progetti, è consigliabile usare un componente personalizzato che sia compatibile con AzureML V2 e continui a ricevere nuovi aggiornamenti.

Questo articolo si applica ai componenti predefiniti classici non compatibili con CLI v2 e SDK v2.

Nella prima parte dell'esercitazione è stato eseguito il training di un modello di regressione lineare sui prezzi delle automobili. Nella seconda parte, si distribuisce il modello per offrire ad altri utenti la possibilità di usarlo. In questa esercitazione:

  • Creare una pipeline di inferenza in tempo reale.
  • Creare un cluster di inferenza.
  • Distribuire l'endpoint in tempo reale.
  • Testare l'endpoint in tempo reale.

Prerequisiti

Completare la prima parte dell'esercitazione per apprendere come eseguire il training e assegnare un punteggio a un modello di Machine Learning nella finestra di progettazione.

Importante

Se gli elementi grafici citati in questo documento non vengono visualizzati, ad esempio i pulsanti di Studio o della finestra di progettazione, è possibile che non si abbia il livello di autorizzazioni appropriato per l'area di lavoro. Contattare l'amministratore della sottoscrizione di Azure per verificare che sia stato concesso il livello di accesso corretto. Per altre informazioni, vedere Gestire utenti e ruoli.

Creare una pipeline di inferenza in tempo reale

Per distribuire la pipeline, è necessario prima convertire la pipeline di training in una pipeline di inferenza in tempo reale. Questo processo rimuove i componenti di training e aggiunge input e output del servizio Web per gestire le richieste.

Nota

La creazione di pipeline di inferenza supporta solo le pipeline di training che contengono solo componenti predefiniti della finestra di progettazione e deve essere presente un componente come Train Model che restituisce il modello sottoposto a training.

Creare una pipeline di inferenza in tempo reale

  1. Nella pagina dei dettagli del processo della pipeline, sopra il canvas della pipeline, selezionare Crea pipeline di inferenza>Pipeline di inferenza in tempo reale.

    Screenshot of create inference pipeline in pipeline job detail page.

    La nuova pipeline avrà ora un aspetto simile al seguente:

    Screenshot showing the expected configuration of the pipeline after preparing it for deployment.

    Quando si seleziona Create inference pipeline accadono diverse cose:

    • Il modello sottoposto a training viene archiviato come componente di Set di dati nel riquadro componenti. È possibile trovarlo in My Datasets (Set di dati personali).
    • I componenti di training, come Training modello e Divisione dati, vengono rimossi.
    • Il modello con training salvato viene aggiunto nuovamente alla pipeline.
    • Vengono aggiunti i componenti Input servizio Web e Output servizio Web. Tali componenti mostrano il punto in cui i dati dell'utente vengono immessi nella pipeline e il punto in cui vengono restituiti.

    Nota

    Per impostazione predefinita, l'input del servizio Web prevede lo stesso schema dei dati di output del componente che si connette alla stessa porta downstream di cui dispone. In questo esempio, Input del servizio Web e Dati prezzi automobile (non elaborati) si connettono allo stesso componente downstream, pertanto Input del servizio Webprevede lo stesso schema di dati di Dati prezzi automobile (non elaborati) e la colonna delle variabili di destinazione price è inclusa nello schema. Tuttavia, quando si assegna un punteggio ai dati, in genere non si conoscono i valori delle variabili di destinazione. In questo caso, è possibile rimuovere la colonna della variabile di destinazione nella pipeline di inferenza usando il componenteSeleziona colonne nel set di dati. Assicurarsi che l'output di Seleziona colonne nel set di dati che rimuove la colonna delle variabili di destinazione sia connessa alla stessa porta dell'output del componente Input del servizio Web.

  2. Selezionare Submit (Invia) e usare la stessa destinazione di calcolo e lo stesso esperimento usati nella prima parte.

    Se si tratta del primo processo, potrebbero essere necessari fino a 20 minuti per completare l'esecuzione della pipeline. Le impostazioni di calcolo predefinite prevedono una dimensione minima del nodo pari a 0, il che significa che la finestra di progettazione deve allocare risorse dopo l'inattività. I successivi processi della pipeline richiederanno meno tempo, perché le risorse di calcolo sono già allocate. Inoltre, la finestra di progettazione usa i risultati memorizzati nella cache per ogni componente in modo da migliorare ulteriormente l'efficienza.

  3. Passare al dettaglio del processo di inferenza in tempo reale selezionando il collegamento dettagli processo nel riquadro sinistro.

  4. Selezionare Distribuisci nella pagina dei dettagli del processo.

    Screenshot showing deploying in job detail page.

Creare un cluster di inferenza

Nella finestra di dialogo visualizzata è possibile selezionare uno dei cluster del servizio Azure Kubernetes esistenti in cui distribuire il modello. Se non si ha un cluster del servizio Azure Kubernetes, seguire questa procedura per crearne uno.

  1. Selezionare Compute (Calcolo) nella finestra di dialogo visualizzata per passare alla pagina Compute.

  2. Sulla barra multifunzione di spostamento selezionare Inference Clusters>+ New (Cluster di inferenza > Nuovo).

    Screenshot showing how to get to the new inference cluster pane.

  3. Nel riquadro del cluster di inferenza configurare un nuovo servizio Kubernetes.

  4. Immettere aks-compute in Compute name (Nome del calcolo).

  5. Selezionare un'area vicina disponibile per Region (Area).

  6. Seleziona Crea.

    Nota

    La creazione di un nuovo servizio Azure Kubernetes richiede circa 15 minuti. È possibile controllare lo stato del provisioning nella pagina Inference Clusters (Cluster di inferenza)

Distribuire l'endpoint in tempo reale

Al termine del provisioning del servizio Azure Kubernetes, tornare alla pipeline di inferenza in tempo reale per completare la distribuzione.

  1. Selezionare Deploy (Distribuisci) sopra il canvas.

  2. Selezionare Deploy new real-time endpoint (Distribuisci nuovo endpoint in tempo reale).

  3. Selezionare il cluster del servizio Azure Kubernetes creato.

    Screenshot showing how to set up a new real-time endpoint.

    È anche possibile modificare l'impostazione Avanzata per l'endpoint in tempo reale.

    Impostazione avanzata Descrizione
    Abilitare la diagnostica e la raccolta dati di Application Insights Specifica se abilitare Application Insights di Azure per raccogliere dati dagli endpoint distribuiti.
    Impostazione predefinita: False.
    Timeout punteggio Timeout in millisecondi da applicare per l'assegnazione del punteggio alle chiamate al servizio Web.
    Per impostazione predefinita: 60.000.
    Scalabilità automatica abilitata Indica se abilitare la scalabilità automatica per il servizio Web.
    Per impostazione predefinita: True.
    Numero minimo di repliche Il numero minimo di contenitori da usare per la scalabilità automatica del servizio Web.
    Per impostazione predefinita: 1.
    Numero massimo di repliche Il numero massimo di contenitori da usare per la scalabilità automatica di questo servizio Web.
    Per impostazione predefinita: 10.
    Utilizzo di destinazione L'utilizzo di destinazione (in percentuale su 100) che è necessario provare a mantenere per la scalabilità automatica di questo servizio Web.
    Per impostazione predefinita: 70.
    Periodo di aggiornamento Frequenza (in secondi) dei tentativi di ridimensionamento automatico del servizio Web.
    Per impostazione predefinita: 1.
    Capacità di riserva della CPU Il numero di core di CPU da allocare per questo servizio Web.
    Per impostazione predefinita: 0,1.
    Capacità di riserva della memoria La quantità di memoria (in GB) da allocare per questo servizio Web.
    Per impostazione predefinita: 0,5.
  4. Seleziona Distribuisci.

    Al termine della distribuzione verrà visualizzata una notifica di esito positivo dal Centro notifiche. Potrebbe richiedere alcuni minuti.

    Screenshot showing deployment notification.

Suggerimento

È anche possibile eseguire la distribuzione in Istanza di contenitore di Azure (ACI) se si seleziona Istanza di contenitore di Azure per Tipo di calcolo nella casella impostazione dell'endpoint in tempo reale. Istanza di contenitore di Azure viene usata per il test o lo sviluppo. Usare ACI per carichi di lavoro basati su CPU su scala ridotta che richiedono meno di 48 GB di RAM.

Testare l'endpoint in tempo reale

Una volta completata la distribuzione, è possibile visualizzare l'endpoint in tempo reale passando alla pagina Endpoints.

  1. Nella pagina Endpoints selezionare l'endpoint appena distribuito.

    Nella scheda Dettagli, sono disponibili altre informazioni, come l'URI REST, la definizione di Swagger, lo stato e i tag.

    Nella scheda Utilizza, è possibile trovare il codice di utilizzo di esempio, le chiavi di sicurezza e impostare i metodi di autenticazione.

    Nella scheda Log di distribuzione sono disponibili i log di distribuzione dettagliati dell'endpoint in tempo reale.

  2. Per testare l'endpoint, passare alla scheda Test. Da qui è possibile immettere i dati di test e selezionare Test verificare l'output dell'endpoint.

Aggiornare l'endpoint in tempo reale

È possibile aggiornare l'endpoint online con il nuovo modello sottoposto a training nella finestra di progettazione. Nella pagina dei dettagli dell'endpoint online, è possibile trovare il processo precedente della pipeline di training e il processo di inferenza della pipeline.

  1. È possibile trovare e modificare direttamente la bozza della pipeline di training nella home page della finestra di progettazione.

    In alternativa, per continuare la modifica, è possibile aprire il collegamento al processo della pipeline di training e clonarlo in una nuova bozza di pipeline.

    Screenshot showing training job link in endpoint detail page.

  2. Dopo aver inviato la pipeline di training modificata, passare alla pagina dei dettagli del processo.

  3. Al termine del processo, fare clic con il pulsante destro del mouse su Esegui il training del processo e selezionare Registra dati.

    Screenshot showing register trained model as dataset.

    Immettere il nome e selezionare il tipo di file.

    Screenshot of register as a data asset with new data asset selected.

  4. Dopo aver completato la registrazione del set di dati, aprire la bozza della pipeline di inferenza o clonare il processo della pipeline di inferenza precedente in una nuova bozza. Nella bozza della pipeline di inferenza, sostituire il modello sottoposto a training precedente mostrato come nodo MD-XXXX connesso al componente Assegna punteggio al modello con il set di dati appena registrato.

    Screenshot showing how to modify inference pipeline.

  5. Se occorre aggiornare la parte di pre-elaborazione dei dati nella pipeline di training e aggiornarla nella pipeline di inferenza, l'elaborazione è simile alla procedura precedente.

    È sufficiente registrare l'output della trasformazione del componente di trasformazione come set di dati.

    Sostituire quindi manualmente il componente TD- nella pipeline di inferenza con il set di dati registrato.

    Screenshot showing how to replace transformation component.

  6. Dopo aver modificato la pipeline di inferenza con il modello o la trasformazione appena sottoposta a training, inviarla. Al termine del processo, distribuirla nell'endpoint online esistente e distribuito in precedenza.

    Screenshot showing how to replace existing real-time endpoint.

Limiti

  • A causa della limitazione dell'accesso all'archivio dati, se la pipeline di inferenza contiene Importa dati o il componente Esporta dati, verrà rimossa automaticamente quando si esegue la distribuzione nell'endpoint in tempo reale.

  • Se nella pipeline di inferenza in tempo reale sono presenti set di dati e si vuole distribuirli in un endpoint in tempo reale, al momento questo flusso supporta solo set di dati registrati da un archivio dati BLOB. Se si vogliono usare set di dati di archivi dati di altro tipo, è possibile usare Seleziona colonna per connettersi al set di dati iniziale con le impostazioni di selezione di tutte le colonne, registrare gli output del set di dati di Seleziona colonna come file e quindi sostituire il set di dati iniziale nella pipeline di inferenza in tempo reale con il set di dati appena registrato.

  • Se il grafico di inferenza contiene il componente "Immetti dati manualmente" che non è connesso alla stessa porta del componente "Input del servizio Web", il componente "Immetti dati manualmente" non verrà eseguito durante l'elaborazione delle chiamate HTTP. Una soluzione alternativa consiste nel registrare gli output del componente "Immetti dati manualmente" come set di dati, quindi nella bozza della pipeline di inferenza sostituire il componente "Immetti dati manualmente" con il set di dati registrato.

    Screenshot showing how to modify inference pipeline containing enter data manually component.

Pulire le risorse

Importante

È possibile usare le risorse create come prerequisiti per altre esercitazioni e procedure dettagliate relative ad Azure Machine Learning.

Eliminare tutto

Se non si prevede di usare le risorse create, eliminare l'intero gruppo di risorse per evitare addebiti.

  1. Nel portale di Azure, selezionare Gruppi di risorse nella parte sinistra della finestra.

    Delete resource group in the Azure portal

  2. Nell'elenco selezionare il gruppo di risorse creato.

  3. Selezionare Elimina gruppo di risorse.

Se si elimina il gruppo di risorse, vengono eliminate anche tutte le risorse create nella finestra di progettazione.

Eliminare singole risorse

Nella finestra di progettazione in cui è stato creato l'esperimento eliminare le singole risorse selezionandole e quindi selezionando il pulsante Elimina.

La destinazione di calcolo creata qui viene ridimensionata automaticamente a zero nodi quando non viene usata, Questa azione viene intrapresa per ridurre al minimo gli addebiti. Se si vuole eliminare la destinazione di calcolo, eseguire le operazioni seguenti:

Delete assets

La registrazione dei set di dati nell'area di lavoro può essere annullata selezionando ogni set di dati e quindi Annulla registrazione.

Unregister dataset

Per eliminare un set di dati, passare all'account di archiviazione tramite il portale di Azure o Azure Storage Explorer ed eliminare manualmente tali asset.

Passaggi successivi

In questa esercitazione sono stati illustrati i principali passaggi per creare, distribuire e usare un modello di Machine Learning nella finestra di progettazione. Per informazioni su come usare la finestra di progettazione, vedere i collegamenti seguenti: