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 seconda versione (v2), vedere Funzionamento di Azure Machine Learning (v2).
Informazioni sull'architettura e i concetti di 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.
L'area di lavoro è la posizione centralizzata per:
- Gestire le risorse usate per il training e la distribuzione di modelli, ad esempio ambienti di calcolo
- Archiviare gli asset creati con Azure Machine Learning, tra cui:
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 la distribuzione di 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 Jupyter Notebook usati con le istanze di ambiente di calcolo di Azure Machine Learning vengono archiviati qui.
- Azure Application Insights: archivia le informazioni sul monitoraggio dei 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 è un qualsiasi computer o set di computer usato 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. Un'istanza di calcolo è principalmente usata per la workstation di sviluppo. È possibile avviare l'esecuzione di notebook di esempio senza alcuna configurazione. 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 per il training o la distribuzione di sviluppo/test.
Per altre informazioni sulle destinazioni di calcolo di training, vedere Destinazioni di calcolo per il training. Per altre informazioni sulle destinazioni di calcolo per la 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 è possibile incorrere in addebiti per 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 nell’insieme di credenziali delle chiavi associato all'area di lavoro, in modo che sia possibile accedere in modo sicuro allo spazio di archiviazione senza dover usare una 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 le 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 per visualizzare i risultati dopo il completamento. Per altre informazioni, vedere Monitorare e visualizzare i log di esecuzione di Machine Learning.
Nota
Per evitare che i file non necessari vengano inclusi nello snapshot, impostare 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
, mentre 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:
- 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.
- Scarica il codice.
- Configura le variabili di ambiente e imposta le configurazioni.
- 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.
- Se necessario, viene avviata la costruzione di Docker remoto.
- Il codice di gestione viene scritto nella condivisione di File di Azure dell'utente.
- 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 sulle esecuzioni e le 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 dallo spazio 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.
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 comporta 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 dell’inferenza specifica l'ambiente, lo script di immissione e gli 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 o del servizio Azure Kubernetes. 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 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.
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 a livello di codice 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:
- Gli scienziati dei dati possono monitorare gli esperimenti e registrare le informazioni delle esecuzioni di training. Per altre informazioni, vedere gli articoli seguenti:
- Gli amministratori possono monitorare le informazioni sull'area di lavoro, le risorse di Azure correlate e gli eventi, ad esempio la creazione e l'eliminazione di risorse tramite Monitoraggio di Azure. Per altre informazioni, vedere Come monitorare Azure Machine Learning.
- I DevOps o MLOps possono monitorare le informazioni generate dai modelli distribuiti come servizi Web per identificare problemi con le distribuzioni e raccogliere i dati inviati al servizio. Per altre informazioni, vedere Raccogliere dati del modello ed Eseguire il monitoraggio con Application Insights.
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:
- Finestra di progettazione di Azure Machine Learning per eseguire passaggi del flusso di lavoro senza scrivere codice
- Esperienza Web per Machine Learning automatizzato
- Notebook di Azure Machine Learning per scrivere ed eseguire codice personalizzato nei server dei notebook integrati di Jupyter.
- Progetti di etichettatura dei dati per creare, gestire e monitorare progetti per l'etichettatura di immagini o testo.
Strumenti di programmazione
Importante
Gli strumenti seguenti contrassegnati di seguito (con anteprima) 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.
- Interagire con il servizio in qualsiasi ambiente Python con l'SDK Azure Machine Learning per Python.
- Usare la finestra di progettazione di Azure Machine Learning per eseguire i passaggi del flusso di lavoro senza scrivere codice.
- Usare l'interfaccia della riga di comando di Azure Machine Learning per l'automazione.
Passaggi successivi
Per un'introduzione ad Azure Machine Learning, vedere: