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ımlartf::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ıklapipeline
açık ve çift tıklama dizinipipeline.py
dosyayı açmak için.
Bul ve eklemek 3 satırları uncomment
StatisticsGen
,SchemaGen
veExampleValidator
boru hattına. (İpucu: içerikli yorumlar bulmakTODO(step 5):
).
Yaptığınız değişiklik birkaç saniye içinde otomatik olarak kaydedilecektir. Emin olun
*
önünde işaretipipeline.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 kaydedilebilirplayground
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ırTransform
,Trainer
,ResolverNode
,Evaluator
vePusher
boru hattına. (İpucu: bulmakTODO(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çıklamaCsvExampleGen
ve bir örneğini oluşturmak satırın başındakiBigQueryExampleGen
. Ayrıca yorumsuz gerekquery
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
veBIG_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
vebeam_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.
- Veri dosyalarında saklanıyorsa, değiştirmek
DATA_PATH
içindekubeflow_dag_runner.py
veyabeam_dag_runner.py
ve dosyaların konuma ayarlayın. Veri BigQuery'de saklanıyorsa, değiştirmekBIG_QUERY_QUERY
içindepipeline/configs.py
doğru sorgu verileriniz için için. - İçinde özellikler ekleyin
models/features.py
. - Değiştir
models/preprocessing.py
için eğitim için giriş verileri dönüştürmek . - Değiştir
models/keras/model.py
vemodels/keras/constants.py
için tarif sizin ML modelini .- Tahminci tabanlı bir model de kullanabilirsiniz. Değişim
RUN_FN
sabiti içinmodels.estimator.model.run_fn
içindepipeline/configs.py
.
- Tahminci tabanlı bir model de kullanabilirsiniz. Değişim
Bakınız Eğitmen bileşeni rehber daha giriş için.