Cosa sono le pipeline di Azure Machine Learning?
SI APPLICA A:estensione per Machine Learning dell'interfaccia della riga di comando di Azure v1
Python SDK azuremlv1
SI APPLICA A:Estensione ml dell'interfaccia della riga di comando di Azure v2 (corrente)
Python SDK azure-ai-ml v2 (corrente)
Una pipeline di Azure Machine Learning è un flusso di lavoro eseguibile indipendentemente da un'attività di Machine Learning completa. Una pipeline di Azure Machine Learning consente di standardizzare le procedure consigliate per la produzione di un modello di Machine Learning, consente al team di eseguire su larga scala e migliora l'efficienza della compilazione del modello.
Perché le pipeline di Azure Machine Learning sono necessarie?
L'attività principale di una pipeline di Machine Learning consiste nel suddividere un'attività completa di Machine Learning in un flusso di lavoro a più passaggi. Ogni passaggio è un componente gestibile che può essere sviluppato, ottimizzato, configurato e automatizzato singolarmente. I passaggi sono connessi tramite interfacce ben definite. Il servizio pipeline di Azure Machine Learning orchestra automaticamente tutte le dipendenze tra i passaggi della pipeline. Questo approccio modulare offre due vantaggi principali:
- Standardizzazione della pratica dell'operazione di Machine Learning (MLOps) e supporto della collaborazione tra team scalabili
- Efficienza della formazione e riduzione dei costi
Standardizzare la pratica MLOps e supportare la collaborazione tra team scalabili
L'operazione di Machine Learning (MLOps) automatizza il processo di creazione di modelli di Machine Learning e l'acquisizione del modello nell'ambiente di produzione. Si tratta di un processo complesso. In genere richiede la collaborazione tra team diversi con competenze diverse. Una pipeline di Machine Learning ben definita può astrarre questo processo complesso in un flusso di lavoro a più passaggi, eseguendo il mapping di ogni passaggio a un'attività specifica in modo che ogni team possa lavorare in modo indipendente.
Ad esempio, un tipico progetto di Machine Learning include i passaggi di raccolta dei dati, preparazione dei dati, training del modello, valutazione del modello e distribuzione del modello. In genere, gli ingegneri dei dati si concentrano sui passaggi dei dati, i data scientist dedicano più tempo al training e alla valutazione dei modelli, i tecnici di Machine Learning si concentrano sulla distribuzione del modello e sull'automazione dell'intero flusso di lavoro. Sfruttando la pipeline di Machine Learning, ogni team deve solo lavorare per completare i propri passaggi. Il modo migliore per completare i passaggi consiste nell'usare il componente Azure Machine Learning (v2), una porzione di codice autonoma che esegue un passaggio in una pipeline di Machine Learning. Tutti questi passaggi completati da utenti diversi vengono infine integrati in un flusso di lavoro tramite la definizione della pipeline. La pipeline è uno strumento di collaborazione per tutti gli utenti del progetto. Il processo di definizione di una pipeline e di tutti i relativi passaggi può essere standardizzato dalla procedura devOps preferita di ogni azienda. La pipeline può essere ulteriormente sottoposta a controllo delle versioni e automatizzata. Se i progetti di ML sono descritti come pipeline, la procedura MLOps consigliata è già applicata.
Efficienza della formazione e riduzione dei costi
Oltre a essere lo strumento per mettere in pratica la procedura MLOps, la pipeline di Machine Learning migliora anche l'efficienza del training del modello di grandi dimensioni e riduce i costi. Eseguire il training del modello di linguaggio naturale moderno come esempio. Richiede la pre-elaborazione di grandi quantità di dati e il training del modello di trasformatore a elevato utilizzo di GPU. Il training di un modello richiede ogni volta ore o giorni. Quando il modello è in fase di compilazione, il data scientist vuole testare codici di training o iperparametri diversi ed eseguire il training più volte per ottenere prestazioni ottimali del modello. Per la maggior parte di questi training, in genere sono presenti piccole modifiche da un training a un altro. Si tratta di uno spreco significativo se ogni volta che viene eseguito il training completo dall'elaborazione dei dati al training del modello. Usando la pipeline di Machine Learning, è possibile calcolare automaticamente i passaggi risultanti non modificati e riutilizzare gli output del training precedente. Inoltre, la pipeline di Machine Learning supporta l'esecuzione di ogni passaggio su risorse di calcolo diverse. In questo modo, l'elaborazione dei dati con elevato utilizzo di memoria funziona e viene eseguita su computer CPU con elevato utilizzo di memoria e il training a elevato utilizzo di calcolo può essere eseguito su computer GPU costosi. Scegliendo correttamente il passaggio da eseguire su quale tipo di computer, il costo del training può essere notevolmente ridotto.
Procedure consigliate per iniziare
A seconda di ciò che un progetto di Machine Learning ha già, il punto di partenza per la creazione di una pipeline di Machine Learning può variare. Esistono alcuni approcci tipici per la creazione di una pipeline.
Il primo approccio si applica in genere al team che non ha usato la pipeline prima e vuole sfruttare alcuni vantaggi della pipeline, ad esempio MLOps. In questa situazione, i data scientist hanno in genere sviluppato alcuni modelli di Machine Learning nell'ambiente locale usando gli strumenti preferiti. Gli ingegneri di Machine Learning devono portare l'output dei data scientist nell'ambiente di produzione. Il lavoro comporta la pulizia di codici non necessari dal notebook originale o dal codice Python, la modifica dell'input di training dai dati locali ai valori con parametri, la suddivisione del codice di training in più passaggi in base alle esigenze, l'esecuzione di unit test di ogni passaggio e infine l'esecuzione del wrapping di tutti i passaggi in una pipeline.
Una volta che i team hanno acquisito familiarità con le pipeline e vogliono eseguire più progetti di Machine Learning usando le pipeline, troveranno che il primo approccio è difficile da dimensionare. Il secondo approccio consiste nel configurare alcuni modelli di pipeline, ognuno dei quali tenta di risolvere un problema di Machine Learning specifico. Il modello pre-definisce la struttura della pipeline, compreso il numero di passaggi, gli input e gli output di ciascun passaggio e la loro connettività. Per avviare un nuovo progetto di Machine Learning, il team assegna prima un nome a una forma di transizione (fork) di un repository di modelli. Il responsabile del team assegna quindi ai membri il passaggio su cui devono lavorare. I data scientist e gli ingegneri dei dati svolgono regolarmente il proprio lavoro. Quando sono soddisfatti del risultato, strutturano il codice in modo da adattarsi ai passaggi predefiniti. Dopo aver archiviato i codici strutturati, è possibile eseguire o automatizzare la pipeline. In caso di modifiche, ogni membro deve lavorare solo sul relativo frammento di codice senza toccare il resto del codice della pipeline.
Dopo che un team ha creato una raccolta di pipeline di Machine Learning e componenti riutilizzabili, potrebbe iniziare a creare la pipeline di Machine Learning dalla clonazione della pipeline precedente o dall'associazione di componenti riutilizzabili esistenti. In questa fase, la produttività complessiva del team sarà migliorata significativamente.
Azure Machine Learning offre diversi metodi per creare una pipeline. Per gli utenti che hanno familiarità con le procedure DevOps, è consigliabile usare l'interfaccia della riga di comando. Per i data scientist che hanno familiarità con Python, è consigliabile scrivere pipeline con Azure Machine Learning SDK v2. Per gli utenti che preferiscono usare l'interfaccia utente, possono usare la finestra di progettazione per compilare pipeline usando i componenti registrati.
Quale tecnologia della pipeline di Azure è consigliabile usare?
Il cloud di Azure offre diversi tipi di pipeline, ognuno con uno scopo diverso. La tabella seguente elenca le diverse pipeline e le relative funzionalità:
Scenario | Utente tipo principale | Offerta di Azure | Offerta software open source | Pipe canonica | Punti di forza |
---|---|---|---|---|---|
Orchestrazione del modello (Machine Learning) | Data scientist | Azure Machine Learning Pipelines | Pipeline Kubeflow | Dati - Modello > | Distribuzione, memorizzazione nella cache, code-first, riutilizzo |
Orchestrazione dei dati (preparazione dei dati) | Data engineer | Pipeline di Data Factory di Azure | Apache Airflow | Dati - Dati > | Spostamento fortemente tipizzato, attività incentrate sui dati |
Orchestrazione codice e app (CI/CD) | Sviluppatori di app/Ops | Azure Pipelines | Jenkins | Codice e modello - App/Servizio > | Supporto delle attività più aperte e flessibili, code di approvazione, fasi con controllo dell'accesso |
Passaggi successivi
Le pipeline di Azure Machine Learning sono una funzionalità potente che inizia a offrire valore nelle prime fasi di sviluppo.
- Definire pipeline con l'interfaccia della riga di comando di Azure Machine Learning v2
- Definire pipeline con Azure Machine Learning SDK v2
- Definire pipeline con la Finestra di progettazione
- Provare l'esempio di pipeline dell'interfaccia della riga di comando v2
- Provare l'esempio di pipeline Python SDK v2
- Informazioni sulle espressioni dell'SDK e dell'interfaccia della riga di comando v2 che possono essere usate in una pipeline.