टेम्प्लेट का उपयोग करके एक TFX पाइपलाइन बनाएं

परिचय

इस दस्तावेज़ में TensorFlow विस्तारित का उपयोग कर टेम्पलेट्स जो TFX अजगर पैकेज के साथ प्रदान की जाती हैं (TFX) पाइपलाइन बनाने के लिए निर्देश प्रदान करेगा। कई निर्देश लिनक्स शेल कमांड हैं, जो एआई प्लेटफॉर्म नोटबुक इंस्टेंस पर चलेंगे। इसी Jupyter नोटबुक कोड कोशिकाएं होती हैं जो उपयोग करने वालों के आदेशों को लागू ! दिए गए है।

आप का उपयोग कर एक पाइपलाइन का निर्माण होगा टैक्सी डाटासेट Trips शिकागो शहर के द्वारा जारी किया। हम आपको इस पाइपलाइन को आधार रेखा के रूप में उपयोग करके अपने डेटासेट का उपयोग करके अपनी पाइपलाइन बनाने का प्रयास करने के लिए दृढ़ता से प्रोत्साहित करते हैं।

चरण 1. अपना परिवेश सेट करें।

एआई प्लेटफॉर्म पाइपलाइन एक पाइपलाइन बनाने के लिए विकास का माहौल तैयार करेगी, और नई बनी पाइपलाइन को चलाने के लिए एक क्यूबफ्लो पाइपलाइन क्लस्टर तैयार करेगी।

स्थापित करें 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"

आइए टीएफएक्स के संस्करणों की जांच करें।

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

ऐ मंच पाइपलाइन में, TFX का उपयोग कर एक की मेजबानी की Kubernetes वातावरण में चल रहा है Kubeflow पाइपलाइन

आइए Kubeflow पाइपलाइन का उपयोग करने के लिए कुछ पर्यावरण चर सेट करें।

सबसे पहले, अपना 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 क्लाउड कंसोल में "AI प्लेटफ़ॉर्म> पाइपलाइन" मेनू के अंतर्गत एक्सेस कर सकते हैं। KFP क्लस्टर का "समापन बिंदु" पाइपलाइन डैशबोर्ड के URL से पाया जा सकता है, या आप इसे गेटिंग स्टार्ट पेज के URL से प्राप्त कर सकते हैं जहाँ आपने यह नोटबुक लॉन्च की थी। चलो एक बनाने ENDPOINT वातावरण चर और KFP क्लस्टर समाप्ति बिंदु पर सेट करें। ENDPOINT में URL का केवल होस्टनाम भाग होना चाहिए। उदाहरण के लिए, यदि KFP डैशबोर्ड का URL है <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 वर्तमान जीसीपी परियोजना के तहत।

# 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. अपनी कॉपी की गई स्रोत फ़ाइलों को ब्राउज़ करें

टीएफएक्स टेम्पलेट पाइपलाइन के उत्पादन का विश्लेषण करने के लिए पायथन स्रोत कोड, नमूना डेटा और ज्यूपिटर नोटबुक सहित पाइपलाइन बनाने के लिए बुनियादी मचान फाइलें प्रदान करता है। taxi टेम्पलेट एक ही शिकागो टैक्सी डाटासेट और के रूप में एमएल मॉडल का उपयोग करता वायु प्रवाह ट्यूटोरियल

यहां प्रत्येक पायथन फाइल का संक्षिप्त परिचय दिया गया है।

  • pipeline - यह निर्देशिका पाइपलाइन की परिभाषा में शामिल है
    • configs.py - पाइपलाइन धावकों के लिए आम स्थिरांक को परिभाषित करता है
    • pipeline.py - परिभाषित करता है TFX घटकों और एक पाइप लाइन
  • models - यह निर्देशिका एमएल मॉडल परिभाषाओं में शामिल है।
    • features.py , features_test.py - परिभाषित करता है मॉडल के लिए सुविधाएँ
    • preprocessing.py , preprocessing_test.py - परिभाषित करता है का उपयोग कर नौकरियों preprocessing tf::Transform
    • estimator - यह निर्देशिका एक अनुमानक आधारित मॉडल होते हैं।
      • constants.py - मॉडल की परिभाषित स्थिरांक
      • model.py , model_test.py - DNN मॉडल को परिभाषित करता है TF आकलनकर्ता का उपयोग कर
    • keras - यह निर्देशिका एक Keras आधारित मॉडल होते हैं।
      • constants.py - मॉडल की परिभाषित स्थिरांक
      • model.py , model_test.py - परिभाषित करता है Keras का उपयोग कर DNN मॉडल
  • 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 पाइप लाइन में अवयव के रूप में प्रत्येक रन के लिए आउटपुट उत्पन्न होगा एमएल मेटाडाटा कलाकृतियों , और वे कहीं संग्रहीत किया जाना चाहिए। आप किसी भी भंडारण का उपयोग कर सकते हैं जिसे केएफपी क्लस्टर एक्सेस कर सकता है, और इस उदाहरण के लिए हम Google क्लाउड स्टोरेज (जीसीएस) का उपयोग करेंगे। डिफ़ॉल्ट 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 डैशबोर्ड पर जाने की सलाह देते हैं। आप केएफपी डैशबोर्ड को Google क्लाउड कंसोल में क्लाउड एआई प्लेटफॉर्म पाइपलाइन मेनू से एक्सेस कर सकते हैं। एक बार जब आप डैशबोर्ड पर जाते हैं, तो आप पाइपलाइन ढूंढ पाएंगे, और पाइपलाइन के बारे में जानकारी का खजाना एक्सेस कर पाएंगे। उदाहरण के लिए, तो आप प्रयोग मेनू के तहत अपनी दौड़ पा सकते हैं, और जब आप प्रयोगों के तहत अपने निष्पादन रन खोलने आप कलाकृतियों मेनू के तहत पाइप लाइन से अपने सभी कलाकृतियों मिल सकता है।

विफलता के प्रमुख स्रोतों में से एक अनुमति संबंधी समस्याएं हैं। कृपया सुनिश्चित करें कि आपके KFP क्लस्टर के पास Google क्लाउड API को एक्सेस करने की अनुमति है। यह विन्यस्त किया जा सकता है जब आप GCP में एक KFP क्लस्टर बनाने , या देखना समस्या निवारण दस्तावेज़ GCP में

चरण 5. डेटा सत्यापन के लिए घटक जोड़ें।

इस चरण में, आप सहित डेटा सत्यापन के लिए घटकों जोड़ देगा StatisticsGen , SchemaGen , और ExampleValidator । आप डेटा सत्यापन में रुचि रखते हैं, कृपया देखें Tensorflow डेटा मान्यता के साथ आरंभ करें

करने के लिए परिवर्तन निर्देशिका के लिए डबल क्लिक करें pipeline और खुले करने के लिए फिर डबल क्लिक करें pipeline.py । ढूँढें और 3 लाइनों जो जोड़ने uncomment 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 लाइनों जो जोड़ने uncomment 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.

जब यह निष्पादन रन सफलतापूर्वक समाप्त हो जाता है, तो अब आपने एआई प्लेटफॉर्म पाइपलाइनों में अपनी पहली टीएफएक्स पाइपलाइन बनाई और चलाई है!

चरण 7. (वैकल्पिक) BigQueryExampleGen प्रयास करें

BigQuery एक serverless, अत्यधिक स्केलेबल, और लागत प्रभावी क्लाउड डेटा गोदाम है। BigQuery को TFX में प्रशिक्षण उदाहरणों के स्रोत के रूप में उपयोग किया जा सकता है। इस चरण में, हम जोड़ देगा BigQueryExampleGen पाइप लाइन के लिए।

खुला करने के लिए डबल क्लिक करें pipeline.py । बाहर टिप्पणी CsvExampleGen और टिप्पणी हटाएं रेखा है जो की एक आवृत्ति बनाता BigQueryExampleGen । तुम भी uncomment की जरूरत 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. (वैकल्पिक) KFP साथ Dataflow प्रयास करें

कई TFX अवयव अपाचे बीम का उपयोग करता है डेटा समानांतर पाइपलाइनों को लागू करने, और इसका मतलब है कि आप का उपयोग कर डेटा प्रसंस्करण वर्कलोड वितरित कर सकते हैं Google मेघ Dataflow । इस चरण में, हम अपाचे बीम के लिए डेटा प्रोसेसिंग बैक-एंड के रूप में डेटाफ्लो का उपयोग करने के लिए क्यूबफ्लो ऑर्केस्ट्रेटर सेट करेंगे।

डबल-क्लिक करें pipeline परिवर्तन निर्देशिका के लिए, और खुले को डबल क्लिक करें configs.py । टिप्पणी हटाएं की परिभाषा GOOGLE_CLOUD_REGION , और DATAFLOW_BEAM_PIPELINE_ARGS

निर्देशिका को एक स्तर ऊपर बदलें। फ़ाइल सूची के ऊपर निर्देशिका के नाम पर क्लिक करें। निर्देशिका का नाम पाइपलाइन जो है का नाम है my_pipeline यदि आप नहीं बदला।

खुला करने के लिए डबल क्लिक करें kubeflow_runner.py । टिप्पणी हटाएं beam_pipeline_args । (यह भी सुनिश्चित करें वर्तमान बाहर टिप्पणी करने के लिए बनाने के beam_pipeline_args कि आप चरण 7 में जोड़ा)

अब पाइपलाइन डेटाफ्लो का उपयोग करने के लिए तैयार है। पाइपलाइन को अपडेट करें और एक निष्पादन रन बनाएं जैसा कि हमने चरण 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. (वैकल्पिक) बादल ऐ मंच प्रशिक्षण और KFP साथ भविष्यवाणी की कोशिश करो

इस तरह के रूप में कई कामयाब जीसीपी सेवाओं के साथ TFX interoperates प्रशिक्षण और पूर्वानुमान के लिए बादल ऐ मंच । आप अपने सेट कर सकते हैं Trainer घटक बादल ऐ मंच प्रशिक्षण, एमएल मॉडल के प्रशिक्षण का एक प्रबंधित सेवा का उपयोग करने के। यही नहीं, जब अपने मॉडल बनाया गया है और तैयार है दिखाए जाने के लिए, आप अपने मॉडल बादल ऐ मंच भविष्यवाणी करने के लिए की सेवा के लिए धक्का कर सकते हैं। इस चरण में, हम अपने सेट हो जाएगा Trainer और Pusher घटक बादल ऐ प्लेटफार्म सेवाओं का उपयोग करने।

फ़ाइलों का संपादन से पहले, आपको ऐ मंच प्रशिक्षण और पूर्वानुमान API की सक्षम करने के लिए हो सकता है।

डबल-क्लिक करें pipeline परिवर्तन निर्देशिका के लिए, और खुले को डबल क्लिक करें configs.py । टिप्पणी हटाएं की परिभाषा GOOGLE_CLOUD_REGION , GCP_AI_PLATFORM_TRAINING_ARGS और GCP_AI_PLATFORM_SERVING_ARGS । हम अपने कस्टम निर्मित कंटेनर छवि का उपयोग बादल ऐ मंच प्रशिक्षण में एक मॉडल को प्रशिक्षित करने जाएगा, इसलिए हम स्थापित करना चाहिए 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.

आप में अपने प्रशिक्षण रोजगार प्राप्त कर सकते बादल ऐ मंच नौकरियां । यदि आपका पाइपलाइन सफलतापूर्वक पूरा कर लिया है, तो आप में अपने मॉडल पा सकते हैं बादल ऐ प्लेटफार्म मॉडल

चरण 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 करने का वर्णन अपने एमएल मॉडल
    • आप एक अनुमानक आधारित मॉडल का भी उपयोग कर सकते हैं। बदलें RUN_FN लगातार करने के लिए models.estimator.model.run_fn में pipeline/configs.py

कृपया देखें ट्रेनर घटक गाइड अधिक परिचय के लिए।

सफाई करना

इस परियोजना में इस्तेमाल सभी Google क्लाउड संसाधनों को साफ करने के लिए, आप कर सकते हैं Google मेघ प्रोजेक्ट को हटाने आप ट्यूटोरियल के लिए इस्तेमाल किया।

वैकल्पिक रूप से, आप प्रत्येक कंसोल पर जाकर व्यक्तिगत संसाधनों को साफ़ कर सकते हैं: