با استفاده از الگوها خط لوله TFX ایجاد کنید

معرفی

این سند دستورالعمل برای ایجاد یک TensorFlow تمدید یا TFX خط لوله با استفاده از قالب که با بسته TFX پایتون ارائه کند. بسیاری از دستورالعمل‌ها دستورات پوسته لینوکس هستند که بر روی نمونه نوت‌بوک‌های پلتفرم هوش مصنوعی اجرا می‌شوند. مسئول سلول های کد نوت بوک Jupyter که آن دستورات فراخوانی با استفاده از ! ارائه شده است.

شما یک خط لوله با استفاده از ساخت تاکسی سفر مجموعه داده های منتشر شده توسط شهر شیکاگو. ما قویاً شما را تشویق می‌کنیم که با استفاده از این خط لوله به‌عنوان خط پایه، با استفاده از مجموعه داده‌های خود، خط لوله خود را بسازید.

مرحله 1. محیط خود را تنظیم کنید.

خطوط لوله پلتفرم هوش مصنوعی یک محیط توسعه برای ساخت یک خط لوله و یک خوشه خط لوله Kubeflow برای اجرای خط لوله جدید آماده می کند.

نصب tfx بسته پایتون با kfp نیاز اضافی.

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 را بررسی کنیم.

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

در AI بستر های نرم افزاری خطوط لوله، TFX در حال اجرا است در یک محیط Kubernetes میزبانی با استفاده از Kubeflow خط لوله .

بیایید چند متغیر محیطی را برای استفاده از Kubeflow Pipelines تنظیم کنیم.

ابتدا شناسه پروژه GCP خود را دریافت کنید.

# 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

ما همچنین باید به خوشه KFP شما دسترسی داشته باشیم. می‌توانید در Google Cloud Console زیر منوی «AI Platform > Pipeline» به آن دسترسی داشته باشید. «نقطه پایانی» خوشه KFP را می‌توانید از URL داشبورد Pipelines پیدا کنید، یا می‌توانید آن را از URL صفحه شروع به کار که این دفترچه یادداشت را راه‌اندازی کرده‌اید، دریافت کنید. بیایید یک ایجاد ENDPOINT متغیر محیطی و آن را به نقطه پایانی خوشه KFP تنظیم شده است. ENDPOINT باید فقط شامل قسمت نام میزبان URL باشد. به عنوان مثال، اگر نشانی اینترنتی داشبورد KFP است <a href="https://1e9deb537390ca22-dot-asia-east1.pipelines.googleusercontent.com/#/start">https://1e9deb537390ca22-dot-asia-east1.pipelines.googleusercontent.com/#/start</a> ، ارزش ENDPOINT شود 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.

تنظیم نام تصویر به عنوان tfx-pipeline تحت پروژه GCP جاری است.

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

و انجام شد. ما آماده ایجاد یک خط لوله هستیم.

مرحله 2. الگوی از پیش تعریف شده را در فهرست پروژه خود کپی کنید.

در این مرحله، با کپی کردن فایل های اضافی از یک الگوی از پیش تعریف شده، یک فهرست راهنمای پروژه خط لوله و فایل های کار ایجاد می کنیم.

شما نمیتوانید خط لوله خود را به نام های مختلف با تغییر دادن PIPELINE_NAME زیر کلیک کنید. این همچنین به نام دایرکتوری پروژه تبدیل می شود که فایل های شما در آن قرار می گیرند.

PIPELINE_NAME="my_pipeline"
import os
PROJECT_DIR=os.path.join(os.path.expanduser("~"),"imported",PIPELINE_NAME)

TFX شامل taxi قالب با بسته TFX پایتون. اگر قصد دارید یک مشکل پیش‌بینی نقطه‌ای، از جمله طبقه‌بندی و رگرسیون را حل کنید، این الگو می‌تواند به عنوان نقطه شروع استفاده شود.

tfx template copy CLI نسخه فرمان فایل های قالب را به دایرکتوری پروژه خود را از پیش تعریف شده.

!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

زمینه دایرکتوری کاری در این نوت بوک را به دایرکتوری پروژه تغییر دهید.

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

مرحله 3. فایل های منبع کپی شده خود را مرور کنید

قالب TFX فایل‌های داربست اولیه را برای ساخت یک خط لوله، از جمله کد منبع پایتون، داده‌های نمونه و نوت‌بوک‌های Jupyter برای تجزیه و تحلیل خروجی خط لوله ارائه می‌کند. taxi قالب با استفاده از همان مجموعه داده شیکاگو تاکسی و مدل ML به عنوان جریان هوا آموزش .

در اینجا به معرفی مختصر هر یک از فایل های پایتون می پردازیم.

  • pipeline - این پوشه شامل تعریف از خط لوله
    • configs.py - ثابت مشترک برای دونده خط لوله را تعریف می کند
    • pipeline.py - تعریف اجزای TFX و یک خط لوله
  • models - این پوشه شامل تعاریف مدل ML.
    • features.py ، features_test.py - تعریف ویژگی های برای مدل
    • preprocessing.py ، preprocessing_test.py - تعریف پیش پردازش شغل با استفاده از tf::Transform
    • estimator - این پوشه شامل یک مدل بر اساس برآورد.
      • constants.py - تعریف ثابت از مدل
      • model.py ، model_test.py - مدل DNN با استفاده از برآوردگر TF تعریف
    • keras - این پوشه شامل یک مدل مبتنی بر Keras.
      • constants.py - تعریف ثابت از مدل
      • model.py ، model_test.py - مدل DNN با استفاده از Keras تعریف
  • local_runner.py ، kubeflow_runner.py - تعریف دونده برای هر موتور ارکستراسیون

شما ممکن است متوجه شده باشید که برخی از فایل های با _test.py به نام خود. اینها آزمایشات واحد خط لوله هستند و توصیه می شود همزمان با اجرای خطوط لوله خود، آزمایشات واحد بیشتری را اضافه کنید. شما می توانید تست های واحد تهیه شده توسط نام ماژول از فایل های آزمون با اجرای -m پرچم. شما معمولا می توانید یک نام ماژول با حذف از .py گسترش و جایگزین / با . . مثلا:

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

مرحله 4. اولین خط لوله TFX خود را اجرا کنید

قطعات در خط لوله TFX خواهد خروجی برای هر اجرا به عنوان تولید مصنوعات ML متاداده ، و آنها نیاز به ذخیره می شود در جایی. شما می توانید از هر فضای ذخیره سازی که خوشه KFP می تواند به آن دسترسی داشته باشد استفاده کنید، و برای این مثال ما از Google Cloud Storage (GCS) استفاده خواهیم کرد. یک سطل GCS پیش فرض باید به طور خودکار ایجاد می شد. نام خود را خواهد <your-project-id>-kubeflowpipelines-default .

بیایید داده های نمونه خود را در سطل GCS آپلود کنیم تا بتوانیم بعداً از آن در خط لوله خود استفاده کنیم.

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.

بیایید ایجاد یک خط لوله TFX با استفاده از tfx pipeline create فرمان.

!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

در حالی که ایجاد یک خط لوله، Dockerfile تولید خواهد شد به ساخت یک تصویر کارگر بارانداز. فراموش نکنید که آن را به سیستم کنترل منبع (مثلا git) به همراه سایر فایل های منبع اضافه کنید.

در حال حاضر یک اعدام اجرا با خط لوله به تازگی ایجاد شده با استفاده از شروع tfx run create فرمان.

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.

یا، همچنین می توانید خط لوله را در داشبورد KFP اجرا کنید. اجرای جدید در قسمت آزمایش‌ها در داشبورد KFP فهرست می‌شود. با کلیک بر روی آزمایش به شما امکان می دهد پیشرفت را کنترل کرده و مصنوعات ایجاد شده در طول اجرای اجرا را تجسم کنید.

با این حال، توصیه می کنیم از داشبورد KFP بازدید کنید. می‌توانید از منوی Cloud AI Platform Pipelines در Google Cloud Console به داشبورد KFP دسترسی پیدا کنید. پس از بازدید از داشبورد، می‌توانید خط لوله را پیدا کنید و به اطلاعات زیادی در مورد خط لوله دسترسی پیدا کنید. به عنوان مثال، شما می توانید اجرا می شود خود را در زیر منوی آزمایش، پیدا کردن و هنگام باز کردن اعدام اجرا خود را در زیر آزمایش شما می توانید تمام مصنوعات خود را از خط لوله زیر منوی آثار پیدا

یکی از منابع اصلی شکست مشکلات مربوط به مجوز است. لطفاً مطمئن شوید که خوشه KFP شما مجوز دسترسی به APIهای Google Cloud را دارد. این می تواند پیکربندی شده زمانی که شما یک خوشه KFP ایجاد در GCP ، و یا دیدن سند عیب یابی در GCP .

مرحله 5. اجزایی را برای اعتبارسنجی داده ها اضافه کنید.

در این مرحله، به شما خواهد اجزای سازنده برای اعتبار سنجی داده ها از جمله اضافه کردن StatisticsGen ، SchemaGen و ExampleValidator . اگر شما در اعتبار سنجی داده ها علاقه مند، لطفا به کار با Tensorflow داده ها اعتبار آغاز شده .

دوبار کلیک کنید برای تغییر دایرکتوری به pipeline و دوبار کلیک کنید دوباره برای باز کردن pipeline.py . پیدا کردن و کامنت 3 خط که اضافه کردن StatisticsGen ، SchemaGen و ExampleValidator به خط لوله. (نکته: جستجو برای نظرات حاوی TODO(step 5): ). اطمینان حاصل کنید که به صرفه جویی در pipeline.py بعد از شما آن را ویرایش کنید.

اکنون باید خط لوله موجود را با تعریف خط لوله اصلاح شده به روز کنید. استفاده از tfx pipeline update دستور برای به روز رسانی خط لوله خود را، پس از tfx run create دستور برای ایجاد یک اعدام اجرا جدید از خط لوله به روز خود را.

# 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.

خروجی های خط لوله را بررسی کنید

برای یافتن خروجی های خط لوله در صفحه برای اجرای خط لوله خود، از داشبورد KFP دیدن کنید. کلیک بر روی زبانه آزمایش در سمت چپ، و همه اجرا می شود در صفحه آزمایش. شما باید بتوانید آخرین اجرا را تحت نام خط لوله خود پیدا کنید.

مرحله 6. اجزاء را برای آموزش اضافه کنید.

در این مرحله، شما قطعات برای آموزش و اعتبار مدل از جمله اضافه کردن Transform ، Trainer ، Resolver ، Evaluator و Pusher .

دوبار کلیک کنید برای باز pipeline.py . پیدا کردن و کامنت 5 خط که اضافه کردن Transform ، Trainer ، Resolver ، Evaluator و Pusher به خط لوله. (نکته: جستجو برای TODO(step 6): )

همانطور که قبلا انجام دادید، اکنون باید خط لوله موجود را با تعریف خط لوله اصلاح شده به روز کنید. دستورالعمل همان مرحله 5. به روز رسانی این خط لوله با استفاده از می tfx pipeline update ، و ایجاد یک اجرا اعدام با استفاده از 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.

هنگامی که این اجرای اجرا با موفقیت به پایان رسید، اکنون اولین خط لوله TFX خود را در خطوط لوله پلتفرم هوش مصنوعی ایجاد کرده و اجرا کرده اید!

مرحله 7. (اختیاری) سعی کنید BigQueryExampleGen

BigQuery مشاهده بدون سرور، بسیار مقیاس پذیر، و مقرون به صرفه انبار داده ابر است. BigQuery می تواند به عنوان منبعی برای مثال های آموزشی در TFX استفاده شود. در این مرحله، ما اضافه خواهد شد BigQueryExampleGen به خط لوله.

دوبار کلیک کنید برای باز pipeline.py . اظهار نظر از CsvExampleGen و کامنت خط که ایجاد یک نمونه از BigQueryExampleGen . شما همچنین نیاز به کامنت query استدلال از create_pipeline تابع.

ما نیاز به مشخص کنید که کدام پروژه GCP برای استفاده برای BigQuery مشاهده، و این است که با تنظیم انجام --project در beam_pipeline_args در هنگام ایجاد یک خط لوله است.

دوبار کلیک کنید برای باز configs.py . کامنت تعریف GOOGLE_CLOUD_REGION ، BIG_QUERY_WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGS و BIG_QUERY_QUERY . شما باید مقدار منطقه را در این فایل با مقادیر صحیح پروژه GCP خود جایگزین کنید.

دایرکتوری را یک سطح به بالا تغییر دهید. روی نام دایرکتوری بالای لیست فایل کلیک کنید. نام دایرکتوری به نام خط لوله است که است که my_pipeline اگر شما تغییر نکرده است.

دوبار کلیک کنید برای باز kubeflow_runner.py . دو استدلال کامنت، query و beam_pipeline_args ، برای create_pipeline تابع.

اکنون خط لوله آماده استفاده از BigQuery به عنوان منبع نمونه است. خط لوله را مانند قبل به روز کنید و یک اجرای جدید مانند مراحل 5 و 6 ایجاد کنید.

!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. (اختیاری) سعی کنید Dataflow با KFP

چند TFX قطعات با استفاده از آپاچی پرتو برای اجرای خط لوله داده موازی، و به این معنی که شما می توانید داده های حجم کار پردازش با استفاده از توزیع گوگل ابر Dataflow . در این مرحله، ارکستراتور Kubeflow را تنظیم می کنیم تا از جریان داده به عنوان پشتیبان پردازش داده برای Apache Beam استفاده کند.

دوبار کلیک کنید pipeline به دایرکتوری تغییر، و دوبار کلیک کنید تا باز configs.py . کامنت تعریف GOOGLE_CLOUD_REGION و DATAFLOW_BEAM_PIPELINE_ARGS .

دایرکتوری را یک سطح به بالا تغییر دهید. روی نام دایرکتوری بالای لیست فایل کلیک کنید. نام دایرکتوری به نام خط لوله است که است که my_pipeline اگر شما تغییر نکرده است.

دوبار کلیک کنید برای باز kubeflow_runner.py . کامنت beam_pipeline_args . (همچنین مطمئن شوید برای اظهار نظر از فعلی beam_pipeline_args که شما در مرحله 7. اضافه شده است)

اکنون خط لوله آماده استفاده از Dataflow است. خط لوله را به روز کنید و مانند مراحل 5 و 6 یک اجرای اجرایی ایجاد کنید.

!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.

شما می توانید شغل خود را در Dataflow پیدا Dataflow در ابر کنسول .

مرحله 9. (اختیاری) سعی کنید ابر AI بستر های نرم افزاری آموزش و پیش بینی با KFP

در تعامل TFX با چندین خدمات GCP مدیریت، مانند ابر AI بستر های نرم افزاری برای آموزش و پیش بینی . شما می توانید خود را تنظیم Trainer جزء برای استفاده از Cloud AI بستر های نرم افزاری آموزش، خدمات مدیریت برای آموزش مدل ML. علاوه بر این، هنگامی که مدل خود را ساخته شده است و آماده به خدمت گرفته شود، شما می توانید مدل خود را به ابر AI بستر های نرم افزاری پیش بینی برای خدمت به فشار. در این مرحله، ما ما را تنظیم Trainer و Pusher جزء به استفاده از خدمات ابر AI بستر های نرم افزاری.

قبل از ویرایش فایل های، برای بار اول شما ممکن است به فعال کردن AI بستر های نرم افزاری آموزش و پیش بینی API.

دوبار کلیک کنید pipeline به دایرکتوری تغییر، و دوبار کلیک کنید تا باز configs.py . کامنت تعریف GOOGLE_CLOUD_REGION ، GCP_AI_PLATFORM_TRAINING_ARGS و GCP_AI_PLATFORM_SERVING_ARGS . ما سفارشی ساخته شده تصویر ظرف ما را برای آموزش یک مدل در ابر AI بستر های نرم افزاری آموزش استفاده خواهد کرد، بنابراین ما باید به مجموعه masterConfig.imageUri در GCP_AI_PLATFORM_TRAINING_ARGS به همان مقدار به عنوان CUSTOM_TFX_IMAGE کنید.

تغییر دایرکتوری یک سطح بالا، و دوبار کلیک کنید تا باز kubeflow_runner.py . کامنت ai_platform_training_args و ai_platform_serving_args .

خط لوله را به روز کنید و مانند مراحل 5 و 6 یک اجرای اجرایی ایجاد کنید.

!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.

شما می توانید شغل خود را در آموزش پیدا ابر AI بستر های نرم افزاری جابز . اگر خط لوله خود را با موفقیت انجام شد، شما می توانید مدل خود را در پیدا مدل های ابر AI بستر های نرم افزاری .

مرحله 10. داده های خود را وارد خط لوله کنید

ما یک خط لوله برای یک مدل با استفاده از مجموعه داده تاکسی شیکاگو ایجاد کردیم. اکنون زمان آن است که داده های خود را در خط لوله قرار دهید.

داده های شما را می توان در هر جایی که خط لوله شما به آن دسترسی داشته باشد ذخیره کرد، از جمله GCS یا BigQuery. برای دسترسی به داده های خود باید تعریف خط لوله را تغییر دهید.

  1. اگر اطلاعات خود را در فایل های ذخیره شده، تغییر DATA_PATH در kubeflow_runner.py یا local_runner.py و آن را به محل فایل های خود را. اگر اطلاعات خود را در BigQuery مشاهده ذخیره می شود، تغییر BIG_QUERY_QUERY در pipeline/configs.py به درستی پرس و جو برای داده های خود را.
  2. اضافه کردن ویژگی های در models/features.py .
  3. اصلاح models/preprocessing.py به تبدیل داده های ورودی برای آموزش .
  4. اصلاح models/keras/model.py و models/keras/constants.py به توصیف مدل ML خود را .
    • شما می توانید از یک مدل مبتنی بر برآوردگر نیز استفاده کنید. تغییر RUN_FN ثابت به models.estimator.model.run_fn در pipeline/configs.py .

لطفا برای دیدن راهنمای جزء ترینر برای معرفی بیشتر است.

تمیز کردن

برای پاک کردن تمام منابع گوگل ابر استفاده در این پروژه، شما می توانید این پروژه گوگل ابر حذف شما برای آموزش استفاده می شود.

همچنین، می‌توانید با مراجعه به هر کنسول، منابع فردی را پاکسازی کنید: