Vai al contenuto principale

Creare e distribuire pipeline di Machine Learning

Scopri tutto quello che devi sapere su Kubeflow ed esplora come creare e distribuire pipeline di Machine Learning
Aggiornato 29 set 2026  · 11 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Intestazione tutorial Kubeflow

Introduzione

Quando costruisci un modello di machine learning, potresti dimenticare di considerare l'infrastruttura necessaria per addestrare e servire il modello in produzione. Per i flussi di lavoro end-to-end di machine learning, può essere difficile gestire tutte le considerazioni relative ad applicazioni, piattaforme e risorse. 

Rispetto ai deployment web convenzionali, le applicazioni di machine learning hanno caratteristiche diverse. Ad esempio, la fase di training è ad alta intensità di risorse, mentre la fase di inferenza è leggera e veloce. Avrai anche bisogno degli strumenti e dei framework per eseguire tutte queste parti. Un framework open-source molto popolare che può essere utilizzato per sviluppare uno standard per la consegna di applicazioni di machine learning end-to-end è Kubeflow.

Che cos'è Kubeflow?

Kubeflow è un progetto open-source che include un insieme curato di strumenti e framework. L'obiettivo principale di Kubeflow è rendere semplice sviluppare, distribuire e gestire flussi di lavoro di machine learning portabili e scalabili. 

Kubeflow è costruito sopra Kubernetes, una piattaforma open-source per eseguire e orchestrare container. Kubernetes è progettato per girare in modo coerente su ambienti diversi, aspetto fondamentale per il funzionamento di Kubeflow. Kubeflow è pensato per lasciare a Kubernetes ciò che sa fare meglio, permettendoti di concentrarti sul definire ed eseguire i workflow di ML, inclusa la gestione dei dati, l'esecuzione di notebook, l'addestramento e il serving dei modelli. 

Kubeflow si è evoluto dal progetto interno di Google chiamato TensorFlow Extended. È iniziato come un modo più semplice per eseguire job TensorFlow su Kubernetes, ma da allora si è ampliato fino a diventare un framework multi-architettura e multi-cloud per eseguire workflow di machine learning end-to-end. 

Kubeflow e i workflow di Machine Learning

Kubeflow è una piattaforma per data scientist e machine learning engineer che racchiude il meglio di entrambi i mondi. I data scientist possono usare Kubeflow per sperimentare con modelli di ML e orchestrare i loro esperimenti su Kubernetes nel modo più efficiente. 

I machine learning engineer possono usare Kubeflow per distribuire sistemi di ML in vari ambienti per sviluppo, test e produzione.

Il diagramma seguente mostra un esempio di due fasi distinte in un progetto di machine learning: (i) la fase sperimentale e (ii) la fase di produzione. 

Kubeflow ha molti componenti diversi per supportare quasi tutti i passaggi della pipeline qui sotto. Ad esempio, per il tuning degli iperparametri del modello, Kubeflow ha un componente chiamato "Katib". Parleremo dei componenti chiave di Kubeflow più avanti in questo tutorial.

Workflow di machine learning

Kubeflow - Workflow di Machine Learning

Installare Kubeflow

Ci sono due modi per iniziare a usare Kubeflow:

  1. Installarlo con una distribuzione pacchettizzata (semplice e lineare).
  2. Installarlo con i manifest (avanzato).

Le distribuzioni pacchettizzate sono sviluppate e supportate dai rispettivi manutentori. Ad esempio, Kubeflow su Azure è mantenuto da Microsoft. Vedi l'elenco completo delle distribuzioni nella tabella seguente:

Distribuzioni pacchettizzate Kubeflow

Distribuzioni pacchettizzate Kubeflow

Tre principi di Kubeflow

Componibilità

La componibilità è un principio di progettazione dei sistemi per gestire le interrelazioni tra componenti. Kubeflow è altamente componibile, quindi puoi facilmente usare versioni diverse di TensorFlow per parti differenti della tua pipeline di machine learning, se necessario. 

Portabilità

La portabilità significa che puoi eseguire l'intero progetto di machine learning ovunque stia girando Kubeflow. È agnostico rispetto alla piattaforma e astrae tutte le difficoltà per l'utente. Ti basta scrivere il codice una volta, e Kubeflow gestirà l'astrazione così da poter eseguire il codice sul tuo laptop o su un cluster nel cloud.

Scalabilità

La scalabilità significa che il tuo progetto può accedere a più risorse quando servono e rilasciarle quando non servono. Ogni ambiente può avere risorse di calcolo diverse come CPU, GPU e TPU.

Entità concettuali di Kubeflow

Entità concettuali di Kubeflow

Componenti di Kubeflow

I componenti di Kubeflow sono blocchi logici che insieme costituiscono Kubeflow. In genere, in un progetto di machine learning ti ritroverai a usare uno o più componenti.

Dashboard

Soprattutto, la Dashboard centrale fornisce un accesso rapido agli altri componenti di Kubeflow. Alcuni componenti utili sono:

  • Notebooks: per gestire i server Notebook.
  • Pipelines: per gestire le pipeline di Kubeflow.
  • Experiments: per gestire gli esperimenti Katib.

Vista UI della dashboard Kubeflow

Vista UI della dashboard Kubeflow

Notebooks

Kubeflow include un ambiente integrato di notebook Jupyter. I notebook sono utili per fare test rapidi, sviluppare modelli e persino scrivere applicazioni di ML. 

Non è raro che ML engineer e data scientist eseguano i loro notebook in locale e siano limitati dalle risorse. Avere i notebook nel cluster rende semplice eseguire job dove le risorse possono essere scalate dinamicamente. 

Notebook Kubeflow

Notebook Kubeflow

Pipelines

Kubeflow Pipelines è un potente componente di Kubeflow per costruire pipeline di machine learning end-to-end portabili e scalabili basate su container Docker. 

Le pipeline di Machine Learning sono un insieme di passaggi in grado di gestire tutto, dalla raccolta dei dati al serving dei modelli di machine learning. Ogni passaggio in una pipeline è un container Docker, quindi portabile e scalabile. Ogni passaggio è indipendente, permettendoti di riutilizzare i componenti della pipeline. 

UI Kubeflow Pipelines

UI Kubeflow Pipelines

In questo tutorial esploreremo in dettaglio il componente Kubeflow Pipelines e vedremo un esempio di codice su come costruire ed eseguire una pipeline di machine learning usando Kubeflow.

Katib

Katib è un componente di Kubeflow progettato per l'ottimizzazione automatica degli iperparametri su larga scala. Il tuning degli iperparametri gioca un ruolo fondamentale nello sviluppo di buoni modelli, poiché la ricerca manuale nello spazio degli iperparametri può richiedere molto sforzo. 

Katib ti aiuta a ottimizzare i valori degli iperparametri rispetto a una metrica definita (come AUC o RMSE). È un modo utile per trovare e visualizzare la configurazione ottimale per preparare il modello alla produzione. 

UI Kubeflow Katib

UI Kubeflow Katib

Kubeflow Pipelines

Un workflow di machine learning può coinvolgere molti passaggi, dalla preparazione dei dati all'addestramento del modello, fino alla valutazione e altro ancora. È difficile tracciarli in modo estemporaneo. 

La registrazione degli esperimenti e il tracciamento delle versioni dei modelli senza strumenti adeguati sono un'ulteriore sfida per i data scientist. Kubeflow Pipelines consente ai data scientist di sviluppare workflow di machine learning usando standard componibili, condivisibili e riproducibili.

Kubeflow è una soluzione nativa per Kubernetes che aiuta i data scientist ad adottare una mentalità disciplinata da pipeline quando sviluppano codice di machine learning e lo scalano sul cloud. Gli obiettivi finali di Kubeflow Pipelines sono:

  • Semplificare l'orchestrazione di pipeline di Machine Learning su larga scala 
  • Consentire sperimentazione più rapida, riproducibilità e collaborazione tramite multi-tenancy. La UI di Kubeflow può essere usata per creare gruppi e aggiungere utenti ai gruppi con controllo degli accessi.
  • Essere riutilizzabili e offrire standardizzazione dei diversi componenti di ML (passaggi nelle pipeline).

Con Kubeflow puoi creare soluzioni di machine learning end-to-end senza ricostruire tutto ogni volta, come con i mattoncini. Kubeflow supporta anche altre funzionalità come il monitoraggio dell'esecuzione, la pianificazione dei workflow, la registrazione dei metadati e il versioning.

Panoramica architetturale

Panoramica architetturale di Kubeflow

Concetti importanti in Kubeflow Pipelines

Pipeline

Una pipeline è una sequenza di passaggi chiaramente definiti in un workflow di machine learning (ML). La pipeline deve definire gli input (parametri) necessari per eseguirla e gli input e gli output di ciascun componente. Ogni componente in una pipeline prende un input, lo elabora e fornisce l'output al componente successivo.

Un concetto molto importante da capire è che ogni passaggio (componente) in una pipeline Kubeflow è in sostanza un container Docker. Quando esegui una pipeline, Kubeflow avvia uno o più Pod di Kubernetes corrispondenti ai componenti della pipeline. I pod quindi avviano il container Docker che, a sua volta, esegue il codice che hai scritto nel componente.

Componente

Un componente di pipeline è un codice autonomo che esegue un passaggio nel workflow di machine learning, come l'imputazione dei valori mancanti, lo scaling dei dati o il fitting di un modello di machine learning.

Un componente in una pipeline Kubeflow è simile a una funzione. Di conseguenza, ogni componente ha un nome, parametri di input e un output. 

Ogni componente in una pipeline deve essere impacchettato come un'immagine Docker, in modo che ogni passaggio della pipeline sia indipendente dagli altri e tu possa combinare framework e strumenti diversi in parti differenti dei tuoi workflow di ML.

Esperimento

Un esperimento ti permette di eseguire configurazioni diverse della stessa pipeline e confrontare e analizzare i risultati. Normalmente, nel machine learning devi provare parametri differenti per vedere quale funziona meglio. L'Esperimento di Kubeflow Pipeline è progettato per questo scopo.

Grafo

Un grafo è una rappresentazione visiva nella UI di Kubeflow. Mostra i passaggi che una run della pipeline ha eseguito o sta eseguendo, con frecce che indicano le relazioni padre/figlio tra i componenti della pipeline rappresentati da ciascun passaggio. 

Tre modi per costruire pipeline in Kubeflow 

Si spera che ora sia chiaro cosa sono le pipeline di Kubeflow e quali sono i vantaggi di usare questo framework per progettare e distribuire workflow di machine learning in produzione. Rivediamo rapidamente tre modi in cui puoi usare Kubeflow per costruire e distribuire pipeline.

Interfaccia utente (UI)

Puoi usare la UI di Kubeflow per eseguire pipeline, caricare pipeline condivise da altri, visualizzare artifact e output delle run e pianificare esecuzioni automatiche. Ecco come appare la UI delle Pipeline:

Kubeflow Pipelines

Interfacce di Kubeflow Pipeline

SDK Python ufficiale

Kubeflow fornisce un set di librerie Python che puoi usare per sviluppare ed eseguire in modo programmatico pipeline di ML. Questo è il modo d'uso più comune per Kubeflow Pipelines.

API REST

Kubeflow fornisce anche API REST per sistemi di integrazione/distribuzione continua. Immagina un caso d'uso in cui vuoi integrare una qualsiasi delle funzionalità di Kubeflow Pipeline in sistemi o processi aziendali a valle.

Tutorial su Kubeflow Pipeline

Il modo più semplice per iniziare con Kubeflow è usare una distribuzione pacchettizzata, che è sostanzialmente come un servizio gestito sul cloud. Qui stiamo usando il servizio Kubeflow su GCP. Puoi seguire questa guida ufficiale per imparare come distribuire il servizio su GCP. 

Una volta completata la distribuzione, puoi accedere a questa dashboard dal tuo endpoint GCP.

Dashboard Kubeflow

Dashboard Kubeflow - Deployment su GCP

Kubeflow Pipelines include alcune pipeline di esempio. Proviamo una pipeline base di preprocessing dei dati in Python. Clicca sulla voce pipeline nella barra laterale di sinistra.

Interfacce Kubeflow Pipeline

Kubeflow Pipelines - Deployment su GCP

Clicca su crea esperimento: 

Kubeflow Pipelines-GCP

Kubeflow Pipelines - Deployment su GCP

Segui le istruzioni e poi clicca sul pulsante start nella schermata di esecuzione per avviare la pipeline.

Kubeflow Pipelines - Deployment su GCP

Kubeflow Pipelines - Deployment su GCP

L'esperimento comparirà nella dashboard:

Kubeflow Pipelines- Primo esperimento

Kubeflow Pipelines - Deployment su GCP

Clicca sull'esperimento per vedere l'output una volta terminata la run:

Prima esecuzione delle pipeline

Kubeflow Pipelines - Deployment su GCP

Ora che sai come eseguire pipeline usando la UI di Kubeflow. Ogni componente nella pipeline sopra è semplicemente un piccolo script Python isolato. Nell'esempio sopra, i passaggi sono semplici come "Print Text" o "Sum Numbers". 

Vediamo un esempio più complesso di come puoi codificare e compilare questi componenti in Python.

Costruire una pipeline Kubeflow tramite SDK Python

In questo esempio, creeremo una pipeline Kubeflow con due componenti: 

  • Scaricare il file tar compresso in base all'URL passato come input,
  • Estrarre tutti i file csv e creare un unico dataframe pandas usando la funzione `pd.concat`. 

Teoricamente, invece di suddividere questa pipeline in due passaggi, potremmo anche creare una funzione che prende l'URL, scarica il file compresso e poi unisce tutti i file csv in un unico file. 

Tuttavia, il vantaggio di farlo in due passaggi è che puoi creare uno step per scaricare il file compresso e poi riutilizzarlo anche in altri progetti. 

In Kubeflow puoi definire il componente come file yaml e usare la funzione `kfp.components.load_component_from_url` per caricare il componente direttamente dall'URL. 

Per il primo passaggio, carichiamo il componente da questo URL open-source.

```

web_downloader_op = kfp.components.load_component_from_url(

    'https://raw.githubusercontent.com/kubeflow/pipelines/master/components/web/Download/component-sdk-v2.yaml')

```

Per il secondo passaggio, definiremo una funzione Python:

```

@component(

    packages_to_install=['pandas==1.1.4'],

    output_component_file='component.yaml'

)

def merge_csv(tar_data: Input[Artifact], output_csv: Output[Dataset]):

  import glob

  import pandas as pd

  import tarfile




  tarfile.open(name=tar_data.path, mode="r|gz").extractall('data')

  df = pd.concat(

      [pd.read_csv(csv_file, header=None) 

       for csv_file in glob.glob('data/*.csv')])

  df.to_csv(output_csv.path, index=False, header=False)




```

Come puoi vedere, la funzione è decorata con l'annotazione `kfp.dsl.component`. Possiamo usare questa annotazione per definire l'immagine del container, eventuali dipendenze di pacchetti (in questo esempio pandas[1.1.4]) e la posizione in cui salvare la specifica del componente (component.yaml)

Ora puoi collegare questi due componenti in una pipeline usando l'operatore `pipeline`. 

Definisci una pipeline e crea un task da un componente:

@dsl.pipeline(

    name='my-pipeline',

    # You can optionally specify your own pipeline_root

    # pipeline_root='gs://my-pipeline-root/example-pipeline',

)

def my_pipeline(url: str):

  web_downloader_task = web_downloader_op(url=url)

  merge_csv_task = merge_csv(tar_data=web_downloader_task.outputs['data'])

  # The outputs of the merge_csv_task can be referenced using the

  # merge_csv_task.outputs dictionary: merge_csv_task.outputs['output_csv']

```

Una volta definita la pipeline, possiamo compilarla. Ci sono due modi per compilarla. Il primo è tramite la UI di Kubeflow.

```

kfp.compiler.Compiler(mode=kfp.dsl.PipelineExecutionMode.V2_COMPATIBLE).compile(

    pipeline_func=my_pipeline,

    package_path='pipeline.yaml')

```

Ora possiamo caricare ed eseguire questo file `pipeline.yaml` usando l'interfaccia utente di Kubeflow Pipelines. In alternativa, possiamo eseguire la pipeline usando il client SDK di Kubeflow Pipelines.

```

client = kfp.Client()




client.create_run_from_pipeline_func(

    my_pipeline,

    mode=kfp.dsl.PipelineExecutionMode.V2_COMPATIBLE,

    # You can optionally override your pipeline_root when submitting the run too:

    # pipeline_root='gs://my-pipeline-root/example-pipeline',

    arguments={

        'url': 'https://storage.googleapis.com/ml-pipeline-playground/iris-csv-files.tar.gz'

    })

```

Se dobbiamo estendere questa pipeline per includere un modello di machine learning, creeremo una funzione Python che accetta `Input[Dataset]` e adatta il modello usando qualsiasi framework desideriamo, ad esempio sklearn, Tensorflow o PyTorch. 

Una volta creata la funzione, dobbiamo modificare la funzione `my_pipeline` per includere il terzo task e poi ricompilare la pipeline usando `kfp.Client` o la UI.

Tutorial riprodotto da Kubeflow Official.

Conclusione

Sperimentare in un Jupyter Notebook con qualche milione di righe di dati è una cosa. Addestrare un modello di machine learning su miliardi di righe in remoto sul cloud è un'altra. Il Machine Learning diventa davvero difficile quando si tratta di addestrare grandi modelli in un ambiente scalabile e distribuito. 

Kubernetes è uno dei framework di orchestrazione più popolari e diffusi per i job di machine learning; e Kubeflow è un framework costruito sopra Kubernetes per astrarre molti dettagli complessi per gli utenti. Tuttavia, è bene sapere che non è l'unica opzione. Come per tutto il resto, esistono alternative. 

Un esempio di questo tipo di piattaforma è Databricks. Ha un proprio motore di orchestrazione proprietario (diverso da Kubernetes) e offre una UI curata che supporta Notebooks, registrazione degli esperimenti, Model Registry, pianificazione dei job e monitoraggio. 

Amazon Sagemaker è un altro esempio di alternativa a Kubernetes / Kubeflow. Amazon SageMaker è un servizio di machine learning completamente gestito che data scientist e sviluppatori possono usare per creare e addestrare rapidamente modelli di machine learning e distribuirli direttamente in un ambiente ospitato pronto per la produzione. Fornisce un ambiente Jupyter Notebook integrato per esplorazione e analisi.

Ti senti sopraffatto da tutti questi concetti ingegneristici in continua evoluzione? Niente paura, Datacamp offre il corso Understanding Data Engineering . In questo corso imparerai le responsabilità principali di un data engineer, come differiscono da quelle dei data scientist e come facilitano il flusso di dati all'interno di un'organizzazione. Inoltre, vedrai come i data engineer gettano le basi che rendono possibile la data science per i data scientist. Nessun coding coinvolto!

FAQ su Kubeflow

Qual è la differenza tra Kubeflow e Kubernetes?

Kubernetes è un sistema open-source di orchestrazione dei container per automatizzare il deployment, lo scaling e la gestione del software. Kubeflow, invece, è un progetto open-source che include un insieme curato di strumenti e framework per rendere semplice sviluppare, distribuire e gestire workflow di machine learning portabili e scalabili su Kubernetes. Kubeflow è costruito sopra Kubernetes.

Kubeflow fa parte di Kubernetes?

No, Kubeflow è una libreria separata. Puoi installarla come qualsiasi altra libreria Python usando pip install.

Kubeflow è un framework open-source?

Sì, Kubeflow è completamente open source, disponibile per l'uso sotto licenza Apache-2.0.

Qual è la differenza tra Airflow e Kubeflow?

Apache Airflow è una piattaforma generica di orchestrazione dei task, mentre Kubeflow è incentrato su task di machine learning. Entrambi gli strumenti permettono di definire task usando Python, ma Kubeflow esegue principalmente i task su Kubernetes.

Qual è la differenza tra Kubeflow e MLFlow?

Sono due framework open-source molto diversi. Kubeflow è un sistema di orchestrazione dei container che rende facile sviluppare, distribuire e gestire workflow di machine learning portabili e scalabili su Kubernetes; MLFlow è invece una libreria per il tracciamento degli esperimenti e il versioning dei modelli.

Argomenti
Machine Learning
Data Science
Python

Corsi per Python e Machine Learning

Corso

Introduzione a Python

4 ore
7.1M
Impara le basi dell’analisi dei dati con Python in sole 4 ore. Questo corso online ti introduce all’interfaccia di Python e ai pacchetti più usati.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro