Ş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, bir AI Platform Notebooks örneğinde çalışacak olan Linux kabuk komutlarıdır. Kullanarak bu komutları çağırmak Sorumlu Jupyter Notebook kodu hücreleri ! 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şturmayı denemenizi şiddetle tavsiye ederiz.

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

AI Platform Pipelines, bir işlem hattı oluşturmak için bir geliştirme ortamı ve yeni oluşturulan işlem hattını çalıştırmak için bir Kubeflow Pipeline kümesi hazırlayacaktır.

Yükleme tfx ile piton paketi kfp ekstra gereksinimi.

import sys
# Use the latest version of pip.
!pip install --upgrade pip
# Install tfx and kfp Python packages.
!pip install --upgrade "tfx[kfp]<2"

TFX'in sürümlerini kontrol edelim.

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

AI Platformu Boru hatları yılında TFX kullanarak barındırılan Kubernetes ortamında çalışan Kubeflow Boru Hatları .

Kubeflow Pipelines'ı kullanmak için bazı ortam değişkenlerini ayarlayalım.

İlk olarak, GCP proje kimliğinizi alın.

# Read GCP project id from env.
shell_output=!gcloud config list --format 'value(core.project)' 2>/dev/null
GOOGLE_CLOUD_PROJECT=shell_output[0]
%env GOOGLE_CLOUD_PROJECT={GOOGLE_CLOUD_PROJECT}
print("GCP project ID:" + GOOGLE_CLOUD_PROJECT)
env: GOOGLE_CLOUD_PROJECT=tf-benchmark-dashboard
GCP project ID:tf-benchmark-dashboard

Ayrıca KFP kümenize erişmemiz gerekiyor. Google Cloud Console'unuzda "AI Platform > Pipeline" menüsü altında buna erişebilirsiniz. KFP kümesinin "uç noktası", Pipelines panosunun URL'sinden bulunabilir veya onu, bu not defterini başlattığınız Başlarken sayfasının URL'sinden edinebilirsiniz. Diyelim bir oluşturmak ENDPOINT ortam değişkeni ve KFP küme son nokta olarak ayarlayın. ENDPOINT, URL'nin yalnızca ana bilgisayar adı bölümünü içermelidir. Örneğin, KFP pano URL ise <a href="https://1e9deb537390ca22-dot-asia-east1.pipelines.googleusercontent.com/#/start">https://1e9deb537390ca22-dot-asia-east1.pipelines.googleusercontent.com/#/start</a> , ENDPOINT değeri olur 1e9deb537390ca22-dot-asia-east1.pipelines.googleusercontent.com .

# This refers to the KFP cluster endpoint
ENDPOINT='' # Enter your ENDPOINT here.
if not ENDPOINT:
    from absl import logging
    logging.error('Set your ENDPOINT in this cell.')
ERROR:absl:Set your ENDPOINT in this cell.

Gibi resim adını ayarlayın tfx-pipeline akım GSO projesi kapsamında.

# Docker image name for the pipeline image.
CUSTOM_TFX_IMAGE='gcr.io/' + GOOGLE_CLOUD_PROJECT + '/tfx-pipeline'

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

Adım 2. Ön tanımlı ş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.

PIPELINE_NAME="my_pipeline"
import os
PROJECT_DIR=os.path.join(os.path.expanduser("~"),"imported",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
CLI
Copying taxi pipeline template
kubeflow_runner.py -> /home/kbuilder/imported/my_pipeline/kubeflow_runner.py
kubeflow_v2_dag_runner.py -> /home/kbuilder/imported/my_pipeline/kubeflow_v2_dag_runner.py
features_test.py -> /home/kbuilder/imported/my_pipeline/models/features_test.py
model_test.py -> /home/kbuilder/imported/my_pipeline/models/estimator/model_test.py
constants.py -> /home/kbuilder/imported/my_pipeline/models/estimator/constants.py
model.py -> /home/kbuilder/imported/my_pipeline/models/estimator/model.py
__init__.py -> /home/kbuilder/imported/my_pipeline/models/estimator/__init__.py
model_test.py -> /home/kbuilder/imported/my_pipeline/models/keras/model_test.py
constants.py -> /home/kbuilder/imported/my_pipeline/models/keras/constants.py
model.py -> /home/kbuilder/imported/my_pipeline/models/keras/model.py
__init__.py -> /home/kbuilder/imported/my_pipeline/models/keras/__init__.py
preprocessing_test.py -> /home/kbuilder/imported/my_pipeline/models/preprocessing_test.py
preprocessing.py -> /home/kbuilder/imported/my_pipeline/models/preprocessing.py
__init__.py -> /home/kbuilder/imported/my_pipeline/models/__init__.py
features.py -> /home/kbuilder/imported/my_pipeline/models/features.py
pipeline.py -> /home/kbuilder/imported/my_pipeline/pipeline/pipeline.py
configs.py -> /home/kbuilder/imported/my_pipeline/pipeline/configs.py
__init__.py -> /home/kbuilder/imported/my_pipeline/pipeline/__init__.py
local_runner.py -> /home/kbuilder/imported/my_pipeline/local_runner.py
model_analysis.ipynb -> /home/kbuilder/imported/my_pipeline/model_analysis.ipynb
__init__.py -> /home/kbuilder/imported/my_pipeline/__init__.py
data_validation.ipynb -> /home/kbuilder/imported/my_pipeline/data_validation.ipynb
.gitignore -> /home/kbuilder/imported/my_pipeline/.gitignore
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 73, 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 185, in copy_template
    fileio.copy(src_path, dst_path)
  File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/dsl/io/fileio.py", line 51, in copy
    src_fs.copy(src, dst, overwrite=overwrite)
  File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/dsl/io/plugins/tensorflow_gfile.py", line 48, in copy
    tf.io.gfile.copy(src, dst, overwrite=overwrite)
  File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tensorflow/python/lib/io/file_io.py", line 516, in copy_v2
    compat.path_to_bytes(src), compat.path_to_bytes(dst), overwrite)
tensorflow.python.framework.errors_impl.AlreadyExistsError: file already exists

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

%cd {PROJECT_DIR}
/home/kbuilder/imported/my_pipeline

3. Adım. 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 .

İş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
  • local_runner.py , kubeflow_runner.py - her düzenleme motor için rayları tanımlar

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:

{sys.executable} -m models.features_test
{sys.executable} -m models.keras.model_test
Running tests under Python 3.7.5: /tmpfs/src/tf_docs_env/bin/python
[ RUN      ] FeaturesTest.testNumberOfBucketFeatureBucketCount
INFO:tensorflow:time(__main__.FeaturesTest.testNumberOfBucketFeatureBucketCount): 0.0s
I1204 11:33:54.064224 139808961349440 test_util.py:2076] time(__main__.FeaturesTest.testNumberOfBucketFeatureBucketCount): 0.0s
[       OK ] FeaturesTest.testNumberOfBucketFeatureBucketCount
[ RUN      ] FeaturesTest.testTransformedNames
INFO:tensorflow:time(__main__.FeaturesTest.testTransformedNames): 0.0s
I1204 11:33:54.064666 139808961349440 test_util.py:2076] time(__main__.FeaturesTest.testTransformedNames): 0.0s
[       OK ] FeaturesTest.testTransformedNames
[ RUN      ] FeaturesTest.test_session
[  SKIPPED ] FeaturesTest.test_session
----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK (skipped=1)
Running tests under Python 3.7.5: /tmpfs/src/tf_docs_env/bin/python
[ RUN      ] ModelTest.testBuildKerasModel
2021-12-04 11:33:57.507456: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcusolver.so.10'; dlerror: libcusolver.so.10: cannot open shared object file: No such file or directory
2021-12-04 11:33:57.508566: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1757] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
I1204 11:33:57.581331 139740839778112 layer_utils.py:191] Model: "model"
I1204 11:33:57.581501 139740839778112 layer_utils.py:192] __________________________________________________________________________________________________
I1204 11:33:57.581558 139740839778112 layer_utils.py:189] Layer (type)                    Output Shape         Param #     Connected to                     
I1204 11:33:57.581596 139740839778112 layer_utils.py:194] ==================================================================================================
I1204 11:33:57.581741 139740839778112 layer_utils.py:189] pickup_latitude_xf (InputLayer) [(None,)]            0                                            
I1204 11:33:57.581793 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.581883 139740839778112 layer_utils.py:189] trip_miles_xf (InputLayer)      [(None,)]            0                                            
I1204 11:33:57.581926 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.582010 139740839778112 layer_utils.py:189] trip_start_hour_xf (InputLayer) [(None,)]            0                                            
I1204 11:33:57.582052 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.582189 139740839778112 layer_utils.py:189] dense_features (DenseFeatures)  (None, 1)            0           pickup_latitude_xf[0][0]         
I1204 11:33:57.582241 139740839778112 layer_utils.py:189]                                                                  trip_miles_xf[0][0]              
I1204 11:33:57.582280 139740839778112 layer_utils.py:189]                                                                  trip_start_hour_xf[0][0]         
I1204 11:33:57.582315 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.582462 139740839778112 layer_utils.py:189] dense (Dense)                   (None, 1)            2           dense_features[0][0]             
I1204 11:33:57.582518 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.582629 139740839778112 layer_utils.py:189] dense_1 (Dense)                 (None, 1)            2           dense[0][0]                      
I1204 11:33:57.582674 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.582824 139740839778112 layer_utils.py:189] dense_features_1 (DenseFeatures (None, 34)           0           pickup_latitude_xf[0][0]         
I1204 11:33:57.582879 139740839778112 layer_utils.py:189]                                                                  trip_miles_xf[0][0]              
I1204 11:33:57.582921 139740839778112 layer_utils.py:189]                                                                  trip_start_hour_xf[0][0]         
I1204 11:33:57.582957 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.583053 139740839778112 layer_utils.py:189] concatenate (Concatenate)       (None, 35)           0           dense_1[0][0]                    
I1204 11:33:57.583099 139740839778112 layer_utils.py:189]                                                                  dense_features_1[0][0]           
I1204 11:33:57.583143 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.583260 139740839778112 layer_utils.py:189] dense_2 (Dense)                 (None, 1)            36          concatenate[0][0]                
I1204 11:33:57.583309 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.583389 139740839778112 layer_utils.py:189] tf.compat.v1.squeeze (TFOpLambd (None,)              0           dense_2[0][0]                    
I1204 11:33:57.583432 139740839778112 layer_utils.py:256] ==================================================================================================
I1204 11:33:57.583687 139740839778112 layer_utils.py:267] Total params: 40
I1204 11:33:57.583751 139740839778112 layer_utils.py:268] Trainable params: 40
I1204 11:33:57.583794 139740839778112 layer_utils.py:269] Non-trainable params: 0
I1204 11:33:57.583832 139740839778112 layer_utils.py:270] __________________________________________________________________________________________________
I1204 11:33:57.649701 139740839778112 layer_utils.py:191] Model: "model_1"
I1204 11:33:57.649825 139740839778112 layer_utils.py:192] __________________________________________________________________________________________________
I1204 11:33:57.649878 139740839778112 layer_utils.py:189] Layer (type)                    Output Shape         Param #     Connected to                     
I1204 11:33:57.649932 139740839778112 layer_utils.py:194] ==================================================================================================
I1204 11:33:57.650066 139740839778112 layer_utils.py:189] pickup_latitude_xf (InputLayer) [(None,)]            0                                            
I1204 11:33:57.650120 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.650207 139740839778112 layer_utils.py:189] trip_miles_xf (InputLayer)      [(None,)]            0                                            
I1204 11:33:57.650259 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.650356 139740839778112 layer_utils.py:189] trip_start_hour_xf (InputLayer) [(None,)]            0                                            
I1204 11:33:57.650398 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.650552 139740839778112 layer_utils.py:189] dense_features_2 (DenseFeatures (None, 1)            0           pickup_latitude_xf[0][0]         
I1204 11:33:57.650603 139740839778112 layer_utils.py:189]                                                                  trip_miles_xf[0][0]              
I1204 11:33:57.650644 139740839778112 layer_utils.py:189]                                                                  trip_start_hour_xf[0][0]         
I1204 11:33:57.650682 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.650812 139740839778112 layer_utils.py:189] dense_3 (Dense)                 (None, 1)            2           dense_features_2[0][0]           
I1204 11:33:57.650864 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.651007 139740839778112 layer_utils.py:189] dense_features_3 (DenseFeatures (None, 34)           0           pickup_latitude_xf[0][0]         
I1204 11:33:57.651061 139740839778112 layer_utils.py:189]                                                                  trip_miles_xf[0][0]              
I1204 11:33:57.651102 139740839778112 layer_utils.py:189]                                                                  trip_start_hour_xf[0][0]         
I1204 11:33:57.651146 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.651229 139740839778112 layer_utils.py:189] concatenate_1 (Concatenate)     (None, 35)           0           dense_3[0][0]                    
I1204 11:33:57.651274 139740839778112 layer_utils.py:189]                                                                  dense_features_3[0][0]           
I1204 11:33:57.651311 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.651462 139740839778112 layer_utils.py:189] dense_4 (Dense)                 (None, 1)            36          concatenate_1[0][0]              
I1204 11:33:57.651547 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________
I1204 11:33:57.651632 139740839778112 layer_utils.py:189] tf.compat.v1.squeeze_1 (TFOpLam (None,)              0           dense_4[0][0]                    
I1204 11:33:57.651675 139740839778112 layer_utils.py:256] ==================================================================================================
I1204 11:33:57.651959 139740839778112 layer_utils.py:267] Total params: 38
I1204 11:33:57.652019 139740839778112 layer_utils.py:268] Trainable params: 38
I1204 11:33:57.652061 139740839778112 layer_utils.py:269] Non-trainable params: 0
I1204 11:33:57.652098 139740839778112 layer_utils.py:270] __________________________________________________________________________________________________
INFO:tensorflow:time(__main__.ModelTest.testBuildKerasModel): 0.84s
I1204 11:33:57.652639 139740839778112 test_util.py:2076] time(__main__.ModelTest.testBuildKerasModel): 0.84s
[       OK ] ModelTest.testBuildKerasModel
[ RUN      ] ModelTest.test_session
[  SKIPPED ] ModelTest.test_session
----------------------------------------------------------------------
Ran 2 tests in 0.836s

OK (skipped=1)

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

TFX boru hattı Bileşenleri olarak her çalıştırmak için çıkışlar üretecektir ML Meta veri Eserler ve bunlar bir yere saklanması gerekir. KFP kümesinin erişebileceği herhangi bir depolamayı kullanabilirsiniz ve bu örnek için Google Cloud Storage'ı (GCS) kullanacağız. Varsayılan bir GCS paketi otomatik olarak oluşturulmuş olmalıdır. Adını olacak <your-project-id>-kubeflowpipelines-default .

Örnek verilerimizi daha sonra ardışık düzenimizde kullanabilmemiz için GCS paketine yükleyelim.

gsutil cp data/data.csv gs://{GOOGLE_CLOUD_PROJECT}-kubeflowpipelines-default/tfx-template/data/taxi/data.csv
BucketNotFoundException: 404 gs://tf-benchmark-dashboard-kubeflowpipelines-default bucket does not exist.

En kullanarak bir TFX boru hattı oluşturalım tfx pipeline create komutu.

!tfx pipeline create  --pipeline-path=kubeflow_runner.py --endpoint={ENDPOINT} \
--build-image
CLI
Usage: tfx pipeline create [OPTIONS]
Try 'tfx pipeline create --help' for help.

Error: no such option: --build-image

Bir boru hattı oluştururken, Dockerfile bir Docker imaj yaratmak için oluşturulur. Diğer kaynak dosyalarla birlikte kaynak kontrol sistemine (örneğin git) eklemeyi unutmayın.

Şimdi kullanarak yeni oluşturulan boru hattı ile çalışacak bir çalışmasını başlatmak tfx run create komutunu.

tfx run create --pipeline-name={PIPELINE_NAME} --endpoint={ENDPOINT}
CLI
Creating a run for pipeline: my_pipeline
Detected Beam.
[WARNING] Default engine will be changed to "local" in the near future.
Use --engine flag if you intend to use a different orchestrator.
Pipeline "my_pipeline" does not exist.

Veya işlem hattını KFP Panosu'nda da çalıştırabilirsiniz. Yeni yürütme çalıştırması, KFP Panosundaki Denemeler altında listelenecektir. Denemeye tıklamak, ilerlemeyi izlemenize ve yürütme çalıştırması sırasında oluşturulan yapıları görselleştirmenize olanak tanır.

Ancak, KFP Kontrol Panelini ziyaret etmenizi öneririz. KFP Kontrol Paneli'ne Google Cloud Console'daki Cloud AI Platform Pipelines menüsünden erişebilirsiniz. Kontrol panelini ziyaret ettiğinizde, boru hattını bulabilecek ve boru hattı hakkında çok sayıda bilgiye erişebileceksiniz. Örneğin, Denemeler menüsü altında koşularınızı bulabilirsiniz ve Deney altında yürütme koşmak açtığınızda Eserleri menüsü altındaki boru hattından tüm eserler bulabilirsiniz.

Başarısızlığın ana kaynaklarından biri izinle ilgili sorunlardır. Lütfen KFP kümenizin Google Cloud API'lerine erişim izinlerine sahip olduğundan emin olun. Bu yapılandırılabilir Eğer GSİO'da bir KFP küme oluştururken , ya bakınız GSİO'da Giderme belgesini .

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 .

Değişiklik dizinine çift tıklayın pipeline ve açık tekrar çift tıklayın pipeline.py . Bul ve eklemek 3 satırları uncomment StatisticsGen , SchemaGen ve ExampleValidator boru hattına. (İpucu: içerikli yorumlar için arama TODO(step 5): ). Kaydetmek için emin olun pipeline.py siz düzenledikten sonra.

Ş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 \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
# You can run the pipeline the same way.
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
CLI
Updating pipeline
Detected Beam.
[WARNING] Default engine will be changed to "local" in the near future.
Use --engine flag if you intend to use a different orchestrator.
beam runner not found in dsl.
CLI
Creating a run for pipeline: my_pipeline
Detected Beam.
[WARNING] Default engine will be changed to "local" in the near future.
Use --engine flag if you intend to use a different orchestrator.
Pipeline "my_pipeline" does not exist.

Boru hattı çıkışlarını kontrol edin

İşlem hattı çalıştırmanız için sayfada işlem hattı çıktılarını bulmak için KFP panosunu ziyaret edin. Soldaki Deneyler sekmesini ve Denemeler sayfasının tüm koşular tıklayın. İşlem hattınızın adı altında en son çalıştırmayı bulabilmeniz gerekir.

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 , Resolver , Evaluator ve Pusher .

Açık için çift tıklama pipeline.py . Bul ve ekleme 5 satırları uncomment Transform , Trainer , Resolver , Evaluator ve Pusher boru hattına. (İpucu: arayışları 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 \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
CLI
Updating pipeline
Detected Beam.
[WARNING] Default engine will be changed to "local" in the near future.
Use --engine flag if you intend to use a different orchestrator.
beam runner not found in dsl.
CLI
Creating a run for pipeline: my_pipeline
Detected Beam.
[WARNING] Default engine will be changed to "local" in the near future.
Use --engine flag if you intend to use a different orchestrator.
Pipeline "my_pipeline" does not exist.

Bu yürütme çalıştırması başarıyla tamamlandığında, artık AI Platform Pipelines'da ilk TFX ardışık düzeninizi oluşturmuş ve çalıştırmış olursunuz!

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

BigQuery bir sunucusuz, yüksek ölçekli, ve düşük maliyetli bir bulut veri deposudur. BigQuery, TFX'te eğitim örnekleri için bir kaynak olarak kullanılabilir. Bu adımda, biz katacak BigQueryExampleGen boru hattına.

Açık için çift tıklama pipeline.py . Dışında açıklama CsvExampleGen ve bir örneğini oluşturur hat yorumsuz BigQueryExampleGen . Ayrıca yorumsuz gereken query savını create_pipeline fonksiyonu.

Biz BigQuery'e 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 için çift tıklama configs.py . Ni tanımı GOOGLE_CLOUD_REGION , BIG_QUERY_WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGS ve BIG_QUERY_QUERY . Bu dosyadaki bölge değerini GCP projeniz için doğru değerlerle değiştirmelisiniz.

Dizini bir seviye yukarı değiştirin. Dosya listesinin üstündeki dizinin adına tıklayın. Dizinin adıdır boru hattının adıdır my_pipeline değiştirmek olmasaydı.

Açık için çift tıklama kubeflow_runner.py . Uncomment iki argüman, query ve beam_pipeline_args için, create_pipeline fonksiyonu.

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

!tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
CLI
Updating pipeline
Detected Beam.
[WARNING] Default engine will be changed to "local" in the near future.
Use --engine flag if you intend to use a different orchestrator.
beam runner not found in dsl.
CLI
Creating a run for pipeline: my_pipeline
Detected Beam.
[WARNING] Default engine will be changed to "local" in the near future.
Use --engine flag if you intend to use a different orchestrator.
Pipeline "my_pipeline" does not exist.

8. (İsteğe bağlı) KFP ile veri akışı deneyin Adım

Çeşitli TFX Bileşenleri Apache Işın kullandığı veri paralel boru hatlarını uygulamaya ve kullandığınız veri işleme iş yüklerini dağıtmak anlamına gelir Google Bulut veri akışı . Bu adımda, Kubeflow düzenleyicisini Apache Beam için veri işleme arka ucu olarak dataflow kullanacak şekilde ayarlayacağız.

Çift tıklayın pipeline değişim dizinine ve açık çift tıklama configs.py . Arasında ni tanımı GOOGLE_CLOUD_REGION ve DATAFLOW_BEAM_PIPELINE_ARGS .

Dizini bir seviye yukarı değiştirin. Dosya listesinin üstündeki dizinin adına tıklayın. Dizinin adıdır boru hattının adıdır my_pipeline değiştirmek olmasaydı.

Açık için çift tıklama kubeflow_runner.py . Uncomment beam_pipeline_args . (Ayrıca şimdiki dışarı yorum yapmak emin olun beam_pipeline_args Adım 7. eklediğiniz)

Artık işlem hattı Dataflow'u kullanmaya hazır. İşlem hattını güncelleyin ve 5. ve 6. adımda yaptığımız gibi bir yürütme çalıştırması oluşturun.

!tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
CLI
Updating pipeline
Detected Beam.
[WARNING] Default engine will be changed to "local" in the near future.
Use --engine flag if you intend to use a different orchestrator.
beam runner not found in dsl.
CLI
Creating a run for pipeline: my_pipeline
Detected Beam.
[WARNING] Default engine will be changed to "local" in the near future.
Use --engine flag if you intend to use a different orchestrator.
Pipeline "my_pipeline" does not exist.

Sen içinde Dataflow iş bulabilmektedirler Bulut Konsolu veri akışı .

Adım 9. (İsteğe bağlı) KFP ile Bulut AI Platformu Eğitim ve Tahmin deneyin

Gibi birçok yönetilen GSO hizmetleri ile TFX cıları Eğitim ve Tahmininde Bulut AI Platformu . Eğer ayarlayabilirsiniz Trainer Bulut AI Platformu Eğitim, ML modelleri eğitimi için yönetilen hizmeti kullanmak için bileşeni. Modeliniz hizmet için inşa ve hazır olduğunda Üstelik, sen hizmet için Bulut AI Platformu Prediction modelinizi zorlayabilir. Bu adımda, bizim ayarlayacaktır Trainer ve Pusher Bulut AI Platformu hizmetlerini kullanmak için bileşeni.

Dosyaları düzenlemeden önce, ilk olarak AI Platformu Eğitim & Tahmin API etkinleştirmeniz gerekebilir.

Çift tıklayın pipeline değişim dizinine ve açık çift tıklama configs.py . Arasında ni tanımı GOOGLE_CLOUD_REGION , GCP_AI_PLATFORM_TRAINING_ARGS ve GCP_AI_PLATFORM_SERVING_ARGS . Biz belirlesin yüzden, Bulut AI Platformu Eğitimde bir model eğitmek için bizim özel inşa konteyner resim kullanacağız masterConfig.imageUri içinde GCP_AI_PLATFORM_TRAINING_ARGS aynı değere CUSTOM_TFX_IMAGE yukarıda.

Değişim dizini bir seviye yukarı ve açık çift tıklama kubeflow_runner.py . Uncomment ai_platform_training_args ve ai_platform_serving_args .

İşlem hattını güncelleyin ve 5. ve 6. adımda yaptığımız gibi bir yürütme çalıştırması oluşturun.

!tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
CLI
Updating pipeline
Detected Beam.
[WARNING] Default engine will be changed to "local" in the near future.
Use --engine flag if you intend to use a different orchestrator.
beam runner not found in dsl.
CLI
Creating a run for pipeline: my_pipeline
Detected Beam.
[WARNING] Default engine will be changed to "local" in the near future.
Use --engine flag if you intend to use a different orchestrator.
Pipeline "my_pipeline" does not exist.

İçeri eğitim iş bulabilmektedirler Bulut AI Platformu İşler . Senin boru hattı başarıyla tamamlandı varsa, modelinizi bulabilirsiniz Bulut AI Platformu Modelleri .

Adım 10. 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_runner.py veya local_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.

Temizlemek

Bu projede kullanılan tüm Google Bulut kaynakları temizlemek için şunları yapabilirsiniz Google Bulut projeyi silmek Eğer öğretici için de kullanılır.

Alternatif olarak, her bir konsolu ziyaret ederek kaynakları tek tek temizleyebilirsiniz: