स्टब एक्ज़ीक्यूटर्स का उपयोग करके पाइपलाइन का परीक्षण करना

परिचय

इस ट्यूटोरियल को आगे बढ़ाने के लिए आपको चरण 6 तक template.ipynb ट्यूटोरियल पूरा करना चाहिए।

यह दस्तावेज़ BaseStubExecuctor का उपयोग करके TensorFlow एक्सटेंडेड (TFX) पाइपलाइन का परीक्षण करने के निर्देश प्रदान करेगा, जो गोल्डन टेस्ट डेटा का उपयोग करके नकली कलाकृतियाँ उत्पन्न करता है। इसका उद्देश्य उपयोगकर्ताओं के लिए उन निष्पादकों को प्रतिस्थापित करना है जिनका वे परीक्षण नहीं करना चाहते हैं ताकि वे वास्तविक निष्पादकों को चलाने से समय बचा सकें। स्टब निष्पादक को tfx.experimental.pipeline_testing.base_stub_executor के अंतर्गत TFX Python पैकेज प्रदान किया जाता है।

यह ट्यूटोरियल template.ipynb ट्यूटोरियल के विस्तार के रूप में कार्य करता है, इस प्रकार आप शिकागो शहर द्वारा जारी टैक्सी ट्रिप डेटासेट का भी उपयोग करेंगे। हम आपको स्टब निष्पादकों का उपयोग करने से पहले घटकों को संशोधित करने का प्रयास करने के लिए दृढ़ता से प्रोत्साहित करते हैं।

1. Google क्लाउड स्टोरेज में पाइपलाइन आउटपुट रिकॉर्ड करें

हमें सबसे पहले पाइपलाइन आउटपुट को रिकॉर्ड करने की आवश्यकता है ताकि स्टब निष्पादक रिकॉर्ड किए गए आउटपुट से कलाकृतियों की प्रतिलिपि बना सकें।

चूँकि यह ट्यूटोरियल मानता है कि आपने चरण 6 तक template.ipynb पूरा कर लिया है, एक सफल पाइपलाइन रन को MLMD में सहेजा जाना चाहिए। एमएलएमडी में निष्पादन जानकारी को जीआरपीसी सर्वर का उपयोग करके एक्सेस किया जा सकता है।

एक टर्मिनल खोलें और निम्नलिखित कमांड चलाएँ:

  1. उचित क्रेडेंशियल के साथ एक kubeconfig फ़ाइल बनाएं: bash gcloud container clusters get-credentials $cluster_name --zone $compute_zone --project $gcp_project_id $compute_zone gcp इंजन के लिए क्षेत्र है और $gcp_project_id आपके GCP प्रोजेक्ट की प्रोजेक्ट आईडी है।

  2. एमएलएमडी से कनेक्ट करने के लिए पोर्ट-फ़ॉरवर्डिंग सेट करें: bash nohup kubectl port-forward deployment/metadata-grpc-deployment -n $namespace $port:8080 & $namespace क्लस्टर नेमस्पेस है और $port कोई भी अप्रयुक्त पोर्ट है जिसका उपयोग किया जाएगा अग्रेषण पोर्ट।

  3. tfx GitHub रिपॉजिटरी को क्लोन करें। tfx निर्देशिका के अंदर, निम्न आदेश चलाएँ:

python tfx/experimental/pipeline_testing/pipeline_recorder.py \
--output_dir=gs://<gcp_project_id>-kubeflowpipelines-default/testdata \
--host=$host \
--port=$port \
--pipeline_name=$pipeline_name

$output_dir Google क्लाउड स्टोरेज में एक पथ पर सेट किया जाना चाहिए जहां पाइपलाइन आउटपुट रिकॉर्ड किया जाना है, इसलिए <gcp_project_id> GCP प्रोजेक्ट आईडी से बदलना सुनिश्चित करें।

$host और $port MLMD से कनेक्ट करने के लिए मेटाडेटा GRPC सर्वर का होस्टनाम और पोर्ट हैं। $port उस पोर्ट नंबर पर सेट किया जाना चाहिए जिसका उपयोग आपने पोर्ट-फ़ॉरवर्डिंग के लिए किया था और आप होस्टनाम के लिए "लोकलहोस्ट" सेट कर सकते हैं।

template.ipynb ट्यूटोरियल में, पाइपलाइन का नाम डिफ़ॉल्ट रूप से "my_pipeline" के रूप में सेट किया गया है, इसलिए pipeline_name="my_pipeline" सेट करें। यदि आपने टेम्प्लेट ट्यूटोरियल चलाते समय पाइपलाइन नाम को संशोधित किया है, तो आपको तदनुसार --pipeline_name को संशोधित करना चाहिए।

2. क्यूबफ़्लो डीएजी रनर में स्टब एक्ज़ीक्यूटर्स को सक्षम करें

सबसे पहले, सुनिश्चित करें कि पूर्वनिर्धारित टेम्पलेट को tfx template copy सीएलआई कमांड का उपयोग करके आपके प्रोजेक्ट निर्देशिका में कॉपी किया गया है। कॉपी की गई स्रोत फ़ाइलों में निम्नलिखित दो फ़ाइलों को संपादित करना आवश्यक है।

  1. उस निर्देशिका में stub_component_launcher.py नामक एक फ़ाइल बनाएं जहां kubeflow_dag_runner.py स्थित है, और इसमें निम्नलिखित सामग्री डालें।

    from tfx.experimental.pipeline_testing import base_stub_component_launcher
    from pipeline import configs
    
    class StubComponentLauncher(
        base_stub_component_launcher.BaseStubComponentLauncher):
      pass
    
    # GCS directory where KFP outputs are recorded
    test_data_dir = "gs://{}/testdata".format(configs.GCS_BUCKET_NAME)
    # TODO: customize self.test_component_ids to test components, replacing other
    # component executors with a BaseStubExecutor.
    test_component_ids = ['Trainer']
    StubComponentLauncher.initialize(
        test_data_dir=test_data_dir,
        test_component_ids=test_component_ids)
    
  2. घटक आईडी को परीक्षण किए जाने वाले घटक आईडी की सूची के रूप में सेट करें (दूसरे शब्दों में, अन्य घटकों के निष्पादकों को BaseStubExecutor से बदल दिया जाता है)।

  3. kubeflow_dag_runner.py खोलें। हमारे द्वारा अभी जोड़े गए StubComponentLauncher क्लास का उपयोग करने के लिए शीर्ष पर निम्नलिखित आयात विवरण जोड़ें।

    import stub_component_launcher
    
  4. kubeflow_dag_runner.py में, स्टब निष्पादकों के लॉन्च को सक्षम करने के लिए KubeflowDagRunnerConfig के supported_launcher_class में StubComponentLauncher क्लास जोड़ें:

    runner_config = kubeflow_dag_runner.KubeflowDagRunnerConfig(
        supported_launcher_classes=[
            stub_component_launcher.StubComponentLauncher
        ],
    

3. स्टब निष्पादकों के साथ पाइपलाइन को अपडेट करें और चलाएं

स्टब निष्पादकों के साथ संशोधित पाइपलाइन परिभाषा के साथ मौजूदा पाइपलाइन को अद्यतन करें।

tfx pipeline update --pipeline-path=kubeflow_dag_runner.py \
  --endpoint=$endpoint --engine=kubeflow

$endpoint आपके KFP क्लस्टर एंडपॉइंट पर सेट किया जाना चाहिए।

अपनी अद्यतन पाइपलाइन का नया निष्पादन रन बनाने के लिए निम्न कमांड चलाएँ।

tfx run create --pipeline-name $pipeline_name --endpoint=$endpoint \
  --engine=kubeflow

सफाई

पृष्ठभूमि में पोर्ट-फ़ॉरवर्डिंग तक पहुंचने के लिए कमांड fg उपयोग करें और फिर समाप्त करने के लिए Ctrl-C का उपयोग करें। आप gsutil -m rm -R $output_dir का उपयोग करके रिकॉर्ड किए गए पाइपलाइन आउटपुट वाली निर्देशिका को हटा सकते हैं।

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

वैकल्पिक रूप से, आप प्रत्येक कंसोल पर जाकर व्यक्तिगत संसाधनों को साफ़ कर सकते हैं: - Google क्लाउड स्टोरेज - Google कंटेनर रजिस्ट्री - Google Kubernetes इंजन