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

परिचय

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

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

हम एक पाइपलाइन का निर्माण करेंगे जो स्थानीय वातावरण पर चलती है। आप Kubeflow वाद्यवृन्दकार Google मेघ पर उपयोग में रुचि रखते हैं, कृपया देखें पर बादल ऐ मंच पाइपलाइन ट्यूटोरियल TFX

आवश्यक शर्तें

  • लिनक्स / मैकोज़
  • पायथन>= 3.5.3

आप द्वारा आसानी से सभी आवश्यक शर्तें प्राप्त कर सकते हैं गूगल Colab पर इस नोटबुक चल रहा

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

इस पूरे दस्तावेज़ में, हम दो बार कमांड प्रस्तुत करेंगे। एक बार कॉपी-एंड-पेस्ट-रेडी शेल कमांड के रूप में, एक बार ज्यूपिटर नोटबुक सेल के रूप में। यदि आप Colab का उपयोग कर रहे हैं, तो बस शेल स्क्रिप्ट ब्लॉक को छोड़ दें और नोटबुक सेल निष्पादित करें।

पाइपलाइन बनाने के लिए आपको विकास का माहौल तैयार करना चाहिए।

स्थापित करें tfx अजगर पैकेज। हम के उपयोग की सलाह virtualenv स्थानीय वातावरण में। आप अपने परिवेश को स्थापित करने के लिए निम्नलिखित शेल स्क्रिप्ट स्निपेट का उपयोग कर सकते हैं।

# Create a virtualenv for tfx.
virtualenv -p python3 venv
source venv/bin/activate
# Install python packages.
python -m pip install --upgrade "tfx<2"

अगर आप कोलाब का इस्तेमाल कर रहे हैं:

import sys
!{sys.executable} -m pip install --upgrade "tfx<2"

त्रुटि: कुछ-पैकेज 0.some_version.1 के लिए अन्य-पैकेज की आवश्यकता है!=2.0.,<3,>=1.15, लेकिन आपके पास अन्य-पैकेज 2.0.0 होगा जो असंगत है।

कृपया इस समय इन त्रुटियों पर ध्यान न दें।

# Set `PATH` to include user python binary directory.
HOME=%env HOME
PATH=%env PATH
%env PATH={PATH}:{HOME}/.local/bin
env: PATH=/tmpfs/src/tf_docs_env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin:/opt/android-studio/current/bin:/usr/local/go/bin:/usr/local/go/packages/bin:/opt/kubernetes/client/bin/:/home/kbuilder/.local/bin:/home/kbuilder/.local/bin

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

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

और, यह हो गया है। हम एक पाइपलाइन बनाने के लिए तैयार हैं।

चरण 2. पूर्वनिर्धारित टेम्पलेट को अपनी परियोजना निर्देशिका में कॉपी करें।

इस चरण में, हम एक पूर्वनिर्धारित टेम्पलेट से अतिरिक्त फ़ाइलों की प्रतिलिपि बनाकर एक कार्यशील पाइपलाइन प्रोजेक्ट निर्देशिका और फ़ाइलें बनाएंगे।

आप बदल कर अपनी पाइप लाइन एक अलग नाम दे सकते हैं PIPELINE_NAME नीचे। यह प्रोजेक्ट डायरेक्टरी का नाम भी बन जाएगा जहां आपकी फाइलें रखी जाएंगी।

export PIPELINE_NAME="my_pipeline"
export PROJECT_DIR=~/tfx/${PIPELINE_NAME}
PIPELINE_NAME="my_pipeline"
import os
# Create a project directory under Colab content directory.
PROJECT_DIR=os.path.join(os.sep,"content",PIPELINE_NAME)

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

tfx template copy CLI आदेश प्रतियां अपनी परियोजना निर्देशिका में टेम्पलेट फ़ाइलों पूर्वनिर्धारित।

tfx template copy \
   --pipeline_name="${PIPELINE_NAME}" \
   --destination_path="${PROJECT_DIR}" \
   --model=taxi
!tfx template copy \
  --pipeline_name={PIPELINE_NAME} \
  --destination_path={PROJECT_DIR} \
  --model=taxi
CLI
Copying taxi pipeline template
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 66, 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 171, in copy_template
    replace_dict)
  File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/tools/cli/handler/template_handler.py", line 110, in _copy_and_replace_placeholder_dir
    fileio.makedirs(dst)
  File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/dsl/io/fileio.py", line 78, in makedirs
    _get_filesystem(path).makedirs(path)
  File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/dsl/io/plugins/tensorflow_gfile.py", line 71, in makedirs
    tf.io.gfile.makedirs(path)
  File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tensorflow/python/lib/io/file_io.py", line 514, in recursive_create_dir_v2
    _pywrap_file_io.RecursivelyCreateDir(compat.path_to_bytes(path))
tensorflow.python.framework.errors_impl.PermissionDeniedError: /content; Permission denied

इस नोटबुक में कार्यशील निर्देशिका संदर्भ को प्रोजेक्ट निर्देशिका में बदलें।

cd ${PROJECT_DIR}
%cd {PROJECT_DIR}
[Errno 2] No such file or directory: '/content/my_pipeline'
/tmpfs/src/temp/docs/tutorials/tfx

चरण 3. अपनी कॉपी की गई स्रोत फ़ाइलों को ब्राउज़ करें।

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

Google Colab में, आप बाईं ओर फ़ोल्डर आइकन पर क्लिक करके फ़ाइलें ब्राउज़ कर सकते हैं। फ़ाइलें परियोजना Directoy, जिसका नाम है के तहत कॉपी किया जाना चाहिए my_pipeline इस मामले में। आप निर्देशिका की सामग्री देखने के लिए निर्देशिका नामों पर क्लिक कर सकते हैं, और फ़ाइल नामों को खोलने के लिए डबल-क्लिक कर सकते हैं।

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

  • 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 विस्तार और जगह / साथ . . उदाहरण के लिए:

python -m models.features_test
{sys.executable} -m models.features_test
{sys.executable} -m models.keras.model_test
/tmpfs/src/tf_docs_env/bin/python: Error while finding module specification for 'models.features_test' (ModuleNotFoundError: No module named 'models')
/tmpfs/src/tf_docs_env/bin/python: Error while finding module specification for 'models.keras.model_test' (ModuleNotFoundError: No module named 'models')

चरण 4. अपनी पहली TFX पाइपलाइन चलाएँ

आप का उपयोग कर एक पाइप लाइन बना सकते हैं pipeline create आदेश।

tfx pipeline create --engine=local --pipeline_path=local_runner.py
tfx pipeline create --engine=local --pipeline_path=local_runner.py
CLI
Creating pipeline
Invalid pipeline path: local_runner.py

फिर, आपके द्वारा बनाए गए पाइप लाइन का उपयोग कर चला सकते हैं run create कमांड।

tfx run create --engine=local --pipeline_name="${PIPELINE_NAME}"
tfx run create --engine=local --pipeline_name={PIPELINE_NAME}
CLI
Creating a run for pipeline: my_pipeline
/tmpfs/src/tf_docs_env/bin/python: can't open file 'local_runner.py': [Errno 2] No such file or directory
Error while running "/tmpfs/src/tf_docs_env/bin/python local_runner.py"

यदि सफल, आप देखेंगे Component CsvExampleGen is finished. जब आप टेम्पलेट की प्रतिलिपि बनाते हैं, तो पाइपलाइन में केवल एक घटक, CsvExampleGen शामिल होता है।

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

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

हम में नकल पाइपलाइन परिभाषा को संशोधित करेगा pipeline/pipeline.py । यदि आप अपने स्थानीय परिवेश पर काम कर रहे हैं, तो फ़ाइल को संपादित करने के लिए अपने पसंदीदा संपादक का उपयोग करें। अगर आप Google Colab पर काम कर रहे हैं,

खुला के लिए छोड़ दिया पर फ़ोल्डर आइकन पर क्लिक Files दृश्य।

क्लिक करें my_pipeline निर्देशिका को खोलने और क्लिक करने के लिए pipeline खुला और डबल क्लिक करने के लिए निर्देशिका pipeline.py फ़ाइल खोलने के लिए।

ढूँढें और 3 लाइनों जो जोड़ने uncomment StatisticsGen , SchemaGen , और ExampleValidator पाइप लाइन के लिए। (सुझाव: युक्त टिप्पणियों को ढूंढना TODO(step 5): )।

आपका परिवर्तन कुछ ही सेकंड में अपने आप सहेज लिया जाएगा। सुनिश्चित करें कि * के सामने निशान pipeline.py टैब शीर्षक में गायब हो गया। Colab में फ़ाइल संपादक के लिए कोई सहेजें बटन या शॉर्टकट नहीं है। फ़ाइल संपादक में अजगर फ़ाइलें भी में क्रम पर्यावरण को बचाया जा सकता playground मोड।

अब आपको मौजूदा पाइपलाइन को संशोधित पाइपलाइन परिभाषा के साथ अद्यतन करने की आवश्यकता है। का प्रयोग करें tfx pipeline update अपने पाइप लाइन, के बाद अद्यतन करने के लिए आदेश tfx run create अपने अद्यतन पाइप लाइन का एक नया निष्पादन रन बनाने के लिए आदेश।

# Update the pipeline
tfx pipeline update --engine=local --pipeline_path=local_runner.py
# You can run the pipeline the same way.
tfx run create --engine local --pipeline_name "${PIPELINE_NAME}"
# Update the pipeline
tfx pipeline update --engine=local --pipeline_path=local_runner.py
# You can run the pipeline the same way.
tfx run create --engine local --pipeline_name {PIPELINE_NAME}
CLI
Updating pipeline
Invalid pipeline path: local_runner.py
CLI
Creating a run for pipeline: my_pipeline
/tmpfs/src/tf_docs_env/bin/python: can't open file 'local_runner.py': [Errno 2] No such file or directory
Error while running "/tmpfs/src/tf_docs_env/bin/python local_runner.py"

आपको जोड़े गए घटकों से आउटपुट लॉग देखने में सक्षम होना चाहिए। हमारे पाइप लाइन में उत्पादन कलाकृतियों बनाता tfx_pipeline_output/my_pipeline निर्देशिका।

चरण 6. प्रशिक्षण के लिए घटक जोड़ें।

इस चरण में, आप प्रशिक्षण और सहित मॉडल सत्यापन के लिए घटकों जोड़ देगा Transform , Trainer , Resolver , Evaluator , और Pusher

ओपन pipeline/pipeline.py । ढूँढें और टिप्पणी हटाएं 5 लाइनों जो जोड़ने Transform , Trainer , Resolver , Evaluator और Pusher पाइप लाइन के लिए। (युक्ति: अपनी TODO(step 6): )

जैसा कि आपने पहले किया था, अब आपको मौजूदा पाइपलाइन को संशोधित पाइपलाइन परिभाषा के साथ अद्यतन करने की आवश्यकता है। निर्देश चरण 5. अद्यतन पाइप लाइन का उपयोग कर के रूप में ही हैं tfx pipeline update , और का उपयोग कर एक निष्पादन रन बनाने tfx run create

tfx pipeline update --engine=local --pipeline_path=local_runner.py
tfx run create --engine local --pipeline_name "${PIPELINE_NAME}"
tfx pipeline update --engine=local --pipeline_path=local_runner.py
tfx run create --engine local --pipeline_name {PIPELINE_NAME}
CLI
Updating pipeline
Invalid pipeline path: local_runner.py
CLI
Creating a run for pipeline: my_pipeline
/tmpfs/src/tf_docs_env/bin/python: can't open file 'local_runner.py': [Errno 2] No such file or directory
Error while running "/tmpfs/src/tf_docs_env/bin/python local_runner.py"

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

चरण 7. (वैकल्पिक) BigQueryExampleGen की कोशिश करो।

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

आप एक की जरूरत है Google मेघ प्लेटफ़ॉर्म BigQuery उपयोग करने के लिए खाते। कृपया एक GCP प्रोजेक्ट तैयार करें।

अपनी परियोजना colab प्रमाणन पुस्तकालय या उपयोग करने के लिए लॉग इन gcloud उपयोगिता।

# You need `gcloud` tool to login in local shell environment.
gcloud auth login
if 'google.colab' in sys.modules:
  from google.colab import auth
  auth.authenticate_user()
  print('Authenticated')

TFX का उपयोग करके BigQuery संसाधनों तक पहुंचने के लिए आपको अपना GCP प्रोजेक्ट नाम निर्दिष्ट करना चाहिए। सेट GOOGLE_CLOUD_PROJECT अपने प्रोजेक्ट के नाम करने के लिए वातावरण चर।

export GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
# Set your project name below.
# WARNING! ENTER your project name before running this cell.
%env GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
env: GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE

ओपन pipeline/pipeline.py । बाहर टिप्पणी CsvExampleGen और टिप्पणी हटाएं रेखा है जो का एक उदाहरण बनाने BigQueryExampleGen । तुम भी टिप्पणी हटाएं करने की जरूरत है query का तर्क create_pipeline कार्य करते हैं।

हम जो GCP परियोजना BigQuery के लिए फिर से उपयोग करने के लिए निर्दिष्ट करने की आवश्यकता है, और इस सेटिंग के द्वारा किया जाता है --project में beam_pipeline_args जब एक पाइप लाइन का निर्माण।

ओपन pipeline/configs.py । टिप्पणी हटाएं की परिभाषा BIG_QUERY__WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGS और BIG_QUERY_QUERY । आपको इस फ़ाइल में प्रोजेक्ट आईडी और क्षेत्र मान को अपने GCP प्रोजेक्ट के लिए सही मानों से बदलना चाहिए।

ओपन local_runner.py । टिप्पणी हटाएं दो तर्क, query और beam_pipeline_args , create_pipeline () विधि के लिए।

अब पाइपलाइन एक उदाहरण स्रोत के रूप में BigQuery का उपयोग करने के लिए तैयार है। पाइपलाइन को अपडेट करें और एक रन बनाएं जैसा कि हमने चरण 5 और 6 में किया था।

tfx pipeline update --engine=local --pipeline_path=local_runner.py
tfx run create --engine local --pipeline_name {PIPELINE_NAME}
CLI
Updating pipeline
Invalid pipeline path: local_runner.py
CLI
Creating a run for pipeline: my_pipeline
/tmpfs/src/tf_docs_env/bin/python: can't open file 'local_runner.py': [Errno 2] No such file or directory
Error while running "/tmpfs/src/tf_docs_env/bin/python local_runner.py"

आगे क्या है: अपना डेटा पाइपलाइन में डालें।

हमने शिकागो टैक्सी डेटासेट का उपयोग करके एक मॉडल के लिए एक पाइपलाइन बनाई। अब आपके डेटा को पाइपलाइन में डालने का समय आ गया है।

आपका डेटा कहीं भी संग्रहीत किया जा सकता है जहां आपकी पाइपलाइन पहुंच सकती है, जिसमें 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

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