Beam orkestratörlü şablonları kullanarak bir TFX ardışık düzeni oluşturun

Tanıtım

Bu belge (TFX) boru hattı TFX Python paketi ile sağlanan şablonları kullanarak Genişletilmiş bir TensorFlow oluşturmak için talimatları verecektir. Talimatların Çoğu Linux kabuk komutları vardır ve kullanan komutları çağırmak Jupyter Notebook kodu hücrelerini tekabül ! sağlanır.

Sen kullanarak bir boru hattı inşa edecek Taksi kümesi Gezileri Chicago City yayınladı. Bu işlem hattını temel olarak kullanarak veri kümenizi kullanarak kendi işlem hattınızı oluşturmaya çalışmanızı şiddetle tavsiye ederiz.

Biz kullanarak bir boru hattı inşa edecek Apache Işın Orchestrator'ı . Eğer Kubeflow orkestraci Google Cloud üzerinde kullanarak ilgilenen varsa, lütfen bkz Bulut AI Platformu Boru hatları öğretici üzerinde Tfx .

Önkoşullar

  • Linux / MacOS
  • Python >= 3.5.3

Sen kolayca tüm ön koşulları alabilirsiniz tarihinde CoLab Bu defteri çalışan .

Adım 1. Ortamınızı ayarlayın.

Bu belge boyunca komutları iki kez sunacağız. Bir kez kopyala ve yapıştıra hazır kabuk komutu olarak, bir kez de jüpyter not defteri hücresi olarak. Colab kullanıyorsanız, kabuk komut dosyası bloğunu atlayın ve not defteri hücrelerini çalıştırın.

Bir işlem hattı oluşturmak için bir geliştirme ortamı hazırlamalısınız.

Yükleme tfx piton paketi. Biz kullanımını tavsiye virtualenv yerel ortamda. Ortamınızı ayarlamak için aşağıdaki kabuk komut dosyası parçacığını kullanabilirsiniz.

# Create a virtualenv for tfx.
virtualenv -p python3 venv
source venv/bin/activate
# Install python packages.
python -m pip install -q --user --upgrade tfx==0.23.0

Colab kullanıyorsanız:

import sys
!{sys.executable} -m pip install -q --user --upgrade -q tfx==0.23.0

HATA: 0.some_version.1 paketinin other-package!=2.0.,<3,>=1.15 gereksinimi var, ancak uyumsuz olan diğer paket 2.0.0'a sahip olacaksınız.

Lütfen şu anda bu hataları görmezden gelin.

# 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

TFX'in sürümünü kontrol edelim.

python -c "import tfx; print('TFX version: {}'.format(tfx.__version__))"
python3 -c "import tfx; print('TFX version: {}'.format(tfx.__version__))"
TFX version: 0.23.0

Ve bitti. Bir boru hattı oluşturmaya hazırız.

Adım 2. Önceden tanımlanmış şablonu proje dizininize kopyalayın.

Bu adımda, önceden tanımlanmış bir şablondan ek dosyalar kopyalayarak çalışan bir boru hattı proje dizini ve dosyaları oluşturacağız.

Sen değiştirerek boru hattından farklı bir ad verebilir PIPELINE_NAME altında. Bu aynı zamanda dosyalarınızın yerleştirileceği proje dizininin adı olacaktır.

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 içerir taxi TFX piton paketi ile şablonu. Sınıflandırma ve regresyon dahil nokta bazında bir tahmin problemini çözmeyi planlıyorsanız, bu şablon bir başlangıç ​​noktası olarak kullanılabilir.

tfx template copy CLI komut kopyalar proje dizine şablon dosyalarını önceden tanımlanmış.

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
2020-09-07 09:09:40.131982: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
CLI
Copying taxi pipeline template
Traceback (most recent call last):
  File "/home/kbuilder/.local/bin/tfx", line 8, in <module>
    sys.exit(cli_group())
  File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/home/kbuilder/.local/lib/python3.6/site-packages/click/decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/commands/template.py", line 73, in copy
    template_handler.copy_template(ctx.flags_dict)
  File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/handler/template_handler.py", line 168, in copy_template
    replace_dict)
  File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/handler/template_handler.py", line 107, in _copy_and_replace_placeholder_dir
    tf.io.gfile.makedirs(dst)
  File "/tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/lib/io/file_io.py", line 480, in recursive_create_dir_v2
    _pywrap_file_io.RecursivelyCreateDir(compat.as_bytes(path))
tensorflow.python.framework.errors_impl.PermissionDeniedError: /content; Permission denied

Bu not defterindeki çalışma dizini bağlamını proje dizinine değiştirin.

cd ${PROJECT_DIR}
%cd {PROJECT_DIR}
[Errno 2] No such file or directory: '/content/my_pipeline'
/tmpfs/src/temp/docs/tutorials/tfx

Adım 3. Kopyalanan kaynak dosyalarınıza göz atın.

TFX şablonu, boru hattının çıktısını analiz etmek için Python kaynak kodu, örnek veriler ve Jupyter Not Defterleri dahil olmak üzere bir boru hattı oluşturmak için temel iskele dosyaları sağlar. taxi şablon aynı Şikago Taksi veri kümesi ve ML modelini kullanan Hava akımı Öğreticisi .

Google Colab'da, soldaki bir klasör simgesini tıklayarak dosyalara göz atabilirsiniz. Dosyalar ismi olan proje dizinle altında kopyalanması gereken my_pipeline bu durumda. Dizinin içeriğini görmek için dizin adlarına tıklayabilir ve bunları açmak için dosya adlarına çift tıklayabilirsiniz.

İşte Python dosyalarının her birine kısa bir giriş.

  • pipeline - Bu dizin boru hattının tanımını içerir
    • configs.py - Boru hattı koşucular için ortak sabitleri tanımlar
    • pipeline.py - tanımlar TFX bileşenleri ve bir boru hattı
  • models - Bu dizin ML modeli tanımları içerir.
    • features.py , features_test.py - tanımlar model özellikleri
    • preprocessing.py , preprocessing_test.py - kullanarak işlerini önişleme tanımlar tf::Transform
    • estimator - Bu dizin bir Tahmincisi tabanlı modeli içeriyor.
      • constants.py - model tanımlar sabitleri
      • model.py , model_test.py - TF tahmincisi kullanılarak DNN model tanımlar
    • keras - Bu dizin bir Keras tabanlı modeli içeriyor.
      • constants.py - model tanımlar sabitleri
      • model.py , model_test.py - keras kullanılarak DNN model tanımlar
  • beam_dag_runner.py , kubeflow_dag_runner.py - Her bir düzenleme motor için rayları tanımlamak

Sen ile bazı dosyaları olduğunu fark edebilirsiniz _test.py kendi adına. Bunlar işlem hattının birim testleridir ve kendi işlem hatlarınızı uygularken daha fazla birim testi eklemeniz önerilir. Sen test dosyalarının modül adı girerek birim testleri çalıştırabilirsiniz -m bayrağı. Genelde silerek bir modül adı alabilirsiniz .py uzantısını ve değiştirme / ile . . Örneğin:

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')

Adım 4. İlk TFX ardışık düzeninizi çalıştırın

Sen kullanarak bir boru hattı oluşturabilir pipeline create komutu.

tfx pipeline create --engine=beam --pipeline_path=beam_dag_runner.py
tfx pipeline create --engine=beam --pipeline_path=beam_dag_runner.py
2020-09-07 09:09:45.612839: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
CLI
Creating pipeline
Invalid pipeline path: beam_dag_runner.py

Sonra kullanılarak oluşturulan boru hattını çalıştırabilirsiniz run create komutu.

tfx run create --engine=beam --pipeline_name="${PIPELINE_NAME}"
tfx run create --engine=beam --pipeline_name={PIPELINE_NAME}
2020-09-07 09:09:50.725339: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
CLI
Creating a run for pipeline: my_pipeline
Pipeline "my_pipeline" does not exist.

Eğer başarılı olursa, göreceksiniz Component CsvExampleGen is finished. Şablonu kopyaladığınızda, işlem hattına yalnızca bir bileşen olan CsvExampleGen eklenir.

Adım 5. Veri doğrulama için bileşenler ekleyin.

Bu adımda, aşağıdakiler dahil veri doğrulama için bileşenleri katacak StatisticsGen , SchemaGen ve ExampleValidator . Eğer veri doğrulama ilgilenen varsa, lütfen bkz Tensorflow Veri Doğrulama başlayın .

Biz kopyalanmış boru hattı tanımını değiştirir pipeline/pipeline.py . Yerel ortamınız üzerinde çalışıyorsanız, dosyayı düzenlemek için favori düzenleyicinizi kullanın. Google Colab üzerinde çalışıyorsanız,

Açık için soldaki klasör simgesine tıklayın Files görünümü.

Click my_pipeline dizinini açmak ve tıkla pipeline açık ve çift tıklama dizini pipeline.py dosyayı açmak için.

Bul ve eklemek 3 satırları uncomment StatisticsGen , SchemaGen ve ExampleValidator boru hattına. (İpucu: içerikli yorumlar bulmak TODO(step 5): ).

Yaptığınız değişiklik birkaç saniye içinde otomatik olarak kaydedilecektir. Emin olun * önünde işareti pipeline.py sekme başlığı kayboldu. Colab'da dosya düzenleyici için kaydetme düğmesi veya kısayolu yoktur. Dosya editörü Python dosyaları bile zamanı ortamına kaydedilebilir playground modu.

Şimdi mevcut işlem hattını değiştirilmiş işlem hattı tanımıyla güncellemeniz gerekiyor. Kullanım tfx pipeline update ardından da boru hattını, güncellemek için komut tfx run create güncellenmiş boru hattının yeni bir yürütme çalıştırmak oluşturmak için komut.

# Update the pipeline
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
# You can run the pipeline the same way.
tfx run create --engine beam --pipeline_name "${PIPELINE_NAME}"
# Update the pipeline
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
# You can run the pipeline the same way.
tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:09:55.915484: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
CLI
Updating pipeline
Invalid pipeline path: beam_dag_runner.py
2020-09-07 09:10:01.148250: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
CLI
Creating a run for pipeline: my_pipeline
Pipeline "my_pipeline" does not exist.

Eklenen bileşenlerden çıktı günlüğünü görebilmeniz gerekir. Bizim boru hattı çıktı eserler yaratan tfx_pipeline_output/my_pipeline dizininde.

Adım 6. Eğitim için bileşenler ekleyin.

Bu adımda, eğitim ve model doğrulama da dahil olmak üzere bileşenleri katacak Transform , Trainer , ResolverNode , Evaluator ve Pusher .

Açık pipeline/pipeline.py . Bul ve eklemek yorumsuz 5 satır Transform , Trainer , ResolverNode , Evaluator ve Pusher boru hattına. (İpucu: bulmak TODO(step 6): )

Daha önce yaptığınız gibi, şimdi mevcut işlem hattını değiştirilmiş işlem hattı tanımıyla güncellemeniz gerekiyor. Talimatları Adım 5. Güncelleme kullanılarak boru hattı aynıdır tfx pipeline update ve kullanan bir yürütme çalıştırması oluşturmak tfx run create .

tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name "${PIPELINE_NAME}"
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:10:06.281753: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
CLI
Updating pipeline
Invalid pipeline path: beam_dag_runner.py
2020-09-07 09:10:11.333668: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
CLI
Creating a run for pipeline: my_pipeline
Pipeline "my_pipeline" does not exist.

Bu yürütme çalıştırması başarıyla tamamlandığında, artık Beam orkestratörünü kullanarak ilk TFX işlem hattınızı oluşturmuş ve çalıştırmış olursunuz!

Adım 7. (İsteğe bağlı) BigQueryExampleGen deneyin.

[BigQuery] sunucusuz, yüksek düzeyde ölçeklenebilir ve uygun maliyetli bir bulut veri ambarıdır. BigQuery, TFX'te eğitim örnekleri için bir kaynak olarak kullanılabilir. Bu adımda, biz katacak BigQueryExampleGen boru hattına.

Bir ihtiyaç Google Cloud Platform BigQuery'yi kullanılacak hesabı. Lütfen bir GCP projesi hazırlayın.

CoLab auth kitaplık veya kullanarak projenize Girişi gcloud yarar.

# 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')

TFX kullanarak BigQuery kaynaklarına erişmek için GCP proje adınızı belirtmelisiniz. Set GOOGLE_CLOUD_PROJECT Proje adının ortam değişkeni.

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

Açık pipeline/pipeline.py . Dışında açıklama CsvExampleGen ve bir örneğini oluşturmak satırın başındaki BigQueryExampleGen . Ayrıca yorumsuz gerek query argümanı create_pipeline fonksiyonu.

Yine BigQuery'ye için hangi GSO projesi belirtmek gerekir ve bu ayar yapılır --project içinde beam_pipeline_args bir boru hattı oluştururken.

Açık pipeline/configs.py . Arasında ni tanımı BIG_QUERY__WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGS ve BIG_QUERY_QUERY . Bu dosyadaki proje kimliğini ve bölge değerini GCP projeniz için doğru değerlerle değiştirmelisiniz.

Açık beam_dag_runner.py . Ni iki bağımsız değişken, query ve beam_pipeline_args create_pipeline () yöntemi için,.

Artık işlem hattı, örnek kaynak olarak BigQuery'yi kullanmaya hazır. İşlem hattını güncelleyin ve 5. ve 6. adımda yaptığımız gibi bir çalıştırma oluşturun.

tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:10:16.406635: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
CLI
Updating pipeline
Invalid pipeline path: beam_dag_runner.py
2020-09-07 09:10:21.439101: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
CLI
Creating a run for pipeline: my_pipeline
Pipeline "my_pipeline" does not exist.

Sırada ne var: Verilerinizi boru hattına alın.

Chicago Taxi veri setini kullanarak bir model için bir boru hattı oluşturduk. Şimdi verilerinizi ardışık düzene koyma zamanı.

Verileriniz, GCS veya BigQuery dahil olmak üzere ardışık düzeninizin erişebildiği her yerde depolanabilir. Verilerinize erişmek için işlem hattı tanımını değiştirmeniz gerekecektir.

  1. Veri dosyalarında saklanıyorsa, değiştirmek DATA_PATH içinde kubeflow_dag_runner.py veya beam_dag_runner.py ve dosyaların konuma ayarlayın. Veri BigQuery'de saklanıyorsa, değiştirmek BIG_QUERY_QUERY içinde pipeline/configs.py doğru sorgu verileriniz için için.
  2. İçinde özellikler ekleyin models/features.py .
  3. Değiştir models/preprocessing.py için eğitim için giriş verileri dönüştürmek .
  4. Değiştir models/keras/model.py ve models/keras/constants.py için tarif sizin ML modelini .
    • Tahminci tabanlı bir model de kullanabilirsiniz. Değişim RUN_FN sabiti için models.estimator.model.run_fn içinde pipeline/configs.py .

Bakınız Eğitmen bileşeni rehber daha giriş için.