introduzione
Questo documento fornisce le istruzioni per creare un tensorflow Extended (TFX) gasdotto utilizzando i modelli che vengono forniti con il pacchetto TFX Python. La maggior parte delle istruzioni sono comandi di shell di Linux, e le corrispondenti cellule di codice Notebook Jupyter che invocano i comandi utilizzando ! sono forniti.
Si costruirà un oleodotto utilizzando taxi Viaggi set di dati rilasciato dal Comune di Chicago. Ti consigliamo vivamente di provare a creare la tua pipeline utilizzando il tuo set di dati utilizzando questa pipeline come base di riferimento.
Costruiremo una pipeline che funziona in ambiente locale. Se siete interessati a utilizzare Kubeflow orchestratore su Google Cloud, consulta TFX su Cloud Platform AI Condotte esercitazione .
Prerequisiti
- Linux/MacOS
- Python >= 3.5.3
È possibile ottenere tutti i prerequisiti facilmente l'esecuzione di questo notebook su Google Colab .
Passaggio 1. Configura il tuo ambiente.
In questo documento, presenteremo i comandi due volte. Una volta come comando di shell pronto per copia e incolla, una volta come cella del notebook jupyter. Se stai usando Colab, salta semplicemente il blocco di script della shell ed esegui le celle del notebook.
È necessario preparare un ambiente di sviluppo per creare una pipeline.
Installare tfx pacchetto python. Si consiglia l'uso del virtualenv nell'ambiente locale. Puoi usare il seguente frammento di script della shell per configurare il tuo ambiente.
# Create a virtualenv for tfx.
virtualenv -p python3 venv
source venv/bin/activate
# Install python packages.
python -m pip install --upgrade "tfx<2"
Se stai usando colab:
import sys
!{sys.executable} -m pip install --upgrade "tfx<2"
ERRORE: some-package 0.some_version.1 ha il requisito other-package!=2.0.,<3,>=1.15, ma avrai other-package 2.0.0 che è incompatibile.
Si prega di ignorare questi errori in questo momento.
# Set `PATH` to include user python binary directory.
HOME=%env HOME
PATH=%env PATH
%env PATH={PATH}:{HOME}/.local/bin
env: PATH=/tmpfs/src/tf_docs_env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin:/opt/android-studio/current/bin:/usr/local/go/bin:/usr/local/go/packages/bin:/opt/kubernetes/client/bin/:/home/kbuilder/.local/bin:/home/kbuilder/.local/bin
Controlliamo la versione di TFX.
python -c "from tfx import version ; print('TFX version: {}'.format(version.__version__))"
python3 -c "from tfx import version ; print('TFX version: {}'.format(version.__version__))"
TFX version: 1.4.0
Ed è fatto. Siamo pronti per creare una pipeline.
Passaggio 2. Copia il modello predefinito nella directory del progetto.
In questo passaggio, creeremo una directory e dei file del progetto pipeline funzionante copiando file aggiuntivi da un modello predefinito.
Si può dare la pipeline un nome diverso cambiando il PIPELINE_NAME di seguito. Questo diventerà anche il nome della directory del progetto in cui verranno inseriti i file.
export PIPELINE_NAME="my_pipeline"
export PROJECT_DIR=~/tfx/${PIPELINE_NAME}
PIPELINE_NAME="my_pipeline"
import os
# Create a project directory under Colab content directory.
PROJECT_DIR=os.path.join(os.sep,"content",PIPELINE_NAME)
TFX include il taxi modello con il pacchetto TFX pitone. Se stai pianificando di risolvere un problema di previsione puntuale, inclusa la classificazione e la regressione, questo modello potrebbe essere utilizzato come punto di partenza.
I tfx template copy copie comando CLI predefinite file di template nella directory del progetto.
tfx template copy \
--pipeline_name="${PIPELINE_NAME}" \
--destination_path="${PROJECT_DIR}" \
--model=taxi
!tfx template copy \
--pipeline_name={PIPELINE_NAME} \
--destination_path={PROJECT_DIR} \
--model=taxi
CLI
Copying taxi pipeline template
Traceback (most recent call last):
File "/tmpfs/src/tf_docs_env/bin/tfx", line 8, in <module>
sys.exit(cli_group())
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/decorators.py", line 73, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/tools/cli/commands/template.py", line 66, in copy
template_handler.copy_template(ctx.flags_dict)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/tools/cli/handler/template_handler.py", line 171, in copy_template
replace_dict)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/tools/cli/handler/template_handler.py", line 110, in _copy_and_replace_placeholder_dir
fileio.makedirs(dst)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/dsl/io/fileio.py", line 78, in makedirs
_get_filesystem(path).makedirs(path)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/dsl/io/plugins/tensorflow_gfile.py", line 71, in makedirs
tf.io.gfile.makedirs(path)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tensorflow/python/lib/io/file_io.py", line 514, in recursive_create_dir_v2
_pywrap_file_io.RecursivelyCreateDir(compat.path_to_bytes(path))
tensorflow.python.framework.errors_impl.PermissionDeniedError: /content; Permission denied
Modificare il contesto della directory di lavoro in questo blocco appunti nella directory del progetto.
cd ${PROJECT_DIR}
%cd {PROJECT_DIR}
[Errno 2] No such file or directory: '/content/my_pipeline' /tmpfs/src/temp/docs/tutorials/tfx
Passaggio 3. Sfoglia i file sorgente copiati.
Il modello TFX fornisce file di scaffold di base per creare una pipeline, inclusi codice sorgente Python, dati di esempio e notebook Jupyter per analizzare l'output della pipeline. Il taxi modello utilizza lo stesso insieme di dati di Chicago di taxi e il modello ML come il flusso d'aria Tutorial .
In Google Colab, puoi sfogliare i file facendo clic sull'icona di una cartella a sinistra. I file devono essere copiati sotto il Directoy del progetto, il cui nome è my_pipeline in questo caso. È possibile fare clic sui nomi delle directory per visualizzare il contenuto della directory e fare doppio clic sui nomi dei file per aprirli.
Ecco una breve introduzione a ciascuno dei file Python.
-
pipeline- Questa directory contiene la definizione del gasdotto-
configs.py- definisce costanti comuni per i corridori gasdotti -
pipeline.py- definisce componenti TFX e un gasdotto
-
-
models- Questa directory contiene le definizioni ML modello.-
features.py,features_test.py- definisce caratteristiche per il modello -
preprocessing.py,preprocessing_test.py- definisce pre-elaborazione lavori utilizzandotf::Transform -
estimator- Questa directory contiene un modello basato estimatore.-
constants.py- definisce le costanti del modello -
model.py,model_test.py- definisce modello di DNN utilizzando stimatore TF
-
-
keras- Questa directory contiene un modello basato Keras.-
constants.py- definisce le costanti del modello -
model.py,model_test.py- definisce modello di DNN utilizzando Keras
-
-
-
local_runner.py,kubeflow_runner.py- definire ripiani per ogni motore di orchestrazione
Si potrebbe notare che ci sono alcuni file con _test.py nel loro nome. Questi sono unit test della pipeline e si consiglia di aggiungere più unit test man mano che si implementano le proprie pipeline. È possibile eseguire unit test fornendo il nome del modulo di file di test con -m bandiera. Di solito è possibile ottenere un nome di modulo cancellando .py estensione e la sostituzione / con . . Per esempio:
python -m models.features_test
{sys.executable} -m models.features_test{sys.executable} -m models.keras.model_test
/tmpfs/src/tf_docs_env/bin/python: Error while finding module specification for 'models.features_test' (ModuleNotFoundError: No module named 'models') /tmpfs/src/tf_docs_env/bin/python: Error while finding module specification for 'models.keras.model_test' (ModuleNotFoundError: No module named 'models')
Passaggio 4. Esegui la tua prima pipeline TFX
È possibile creare una pipeline utilizzando pipeline create comando.
tfx pipeline create --engine=local --pipeline_path=local_runner.py
tfx pipeline create --engine=local --pipeline_path=local_runner.py
CLI Creating pipeline Invalid pipeline path: local_runner.py
Quindi, è possibile eseguire la pipeline creata utilizzando run create comando.
tfx run create --engine=local --pipeline_name="${PIPELINE_NAME}"
tfx run create --engine=local --pipeline_name={PIPELINE_NAME}
CLI Creating a run for pipeline: my_pipeline /tmpfs/src/tf_docs_env/bin/python: can't open file 'local_runner.py': [Errno 2] No such file or directory Error while running "/tmpfs/src/tf_docs_env/bin/python local_runner.py"
In caso di successo, si vedrà Component CsvExampleGen is finished. Quando si copia il modello, nella pipeline viene incluso solo un componente, CsvExampleGen.
Passaggio 5. Aggiungere componenti per la convalida dei dati.
In questa fase, si aggiungerà componenti per la convalida dei dati tra cui StatisticsGen , SchemaGen e ExampleValidator . Se siete interessati a convalida dei dati, si prega di consultare Inizia con tensorflow Data Validation .
Noi modificare definizione gasdotto copiato in pipeline/pipeline.py . Se stai lavorando sul tuo ambiente locale, usa il tuo editor preferito per modificare il file. Se stai lavorando su Google Colab,
Fare clic sull'icona della cartella a sinistra per aprire
Filesvista.
Clicca
my_pipelineper aprire la directory e fare clic supipelinedirectory per aprire e fare doppio clicpipeline.pyper aprire il file.
Trovare e rimuovere il commento le 3 linee che aggiungono
StatisticsGen,SchemaGen, eExampleValidatoralla pipeline. (Suggerimento: i commenti che contengonoTODO(step 5):).
La tua modifica verrà salvata automaticamente in pochi secondi. Assicurarsi che il
*marchio di fronte alpipeline.pyscomparso nel titolo della scheda. Non ci sono pulsanti di salvataggio o scorciatoie per l'editor di file in Colab. File Python in editor di file possono essere salvati per l'ambiente di runtime, anche inplaygroundmodalità.
Ora è necessario aggiornare la pipeline esistente con la definizione della pipeline modificata. Utilizzare il tfx pipeline update comando per aggiornare il gasdotto, seguita dalla tfx run create comando per creare una nuova corsa esecuzione del gasdotto aggiornato.
# Update the pipeline
tfx pipeline update --engine=local --pipeline_path=local_runner.py
# You can run the pipeline the same way.
tfx run create --engine local --pipeline_name "${PIPELINE_NAME}"
# Update the pipelinetfx pipeline update --engine=local --pipeline_path=local_runner.py# You can run the pipeline the same way.tfx run create --engine local --pipeline_name {PIPELINE_NAME}
CLI Updating pipeline Invalid pipeline path: local_runner.py CLI Creating a run for pipeline: my_pipeline /tmpfs/src/tf_docs_env/bin/python: can't open file 'local_runner.py': [Errno 2] No such file or directory Error while running "/tmpfs/src/tf_docs_env/bin/python local_runner.py"
Dovresti essere in grado di vedere il registro di output dai componenti aggiunti. La nostra pipeline crea manufatti in uscita tfx_pipeline_output/my_pipeline directory.
Passaggio 6. Aggiungere i componenti per l'addestramento.
In questa fase, si aggiungerà componenti per la formazione e la validazione dei modelli tra cui Transform , Trainer , Resolver , Evaluator , e Pusher .
Aprire
pipeline/pipeline.py. Trovare e rimuovere il commento 5 linee che aggiungonoTransform,Trainer,Resolver,EvaluatorePusheralla pipeline. (Suggerimento: findTODO(step 6):)
Come hai fatto prima, ora devi aggiornare la pipeline esistente con la definizione della pipeline modificata. Le istruzioni sono le stesse di Fase 5. Aggiornare il gasdotto utilizzando tfx pipeline update , e creare una corsa di esecuzione utilizzando tfx run create .
tfx pipeline update --engine=local --pipeline_path=local_runner.py
tfx run create --engine local --pipeline_name "${PIPELINE_NAME}"
tfx pipeline update --engine=local --pipeline_path=local_runner.pytfx run create --engine local --pipeline_name {PIPELINE_NAME}
CLI Updating pipeline Invalid pipeline path: local_runner.py CLI Creating a run for pipeline: my_pipeline /tmpfs/src/tf_docs_env/bin/python: can't open file 'local_runner.py': [Errno 2] No such file or directory Error while running "/tmpfs/src/tf_docs_env/bin/python local_runner.py"
Quando questa esecuzione viene completata correttamente, ora hai creato ed esegui la tua prima pipeline TFX utilizzando l'orchestratore locale!
Passo 7. (opzionale) Prova BigQueryExampleGen.
[BigQuery] è un data warehouse su cloud serverless, altamente scalabile e conveniente. BigQuery può essere utilizzato come fonte per esempi di addestramento in TFX. In questa fase, aggiungeremo BigQueryExampleGen alla pipeline.
Hai bisogno di una piattaforma cloud di Google account da utilizzare BigQuery. Si prega di preparare un progetto GCP.
Accesso al progetto utilizzando la libreria di autenticazione CoLab o gcloud utility.
# You need `gcloud` tool to login in local shell environment.
gcloud auth login
if 'google.colab' in sys.modules:
from google.colab import auth
auth.authenticate_user()
print('Authenticated')
Devi specificare il nome del tuo progetto GCP per accedere alle risorse BigQuery utilizzando TFX. Set GOOGLE_CLOUD_PROJECT variabile di ambiente per il nome del progetto.
export GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
# Set your project name below.
# WARNING! ENTER your project name before running this cell.
%env GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
env: GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
Aprire
pipeline/pipeline.py. CommentareCsvExampleGene rimuovere il commento dalla linea che creare un'istanzaBigQueryExampleGen. È inoltre necessario rimuovere il commentoqueryargomento dellacreate_pipelinefunzioni.
Abbiamo bisogno di specificare quale progetto GCP da utilizzare per BigQuery di nuovo, e questo è fatto impostando --project in beam_pipeline_args durante la creazione di un oleodotto.
Aprire
pipeline/configs.py. Rimuovere il commento la definizione diBIG_QUERY__WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGSeBIG_QUERY_QUERY. Dovresti sostituire l'ID progetto e il valore della regione in questo file con i valori corretti per il tuo progetto GCP.
Aprire
local_runner.py. Decommentate due argomenti,queryebeam_pipeline_args, per il metodo create_pipeline ().
Ora la pipeline è pronta per utilizzare BigQuery come fonte di esempio. Aggiorna la pipeline e crea una corsa come abbiamo fatto nei passaggi 5 e 6.
tfx pipeline update --engine=local --pipeline_path=local_runner.pytfx run create --engine local --pipeline_name {PIPELINE_NAME}
CLI Updating pipeline Invalid pipeline path: local_runner.py CLI Creating a run for pipeline: my_pipeline /tmpfs/src/tf_docs_env/bin/python: can't open file 'local_runner.py': [Errno 2] No such file or directory Error while running "/tmpfs/src/tf_docs_env/bin/python local_runner.py"
Passaggi successivi: inserisci i TUOI dati nella pipeline.
Abbiamo realizzato una pipeline per un modello utilizzando il set di dati Chicago Taxi. Ora è il momento di inserire i tuoi dati nella pipeline.
I tuoi dati possono essere archiviati ovunque possa accedere la tua pipeline, inclusi GCS o BigQuery. Sarà necessario modificare la definizione della pipeline per accedere ai dati.
- Se i dati sono memorizzati in file, modificare il
DATA_PATHinkubeflow_runner.pyolocal_runner.pye impostarlo sulla posizione dei file. Se i dati sono memorizzati in BigQuery, modificareBIG_QUERY_QUERYinpipeline/configs.pycorrettamente query per i dati. - Aggiungi funzionalità in
models/features.py. - Modificare
models/preprocessing.pyper trasformare i dati di input per la formazione . - Modificare
models/keras/model.pyemodels/keras/constants.pyper descrivere il vostro modello ML .- Puoi anche utilizzare un modello basato su uno stimatore. Cambiare
RUN_FNcostante permodels.estimator.model.run_fninpipeline/configs.py.
- Puoi anche utilizzare un modello basato su uno stimatore. Cambiare
Si prega di consultare Trainer guida componente per più introduzione.
Visualizza su TensorFlow.org
Esegui in Google Colab
Visualizza la fonte su GitHub
Scarica taccuino