Share via


Funzionamento di Azure Machine Learning: architettura e concetti (v1)

SI APPLICA A:estensione ML dell'interfaccia della riga di comando di Azure v1azureml dell’SDK Phyton v1

Questo articolo si applica alla prima versione (v1) dell'interfaccia della riga di comando e del Software Development Kit (SDK) di Azure Machine Learning. Per la versione 2 (v2), vedere Funzionamento di Azure Machine Learning (v2).

Informazioni sull'architettura e i concetti per Azure Machine Learning. Questo articolo offre una comprensione generale dei componenti e del modo in cui interagiscono per facilitare il processo di compilazione, distribuzione e gestione dei modelli di Machine Learning.

Area di lavoro

Un'area di lavoro di Machine Learning è la risorsa di primo livello per Azure Machine Learning.

Diagram: Azure Machine Learning architecture of a workspace and its components

L'area di lavoro è la posizione centralizzata per:

Un'area di lavoro include altre risorse di Azure usate dall'area di lavoro:

  • Registro Azure Container (ACR): registra i contenitori Docker usati durante il training e quando si distribuisce un modello. Per ridurre al minimo i costi, Registro Azure Container viene creato solo quando vengono create immagini di distribuzione.
  • Account di archiviazione di Azure: viene usato come archivio dati predefinito per l'area di lavoro. Anche i notebook Jupyter usati con le istanze di calcolo di Azure Machine Learning vengono archiviati qui.
  • Application Insights di Azure: archivia le informazioni di monitoraggio sui modelli.
  • Azure Key Vault: archivia i segreti usati dalle destinazioni di calcolo e altre informazioni riservate necessarie per l'area di lavoro.

È possibile condividere un'area di lavoro con altri utenti.

Ambienti di calcolo

Una destinazione di calcolo è qualsiasi computer o set di computer usati per eseguire lo script di training o ospitare la distribuzione del servizio. È possibile usare il computer locale o una risorsa di calcolo remota come destinazione di calcolo. Con le destinazioni di calcolo, è possibile avviare il training nel computer locale e quindi aumentare il numero di istanze nel cloud senza modificare lo script di training.

Azure Machine Learning introduce due macchine virtuali completamente gestite basate sul cloud configurate per le attività di Machine Learning:

  • Istanza di calcolo: un'istanza di calcolo è una macchina virtuale che include più strumenti e ambienti installati per Machine Learning. L'uso principale di un'istanza di calcolo è per la workstation di sviluppo. È possibile avviare l'esecuzione di notebook di esempio senza alcuna configurazione necessaria. Un'istanza di calcolo può essere usata anche come destinazione di calcolo per processi di training e inferenza.

  • Cluster di calcolo: i cluster di calcolo sono un cluster di macchine virtuali con funzionalità di ridimensionamento a più nodi. I cluster di calcolo sono più adatti per le destinazioni di calcolo, per processi di grandi dimensioni e produzione. Il cluster aumenta automaticamente quando viene inviato un processo. Usare come destinazione di calcolo di training o per la distribuzione di sviluppo/test.

Per altre informazioni sulle destinazioni di calcolo di training, vedere Destinazioni di calcolo di training. Per altre informazioni sulle destinazioni di calcolo della distribuzione, vedere Destinazioni di distribuzione.

Set di dati e archivi dati

I set di dati di Azure Machine Learning semplificano l'accesso e l'uso dei dati. Creando un set di dati, si crea un riferimento alla posizione dell'origine dati insieme a una copia dei relativi metadati. Poiché i dati rimangono nella posizione esistente, non vengono addebitati costi di archiviazione aggiuntivi e non si rischia l'integrità delle origini dati.

Per altre informazioni, vedere Creare e registrare set di dati di Azure Machine Learning. Per altri esempi d'uso dei set di dati, vedere i notebook di esempio.

I set di dati usano un archivio dati per connettersi in modo sicuro ai servizi di archiviazione di Azure. Gli archivi dati archiviano le informazioni di connessione senza mettere a rischio le credenziali di autenticazione e l'integrità dell'origine dati originale. Archiviano informazioni di connessione, ad esempio l'ID sottoscrizione e l'autorizzazione del token nel Key Vault associato all'area di lavoro, in modo da poter accedere in modo sicuro all'archiviazione senza necessità di codifica fissa nello script.

Ambienti

Area di lavoro>Ambienti

Un ambiente è l'incapsulamento dell'ambiente in cui si verifica il training o l'assegnazione dei punteggi del modello di Machine Learning. L'ambiente specifica i pacchetti Python, le variabili di ambiente e le impostazioni software relative agli script di training e punteggio.

Per esempi di codice, vedere la sezione "Gestire gli ambienti" di Come usare gli ambienti.

Sperimentazioni

Area di lavoro>Esperimenti

Un esperimento è un raggruppamento di più esecuzioni da uno script specifico. Appartiene sempre a un'area di lavoro. Quando si invia un'esecuzione, si fornisce un nome dell'esperimento. Le informazioni per l'esecuzione vengono archiviate in tale esperimento. Se il nome non esiste quando si invia un esperimento, viene creato automaticamente un nuovo esperimento.

Per un esempio di uso di un esperimento, vedere Esercitazione: eseguire il training del primo modello.

Esecuzioni

Area di lavoro>Esperimenti>Esecuzione

Per esecuzione si intende una singola esecuzione di uno script di training. Di norma, un esperimento contiene più esecuzioni.

Azure Machine Learning registra tutte le esecuzioni e archivia le informazioni seguenti nell'esperimento:

  • Metadati sull'esecuzione (timestamp, durata e così via)
  • Metriche registrate dallo script
  • File di output raccolti automaticamente dall'esperimento o caricati in modo esplicito dall'utente
  • Uno snapshot della directory che contiene gli script, precedente all'esecuzione

Un'esecuzione viene generata quando si invia uno script per eseguire il training di un modello. Un'esecuzione può avere zero o più esecuzioni figlio. L'esecuzione di primo livello, ad esempio, potrebbe avere due esecuzioni figlio, ognuna delle quali può avere a sua volte le proprie esecuzioni figlio.

Configurazioni di esecuzione

Area di lavoro>Esperimenti>Esecuzione>Configurazione di esecuzione

Una configurazione di esecuzione definisce la modalità di esecuzione di uno script in una destinazione di calcolo specificata. Usare la configurazione per specificare lo script, la destinazione di calcolo e l'ambiente di Azure Machine Learning in cui eseguire, le configurazioni specifiche di processo distribuite e alcune proprietà aggiuntive. Per altre informazioni sul set completo di opzioni configurabili per le esecuzioni, vedere ScriptRunConfig.

Una configurazione di esecuzione può essere salvata in modo permanente in un file all'interno della directory che contiene lo script di training. Oppure può essere costruita come un oggetto in memoria e usata per inviare un'esecuzione.

Per configurazioni di esecuzione di esempio, vedere Configurare un'esecuzione di training.

Snapshots

Area di lavoro>Esperimenti>Esecuzione>Snapshot

Quando si invia un'esecuzione, Azure Machine Learning consente di comprimere la directory che contiene lo script come file ZIP e lo invia alla destinazione di calcolo. Il file ZIP viene quindi estratto e lo script eseguito in questa posizione. Azure Machine Learning archivia inoltre il file ZIP come snapshot come parte del record di esecuzione. Chiunque abbia accesso all'area di lavoro può esplorare un record di esecuzione e scaricare lo snapshot.

Registrazione

Azure Machine Learning registra automaticamente le metriche di esecuzione standard. Tuttavia, è anche possibile usare l’SDK di Python per registrare metriche arbitrarie.

Esistono diversi modi per visualizzare i log: il monitoraggio dello stato di esecuzione in tempo reale o la visualizzazione dei risultati dopo il completamento. Per altre informazioni, vedere Monitorare e visualizzare i log di esecuzione di Machine Learning.

Nota

Per impedire che nello snapshot vengano inclusi file non necessari, creare un file ignore, .gitignore o .amlignore, nella directory. Aggiungere i file e le directory da escludere. Per altre informazioni sulla sintassi da utilizzare in questo file, vedere sintassi e criteri per .gitignore. Il file .amlignore utilizza la stessa sintassi. Se sono presenti entrambi i file: viene usato il file .amlignore e il file .gitignore resta inutilizzato.

Rilevamento e integrazione di Git

Quando si avvia un'esecuzione di training in cui la directory di origine è un repository Git locale, le informazioni sul repository vengono archiviate nella cronologia di esecuzione. Questa operazione funziona con le esecuzioni inviate usando uno script, una configurazione di esecuzione o una pipeline di Machine Learning. Funziona anche per le esecuzioni inviate dall'SDK o dall'interfaccia della riga di comando di Machine Learning.

Per altre informazioni, vedere Integrazione di Git con Azure Machine Learning.

Flusso di lavoro di training

Quando si esegue un esperimento per eseguire il training di un modello, vengono eseguiti i passaggi seguenti. Questi sono illustrati nel diagramma del flusso di lavoro di training seguente:

  • Azure Machine Learning viene chiamato con l'ID dello snapshot del codice salvato nella sezione precedente.

  • Azure Machine Learning crea un ID di esecuzione (facoltativo) e un token del servizio Machine Learning, che verrà usato in seguito dalle destinazioni di calcolo come ambiente di calcolo di Machine Learning o delle macchine virtuali per comunicare con il servizio Machine Learning.

  • È possibile scegliere una destinazione di calcolo gestita, ad esempio l'ambiente di calcolo di Machine Learning, o una destinazione di calcolo non gestita, ad esempio le macchine virtuali, per eseguire i processi di training. Ecco illustrati i flussi di dati per entrambi gli scenari:

    • Macchine virtuali o HDInsight, a cui si accede tramite credenziali SSH in un insieme di credenziali delle chiavi nella sottoscrizione Microsoft. Azure Machine Learning esegue il codice di gestione nella destinazione di calcolo che:
    1. Prepara l'ambiente. Docker è un'opzione per le macchine virtuali e i computer locali. Vedere la procedura seguente relativa all'ambiente di calcolo di Machine Learning per informazioni sull'esecuzione di esperimenti nei contenitori Docker.
    2. Scarica il codice.
    3. Configura le variabili di ambiente e imposta le configurazioni.
    4. Esegue gli script utente, ovvero lo snapshot del codice indicato nella sezione precedente.
    • Ambiente di calcolo di Machine Learning, a cui si accede tramite un'identità gestita dall'area di lavoro. Poiché l'ambiente di calcolo di Machine Learning è una destinazione di calcolo gestita, ovvero gestita da Microsoft, viene eseguita nella sottoscrizione Microsoft.
    1. Se necessario, viene avviata la costruzione di Docker remoto.
    2. Il codice di gestione viene scritto nella condivisione di File di Azure dell'utente.
    3. Il contenitore viene avviato con un comando iniziale, ovvero il codice di gestione come descritto nel passaggio precedente.
  • Al termine dell'esecuzione, è possibile eseguire query su esecuzioni e metriche. Nel diagramma di flusso seguente, questo passaggio si verifica quando la destinazione di calcolo di training riscrive le metriche di esecuzione in Azure Machine Learning dalla risorsa di archiviazione nel database di Azure Cosmos DB. I client possono chiamare Azure Machine Learning. Machine Learning effettuerà a sua volta il pull delle metriche dal database di Azure Cosmos DB e le restituirà al client.

Training workflow

Modelli

Nella forma più semplice, un modello è un frammento di codice che accetta un input e produce output. La creazione di un modello di Machine Learning prevede di selezionare un algoritmo, fornirgli dei dati e ottimizzare gli iperparametri. Il training è un processo iterativo che produce un modello con training, che racchiude ciò che il modello ha appreso durante il processo di training.

È anche possibile usare un modello il cui training sia stato eseguito all'esterno di Azure Machine Learning. In alternativa, è possibile eseguire il training di un modello inviando l’esecuzione di un esperimento a una destinazione di calcolo in Azure Machine Learning. Dopo aver creato un modello, registrarlo nell'area di lavoro.

Azure Machine Learning è indipendente dal framework. Durante la creazione di un modello, è possibile usare un qualsiasi framework di apprendimento automatico comune, ad esempio Scikit-learn, XGBoost, PyTorch, TensorFlow e Chainer.

Per un esempio di training di un modello con Scikit-learn, vedere Esercitazione: eseguire il training di un modello di classificazione delle immagini con Azure Machine Learning.

Registro di modello

Area di lavoro>Modelli

Il registro dei modelli consente di tenere traccia di tutti i modelli nell'area di lavoro di Azure Machine Learning.

I modelli vengono identificati dal nome e dalla versione. Ogni volta che si registra un modello con lo stesso nome di uno esistente, il registro presuppone che si tratti di una nuova versione. La versione viene incrementata e il nuovo modello registrato con lo stesso nome.

Quando si registra il modello, è possibile specificare altri tag di metadati e quindi usarli durante la ricerca di modelli.

Suggerimento

Un modello registrato è un contenitore logico per uno o più file che costituiscono il modello. Se, ad esempio, si dispone di un modello archiviato in più file, è possibile registrarli come singolo modello nell'area di lavoro di Azure Machine Learning. Dopo la registrazione, è possibile scaricare o distribuire il modello registrato e ricevere tutti i file registrati.

Non è possibile eliminare un modello registrato in uso da parte di una distribuzione attiva.

Per un esempio di registrazione di un modello, vedere Eseguire il training di un modello di classificazione delle immagini con Azure Machine Learning.

Distribuzione

Si distribuisce un modello registrato come endpoint di servizio. Sono necessari i componenti seguenti:

  • Ambiente. Questo ambiente incapsula le dipendenze necessarie per eseguire il modello per l'inferenza.
  • Codice di assegnazione dei punteggi. Questo script accetta richieste, assegna loro un punteggio usando il modello e restituisce i risultati.
  • Configurazione dell'inferenza. La configurazione di inferenza specifica l'ambiente, lo script di immissione e altri componenti necessari per eseguire il modello come servizio.

Per altre informazioni su questi componenti, vedere Distribuire modelli con Azure Machine Learning.

Endpoint

Area di lavoro>Endpoint

Un endpoint è una creazione di istanze del modello in un servizio Web che può essere ospitato nel cloud.

Endpoint servizio Web

Quando si distribuisce un modello come servizio Web, l'endpoint può essere distribuito in Istanze di Azure Container, nel servizio Azure Kubernetes o in FPGA (Field Programmable Gate Array). Il servizio viene creato dal modello, lo script e i file associati. Questi vengono inseriti in un'immagine del contenitore di base, che contiene l'ambiente di esecuzione per il modello. L'immagine presenta un endpoint HTTP con bilanciamento del carico che riceve le richieste di punteggio inviate al servizio Web.

È possibile abilitare i dati di telemetria di Application Insights o i dati di telemetria del modello per monitorare il servizio Web. I dati di telemetria sono accessibili solo all'utente. Vengono archiviati nelle istanze di Application Insights e dell'account di archiviazione. Se è stata abilitata la scalabilità automatica, la distribuzione verrà ridimensionata automaticamente da Azure.

Il diagramma seguente illustra il flusso di lavoro di inferenza per un modello distribuito come endpoint del servizio Web:

Ecco i dettagli:

  • L'utente registra un modello usando un client come Azure Machine Learning SDK.
  • L'utente crea un'immagine usando un modello, un file di punteggio e altre dipendenze del modello.
  • L'immagine Docker viene creata e archiviata in Registro Azure Container.
  • Il servizio Web viene distribuito nella destinazione di calcolo, ovvero in Istanze di Container o nel servizio Azure Kubernetes, usando l'immagine creata nel passaggio precedente.
  • I dettagli della richiesta di punteggio vengono archiviati in Application Insights, che si trova nella sottoscrizione dell'utente.
  • Viene inoltre eseguito il push dei dati di telemetria nella sottoscrizione di Microsoft Azure.

Inference workflow

Per un esempio di distribuzione di un modello come servizio Web, vedere Esercitazione: eseguire il training e distribuire un modello.

Endpoint in tempo reale

Quando si distribuisce un modello sottoposto a training nella finestra di progettazione, è possibile distribuire il modello come endpoint in tempo reale. Un endpoint in tempo reale riceve in genere una singola richiesta tramite l'endpoint REST e restituisce una stima in tempo reale. Ciò è in contrasto con l'elaborazione batch, che elabora più valori contemporaneamente e salva i risultati dopo il completamento in un archivio dati.

Endpoint della pipeline

Gli endpoint della pipeline consentono di chiamare le pipeline di Machine Learning in modo pragmatico tramite un endpoint REST. Gli endpoint della pipeline consentono di automatizzare i flussi di lavoro della pipeline.

Un endpoint della pipeline è una raccolta di pipeline pubblicate. Questa organizzazione logica consente di gestire e chiamare più pipeline usando lo stesso endpoint. Ogni pipeline pubblicata in un endpoint della pipeline viene sottoposto a controllo delle versioni. È possibile selezionare una pipeline predefinita per l'endpoint o specificare una versione nella chiamata REST.

Automazione

Interfaccia della riga di comando di Azure Machine Learning

L'interfaccia della riga di comando di Azure Machine Learning v1 è un'estensione dell'interfaccia della riga di comando di Azure, un'interfaccia della riga di comando multipiattaforma per la piattaforma Azure. Questa estensione fornisce comandi per automatizzare le attività di Machine Learning.

Pipeline di Machine Learning

Si usano le pipeline di Machine Learning per creare e gestire flussi di lavoro che raggruppano le fasi di Machine Learning. Ad esempio, una pipeline può includere le fasi di preparazione dei dati, training del modello, distribuzione del modello e inferenza/punteggio. Ogni fase può includere più passaggi, ciascuno dei quali può essere eseguito in modo automatico in varie destinazioni di calcolo.

I passaggi della pipeline sono riutilizzabili e possono essere eseguiti senza rieseguire i passaggi precedenti se l'output di questi passaggi non è stato modificato. Ad esempio, è possibile ripetere il training di un modello senza eseguire nuovamente costosi passaggi di preparazione dei dati se questi non sono stati modificati. Le pipeline consentono anche ai data scientist di collaborare mentre lavorano su aree separate di un flusso di lavoro di apprendimento automatico.

Monitoraggio e registrazione

Azure Machine Learning offre le funzionalità di monitoraggio e registrazione seguenti:

Interazione con l'area di lavoro

Studio

Studio di Azure Machine Learning offre una visualizzazione Web di tutti gli artefatti nell'area di lavoro. È possibile visualizzare i risultati e i dettagli dei set di dati, esperimenti, pipeline, modelli ed endpoint. È anche possibile gestire le risorse di calcolo e gli archivi dati nello studio.

Lo studio è anche la posizione da cui si accede agli strumenti interattivi che fanno parte di Azure Machine Learning:

Strumenti di programmazione

Importante

Gli strumenti seguenti contrassegnati con (anteprima) sono attualmente 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.

Passaggi successivi

Per un'introduzione ad Azure Machine Learning, vedere: