Progettazione di modelli di architettura di pipeline di ML (con 10 esempi reali)

Progettazione di modelli di pipeline di ML (10 esempi reali)

C’è un momento in cui ogni praticante di ML si rende conto che addestrare un modello in Jupyter Notebook è solo una piccola parte dell’intero progetto. Preparare un flusso di lavoro che prende i tuoi dati dalla loro forma grezza alle previsioni, mantenendo reattività e flessibilità, è la cosa vera.

A quel punto, gli scienziati dei dati o gli ingegneri di ML diventano curiosi e iniziano a cercare tali implementazioni. Molte domande riguardanti la costruzione di pipeline e sistemi di machine learning sono già state risposte e provengono dalle migliori pratiche e dai modelli dell’industria. Ma alcune di queste domande sono ancora ricorrenti e non sono state spiegate bene.

Come dovrebbe funzionare la pipeline di machine learning? Come dovrebbero essere implementate per adattarsi alla scalabilità e all’adattabilità mantenendo un’infrastruttura facile da risolvere?

Le pipeline di ML di solito consistono di un’infrastruttura interconnessa che consente a un’organizzazione o a un team di machine learning di adottare un approccio coerente, modularizzato e strutturato per costruire, addestrare e distribuire sistemi di ML. Tuttavia, questo sistema efficiente non opera in modo indipendente: richiede un approccio architettonico completo e una progettazione ponderata.

Ma cosa significano questi termini – progettazione e architettura di machine learning e come può funzionare in modo efficiente un sistema software complesso come un meccanismo di pipeline di ML? Questo blog risponderà a queste domande esplorando i seguenti argomenti:

  • 1
    Cosa è l’architettura e la progettazione delle pipeline e quali sono i vantaggi di comprenderli?
  • 2
    Esplorazione delle pratiche standard di progettazione e architettura delle pipeline di ML in aziende tecnologiche di rilievo
  • 3
    Spiegazione dei modelli comuni di progettazione dell’architettura delle pipeline di ML
  • 4
    Introduzione ai componenti comuni delle pipeline di ML
  • 5
    Introduzione agli strumenti, alle tecniche e al software utilizzati per implementare e mantenere le pipeline di ML
  • 6
    Esempi di architettura delle pipeline di ML
  • 7
    Pratiche migliori comuni da considerare durante la progettazione e lo sviluppo delle pipeline di ML

Quindi immergiamoci!

Cosa sono i modelli di progettazione dell’architettura delle pipeline di ML?

Questi due termini vengono spesso usati in modo intercambiabile, ma hanno significati distinti.

L’architettura delle pipeline di ML è come la partitura musicale ad alto livello per la sinfonia. Illustra i componenti, le fasi e i flussi di lavoro all’interno della pipeline di ML. Le considerazioni architettoniche si concentrano principalmente sull’organizzazione dei componenti in relazione l’uno all’altro e sui processi e le fasi coinvolti. Risponde alla domanda: “Quali processi e componenti di ML saranno inclusi nella pipeline e come sono strutturati?”

Al contrario, la progettazione delle pipeline di ML è un’immersione approfondita nella composizione della pipeline di ML, affrontando gli strumenti, i paradigmi, le tecniche e i linguaggi di programmazione utilizzati per implementare la pipeline e i suoi componenti. È il tocco del compositore che risponde alla domanda: “Come saranno implementati, testati e mantenuti i componenti e i processi nella pipeline?”

Anche se ci sono diverse informazioni tecniche riguardanti la progettazione delle pipeline di machine learning e i modelli architettonici, questo post copre principalmente quanto segue:

Vantaggi della comprensione dell’architettura delle pipeline di ML

Le quattro basi dell’architettura delle pipeline di ML | Fonte: Autore

Ci sono diverse ragioni per cui gli ingegneri di ML, gli scienziati dei dati e i praticanti di ML dovrebbero essere consapevoli dei modelli esistenti nell’architettura e nella progettazione delle pipeline di ML, alcuni dei quali sono:

  • Efficienza: comprendere i modelli nell’architettura e nella progettazione delle pipeline di ML consente ai praticanti di identificare le risorse tecniche necessarie per una rapida consegna del progetto.
  • Scalabilità: gli schemi di architettura e progettazione delle pipeline di ML ti consentono di dare priorità alla scalabilità, consentendo ai praticanti di costruire sistemi di ML con un approccio basato sulla scalabilità. Questi modelli introducono soluzioni che affrontano l’addestramento del modello su grandi volumi di dati, l’inferenza del modello a bassa latenza e altro ancora.
  • Modellazione e riproducibilità: le fasi e i componenti tipici delle pipeline diventano riproducibili tra i team che utilizzano modelli familiari, consentendo ai membri di replicare efficacemente i progetti di ML.
  • Standardizzazione: un’organizzazione che utilizza gli stessi modelli per l’architettura e la progettazione delle pipeline di ML è in grado di aggiornare e mantenere le pipeline più facilmente in tutta l’organizzazione.

Passaggi comuni nell’architettura delle pipeline di ML

Dopo aver affrontato l’importanza della comprensione dell’architettura e dei modelli di progettazione delle pipeline di ML, le sezioni seguenti introducono alcuni approcci comuni di architettura e progettazione trovati nelle pipeline di ML a varie fasi o componenti.

Le pipeline di ML sono suddivisi in sezioni chiamate fasi, che consistono in uno o più componenti o processi che lavorano in sinergia per produrre l’output del pipeline di ML. Nel corso degli anni, le fasi coinvolte all’interno di un pipeline di ML sono aumentate.

Meno di un decennio fa, quando l’industria dell’apprendimento automatico era principalmente incentrata sulla ricerca, fasi come il monitoraggio del modello, il deployment e la manutenzione non esistevano o erano considerazioni di bassa priorità. Ora, il monitoraggio, la manutenzione e le fasi di deployment all’interno di un pipeline di ML hanno la priorità, poiché i modelli nei sistemi di produzione richiedono manutenzione e aggiornamento. Queste fasi sono principalmente considerate nel campo dell’MLOps (operazioni di apprendimento automatico).

Oggi esistono diverse fasi all’interno dei pipeline di ML costruiti per soddisfare requisiti tecnici, industriali e aziendali. Questa sezione esamina le fasi comuni nella maggior parte dei pipeline di ML, indipendentemente dall’industria o dalla funzione aziendale.

  • 1
    Ingestione dei dati (ad esempio, Apache Kafka, Amazon Kinesis)
  • 2
    Pre-elaborazione dei dati (ad esempio, pandas, NumPy)
  • 3
    Feature Engineering e Selezione (ad esempio, Scikit-learn, Feature Tools)
  • 4
    Addestramento del modello (ad esempio, TensorFlow, PyTorch)
  • 5
    Valutazione del modello (ad esempio, Scikit-learn, MLflow)
  • 6
    Deployment del modello (ad esempio, TensorFlow Serving, TFX)
  • 7
    Monitoraggio e Manutenzione (ad esempio, Prometheus, Grafana)

Ora che capiamo i componenti all’interno di un pipeline di ML standard, di seguito sono presenti sotto-pipeline o sistemi che si incontrano all’interno dell’intero pipeline di ML.

  • Pipeline di Data Engineering
  • Pipeline di Feature Engineering
  • Pipeline di Addestramento e Sviluppo del Modello
  • Pipeline di Deployment del Modello
  • Pipeline di Produzione

Costruzione di un pipeline di ML: 6 Problemi & Soluzioni

10 Esempi di architettura di pipeline di ML

Approfondiamo alcuni dei modelli di architettura e design più comuni e esploriamo i loro esempi, vantaggi e svantaggi in maggior dettaglio.

Architettura a singolo leader

Cosa è l’architettura a singolo leader?

L’esplorazione delle architetture e dei modelli comuni di pipeline di apprendimento automatico inizia con un modello presente non solo nei sistemi di apprendimento automatico, ma anche nei sistemi di database, piattaforme di streaming, applicazioni web e infrastrutture informatiche moderne. L’architettura a singolo leader è un modello utilizzato nello sviluppo di pipeline di apprendimento automatico progettate per funzionare su larga scala, garantendo un’infrastruttura gestibile di componenti individuali.

L’architettura a singolo leader utilizza il paradigma master-slave; in questa architettura, il nodo leader o master è consapevole dello stato complessivo del sistema, gestisce l’esecuzione e la distribuzione dei compiti in base alla disponibilità delle risorse e gestisce le operazioni di scrittura.

I nodi follower o slave eseguono principalmente operazioni di lettura. Nel contesto delle pipeline di ML, il nodo leader è responsabile dell’orchestrazione dell’esecuzione di vari compiti, della distribuzione del carico di lavoro tra i nodi follower in base alla disponibilità delle risorse e della gestione dello stato complessivo del sistema.

Nel frattempo, i nodi follower svolgono i compiti assegnati dal nodo leader, come la pre-elaborazione dei dati, l’estrazione delle caratteristiche, l’addestramento e la validazione del modello.

Modelli di architettura di pipeline di ML: architettura a singolo leader | Fonte: Autore

Un esempio concreto di architettura a singolo leader

Per vedere l’architettura a singolo leader utilizzata su larga scala all’interno di una pipeline di apprendimento automatico, dobbiamo guardare una delle più grandi piattaforme di streaming che fornisce raccomandazioni video personalizzate a milioni di utenti in tutto il mondo, Netflix.

Internamente, all’interno del team di ingegneria di Netflix, è stato creato Meson per gestire, orchestrare, pianificare ed eseguire flussi di lavoro all’interno di pipeline di ML/Dati. Meson gestiva il ciclo di vita delle pipeline di ML, fornendo funzionalità come raccomandazioni e analisi dei contenuti, e utilizzava l’architettura a singolo leader.

Meson aveva 70.000 flussi di lavoro pianificati, con oltre 500.000 lavori eseguiti quotidianamente. All’interno di Meson, il nodo leader tracciava e gestiva lo stato di ogni esecuzione di lavoro assegnato a un nodo follower, forniva tolleranza ai guasti identificando e correggendo i lavori falliti e gestiva l’esecuzione e la pianificazione dei lavori.

Un esempio concreto dell’architettura del singolo leader | Fonte

Vantaggi e svantaggi dell’architettura del singolo leader

Per capire quando sfruttare l’architettura del singolo leader all’interno dei componenti del flusso di lavoro di apprendimento automatico, è utile esplorare i suoi principali vantaggi e svantaggi.

  • I vantaggi notevoli dell’architettura del singolo leader sono la tolleranza ai guasti, la scalabilità, la coerenza e la decentralizzazione.
  • Con un singolo nodo o parte del sistema responsabile delle operazioni e della gestione del flusso di lavoro, è facile identificare i punti di guasto all’interno dei flussi di lavoro che adottano l’architettura del singolo leader.
  • Gestisce efficacemente i guasti di elaborazione imprevisti ridirezionando/ridistribuendo l’esecuzione dei lavori, fornendo coerenza dei dati e dello stato nell’intero flusso di lavoro di apprendimento automatico e agendo come unica fonte di verità per tutti i processi.
  • I flussi di lavoro di apprendimento automatico che adottano l’architettura del singolo leader possono scalare in modo orizzontale per operazioni di lettura aggiuntive aumentando il numero di nodi follower.
Pattern di progettazione dell’architettura del flusso di lavoro di apprendimento automatico: scalabilità dell’architettura del singolo leader | Fonte: Autore

Tuttavia, nonostante tutti i suoi vantaggi, l’architettura del singolo leader per i flussi di lavoro di apprendimento automatico può presentare problemi come la scalabilità, la perdita di dati e la disponibilità.

  • La scalabilità di scrittura all’interno dell’architettura del singolo leader è limitata, e questa limitazione può agire come un collo di bottiglia per la velocità complessiva dell’orchestrazione e della gestione dei lavori/flussi di lavoro.
  • Tutte le operazioni di scrittura sono gestite dal singolo nodo leader nell’architettura, il che significa che, sebbene le operazioni di lettura possano essere scalate in modo orizzontale, l’operazione di scrittura gestita dal nodo leader non scala proporzionalmente o affatto.
  • L’architettura del singolo leader può avere tempi di inattività significativi se il nodo leader fallisce; ciò comporta problemi di disponibilità del flusso di lavoro e provoca il fallimento dell’intero sistema a causa della dipendenza dell’architettura dal nodo leader.

All’aumentare del numero di flussi di lavoro gestiti da Meson, l’architettura del singolo leader ha iniziato a mostrare segni di problemi di scalabilità. Ad esempio, ha riscontrato lentezza durante i momenti di picco del traffico e richiesto una stretta supervisione durante le ore non lavorative. Con l’aumento dell’utilizzo, il sistema ha dovuto essere scalato verticalmente, avvicinandosi ai limiti dei tipi di istanze AWS.

Ciò ha portato allo sviluppo di Maestro, che utilizza un’architettura a shared-nothing per la scalabilità orizzontale e la gestione simultanea degli stati di milioni di istanze di flussi di lavoro e passaggi.

Maestro incorpora diversi pattern architetturali nelle applicazioni moderne alimentate dalle funzionalità di apprendimento automatico. Questi includono architettura a shared-nothing, architettura basata sugli eventi e grafi aciclici diretti (DAG). Ciascuno di questi pattern architetturali svolge un ruolo cruciale nel migliorare l’efficienza dei flussi di lavoro di apprendimento automatico.

La sezione successiva approfondisce questi pattern architetturali, esplorando come vengono sfruttati nei flussi di lavoro di apprendimento automatico per ottimizzare l’ingestione, l’elaborazione, l’addestramento del modello e il deployment dei dati.

Grafi aciclici diretti (DAG)

Cosa è l’architettura dei grafi aciclici diretti?

I grafi diretti sono composti da nodi, archi e direzioni. I nodi rappresentano i processi; gli archi nei grafi rappresentano le relazioni tra i processi e la direzione degli archi indica il flusso di esecuzione del processo o il trasferimento di dati/segnali all’interno del grafo.

Applicare vincoli ai grafi consente l’espressione e l’implementazione di sistemi con un flusso di esecuzione sequenziale. Ad esempio, una condizione nei grafi in cui sono vietati i cicli tra vertici o nodi. Questo tipo di grafo è chiamato grafo aciclico, il che significa che non ci sono relazioni circolari (cicli diretti) tra uno o più nodi.

I grafi aciclici eliminano la ripetizione tra nodi, punti o processi evitando cicli tra due nodi. Otteniamo il grafo aciclico diretto combinando le caratteristiche degli archi diretti e delle relazioni non circolari tra i nodi.

Un grafo aciclico diretto (DAG) rappresenta le attività in modo tale da raffigurare le attività come nodi e le dipendenze tra i nodi come archi diretti verso un altro nodo. In particolare, all’interno di un DAG, i cicli o i loop sono evitati nella direzione degli archi tra i nodi.

I DAG hanno una proprietà topologica, il che implica che i nodi in un DAG sono ordinati linearmente, con i nodi disposti in sequenza.

In questo ordinamento, un nodo che si connette ad altri nodi viene posizionato prima dei nodi a cui punta. Questa disposizione lineare garantisce che gli archi diretti si spostino solo in avanti nella sequenza, evitando la formazione di cicli o loop.

Progettazione di modelli di architettura di pipeline ML: grafi aciclici diretti (DAG) | Fonte: Autore

Un esempio concreto di architettura di grafi aciclici diretti

Un esempio concreto di architettura di grafi aciclici diretti | Fonte: Autore

Un esempio concreto che illustra l’utilizzo dei DAG è il processo all’interno delle app di ride-hailing come Uber o Lyft. In questo contesto, un DAG rappresenta la sequenza di attività, compiti o lavori come nodi, e gli archi diretti che collegano ciascun nodo indicano l’ordine o il flusso di esecuzione. Ad esempio, un utente deve richiedere un conducente attraverso l’app prima che il conducente possa procedere verso la posizione dell’utente.

Inoltre, la piattaforma Maestro di Netflix utilizza i DAG per orchestrare e gestire i flussi di lavoro all’interno delle pipeline di machine learning/data. Qui, i DAG rappresentano flussi di lavoro che comprendono unità che definiscono le operazioni da svolgere, note come Passaggi.

Coloro che desiderano sfruttare l’architettura dei DAG all’interno delle pipeline di ML e dei progetti possono farlo utilizzando le caratteristiche architetturali dei DAG per imporre e gestire una descrizione di una sequenza di operazioni che devono essere eseguite in modo prevedibile ed efficiente.

Questa caratteristica principale dei DAG consente di definire l’esecuzione dei flussi di lavoro nelle pipeline di ML complesse in modo più gestibile, specialmente quando ci sono elevati livelli di dipendenze tra processi, lavori o operazioni all’interno delle pipeline di ML.

Ad esempio, l’immagine di seguito rappresenta una pipeline ML standard che include l’ingestione dei dati, la preelaborazione, l’estrazione delle caratteristiche, l’addestramento del modello, la validazione del modello e la predizione. Le fasi della pipeline vengono eseguite consecutivamente, una dopo l’altra, quando la fase precedente viene contrassegnata come completata e fornisce un’uscita. Ciascuna delle fasi può essere definita come nodi all’interno dei DAG, con gli archi diretti che indicano le dipendenze tra le fasi/componenti della pipeline.

Pipeline ML standard | Fonte: Autore

Vantaggi e svantaggi dell’architettura dei grafi aciclici diretti

  • L’utilizzo dei DAG offre un modo efficiente per eseguire processi e compiti in varie applicazioni, tra cui l’analisi dei big data, il machine learning e l’intelligenza artificiale, in cui le dipendenze dei compiti e l’ordine di esecuzione sono cruciali.
  • Nel caso delle app di ride-hailing, ogni risultato dell’attività contribuisce al completamento del processo di ride-hailing. L’ordinamento topologico dei DAG garantisce la corretta sequenza delle attività, agevolando così il flusso del processo.
  • Per le pipeline di machine learning come quelle di Netflix Maestro, i DAG offrono un modo logico per illustrare e organizzare la sequenza delle operazioni di processo. I nodi in una rappresentazione DAG corrispondono a componenti o fasi standard come l’ingestione dei dati, la preelaborazione dei dati, l’estrazione delle caratteristiche, ecc.
  • Gli archi diretti indicano le dipendenze tra i processi e l’ordine di esecuzione dei processi. Questa caratteristica garantisce che tutte le operazioni vengano eseguite nell’ordine corretto e può anche individuare opportunità per l’esecuzione parallela, riducendo il tempo complessivo di esecuzione.

Anche se i DAG offrono il vantaggio di visualizzare le interdipendenze tra i compiti, questo vantaggio può diventare svantaggioso in una grande pipeline di machine learning complessa che comprende numerosi nodi e dipendenze tra i compiti.

  • I sistemi di machine learning che raggiungono un alto livello di complessità e sono modellati dai DAG diventano difficili da gestire, capire e visualizzare.
  • Nelle pipeline di machine learning moderne, che devono essere adattabili e funzionare all’interno di ambienti o flussi di lavoro dinamici, i DAG non sono adatti per modellare e gestire questi sistemi o pipeline, principalmente perché i DAG sono ideali per flussi di lavoro statici con dipendenze predefinite.

Tuttavia, potrebbero esistere scelte migliori per le pipeline di Machine Learning dinamiche di oggi. Ad esempio, immaginiamo una pipeline che rileva anomalie in tempo reale nel traffico di rete. Questa pipeline deve adattarsi ai continui cambiamenti nella struttura e nel traffico di rete. Un DAG statico potrebbe avere difficoltà a modellare tali dipendenze dinamiche.


Imparare dall’implementazione della piattaforma di apprendimento automatico presso Stitch Fix e altro con Stefan Krawczyk (DAGWorks)

Modello foreach

Cos’è il modello foreach?

I modelli architetturali e di progettazione all’interno dei flussi di lavoro di apprendimento automatico possono essere trovati nell’implementazione delle operazioni all’interno delle fasi del flusso di lavoro. I modelli implementati vengono utilizzati nel flusso di lavoro di apprendimento automatico, consentendo l’esecuzione sequenziale ed efficiente delle operazioni che agiscono sui set di dati. Uno di questi modelli è il modello foreach.

Il modello foreach è un paradigma di esecuzione del codice che esegue in modo iterativo un pezzo di codice per il numero di volte in cui un elemento appare in una raccolta o un insieme di dati. Questo modello è particolarmente utile nei processi, nei componenti o nelle fasi all’interno dei flussi di lavoro di apprendimento automatico che vengono eseguiti in modo sequenziale e ricorsivo. Ciò significa che lo stesso processo può essere eseguito un certo numero di volte prima di fornire un output e passare al processo o alla fase successiva.

Ad esempio, un set di dati standard comprende diversi punti dati che devono passare attraverso lo stesso script di pre-elaborazione dei dati per essere trasformati in un formato dati desiderato. In questo esempio, il modello foreach si presta come metodo per chiamare ripetutamente la funzione di elaborazione ‘n’ volte. Tipicamente ‘n’ corrisponde al numero di punti dati.

Un’altra applicazione del modello foreach può essere osservata nella fase di addestramento del modello, in cui un modello viene esposto ripetutamente a diverse partizioni del set di dati per l’addestramento e altre per i test per un determinato periodo di tempo.

Modelli di progettazione dell’architettura del flusso di lavoro di apprendimento automatico: modello foreach | Fonte: Autore

Un esempio concreto del modello foreach

Un’applicazione concreta del modello foreach si trova nell’orchestratore e scheduler del flusso di dati/ML di Netflix, Maestro. I flussi di lavoro di Maestro consistono in definizioni di lavoro che contengono passaggi/lavori eseguiti in un ordine definito dall’architettura del grafo aciclico diretto (DAG). All’interno di Maestro, il modello foreach viene utilizzato internamente come un sotto-flusso di lavoro composto da passaggi/lavori definiti, in cui i passaggi vengono eseguiti ripetutamente.

Come già accennato, il modello foreach può essere utilizzato nella fase di addestramento del modello nei flussi di lavoro di apprendimento automatico, in cui un modello viene esposto ripetutamente a diverse partizioni del set di dati per l’addestramento e altre per i test per un determinato periodo di tempo.

Modelli di progettazione delle architetture dei flussi di lavoro di apprendimento automatico: modello foreach nella fase di addestramento del modello nei flussi di lavoro di apprendimento automatico | Fonte: Autore

Vantaggi e svantaggi del modello foreach

  • L’utilizzo dell’architettura DAG e del modello foreach in un flusso di lavoro di apprendimento automatico consente una soluzione di flusso di lavoro di apprendimento automatico robusta, scalabile e gestibile.
  • Il modello foreach può essere utilizzato all’interno di ogni fase del flusso di lavoro per applicare un’operazione in modo ripetuto, ad esempio chiamando ripetutamente una funzione di elaborazione un certo numero di volte in uno scenario di pre-elaborazione del set di dati.
  • Questa configurazione offre una gestione efficiente di flussi di lavoro complessi nei flussi di lavoro di apprendimento automatico.

Di seguito è riportata un’illustrazione di un flusso di lavoro di apprendimento automatico che sfrutta l’architettura DAG e il modello foreach. Il diagramma di flusso rappresenta un flusso di lavoro di apprendimento automatico in cui ogni fase (raccolta dati, pre-elaborazione dei dati, estrazione delle caratteristiche, addestramento del modello, convalida del modello e generazione delle previsioni) è rappresentata come un nodo del grafo aciclico diretto (DAG). All’interno di ogni fase, il modello foreach viene utilizzato per applicare un’operazione specifica a ogni elemento di una collezione.

Ad esempio, ogni punto dati viene pulito e trasformato durante la pre-elaborazione dei dati. Gli archi diretti tra le fasi rappresentano le dipendenze, indicando che una fase non può iniziare fino a quando la fase precedente non è stata completata. Questo diagramma di flusso illustra la gestione efficiente di flussi di lavoro complessi nei flussi di lavoro di apprendimento automatico utilizzando l’architettura DAG e il modello foreach.

Flusso di lavoro di apprendimento automatico che sfrutta l’architettura DAG e il modello foreach | Fonte: Autore

Tuttavia, ci sono anche alcuni svantaggi.

Quando si utilizza il modello foreach nelle fasi di elaborazione dei dati o delle caratteristiche, tutti i dati devono essere caricati in memoria prima che le operazioni possano essere eseguite. Ciò può portare a prestazioni computazionali scadenti, soprattutto quando si elaborano grandi volumi di dati che possono superare le risorse di memoria disponibili. Ad esempio, in un caso d’uso in cui il set di dati ha una dimensione di diversi terabyte, il sistema potrebbe esaurire la memoria, rallentare o addirittura bloccarsi se tenta di caricare tutti i dati contemporaneamente.

Un’altra limitazione del pattern foreach risiede nell’ordine di esecuzione degli elementi all’interno di una collezione di dati. Il pattern foreach non garantisce un ordine di esecuzione coerente o un ordine nella stessa forma in cui i dati sono stati caricati.

L’ordine di esecuzione incoerente all’interno dei pattern foreach può essere problematico in scenari in cui la sequenza con cui i dati o le caratteristiche vengono elaborati è significativa. Ad esempio, se si elabora un dataset di serie temporali in cui l’ordine dei punti dati è fondamentale per comprendere le tendenze o i modelli, un’esecuzione non ordinata potrebbe portare a un addestramento e a previsioni inaccurate del modello.

Embeddings

Che cos’è il pattern di progettazione degli embeddings?

Gli embeddings sono un pattern di progettazione presente nelle pipeline di machine learning tradizionali e moderne e vengono definiti come rappresentazioni a bassa dimensionalità di dati ad alta dimensionalità, catturando le caratteristiche chiave, le relazioni e le caratteristiche delle strutture intrinseche dei dati.

Gli embeddings sono tipicamente presentati come vettori di numeri in virgola mobile e le relazioni o le somiglianze tra due vettori di embeddings possono essere dedotte utilizzando varie tecniche di misurazione della distanza.

Nell’apprendimento automatico, gli embeddings svolgono un ruolo significativo in diverse aree, come l’addestramento del modello, l’efficienza di calcolo, l’interpretabilità del modello e la riduzione della dimensionalità.

Un esempio concreto del pattern di progettazione degli embeddings

Aziende importanti come Google e OpenAI utilizzano gli embeddings per diverse attività presenti nei processi delle pipeline di machine learning. Il prodotto principale di Google, Google Search, sfrutta gli embeddings nel suo motore di ricerca e nel motore di raccomandazione, trasformando vettori ad alta dimensionalità in vettori di livello inferiore che catturano il significato semantico delle parole all’interno del testo. Ciò porta a un miglioramento delle prestazioni dei risultati di ricerca per quanto riguarda la pertinenza dei risultati di ricerca alle query di ricerca.

OpenAI, d’altra parte, è stato all’avanguardia negli avanzamenti dei modelli generativi di intelligenza artificiale, come GPT-3, che si basano pesantemente sugli embeddings. In questi modelli, gli embeddings rappresentano parole o token nel testo di input, catturando le relazioni semantiche e sintattiche tra le parole, consentendo così al modello di generare testo coerente e rilevante contestualmente. OpenAI utilizza anche gli embeddings nelle attività di apprendimento per rinforzo, dove rappresentano lo stato dell’ambiente o le azioni di un agente.

Vantaggi e svantaggi del pattern di progettazione degli embeddings

I vantaggi del metodo di rappresentazione dei dati tramite embeddings nelle pipeline di machine learning risiedono nella sua applicabilità a diverse attività di apprendimento automatico e componenti delle pipeline di apprendimento automatico. Gli embeddings vengono utilizzati in compiti di computer vision, compiti di elaborazione del linguaggio naturale e statistica. Più specificamente, gli embeddings consentono alle reti neurali di elaborare dati di addestramento in formati che consentono di estrarre le caratteristiche dei dati, il che è particolarmente importante in compiti come l’elaborazione del linguaggio naturale (NLP) o il riconoscimento delle immagini. Inoltre, gli embeddings svolgono un ruolo significativo nell’interpretabilità del modello, un aspetto fondamentale dell’Intelligenza Artificiale Esplicabile, e fungono da strategia utilizzata per demistificare i processi interni di un modello, favorendo così una comprensione più approfondita del processo decisionale del modello. Agiscono anche come una forma di rappresentazione dei dati che conserva le informazioni chiave, i modelli e le caratteristiche, fornendo una rappresentazione a bassa dimensionalità di dati ad alta dimensionalità che conserva i modelli e le informazioni chiave.

Nel contesto dell’apprendimento automatico, gli embeddings svolgono un ruolo significativo in diverse aree.

  1. Addestramento del modello: gli embeddings consentono alle reti neurali di elaborare dati di addestramento in formati che consentono di estrarre le caratteristiche dei dati. Nei compiti di apprendimento automatico come l’elaborazione del linguaggio naturale (NLP) o il riconoscimento delle immagini, il formato iniziale dei dati – che siano parole o frasi nel testo o pixel in immagini e video – non è direttamente adatto all’addestramento delle reti neurali. Qui entrano in gioco gli embeddings. Trasformando questi dati ad alta dimensionalità in vettori densi di numeri reali, gli embeddings forniscono un formato che consente ai parametri della rete, come i pesi e i bias, di adattarsi correttamente all’insieme di dati.
  2. Interpretabilità del modello: la capacità dei modelli di generare risultati di previsione e fornire approfondimenti dettagliati su come queste previsioni sono state dedotte in base ai parametri interni del modello, all’insieme di dati di addestramento e agli euristici può migliorare significativamente l’adozione dei sistemi di intelligenza artificiale. Il concetto di Intelligenza Artificiale Esplicabile ruota attorno allo sviluppo di modelli che offrano risultati di inferenza e una forma di spiegazione che dettaglia il processo alla base della previsione. L’interpretabilità del modello è un aspetto fondamentale dell’Intelligenza Artificiale Esplicabile, che serve come strategia utilizzata per demistificare i processi interni di un modello, favorendo così una comprensione più approfondita del processo decisionale del modello. Questa trasparenza è fondamentale per costruire fiducia tra gli utenti e le parti interessate, facilitando il debug e il miglioramento del modello e garantendo la conformità ai requisiti normativi. Gli embeddings forniscono un approccio all’interpretabilità del modello, specialmente nei compiti di NLP in cui la visualizzazione della relazione semantica tra frasi o parole in una frase fornisce una comprensione di come un modello comprende il contenuto del testo che gli viene fornito.
  3. Riduzione della dimensionalità: gli embeddings rappresentano una forma di rappresentazione dei dati che conserva informazioni, modelli e caratteristiche chiave. Nelle pipeline di apprendimento automatico, i dati contengono una vasta quantità di informazioni catturate in livelli di dimensionalità variabili. Ciò significa che la vasta quantità di dati aumenta i costi di calcolo, i requisiti di archiviazione, l’addestramento del modello e l’elaborazione dei dati, tutti puntando a elementi presenti nello scenario della maledizione della dimensionalità. Gli embeddings forniscono una rappresentazione a bassa dimensionalità di dati ad alta dimensionalità che conserva modelli e informazioni chiave.
  4. Altre aree nelle pipeline di apprendimento automatico: trasferimento di apprendimento, rilevamento di anomalie, ricerca di similarità di vettori, clustering, ecc.

Anche se gli embedding sono utili per molte attività di apprendimento automatico, ci sono alcuni scenari in cui il potere rappresentativo degli embedding è limitato a causa di dati sparsi e mancanza di pattern intrinseci nel dataset. Questo è noto come il problema del “cold start”, in cui un embedding è un approccio di rappresentazione dei dati generato identificando i pattern e le correlazioni tra gli elementi dei dataset, ma in situazioni in cui ci sono pochi pattern o quantità insufficienti di dati, i vantaggi rappresentazionali degli embedding possono andare persi, con conseguente scarsa performance nei sistemi di apprendimento automatico come i sistemi di raccomandazione e di ranking.

Uno svantaggio previsto di una rappresentazione dei dati a dimensione inferiore è la perdita di informazioni; gli embedding generati da dati ad alta dimensionalità a volte possono subire perdita di informazioni nel processo di riduzione della dimensionalità, contribuendo a una scarsa performance dei sistemi e delle pipeline di apprendimento automatico.

Parallelismo dei dati

Cos’è il parallelismo dei dati?

Il parallelismo dei dati è una strategia utilizzata in una pipeline di apprendimento automatico con accesso a risorse di calcolo multiple, come CPU e GPU, e un grande dataset. Questa strategia prevede la suddivisione del grande dataset in batch più piccoli, ciascuno elaborato su una risorsa di calcolo diversa.

All’inizio dell’addestramento, gli stessi parametri e pesi del modello vengono copiati su ogni risorsa di calcolo. Mentre ogni risorsa elabora il proprio batch di dati, aggiorna in modo indipendente questi parametri e pesi. Dopo l’elaborazione di ciascun batch, i gradienti (o modifiche) di questi parametri vengono calcolati e condivisi tra tutte le risorse. Ciò garantisce che tutte le copie del modello rimangano sincronizzate durante l’addestramento.

Modelli di architettura di pipeline di apprendimento automatico: parallelismo dei dati | Fonte: Autore

Un esempio concreto di parallelismo dei dati

Un esempio concreto di come i principi del parallelismo dei dati si incarnano in applicazioni reali è il lavoro innovativo di Facebook AI Research (FAIR) Engineering con il loro sistema innovativo – il sistema Fully Sharded Data Parallel (FSDP).

Questa creazione innovativa ha l’unico scopo di migliorare il processo di addestramento di modelli AI massicci. Lo fa suddividendo le variabili di un modello AI su operatori paralleli dei dati, mentre opzionalmente sposta una frazione del calcolo di addestramento sulle CPU.

FSDP si distingue per il suo approccio unico alla suddivisione dei parametri. Adotta un approccio più bilanciato, che porta a prestazioni superiori. Ciò viene ottenuto consentendo la sovrapposizione della comunicazione e dell’elaborazione legate all’addestramento. Ciò che rende entusiasmante FSDP è come ottimizza l’addestramento di modelli molto più grandi ma utilizza meno GPU nel processo.

Questa ottimizzazione diventa particolarmente rilevante e preziosa in aree specializzate come l’Elaborazione del Linguaggio Naturale (NLP) e la visione artificiale. Entrambe queste aree richiedono spesso l’addestramento di modelli su larga scala.

Un’applicazione pratica di FSDP è evidente nelle operazioni di Facebook. Hanno incorporato FSDP nel processo di addestramento di alcuni dei loro modelli NLP e Vision, a testimonianza della sua efficacia. Inoltre, fa parte della libreria FairScale, che fornisce un’API semplice per consentire agli sviluppatori e agli ingegneri di migliorare e scalare l’addestramento dei loro modelli.

L’influenza di FSDP si estende a numerosi framework di apprendimento automatico, come fairseq per modelli di linguaggio, VISSL per modelli di visione artificiale e PyTorch Lightning per una vasta gamma di altre applicazioni. Questa ampia integrazione dimostra l’applicabilità e la facilità d’uso del parallelismo dei dati nelle moderne pipeline di apprendimento automatico.

Vantaggi e svantaggi del parallelismo dei dati

  • Il concetto di parallelismo dei dati presenta un approccio convincente per ridurre il tempo di addestramento nei modelli di apprendimento automatico.
  • L’idea fondamentale è suddividere il dataset e quindi elaborare contemporaneamente queste divisioni su diverse piattaforme di calcolo, sia multiple CPU che GPU. In questo modo, si sfruttano al massimo le risorse di calcolo disponibili.
  • L’integrazione del parallelismo dei dati nei processi e nelle pipeline di apprendimento automatico è una sfida. Ad esempio, la sincronizzazione dei parametri del modello tra diverse risorse di calcolo comporta una complessità aggiuntiva. In particolare nei sistemi distribuiti, questa sincronizzazione può comportare costi aggiuntivi dovuti a possibili problemi di latenza nella comunicazione.
  • Inoltre, è importante notare che l’utilità del parallelismo dei dati si estende solo a alcuni modelli di apprendimento automatico o dataset. Ci sono modelli con dipendenze sequenziali, come alcuni tipi di reti neurali ricorrenti, che potrebbero non essere ben allineati con un approccio di parallelismo dei dati.

Parallelismo del modello

Cosa è il parallelismo del modello?

Il parallelismo del modello viene utilizzato all’interno delle pipeline di apprendimento automatico per utilizzare in modo efficiente le risorse di calcolo quando il modello di apprendimento profondo è troppo grande per essere ospitato su una singola istanza di GPU o CPU. Questa efficienza di calcolo viene raggiunta suddividendo il modello iniziale in sotto-parti e mantenendo quelle parti su diverse GPU, CPU o macchine.

La strategia del parallelismo del modello ospita diverse parti del modello su diverse risorse di calcolo. Inoltre, i calcoli dei gradienti del modello e l’addestramento vengono eseguiti su ogni macchina per il loro segmento rispettivo del modello iniziale. Questa strategia è nata nell’era dell’apprendimento profondo, dove i modelli sono abbastanza grandi da contenere miliardi di parametri, il che significa che non possono essere ospitati o archiviati su una singola GPU.

Pattern di progettazione dell’architettura delle pipeline di apprendimento automatico: parallelismo del modello | Fonte: Autore

Un esempio concreto di parallelismo del modello

I modelli di apprendimento profondo di oggi sono intrinsecamente grandi in termini di numero di parametri interni; ciò comporta la necessità di risorse di calcolo scalabili per contenere e calcolare i parametri del modello durante le fasi di addestramento e inferenza nelle pipeline di apprendimento automatico. Ad esempio, GPT-3 ha 175 miliardi di parametri e richiede 800 GB di spazio di memoria, e altri modelli fondamentali, come LLaMA, creati da Meta, hanno parametri che vanno da 7 miliardi a 70 miliardi.

Questi modelli richiedono risorse di calcolo significative durante la fase di addestramento. Il parallelismo del modello offre un metodo per addestrare parti del modello su risorse di calcolo diverse, dove ogni risorsa addestra il modello su un mini-batch dei dati di addestramento e calcola i gradienti per la sua parte assegnata del modello originale.

Vantaggi e svantaggi del parallelismo del modello

L’implementazione del parallelismo del modello all’interno delle pipeline di apprendimento automatico comporta sfide uniche.

  • È necessaria una comunicazione costante tra le macchine che ospitano le parti del modello iniziale poiché l’output di una parte del modello viene utilizzato come input per un’altra.
  • Inoltre, capire quale parte del modello suddividere in segmenti richiede una profonda comprensione ed esperienza con modelli di apprendimento profondo complessi e, nella maggior parte dei casi, con il modello stesso.
  • Uno dei principali vantaggi è l’utilizzo efficiente delle risorse di calcolo per gestire e addestrare modelli di grandi dimensioni.

Apprendimento federato

Cosa è l’architettura dell’apprendimento federato?

L’apprendimento federato è un approccio all’apprendimento distribuito che cerca di consentire innovazioni possibili attraverso l’apprendimento automatico tenendo conto anche dell’evoluzione della privacy e dei dati sensibili.

Un metodo relativamente nuovo, l’apprendimento federato decentralizza i processi di addestramento del modello su dispositivi o macchine in modo che i dati non debbano lasciare l’ambiente del dispositivo. Invece, solo gli aggiornamenti dei parametri interni del modello, che vengono addestrati su una copia del modello utilizzando dati unici relativi all’utente memorizzati sul dispositivo, vengono trasferiti a un server centrale. Questo server centrale accumula tutti gli aggiornamenti dagli altri dispositivi locali e applica le modifiche a un modello residente sul server centralizzato.

Un esempio concreto di architettura di apprendimento federato

Nell’approccio dell’apprendimento federato all’apprendimento automatico distribuito, la privacy e i dati dell’utente sono preservati poiché non lasciano mai il dispositivo o la macchina dell’utente dove i dati sono memorizzati. Questo approccio è un metodo strategico di addestramento del modello nelle pipeline di apprendimento automatico in cui la sensibilità e l’accesso ai dati sono altamente prioritari. Consente di utilizzare funzionalità di apprendimento automatico senza trasmettere i dati dell’utente tra dispositivi o sistemi centralizzati come soluzioni di archiviazione cloud.

Pattern di progettazione dell’architettura delle pipeline di apprendimento automatico: architettura di apprendimento federato | Fonte: Autore

Vantaggi e svantaggi dell’architettura di apprendimento federato

L’apprendimento federato orienta un’organizzazione verso un futuro più favorevole ai dati garantendo la privacy dell’utente e preservando i dati. Tuttavia, presenta limitazioni.

  • L’apprendimento federato è ancora in fase embrionale, il che significa che un numero limitato di strumenti e tecnologie è disponibile per facilitare l’implementazione di procedure efficienti di apprendimento federato.
  • L’adozione dell’apprendimento federato in un’organizzazione completamente sviluppata con una pipeline di apprendimento automatico standardizzata richiede un notevole sforzo e investimento poiché introduce un nuovo approccio all’addestramento, all’implementazione e alla valutazione del modello che richiede una ristrutturazione completa dell’infrastruttura di apprendimento automatico esistente.
  • Inoltre, le prestazioni complessive del modello centrale dipendono da diversi fattori centrati sull’utente, come la qualità dei dati e la velocità di trasmissione.

Allenamento sincrono

Cosa è l’architettura di allenamento sincrono?

L’Allenamento Sincrono è una strategia di pipeline di apprendimento automatico che entra in gioco quando modelli di apprendimento profondo complessi vengono suddivisi o distribuiti su risorse informatiche diverse, e c’è un aumento della richiesta di coerenza durante il processo di allenamento.

In questo contesto, l’allenamento sincrono comporta uno sforzo coordinato tra tutte le unità di calcolo indipendenti, chiamate ‘worker’. Ogni worker possiede una partizione del modello e aggiorna i suoi parametri utilizzando la sua porzione di dati distribuiti in modo uniforme.

La caratteristica chiave dell’allenamento sincrono è che tutti i worker operano in sincronia, il che significa che ogni worker deve completare la fase di allenamento prima che qualcuno di loro possa procedere alla successiva operazione o passaggio di allenamento.

Progettazione di modelli di architetture pipeline di apprendimento automatico: allenamento sincrono | Fonte: Autore

Un esempio concreto di architettura di allenamento sincrono

L’Allenamento Sincrono è rilevante per scenari o casi d’uso in cui è necessaria una distribuzione uniforme dei dati di addestramento su risorse di calcolo, una capacità computazionale uniforme su tutte le risorse e una comunicazione a bassa latenza tra queste risorse indipendenti.

Vantaggi e svantaggi dell’architettura di allenamento sincrono

  • I vantaggi dell’allenamento sincrono sono la coerenza, l’uniformità, un’accuratezza migliorata e la semplicità.
  • Tutti i worker concludono le loro fasi di allenamento prima di passare al passaggio successivo, mantenendo così la coerenza dei parametri del modello in tutte le unità.
  • Rispetto ai metodi asincroni, l’allenamento sincrono spesso ottiene risultati superiori poiché il funzionamento sincronizzato e uniforme dei worker riduce la varianza negli aggiornamenti dei parametri ad ogni passo.
  • Uno svantaggio significativo è la durata della fase di allenamento nell’allenamento sincrono.
  • L’allenamento sincrono può causare problemi di efficienza temporale poiché richiede il completamento dei compiti da parte di tutti i worker prima di passare al passaggio successivo.
  • Ciò potrebbe introdurre inefficienze, soprattutto nei sistemi con risorse di calcolo eterogenee.

Architettura del server dei parametri

Cosa è l’architettura del server dei parametri?

L’Architettura del Server dei Parametri è progettata per affrontare problemi di apprendimento automatico distribuito come interdipendenze tra worker, complessità nell’implementazione di strategie, coerenza e sincronizzazione.

Questa architettura si basa sul principio delle relazioni server-client, in cui i nodi client, chiamati ‘worker’, vengono assegnati specifici compiti come gestione dei dati, gestione delle partizioni del modello ed esecuzione di operazioni definite.

D’altra parte, il nodo server svolge un ruolo centrale nella gestione e nell’aggregazione dei parametri del modello aggiornati ed è anche responsabile della comunicazione di questi aggiornamenti ai nodi client.

Un esempio concreto di architettura del server dei parametri

Nel contesto dei sistemi di apprendimento automatico distribuito, l’Architettura del Server dei Parametri viene utilizzata per facilitare l’apprendimento efficiente e coordinato. Il nodo server in questa architettura garantisce la coerenza dei parametri del modello nell’intero sistema distribuito, rendendola una scelta valida per gestire compiti di apprendimento automatico su larga scala che richiedono una gestione attenta dei parametri del modello su nodi o worker multipli.

Progettazione di modelli di architetture pipeline di apprendimento automatico: architettura del server dei parametri | Fonte: Autore

Vantaggi e svantaggi dell’architettura del server dei parametri

  • L’Architettura del Server dei Parametri facilita un alto livello di organizzazione all’interno delle pipeline di apprendimento automatico e dei flussi di lavoro, principalmente grazie alle responsabilità distinte e definite dei server e dei nodi client.
  • Questa chiara distinzione semplifica l’operazione, ottimizza la risoluzione dei problemi e ottimizza la gestione della pipeline.
  • La centralizzazione della gestione e della coerenza dei parametri del modello nel nodo server assicura la trasmissione degli aggiornamenti più recenti a tutti i nodi client o worker, rafforzando le prestazioni e l’affidabilità dell’output del modello.

Tuttavia, questo approccio architetturale ha i suoi svantaggi.

  • Un significativo svantaggio è la vulnerabilità a un guasto totale del sistema, derivante dalla dipendenza dal nodo server.
  • Di conseguenza, se il nodo server presenta un malfunzionamento, potrebbe potenzialmente compromettere l’intero sistema, evidenziando il rischio intrinseco dei punti unici di guasto in questa architettura.

Architettura Ring-AllReduce

Cosa è l’architettura Ring-AllReduce?

L’Architettura Ring-AllReduce è un’architettura di allenamento distribuito per l’apprendimento automatico moderno che fornisce un metodo per gestire il calcolo del gradiente e gli aggiornamenti dei parametri del modello effettuati tramite backpropagation in modelli di apprendimento automatico complessi di grandi dimensioni che vengono addestrati su set di dati estesi. Ogni nodo worker è fornito di una copia dei parametri completi del modello e di un sottoinsieme dei dati di addestramento in questa architettura.

I lavoratori calcolano autonomamente i loro gradienti durante la propagazione all’indietro sui propri dati di addestramento. Viene applicata una struttura a forma di anello per assicurare che ogni lavoratore su un dispositivo abbia un modello con parametri che includono gli aggiornamenti del gradiente effettuati su tutti gli altri lavoratori indipendenti.

Ciò viene realizzato passando la somma dei gradienti da un lavoratore al successivo nell’anello, che quindi aggiunge il proprio gradiente calcolato alla somma e la passa al lavoratore successivo. Questo processo viene ripetuto finché tutti i lavoratori hanno la somma completa dei gradienti aggregati da tutti i lavoratori nell’anello.

Progettazione di architettura del flusso di lavoro di ML: architettura ring-allreduce | Fonte: Autore

Un esempio concreto di architettura ring-allreduce

L’architettura Ring-AllReduce si è dimostrata fondamentale in varie applicazioni reali che coinvolgono l’addestramento distribuito di machine learning, in particolare in scenari che richiedono la gestione di ampi set di dati. Ad esempio, grandi aziende tecnologiche come Facebook e Google hanno integrato con successo questa architettura nei loro flussi di lavoro di machine learning.

Il team di ricerca sull’IA di Facebook (FAIR) utilizza l’architettura Ring-AllReduce per l’apprendimento profondo distribuito, contribuendo a migliorare l’efficienza dell’addestramento dei loro modelli e a gestire in modo efficace set di dati estesi e complessi. Google incorpora anche questa architettura nel suo framework di machine learning TensorFlow, consentendo così un addestramento multi-nodo efficiente dei modelli di apprendimento profondo.

Vantaggi e svantaggi dell’architettura ring-allreduce

  • Il vantaggio dell’architettura Ring-AllReduce è che è una strategia efficiente per gestire compiti di machine learning distribuito, specialmente quando si lavora con grandi set di dati.
  • Consente un’efficace parallelismo dei dati garantendo l’utilizzo ottimale delle risorse computazionali. Ogni nodo lavoratore possiede una copia completa del modello ed è responsabile dell’addestramento del proprio sottoinsieme dei dati.
  • Un altro vantaggio di Ring-AllReduce è che consente l’aggregazione degli aggiornamenti dei parametri del modello su più dispositivi. Mentre ogni lavoratore si addestra su un sottoinsieme dei dati, beneficia anche degli aggiornamenti del gradiente calcolati dagli altri lavoratori.
  • Questa approccio accelera la fase di addestramento del modello e migliora la scalabilità del flusso di lavoro di machine learning, consentendo un aumento del numero di modelli all’aumentare della domanda.

Conclusioni

In questo articolo sono stati trattati vari aspetti, tra cui l’architettura del flusso di lavoro, le considerazioni di progettazione, le pratiche standard nelle principali aziende tecnologiche, i modelli comuni e i componenti tipici dei flussi di lavoro di ML.

Abbiamo anche introdotto strumenti, metodologie e software essenziali per la costruzione e la gestione di flussi di lavoro di ML, insieme alla discussione delle migliori pratiche. Abbiamo fornito panorami illustrati di architetture e modelli di progettazione come l’architettura del singolo leader, i grafi aciclici diretti e il modello Foreach.

Inoltre, abbiamo esaminato varie strategie di distribuzione che offrono soluzioni uniche a problemi di machine learning distribuito, tra cui il parallelismo dei dati, il parallelismo dei modelli, l’apprendimento federato, l’addestramento sincrono e l’architettura del server dei parametri.

Per i professionisti di ML che sono concentrati sulla longevità della carriera, è fondamentale comprendere come dovrebbe funzionare un flusso di lavoro di ML e come può scalare e adattarsi mantenendo un’infrastruttura facilmente risolvibile. Spero che questo articolo abbia portato la chiarezza di cui avevi bisogno in merito.

Riferimenti

  • Netflix Tech Blog: Meson Workflow Orchestration for Netflix Recommendations
  • Netflix. (18 gennaio 2022). Meson workflow orchestration for Netflix recommendations. [Online]. Recuperato da https://netflixtechblog.com/meson-workflow-orchestration-for-netflix-recommendations-fc932625c1d9
  • Facebook Engineering: fSDP: A Fast and Scalable Distributed Parallel Programming Framework
  • Facebook. (15 luglio 2021). fSDP: A Fast and Scalable Distributed Parallel Programming Framework. [Online]. Recuperato da https://engineering.fb.com/2021/07/15/open-source/fsdp/