Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

La guida per l'utente TFX

introduzione

TFX è una piattaforma di machine learning (ML) su scala di produzione basata su TensorFlow. Fornisce un framework di configurazione e librerie condivise per integrare i componenti comuni necessari per definire, avviare e monitorare il tuo sistema di machine learning.

Installazione

Pitone PyPI

 pip install tfx
 

A proposito di TFX

TFX è una piattaforma per la creazione e la gestione di flussi di lavoro ML in un ambiente di produzione. TFX fornisce quanto segue:

  • Un kit di strumenti per la costruzione di condotte ML. Le pipeline TFX ti consentono di orchestrare il tuo flusso di lavoro ML su diverse piattaforme, come: Apache Airflow, Apache Beam e Kubeflow Pipelines.

    Ulteriori informazioni sulle tubazioni TFX .

  • Un set di componenti standard che è possibile utilizzare come parte di una pipeline o come parte dello script di formazione ML. I componenti standard TFX offrono funzionalità comprovate per aiutarti a iniziare a costruire facilmente un processo ML.

    Ulteriori informazioni sui componenti standard TFX .

  • Librerie che forniscono le funzionalità di base per molti dei componenti standard. È possibile utilizzare le librerie TFX per aggiungere questa funzionalità ai propri componenti personalizzati o utilizzarli separatamente.

    Ulteriori informazioni sulle librerie TFX .

TFX è un toolkit di machine learning su scala di produzione di Google basato su TensorFlow. Fornisce un framework di configurazione e librerie condivise per integrare i componenti comuni necessari per definire, avviare e monitorare il sistema di apprendimento automatico.

Componenti standard TFX

Una pipeline TFX è una sequenza di componenti che implementano una pipeline ML progettata specificamente per attività di machine learning scalabili e ad alte prestazioni. Ciò include modellazione, formazione, elaborazione di inferenze e gestione di distribuzioni su target online, mobili nativi e JavaScript.

Una pipeline TFX include in genere i seguenti componenti:

  • ExampleGen è il componente di input iniziale di una pipeline che ingerisce e facoltativamente divide il set di dati di input.

  • StatisticsGen calcola le statistiche per il set di dati.

  • SchemaGen esamina le statistiche e crea uno schema di dati.

  • ExampleValidator cerca anomalie e valori mancanti nel set di dati.

  • Transform esegue l'ingegnerizzazione delle funzionalità nel set di dati.

  • Il trainer addestra il modello.

  • Il sintonizzatore regola gli iperparametri del modello.

  • Il valutatore esegue un'analisi approfondita dei risultati della formazione e ti aiuta a convalidare i tuoi modelli esportati, garantendo che siano "abbastanza buoni" per essere spinti alla produzione.

  • InfraValidator verifica che il modello sia effettivamente utilizzabile dall'infrastruttura e impedisce che il modello errato venga spinto.

  • Pusher distribuisce il modello su un'infrastruttura di servizio.

  • BulkInferrer esegue l'elaborazione in batch su un modello con richieste di inferenza senza etichetta.

Questo diagramma illustra il flusso di dati tra questi componenti:

Flusso dei componenti

Librerie TFX

TFX include sia le librerie che i componenti della pipeline. Questo diagramma illustra le relazioni tra le librerie TFX e i componenti della pipeline:

Librerie e componenti

TFX fornisce diversi pacchetti Python che sono le librerie utilizzate per creare componenti della pipeline. Utilizzerai queste librerie per creare i componenti delle tue pipeline in modo che il tuo codice possa concentrarsi sugli aspetti univoci della tua pipeline.

Le librerie TFX includono:

  • TensorFlow Data Validation (TFDV) è una libreria per l'analisi e la convalida dei dati di apprendimento automatico. È progettato per essere altamente scalabile e per funzionare bene con TensorFlow e TFX. TFDV include:

    • Calcolo scalabile di statistiche riassuntive di dati di allenamento e test.
    • Integrazione con un visualizzatore di distribuzioni e statistiche di dati, nonché confronto sfaccettato di coppie di set di dati (Facet).

    • Generazione automatizzata di schemi di dati per descrivere le aspettative su dati come valori, intervalli e vocabolari richiesti.

    • Un visualizzatore di schemi per aiutarti a ispezionare lo schema.

    • Rilevamento delle anomalie per identificare le anomalie, come caratteristiche mancanti, valori fuori intervallo o tipi di funzionalità errati, solo per citarne alcuni.

    • Un visualizzatore di anomalie in modo da poter vedere quali funzionalità presentano anomalie e saperne di più per correggerle.

  • TensorFlow Transform (TFT) è una libreria per la preelaborazione dei dati con TensorFlow. TensorFlow Transform è utile per i dati che richiedono un passaggio completo, come ad esempio:

    • Normalizza un valore di input per media e deviazione standard.
    • Converti le stringhe in numeri interi generando un vocabolario su tutti i valori di input.
    • Converti i float in numeri interi assegnandoli a bucket in base alla distribuzione dei dati osservata.
  • TensorFlow viene utilizzato per l'addestramento di modelli con TFX. Inserisce i dati di addestramento e il codice di modellazione e crea un risultato SavedModel. Integra inoltre una pipeline di ingegneria delle funzionalità creata da TensorFlow Transform per la preelaborazione dei dati di input.

    KerasTuner viene utilizzato per l'ottimizzazione degli iperparametri per il modello.

  • TensorFlow Model Analysis (TFMA) è una libreria per la valutazione dei modelli TensorFlow. Viene utilizzato insieme a TensorFlow per creare un modello EvalSaved, che diventa la base per la sua analisi. Consente agli utenti di valutare i propri modelli su grandi quantità di dati in modo distribuito, utilizzando le stesse metriche definite nel proprio trainer. Queste metriche possono essere calcolate su diverse sezioni di dati e visualizzate nei notebook Jupyter.

  • TensorFlow Metadata (TFMD) fornisce rappresentazioni standard per i metadati utili durante l'addestramento di modelli di machine learning con TensorFlow. I metadati possono essere prodotti manualmente o automaticamente durante l'analisi dei dati di input e possono essere utilizzati per la convalida, l'esplorazione e la trasformazione dei dati. I formati di serializzazione dei metadati includono:

    • Uno schema che descrive i dati tabulari (ad es. Esempi tf).
    • Una raccolta di statistiche di riepilogo su tali set di dati.
  • ML Metadata (MLMD) è una libreria per la registrazione e il recupero di metadati associati ai flussi di lavoro di sviluppatori ML e data scientist. Molto spesso i metadati utilizzano rappresentazioni TFMD. MLMD gestisce la persistenza utilizzando SQL-Lite , MySQL e altri archivi di dati simili.

Tecnologie di supporto

necessario

  • Apache Beam è un modello unificato open source per la definizione di pipeline di elaborazione parallele di dati batch e streaming. TFX utilizza Apache Beam per implementare pipeline parallele ai dati. La pipeline viene quindi eseguita da uno dei back-end di elaborazione distribuiti supportati da Beam, tra cui Apache Flink, Apache Spark, Google Cloud Dataflow e altri.

Opzionale

Orchestratori come Apache Airflow e Kubeflow semplificano la configurazione, il funzionamento, il monitoraggio e la manutenzione di una pipeline ML.

  • Apache Airflow è una piattaforma per creare, pianificare e monitorare a livello di codice i flussi di lavoro. TFX utilizza Airflow per creare flussi di lavoro come grafici aciclici diretti (DAG) di attività. Lo scheduler Airflow esegue le attività su un array di lavoratori mentre segue le dipendenze specificate. Le ricche utility della riga di comando semplificano l'esecuzione di interventi chirurgici complessi sui DAG. La ricca interfaccia utente semplifica la visualizzazione di condutture in esecuzione in produzione, il monitoraggio dei progressi e la risoluzione dei problemi quando necessario. Quando i flussi di lavoro sono definiti come codice, diventano più gestibili, verificabili, verificabili e collaborativi.

  • Kubeflow si dedica alla realizzazione di implementazioni di flussi di lavoro di machine learning (ML) su Kubernetes semplici, portatili e scalabili. L'obiettivo di Kubeflow non è quello di ricreare altri servizi, ma di fornire un modo semplice per distribuire i migliori sistemi open source per ML in infrastrutture diverse. Le pipeline di Kubeflow consentono la composizione e l'esecuzione di flussi di lavoro riproducibili su Kubeflow, integrati con esperienze sperimentali e basate su notebook. I servizi Kubeflow Pipelines su Kubernetes includono l'archivio metadati ospitato, il motore di orchestrazione basato su container, il server notebook e l'interfaccia utente per aiutare gli utenti a sviluppare, eseguire e gestire pipeline ML complesse su larga scala. Kubeflow Pipelines SDK consente la creazione e la condivisione di componenti e la composizione di pipeline a livello di codice.

Portabilità e interoperabilità

TFX è progettato per essere portatile su più ambienti e framework di orchestrazione, tra cui Apache Airflow , Apache Beam e Kubeflow . È anche portabile su diverse piattaforme di elaborazione, comprese quelle in sede e su piattaforme cloud come Google Cloud Platform (GCP) . In particolare, TFX interagisce con servizi GCP gestiti da server, come Cloud AI Platform for Training and Prediction e Cloud Dataflow per l'elaborazione distribuita dei dati per molti altri aspetti del ciclo di vita ML.

Model vs. SavedModel

Modello

Un modello è l'output del processo di formazione. È la registrazione serializzata dei pesi appresi durante il processo di allenamento. Questi pesi possono essere successivamente utilizzati per calcolare previsioni per nuovi esempi di input. Per TFX e TensorFlow, "modello" si riferisce ai punti di controllo contenenti i pesi appresi fino a quel punto.

Si noti che "modello" potrebbe anche fare riferimento alla definizione del grafico di calcolo TensorFlow (cioè un file Python) che esprime come verrà calcolata una previsione. I due sensi possono essere usati in modo intercambiabile in base al contesto.

SavedModel

  • Che cos'è un SavedModel : una serializzazione universale, neutrale dal punto di vista linguistico, ermetica, recuperabile di un modello TensorFlow.
  • Perché è importante : consente ai sistemi di livello superiore di produrre, trasformare e consumare i modelli TensorFlow usando un'unica astrazione.

SavedModel è il formato di serializzazione consigliato per servire un modello TensorFlow in produzione o esportare un modello addestrato per un'applicazione mobile nativa o JavaScript. Ad esempio, per trasformare un modello in un servizio REST per fare previsioni, puoi serializzare il modello come SavedModel e servirlo utilizzando TensorFlow Serving. Per ulteriori informazioni, consulta Pubblicazione di un modello TensorFlow .

Schema

Alcuni componenti TFX utilizzano una descrizione dei dati di input denominata schema . Lo schema è un'istanza di schema.proto . Gli schemi sono un tipo di buffer di protocollo , più comunemente noto come "protobuf". Lo schema può specificare i tipi di dati per i valori di funzionalità, se una funzione deve essere presente in tutti gli esempi, intervalli di valori consentiti e altre proprietà. Uno dei vantaggi dell'utilizzo di TensorFlow Data Validation (TFDV) è che genererà automaticamente uno schema deducendo tipi, categorie e intervalli dai dati di addestramento.

Ecco un estratto da un protobuf dello schema:

 ...
feature {
  name: "age"
  value_count {
    min: 1
    max: 1
  }
  type: FLOAT
  presence {
    min_fraction: 1
    min_count: 1
  }
}
feature {
  name: "capital-gain"
  value_count {
    min: 1
    max: 1
  }
  type: FLOAT
  presence {
    min_fraction: 1
    min_count: 1
  }
}
...
 

I seguenti componenti utilizzano lo schema:

  • Convalida dei dati TensorFlow
  • Trasformazione TensorFlow

In una tipica pipeline TFX, TensorFlow Data Validation genera uno schema, che viene utilizzato dagli altri componenti.

Sviluppare con TFX

TFX offre una potente piattaforma per ogni fase di un progetto di machine learning, dalla ricerca, sperimentazione e sviluppo sul tuo computer locale, fino all'implementazione. Al fine di evitare la duplicazione del codice ed eliminare il potenziale di formazione / disallineamento , si consiglia vivamente di implementare la pipeline TFX sia per l'addestramento del modello che per la distribuzione di modelli addestrati, e utilizzare i componenti Transform che sfruttano la libreria Transform di TensorFlow sia per l'addestramento che per l'inferenza. In questo modo utilizzerai lo stesso codice di pre-elaborazione e analisi in modo coerente ed eviterai differenze tra i dati utilizzati per l'addestramento e i dati forniti ai modelli addestrati in produzione, oltre a trarre vantaggio dalla scrittura di quel codice una volta.

Esplorazione, visualizzazione e pulizia dei dati

Esplorazione, visualizzazione e pulizia dei dati

Le pipeline TFX in genere iniziano con un componente ExampleGen , che accetta i dati di input e li formatta come tf.Examples. Spesso ciò avviene dopo che i dati sono stati suddivisi in set di dati di addestramento e valutazione in modo tale che in realtà ci siano due copie dei componenti di EsempioGen, uno per addestramento e valutazione. Questo è in genere seguito da un componente StatisticsGen e da un componente SchemaGen , che esaminerà i tuoi dati e inferirà uno schema di dati e statistiche. Lo schema e le statistiche verranno utilizzati da un componente ExampleValidator , che cercherà anomalie, valori mancanti e tipi di dati errati nei dati. Tutti questi componenti sfruttano le funzionalità della libreria di convalida dei dati TensorFlow .

TensorFlow Data Validation (TFDV) è uno strumento prezioso durante l'esplorazione iniziale, la visualizzazione e la pulizia del set di dati. TFDV esamina i tuoi dati e analizza i tipi di dati, le categorie e gli intervalli, quindi aiuta automaticamente a identificare anomalie e valori mancanti. Fornisce inoltre strumenti di visualizzazione che possono aiutarti a esaminare e comprendere il tuo set di dati. Al termine della pipeline, è possibile leggere i metadati da MLMD e utilizzare gli strumenti di visualizzazione di TFDV in un notebook Jupyter per analizzare i dati.

Dopo la formazione e l'implementazione del modello iniziale, TFDV può essere utilizzato per monitorare i nuovi dati dalle richieste di inferenza ai modelli distribuiti e cercare anomalie e / o deriva. Ciò è particolarmente utile per i dati di serie temporali che cambiano nel tempo a causa di tendenze o stagionalità e può aiutare a informare quando ci sono problemi con i dati o quando i modelli devono essere riqualificati su nuovi dati.

Visualizzazione dati

Dopo aver completato la prima esecuzione dei dati attraverso la sezione della pipeline che utilizza TFDV (in genere StatisticsGen, SchemaGen e ExampleValidator) è possibile visualizzare i risultati in un notebook in stile Jupyter. Per ulteriori esecuzioni è possibile confrontare questi risultati mentre si eseguono le regolazioni, fino a quando i dati non sono ottimali per il modello e l'applicazione.

Prima dovrai interrogare ML Metadata (MLMD) per individuare i risultati di queste esecuzioni di questi componenti, quindi utilizzare l'API di supporto della visualizzazione in TFDV per creare le visualizzazioni nel tuo notebook. Ciò include tfdv.load_statistics () e tfdv.visualize_statistics () Usando questa visualizzazione puoi comprendere meglio le caratteristiche del tuo set di dati e, se necessario, modificarlo come richiesto.

Modelli di sviluppo e formazione

Feature Engineering

Una tipica pipeline TFX includerà un componente Transform , che eseguirà l'ingegneria delle funzionalità sfruttando le capacità della libreria TensorFlow Transform (TFT) . Un componente Transform utilizza lo schema creato da un componente SchemaGen e applica le trasformazioni dei dati per creare, combinare e trasformare le funzionalità che verranno utilizzate per addestrare il modello. La pulizia dei valori mancanti e la conversione dei tipi dovrebbero essere eseguite anche nel componente Trasforma se esiste la possibilità che siano presenti anche nei dati inviati per richieste di inferenza. Ci sono alcune considerazioni importanti quando si progetta il codice TensorFlow per l'addestramento in TFX.

Modellazione e formazione

Il risultato di un componente Transform è un SavedModel che verrà importato e utilizzato nel codice di modellazione in TensorFlow, durante un componente Trainer . Questo SavedModel include tutte le trasformazioni di ingegneria dei dati create nel componente Transform, in modo che le trasformazioni identiche vengano eseguite utilizzando lo stesso identico codice sia durante l'addestramento che durante l'inferenza. Utilizzando il codice di modellazione, incluso SavedModel dal componente Transform, è possibile utilizzare i dati di addestramento e valutazione e addestrare il modello.

Durante l'ultima sezione del codice di modellazione, è necessario salvare il modello sia come SavedModel che come EvalSavedModel. Il salvataggio come EvalSavedModel richiederà l'importazione e l'applicazione della libreria TensorFlow Model Analysis (TFMA) nel componente Trainer.

 import tensorflow_model_analysis as tfma
...

tfma.export.export_eval_savedmodel(
        estimator=estimator,
        export_dir_base=eval_model_dir,
        eval_input_receiver_fn=receiver_fn)
 

È possibile aggiungere un componente Tuner opzionale prima di Trainer per regolare gli iperparametri (ad esempio, il numero di livelli) per il modello. Con il modello dato e lo spazio di ricerca degli iperparametri, l'algoritmo di ottimizzazione troverà i migliori iperparametri in base all'obiettivo.

Analisi e comprensione delle prestazioni del modello

Analisi del modello

Dopo lo sviluppo e l'addestramento iniziali del modello è importante analizzare e comprendere veramente le prestazioni del modello. Una tipica pipeline TFX includerà un componente Evaluator , che sfrutta le funzionalità della libreria TensorFlow Model Analysis (TFMA) , che fornisce un potente set di strumenti per questa fase di sviluppo. Un componente di valutazione utilizza EvalSavedModel esportato in precedenza e consente di specificare un elenco di SliceSpecs che è possibile utilizzare durante la visualizzazione e l'analisi delle prestazioni del modello. Ogni SliceSpec definisce una porzione dei dati di allenamento che si desidera esaminare, ad esempio categorie particolari per caratteristiche categoriali o intervalli particolari per caratteristiche numeriche.

Ad esempio, questo sarebbe importante per cercare di comprendere le prestazioni del tuo modello per diversi segmenti dei tuoi clienti, che potrebbero essere segmentati per acquisti annuali, dati geografici, fascia di età o sesso. Ciò può essere particolarmente importante per i set di dati con code lunghe, in cui le prestazioni di un gruppo dominante possono mascherare prestazioni inaccettabili per gruppi importanti, ma più piccoli. Ad esempio, il tuo modello potrebbe funzionare bene per i dipendenti medi ma fallire miseramente per il personale dirigente e potrebbe essere importante che tu lo sappia.

Analisi e visualizzazione del modello

Dopo aver completato la prima esecuzione dei dati attraverso l'addestramento del modello e l'esecuzione del componente Evaluator (che sfrutta TFMA ) sui risultati dell'allenamento, è possibile visualizzare i risultati in un notebook in stile Jupyter. Per ulteriori esecuzioni è possibile confrontare questi risultati mentre si eseguono le regolazioni, fino a quando i risultati non sono ottimali per il modello e l'applicazione.

Per prima cosa interrogherete i metadati ML (MLMD) per individuare i risultati di queste esecuzioni di questi componenti, quindi utilizzerete l'API di supporto della visualizzazione in TFMA per creare le visualizzazioni nel vostro notebook. Ciò include tfma.load_eval_results () e tfma.view.render_slicing_metrics () Usando questa visualizzazione puoi comprendere meglio le caratteristiche del tuo modello e, se necessario, modificarlo come richiesto.

Convalida che un modello può essere servito

Convalida a infrarossi

Prima di distribuire il modello addestrato, potresti voler verificare se il modello è realmente servibile nell'infrastruttura di servizio. Ciò è particolarmente importante negli ambienti di produzione per garantire che il modello appena pubblicato non impedisca al sistema di fornire previsioni. Il componente InfraValidator eseguirà una distribuzione canary del tuo modello in un ambiente sandbox e, facoltativamente, invierà richieste reali per verificare che il tuo modello funzioni correttamente.

Obiettivi di distribuzione

Dopo aver sviluppato e addestrato un modello di cui sei soddisfatto, è ora il momento di distribuirlo a una o più destinazioni di distribuzione dove riceverà le richieste di inferenza. TFX supporta la distribuzione in tre classi di destinazioni di distribuzione. I modelli addestrati che sono stati esportati come SavedModels possono essere distribuiti su una o su tutte queste destinazioni di distribuzione.

Flusso dei componenti

Inferenza: servizio TensorFlow

TensorFlow Serving (TFS) è un sistema di servizio flessibile e ad alte prestazioni per modelli di machine learning, progettato per ambienti di produzione. Consuma un SavedModel e accetterà richieste di inferenza su interfacce REST o gRPC. Funziona come un insieme di processi su uno o più server di rete, utilizzando una delle numerose architetture avanzate per gestire la sincronizzazione e il calcolo distribuito. Vedere la documentazione di TFS per ulteriori informazioni sullo sviluppo e la distribuzione di soluzioni TFS.

In una tipica pipeline, un SavedModel che è stato addestrato in un componente Trainer verrebbe prima infra-validato in un componente InfraValidator . InfraValidator avvia un server modello TFS canarino per servire effettivamente il SavedModel. Se la convalida è stata superata, un componente Pusher distribuirà infine SavedModel all'infrastruttura TFS. Ciò include la gestione di più versioni e aggiornamenti del modello.

Inferenza in applicazioni mobili e IoT native: TensorFlow Lite

TensorFlow Lite è una suite di strumenti dedicata ad aiutare gli sviluppatori a utilizzare i loro modelli TensorFlow addestrati in applicazioni mobili e IoT native. Consuma gli stessi modelli Saved di TensorFlow Serving e applica ottimizzazioni come quantizzazione e potatura per ottimizzare le dimensioni e le prestazioni dei modelli risultanti per le sfide della corsa su dispositivi mobili e IoT. Consultare la documentazione di TensorFlow Lite per ulteriori informazioni sull'uso di TensorFlow Lite.

Inferenza in JavaScript: TensorFlow JS

TensorFlow JS è una libreria JavaScript per l'addestramento e la distribuzione di modelli ML nel browser e su Node.js. Consuma gli stessi modelli Saved di TensorFlow Serving e TensorFlow Lite e li converte nel formato Web TensorFlow.js. Consultare la documentazione di TensorFlow JS per maggiori dettagli sull'uso di TensorFlow JS.

Creazione di una pipeline TFX con flusso d'aria

Controllare l' officina del flusso d'aria per i dettagli

Creazione di una pipeline TFX con Kubeflow

Impostare

Kubeflow richiede un cluster Kubernetes per eseguire le pipeline su larga scala. Consulta le linee guida per l'implementazione di Kubeflow che guidano le opzioni per la distribuzione del cluster Kubeflow.

Configura ed esegui la pipeline TFX

Segui il tutorial TFX on Cloud AI Platform Pipeline per eseguire la pipeline di esempio TFX su Kubeflow. I componenti TFX sono stati containerizzati per comporre la pipeline di Kubeflow e l'esempio illustra la capacità di configurare la pipeline per leggere un set di dati pubblico di grandi dimensioni ed eseguire passaggi di formazione e elaborazione dei dati su larga scala nel cloud.

Interfaccia della riga di comando per azioni della pipeline

TFX fornisce una CLI unificata che consente di eseguire l'intera gamma di azioni della pipeline come creare, aggiornare, eseguire, elencare ed eliminare pipeline su vari orchestrator tra cui Apache Airflow, Apache Beam e Kubeflow. Per i dettagli, segui queste istruzioni .