TensorFlow.org'da görüntüleyin | Google Colab'da çalıştırın | Kaynağı GitHub'da görüntüleyin | Not defterini indir |
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ı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
-
-
-
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
pipelineve açık tekrar çift tıklayınpipeline.py. Bul ve eklemek 3 satırları uncommentStatisticsGen,SchemaGenveExampleValidatorboru hattına. (İpucu: içerikli yorumlar için aramaTODO(step 5):). Kaydetmek için emin olunpipeline.pysiz 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ı uncommentTransform,Trainer,Resolver,EvaluatorvePusherboru 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çıklamaCsvExampleGenve bir örneğini oluşturur hat yorumsuzBigQueryExampleGen. Ayrıca yorumsuz gerekenquerysavınıcreate_pipelinefonksiyonu.
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_ARGSveBIG_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_pipelinedeğiştirmek olmasaydı.
Açık için çift tıklama
kubeflow_runner.py. Uncomment iki argüman,queryvebeam_pipeline_argsiçin,create_pipelinefonksiyonu.
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
pipelinedeğişim dizinine ve açık çift tıklamaconfigs.py. Arasında ni tanımıGOOGLE_CLOUD_REGIONveDATAFLOW_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_pipelinedeğiştirmek olmasaydı.
Açık için çift tıklama
kubeflow_runner.py. Uncommentbeam_pipeline_args. (Ayrıca şimdiki dışarı yorum yapmak emin olunbeam_pipeline_argsAdı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
pipelinedeğişim dizinine ve açık çift tıklamaconfigs.py. Arasında ni tanımıGOOGLE_CLOUD_REGION,GCP_AI_PLATFORM_TRAINING_ARGSveGCP_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ğızmasterConfig.imageUriiçindeGCP_AI_PLATFORM_TRAINING_ARGSaynı değereCUSTOM_TFX_IMAGEyukarıda.
Değişim dizini bir seviye yukarı ve açık çift tıklama
kubeflow_runner.py. Uncommentai_platform_training_argsveai_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.
- Veri dosyalarında saklanıyorsa, değiştirmek
DATA_PATHiçindekubeflow_runner.pyveyalocal_runner.pyve dosyaların konuma ayarlayın. Veri BigQuery'de saklanıyorsa, değiştirmekBIG_QUERY_QUERYiçindepipeline/configs.pydoğru sorgu verileriniz için için. - İçinde özellikler ekleyin
models/features.py. - Değiştir
models/preprocessing.pyiçin eğitim için giriş verileri dönüştürmek . - Değiştir
models/keras/model.pyvemodels/keras/constants.pyiçin tarif sizin ML modelini .- Tahminci tabanlı bir model de kullanabilirsiniz. Değişim
RUN_FNsabiti içinmodels.estimator.model.run_fniçindepipeline/configs.py.
- Tahminci tabanlı bir model de kullanabilirsiniz. Değişim
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:
TensorFlow.org'da görüntüleyin
Google Colab'da çalıştırın
Kaynağı GitHub'da görüntüleyin
Not defterini indir