Wstęp
Dokument ten będzie zawierać instrukcje, aby utworzyć TensorFlow Extended (TFX) rurociąg przy użyciu szablonów, które są dostarczane z pakietem TFX Pythona. Większość instrukcji są poleceń powłoki systemu Linux, a odpowiadające komórki kodu Notebook Jupyter które wywołują te polecenia przy użyciu ! są zapewnione.
Będziesz budować rurociągu przy użyciu Taxi Trips zbiór danych wydany przez miasto Chicago. Zdecydowanie zachęcamy do próby zbudowania własnego potoku przy użyciu zestawu danych, używając tego potoku jako linii bazowej.
Zbudujemy potok działający w środowisku lokalnym. Jeśli jesteś zainteresowany wykorzystaniem Kubeflow Orchestrator na Google Cloud, proszę zobaczyć TFX na tutorialu Chmura AI Platforma rurociągów .
Warunki wstępne
- Linux / MacOS
- Python >= 3.5.3
Możesz pobrać wszystkie przesłanki łatwo uruchomieniem tego notebooka na Google Colab .
Krok 1. Skonfiguruj swoje środowisko.
W tym dokumencie dwukrotnie przedstawimy polecenia. Raz jako polecenie powłoki gotowe do kopiowania i wklejania, raz jako komórka notatnika jupyter. Jeśli używasz Colab, po prostu pomiń blok skryptu powłoki i uruchom komórki notatnika.
Powinieneś przygotować środowisko programistyczne do zbudowania potoku.
Zainstalować tfx pakiet Pythona. Zalecamy stosowanie virtualenv w środowisku lokalnym. Do skonfigurowania środowiska można użyć następującego fragmentu skryptu powłoki.
# Create a virtualenv for tfx.
virtualenv -p python3 venv
source venv/bin/activate
# Install python packages.
python -m pip install --upgrade "tfx<2"
Jeśli korzystasz z colabu:
import sys
!{sys.executable} -m pip install --upgrade "tfx<2"
BŁĄD: some-package 0.some_version.1 wymaga innego pakietu!=2.0.,<3,>=1.15, ale będziesz mieć inny pakiet 2.0.0, który jest niekompatybilny.
W tej chwili zignoruj te błędy.
# 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
Sprawdźmy wersję 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
I gotowe. Jesteśmy gotowi do stworzenia potoku.
Krok 2. Skopiuj predefiniowany szablon do katalogu projektu.
W tym kroku utworzymy działający katalog i pliki projektu potoku, kopiując dodatkowe pliki z predefiniowanego szablonu.
Możesz dać rurociągu inną nazwę, zmieniając PIPELINE_NAME poniżej. Będzie to również nazwa katalogu projektu, w którym zostaną umieszczone twoje pliki.
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 zawiera taxi szablon z TFX pakietu python. Jeśli planujesz rozwiązać problem z przewidywaniem punktowym, w tym klasyfikację i regresję, ten szablon może być użyty jako punkt wyjścia.
Do tfx template copy CLI polecenie kopiuje pliki predefiniowane szablony do katalogu projektu.
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
Zmień kontekst katalogu roboczego w tym notatniku na katalog projektu.
cd ${PROJECT_DIR}
%cd {PROJECT_DIR}
[Errno 2] No such file or directory: '/content/my_pipeline' /tmpfs/src/temp/docs/tutorials/tfx
Krok 3. Przeglądaj skopiowane pliki źródłowe.
Szablon TFX zawiera podstawowe pliki szkieletowe do tworzenia potoku, w tym kod źródłowy Pythona, przykładowe dane i notatniki Jupyter do analizy danych wyjściowych potoku. taxi szablon korzysta z tego samego zestawu danych Chicago Taxi i model ML jako Airflow Tutorial .
W Google Colab możesz przeglądać pliki, klikając ikonę folderu po lewej stronie. Pliki powinny być kopiowane pod directoy projektu, którego nazwa jest my_pipeline w tym przypadku. Możesz kliknąć nazwy katalogów, aby zobaczyć zawartość katalogu, i dwukrotnie kliknąć nazwy plików, aby je otworzyć.
Oto krótkie wprowadzenie do każdego z plików Pythona.
-
pipeline- Katalog ten zawiera definicję gazociągu-
configs.py- określa wspólne stałe dla biegaczy rurociągowych -
pipeline.py- określa elementy TFX i rurociągów
-
-
models- Ten katalog zawiera definicje ML.-
features.py,features_test.py- określa funkcje dla modelu -
preprocessing.py,preprocessing_test.py- określa przerób zadania wykorzystującetf::Transform -
estimator- Katalog ten zawiera model oparty prognozy.-
constants.py- definiuje stałe modelu -
model.py,model_test.py- określa wzór DNN pomocą estymatora TF
-
-
keras- Ten katalog zawiera model oparty Keras.-
constants.py- definiuje stałe modelu -
model.py,model_test.py- określa modelu DNN korzystając Keras
-
-
-
local_runner.py,kubeflow_runner.py- zdefiniować dla każdego silnika biegaczy orkiestracji
Można zauważyć, że istnieją jakieś pliki z _test.py w ich imieniu. Są to testy jednostkowe potoku i zaleca się dodanie większej liczby testów jednostkowych podczas implementowania własnych potoków. Można uruchomić testy jednostkowe poprzez dostarczanie nazwę modułu plików testowych z -m flagi. Zazwyczaj można uzyskać nazwę modułu usuwając .py rozszerzenie i zastąpienie / z . . Na przykład:
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')
Krok 4. Uruchom swój pierwszy potok TFX
Można utworzyć za pomocą rurociągu pipeline create komendę.
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
Następnie można uruchomić utworzoną rurociągu za pomocą run create komendę.
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"
Jeśli się powiedzie, zobaczysz Component CsvExampleGen is finished. Podczas kopiowania szablonu tylko jeden składnik, CsvExampleGen, jest dołączany do potoku.
Krok 5. Dodaj komponenty do walidacji danych.
W tym kroku należy dodać elementy do sprawdzania poprawności danych w tym StatisticsGen , SchemaGen i ExampleValidator . Jeśli jesteś zainteresowany w walidacji danych, proszę zobaczyć Zacznij korzystać z Tensorflow sprawdzania poprawności danych .
Będziemy modyfikować skopiowany definicję gazociągu w pipeline/pipeline.py . Jeśli pracujesz w swoim środowisku lokalnym, użyj swojego ulubionego edytora do edycji pliku. Jeśli pracujesz w Google Colab,
Kliknij ikonę folderu po lewej stronie, aby otworzyć
Fileswidzenia.
Kliknij
my_pipelineaby otworzyć katalog i kliknijpipelinekatalogu, aby otworzyć i kliknij dwukrotniepipeline.pyaby otworzyć plik.
Znajdź i usuń te 3 linie, które dodają
StatisticsGen,SchemaGeniExampleValidatordo rurociągu. (Wskazówka: znaleźć komentarzy zawierającychTODO(step 5):).
Twoja zmiana zostanie automatycznie zapisana za kilka sekund. Upewnij się, że
*znak przedpipeline.pyzniknął w tytule zakładki. W Colab nie ma przycisku zapisu ani skrótu do edytora plików. Pliki Python w edytorze plik może być zapisany w środowisku wykonawczym nawet naplaygroundtrybie.
Teraz musisz zaktualizować istniejący potok o zmodyfikowaną definicję potoku. Użyj tfx pipeline update polecenie, aby zaktualizować rurociągu, a następnie przez tfx run create polecenie, aby utworzyć nowy przebieg realizacji swojego zaktualizowanego rurociągu.
# 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"
Powinieneś być w stanie zobaczyć dziennik wyjściowy z dodanych komponentów. Nasz rurociąg tworzy artefakty wyjściowe w tfx_pipeline_output/my_pipeline katalogu.
Krok 6. Dodaj komponenty do treningu.
W tym kroku należy dodać elementy do szkolenia i walidacji modelu tym Transform , Trainer , Resolver , Evaluator i Pusher .
Otwarty
pipeline/pipeline.py. Znajdź i usuń 5 linii, które dodająTransform,Trainer,Resolver,EvaluatoriPusherdo rurociągu. (Wskazówka: FindTODO(step 6):)
Tak jak poprzednio, musisz teraz zaktualizować istniejący potok przy użyciu zmodyfikowanej definicji potoku. Instrukcje są takie same jak Krok 5. Aktualizacja rurociąg za pomocą tfx pipeline update i utworzyć przebieg wykonania przy użyciu 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"
Po pomyślnym zakończeniu tego uruchomienia wykonania utworzyłeś i uruchomiłeś swój pierwszy potok TFX przy użyciu lokalnego koordynatora!
Krok 7. (Opcjonalnie) Spróbuj BigQueryExampleGen.
[BigQuery] to bezserwerowa, wysoce skalowalna i ekonomiczna hurtownia danych w chmurze. BigQuery może służyć jako źródło przykładów szkoleniowych w TFX. W tym kroku dodamy BigQueryExampleGen do rurociągu.
Musisz Google Cloud Platform konto, aby korzystać z tego narzędzia. Przygotuj projekt GCP.
Zaloguj się do swojego projektu przy użyciu colab bibliotekę auth lub gcloud użyteczność.
# 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')
Aby uzyskać dostęp do zasobów BigQuery przy użyciu TFX, określ nazwę swojego projektu GCP. Zestaw GOOGLE_CLOUD_PROJECT zmienną środowiskową do nazwy projektu.
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
Otwarty
pipeline/pipeline.py. WykomentujCsvExampleGeni odkomentować linię, która tworzy instancjęBigQueryExampleGen. Należy również Odkomentujqueryargumentcreate_pipelinefunkcji.
Musimy określić, które GCP projekt używać do BigQuery ponownie, a odbywa się to poprzez ustawienie --project w beam_pipeline_args podczas tworzenia rurociągu.
Otwarty
pipeline/configs.py. Odkomentuj definicjaBIG_QUERY__WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGSiBIG_QUERY_QUERY. Zastąp identyfikator projektu i wartość regionu w tym pliku prawidłowymi wartościami dla projektu GCP.
Otwarte
local_runner.py. Odkomentuj dwa argumenty,queryibeam_pipeline_args, dla metody create_pipeline ().
Teraz potok jest gotowy do użycia BigQuery jako przykładowego źródła. Zaktualizuj potok i utwórz przebieg, tak jak w kroku 5 i 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"
Co dalej: pozyskaj SWOJE dane do potoku.
Stworzyliśmy potok dla modelu przy użyciu zestawu danych Chicago Taxi. Teraz nadszedł czas, aby umieścić swoje dane w potoku.
Twoje dane mogą być przechowywane w dowolnym miejscu, do którego masz dostęp, w tym w GCS lub BigQuery. Będziesz musiał zmodyfikować definicję potoku, aby uzyskać dostęp do danych.
- Jeśli dane są przechowywane w plikach, modyfikować
DATA_PATHwkubeflow_runner.pylublocal_runner.pyi ustawić go do lokalizacji plików. Jeśli dane są przechowywane w BigQuery, modyfikowaćBIG_QUERY_QUERYwpipeline/configs.pypoprawnie zapytania dla danych. - Dodaj funkcje w
models/features.py. - Modyfikować
models/preprocessing.pydo przekształcania danych wejściowych do treningu . - Modyfikować
models/keras/model.pyimodels/keras/constants.pydo opisania modelu ML .- Możesz również użyć modelu opartego na estymatorze. Zmień
RUN_FNstała sięmodels.estimator.model.run_fnwpipeline/configs.py.
- Możesz również użyć modelu opartego na estymatorze. Zmień
Proszę zobaczyć komponentu przewodnik Trainer więcej wstępie.
Zobacz na TensorFlow.org
Uruchom w Google Colab
Wyświetl źródło na GitHub
Pobierz notatnik