Aiuto proteggere la Grande Barriera Corallina con tensorflow sul Kaggle Join Sfida

Tutorial sul flusso d'aria TFX

Pitone PyPI

introduzione

Questo tutorial è progettato per introdurre TensorFlow Extended (TFX) e aiutarti a imparare a creare le tue pipeline di machine learning. Funziona localmente e mostra l'integrazione con TFX e TensorBoard, nonché l'interazione con TFX nei notebook Jupyter.

Seguirai un tipico processo di sviluppo ML, iniziando esaminando il set di dati e finirai con una pipeline funzionante completa. Lungo il percorso esplorerai modi per eseguire il debug e aggiornare la tua pipeline e misurare le prestazioni.

Per saperne di più

Si prega di consultare la Guida per l' utente di TFX per saperne di più.

Passo dopo passo

Creerai gradualmente la tua pipeline lavorando passo dopo passo, seguendo un tipico processo di sviluppo ML. Ecco i passaggi:

  1. Configura il tuo ambiente
  2. Visualizza lo scheletro iniziale della pipeline
  3. Immergiti nei tuoi dati
  4. Ingegneria delle funzionalità
  5. Formazione
  6. Analisi delle prestazioni del modello
  7. Pronto per la produzione

Prerequisiti

  • Linux / MacOS
  • Virtualenv
  • Python 3.5+
  • Idiota

Pacchetti richiesti

A seconda del proprio ambiente potrebbe essere necessario installare diversi pacchetti:

sudo apt-get install \
    build-essential libssl-dev libffi-dev \
    libxml2-dev libxslt1-dev zlib1g-dev \
    python3-pip git software-properties-common

Se stai usando Python 3.6 dovresti installare python3.6-dev:

sudo apt-get install python3.6-dev

Se stai usando Python 3.7 dovresti installare python3.7-dev:

sudo apt-get install python3.7-dev

Inoltre, se il tuo sistema ha una versione di GCC <7, dovresti aggiornare GCC. Altrimenti vedrai errori durante l'esecuzione del airflow webserver . Puoi controllare la tua versione attuale con:

gcc --version

Se devi aggiornare GCC, puoi eseguire questo:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-7
sudo apt install g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7

Ambiente MacOS

Se non hai Python 3 e git già installati, puoi installarli utilizzando il gestore di pacchetti Homebrew :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
brew update
brew install python
brew install git

MacOS a volte ha problemi con il fork dei thread durante l'esecuzione di Airflow, a seconda della configurazione. Per evitare questi problemi dovresti modificare il tuo ~/.bash_profile e aggiungere la seguente riga alla fine del file:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Materiali tutorial

Il codice per questo tutorial è disponibile su: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop

Il codice è organizzato in base ai passaggi su cui stai lavorando, quindi per ogni passaggio avrai il codice di cui hai bisogno e le istruzioni su cosa farne.

I file del tutorial includono sia un esercizio che la soluzione dell'esercizio, nel caso in cui rimani bloccato.

Esercizio

  • taxi_pipeline.py
  • taxi_utils.py
  • taxi DAG

Soluzione

  • taxi_pipeline_solution.py
  • taxi_utils_solution.py
  • taxi_solution DAG

Cosa stai facendo

Stai imparando a creare una pipeline ML utilizzando TFX

  • Le pipeline TFX sono appropriate quando distribuirai un'applicazione ML di produzione
  • Le pipeline TFX sono appropriate quando i set di dati sono di grandi dimensioni
  • Le pipeline TFX sono appropriate quando la coerenza di addestramento / servizio è importante
  • Le pipeline TFX sono appropriate quando la gestione delle versioni per l'inferenza è importante
  • Google utilizza le pipeline TFX per la produzione ML

Stai seguendo un tipico processo di sviluppo ML

  • Acquisizione, comprensione e pulizia dei nostri dati
  • Ingegneria delle funzionalità
  • Formazione
  • Analizza le prestazioni del modello
  • Schiuma, risciacqua, ripeti
  • Pronto per la produzione

Aggiunta del codice per ogni passaggio

Il tutorial è progettato in modo che tutto il codice sia incluso nei file, ma tutto il codice per i passaggi 3-7 è commentato e contrassegnato con commenti in linea. I commenti in linea identificano il passaggio a cui si applica la riga di codice. Ad esempio, il codice per il passaggio 3 è contrassegnato con il commento # Step 3 .

Il codice che aggiungerai per ogni passaggio rientra in genere in 3 aree del codice:

  • importazioni
  • La configurazione del DAG
  • L'elenco restituito dalla chiamata create_pipeline ()
  • Il codice di supporto in taxi_utils.py

Man mano che si esegue il tutorial, si rimuoveranno i commenti dalle righe di codice che si applicano al passaggio del tutorial su cui si sta attualmente lavorando. Ciò aggiungerà il codice per quel passaggio e aggiornerà la pipeline. Mentre lo fai, ti consigliamo vivamente di rivedere il codice che stai rimuovendo dai commenti .

Set di dati taxi di Chicago

TaxiTaxi di Chicago

Stai utilizzando il set di dati Taxi Trips rilasciato dalla città di Chicago.

Puoi leggere ulteriori informazioni sul set di dati in Google BigQuery . Esplora il set di dati completo nell'interfaccia utente di BigQuery .

Obiettivo del modello - Classificazione binaria

Il cliente darà una mancia superiore o inferiore al 20%?

Passaggio 1: configura il tuo ambiente

Lo script di installazione ( setup_demo.sh ) installa TFX e Airflow e configura Airflow in un modo che semplifica il lavoro con questo tutorial.

In un guscio:

cd
virtualenv -p python3 tfx-env
source ~/tfx-env/bin/activate

git clone https://github.com/tensorflow/tfx.git
cd ~/tfx
# These instructions are specific to the 0.21 release
git checkout -f origin/r0.21
cd ~/tfx/tfx/examples/airflow_workshop/setup
./setup_demo.sh

Dovresti rivedere setup_demo.sh per vedere cosa sta facendo.

Passaggio 2: visualizzare lo scheletro della pipeline iniziale

Ciao mondo

In un guscio:

# Open a new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow webserver -p 8080

# Open another new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow scheduler

# Open yet another new terminal window, and in that window ...
# Assuming that you've cloned the TFX repo into ~/tfx
source ~/tfx-env/bin/activate
cd ~/tfx/tfx/examples/airflow_workshop/notebooks
jupyter notebook

Hai avviato Jupyter Notebook in questo passaggio. Successivamente eseguirai i taccuini in questa cartella.

In un browser:

  • Apri un browser e vai a http://127.0.0.1:8080

Risoluzione dei problemi

In caso di problemi con il caricamento della console Airflow nel browser Web o se si sono verificati errori durante l'esecuzione del airflow webserver Web Airflow, è possibile che un'altra applicazione sia in esecuzione sulla porta 8080. Questa è la porta predefinita per Airflow, ma è possibile modificarla a qualsiasi altra porta utente non utilizzata. Ad esempio, per eseguire Airflow sulla porta 7070 potresti eseguire:

airflow webserver -p 7070

Pulsanti di visualizzazione DAG

Pulsanti DAG

  • Utilizzare il pulsante a sinistra per abilitare il DAG
  • Utilizzare il pulsante a destra per aggiornare il DAG quando si apportano modifiche
  • Utilizzare il pulsante a destra per attivare il DAG
  • Fare clic su taxi per passare alla visualizzazione del grafico del DAG

Pulsante di aggiornamento del grafico

CLI del flusso d'aria

È inoltre possibile utilizzare la CLI di Airflow per abilitare e attivare i DAG:

# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>

# trigger
airflow trigger_dag <your DAG name>

In attesa del completamento della pipeline

Dopo aver attivato la pipeline nella visualizzazione DAG, puoi osservare il completamento dell'elaborazione della pipeline. Man mano che ogni componente viene eseguito, il colore del contorno del componente nel grafico del DAG cambierà per mostrare il suo stato. Quando un componente ha terminato l'elaborazione, il contorno diventerà verde scuro per mostrare che è terminato.

Finora hai solo il componente CsvExampleGen nella nostra pipeline, quindi devi attendere che diventi verde scuro (~ 1 minuto).

Configurazione completata

Passaggio 3: immergiti nei tuoi dati

La prima attività in qualsiasi progetto di data science o ML è comprendere e pulire i dati.

  • Comprendere i tipi di dati per ciascuna funzionalità
  • Cerca anomalie e valori mancanti
  • Comprendi le distribuzioni per ciascuna funzionalità

Componenti

Componenti dei datiComponenti dei dati

In un editor:

  • In ~ / airflow / dags rimuovere il commento dalle righe contrassegnate con Step 3 in taxi_pipeline.py
  • Prenditi un momento per rivedere il codice che hai rimosso dal commento

In un browser:

  • Torna alla pagina dell'elenco DAG in Airflow facendo clic sul link "DAG" nell'angolo in alto a sinistra
  • Fare clic sul pulsante di aggiornamento sul lato destro per il taxi DAG
    • Dovresti vedere "DAG [taxi] è fresco come una margherita"
  • Attivare il taxi
  • Attendi il completamento della pipeline
    • Tutto verde scuro
    • Usa Aggiorna sul lato destro o Aggiorna pagina

Immergiti nei dati

Di nuovo su Jupyter:

In precedenza, hai eseguito jupyter notebook , che ha aperto una sessione Jupyter in una scheda del browser. Ora torna a quella scheda nel tuo browser.

  • Apri step3.ipynb
  • Segui il taccuino

Immergiti nei dati

Esempio più avanzato

L'esempio qui presentato ha lo scopo di farti iniziare. Per un esempio più avanzato, vedere TensorFlow Data Validation Colab .

Per ulteriori informazioni sull'utilizzo di TFDV per esplorare e convalidare un set di dati, vedere gli esempi su tensorflow.org .

Passaggio 4: progettazione delle funzionalità

È possibile aumentare la qualità predittiva dei dati e / o ridurre la dimensionalità con l'ingegneria delle funzionalità.

  • Caratteristica croci
  • Vocabolari
  • Matrimoni
  • PCA
  • Codifica categoriale

Uno dei vantaggi dell'utilizzo di TFX è che scriverai il codice di trasformazione una volta e le trasformazioni risultanti saranno coerenti tra l'addestramento e la pubblicazione.

Componenti

Trasformare

  • Transform esegue l'ingegneria delle caratteristiche sul set di dati.

In un editor:

  • In ~ / airflow / dags rimuovere il commento dalle righe contrassegnate con Step 4 sia in taxi_pipeline.py che in taxi_utils.py
  • Prenditi un momento per rivedere il codice che hai rimosso dal commento

In un browser:

  • Torna alla pagina dell'elenco DAG in Airflow
  • Fare clic sul pulsante di aggiornamento sul lato destro per il taxi DAG
    • Dovresti vedere "DAG [taxi] è fresco come una margherita"
  • Attivare il taxi
  • Attendi il completamento della pipeline
    • Tutto verde scuro
    • Usa Aggiorna sul lato destro o Aggiorna pagina

Feature Engineering

Di nuovo su Jupyter:

Torna alla scheda Jupyter nel tuo browser.

  • Apri step4.ipynb
  • Segui il taccuino

Esempio più avanzato

L'esempio qui presentato ha lo scopo di farti iniziare. Per un esempio più avanzato, vedere TensorFlow Transform Colab .

Passaggio 5: formazione

Addestra un modello TensorFlow con i tuoi dati belli, puliti e trasformati.

  • Includere le trasformazioni del passaggio 4 in modo che vengano applicate in modo coerente
  • Salva i risultati come SavedModel per la produzione
  • Visualizza ed esplora il processo di formazione utilizzando TensorBoard
  • Salvare anche un EvalSavedModel per l'analisi delle prestazioni del modello

Componenti

In un editor:

  • In ~ / airflow / dags rimuovere il commento dalle righe contrassegnate con Step 5 sia in taxi_pipeline.py che in taxi_utils.py
  • Prenditi un momento per rivedere il codice che hai rimosso dal commento

In un browser:

  • Torna alla pagina dell'elenco DAG in Airflow
  • Fare clic sul pulsante di aggiornamento sul lato destro per il taxi DAG
    • Dovresti vedere "DAG [taxi] è fresco come una margherita"
  • Attivare il taxi
  • Attendi il completamento della pipeline
    • Tutto verde scuro
    • Usa Aggiorna sul lato destro o Aggiorna pagina

Addestrare un modello

Di nuovo su Jupyter:

Torna alla scheda Jupyter nel tuo browser.

  • Apri step5.ipynb
  • Segui il taccuino

Addestrare un modello

Esempio più avanzato

L'esempio qui presentato ha lo scopo di farti iniziare. Per un esempio più avanzato, vedere il tutorial di TensorBoard .

Passaggio 6: analisi delle prestazioni del modello

Comprendere qualcosa di più delle semplici metriche di primo livello.

  • Gli utenti sperimentano le prestazioni del modello solo per le loro query
  • Le scarse prestazioni su porzioni di dati possono essere nascoste da metriche di primo livello
  • L'equità del modello è importante
  • Spesso i sottoinsiemi chiave di utenti o dati sono molto importanti e possono essere piccoli
    • Prestazioni in condizioni critiche ma insolite
    • Performance per un pubblico chiave come gli influencer
  • Se stai sostituendo un modello attualmente in produzione, assicurati innanzitutto che quello nuovo sia migliore
  • Evaluator comunica al componente Pusher se il modello è OK

Componenti

  • Evaluator esegue un'analisi approfondita dei risultati della formazione e garantisce che il modello sia "sufficientemente buono" per essere inviato alla produzione.

In un editor:

  • In ~ / airflow / dags rimuovere il commento dalle righe contrassegnate con Step 6 in entrambi taxi_pipeline.py
  • Prenditi un momento per rivedere il codice che hai rimosso dal commento

In un browser:

  • Torna alla pagina dell'elenco DAG in Airflow
  • Fare clic sul pulsante di aggiornamento sul lato destro per il taxi DAG
    • Dovresti vedere "DAG [taxi] è fresco come una margherita"
  • Attivare il taxi
  • Attendi il completamento della pipeline
    • Tutto verde scuro
    • Usa Aggiorna sul lato destro o Aggiorna pagina

Analisi delle prestazioni del modello

Di nuovo su Jupyter:

Torna alla scheda Jupyter nel tuo browser.

  • Apri step6.ipynb
  • Segui il taccuino

Analisi delle prestazioni del modello

Esempio più avanzato

L'esempio qui presentato ha lo scopo di farti iniziare. Per un esempio più avanzato, vedere il tutorial TFMA sui taxi di Chicago .

Passaggio 7: pronto per la produzione

Se il nuovo modello è pronto, fallo.

  • Pusher distribuisce SavedModels in posizioni ben note

Gli obiettivi di distribuzione ricevono nuovi modelli da posizioni ben note

  • TensorFlow Serving
  • TensorFlow Lite
  • TensorFlow JS
  • TensorFlow Hub

Componenti

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

In un editor:

  • In ~ / airflow / dags rimuovere il commento dalle righe contrassegnate con il Step 7 in entrambi taxi_pipeline.py
  • Prenditi un momento per rivedere il codice che hai rimosso dal commento

In un browser:

  • Torna alla pagina dell'elenco DAG in Airflow
  • Fare clic sul pulsante di aggiornamento sul lato destro per il taxi DAG
    • Dovresti vedere "DAG [taxi] è fresco come una margherita"
  • Attivare il taxi
  • Attendi il completamento della pipeline
    • Tutto verde scuro
    • Usa Aggiorna sul lato destro o Aggiorna pagina

Pronto per la produzione

Prossimi passi

Ora hai addestrato e convalidato il tuo modello ed esportato un file SavedModel directory ~/airflow/saved_models/taxi . Il tuo modello è ora pronto per la produzione. È ora possibile distribuire il modello a qualsiasi destinazione di distribuzione di TensorFlow, tra cui:

  • TensorFlow Serving , per servire il tuo modello su un server o server farm ed elaborare richieste di inferenza REST e / o gRPC.
  • TensorFlow Lite , per includere il tuo modello in un'applicazione mobile nativa Android o iOS o in un'applicazione Raspberry Pi, IoT o microcontrollore.
  • TensorFlow.js , per eseguire il modello in un browser Web o in un'applicazione Node.JS.