Cosa sono le pipeline di Azure Machine Learning?

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:

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.