স্টাব এক্সিকিউটর ব্যবহার করে পাইপলাইন পরীক্ষা করা হচ্ছে

ভূমিকা

এই টিউটোরিয়ালটি চালিয়ে যাওয়ার জন্য আপনাকে ধাপ 6 পর্যন্ত template.ipynb টিউটোরিয়ালটি সম্পূর্ণ করতে হবে।

এই নথিটি BaseStubExecuctor ব্যবহার করে একটি TensorFlow Extended (TFX) পাইপলাইন পরীক্ষা করার নির্দেশনা প্রদান করবে, যা গোল্ডেন টেস্ট ডেটা ব্যবহার করে জাল আর্টিফ্যাক্ট তৈরি করে। এটি ব্যবহারকারীদের জন্য নির্বাহকদের প্রতিস্থাপন করার উদ্দেশ্যে যা তারা পরীক্ষা করতে চায় না যাতে তারা প্রকৃত নির্বাহক চালানো থেকে সময় বাঁচাতে পারে। tfx.experimental.pipeline_testing.base_stub_executor এর অধীনে TFX পাইথন প্যাকেজ সহ স্টাব এক্সিকিউটর প্রদান করা হয়।

এই টিউটোরিয়ালটি 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. MLMD-এর সাথে সংযোগের জন্য পোর্ট-ফরোয়ার্ডিং সেট আপ করুন: 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 প্রকল্প আইডি দিয়ে <gcp_project_id> প্রতিস্থাপন করুন।

$host এবং $port হল MLMD এর সাথে সংযোগ করার জন্য মেটাডেটা grpc সার্ভারের হোস্টনাম এবং পোর্ট। $port আপনি পোর্ট-ফরোয়ার্ডিংয়ের জন্য যে পোর্ট নম্বর ব্যবহার করেছেন তাতে সেট করা উচিত এবং আপনি হোস্টনামের জন্য "স্থানীয় হোস্ট" সেট করতে পারেন।

template.ipynb টিউটোরিয়ালে, পাইপলাইনের নামটি ডিফল্টরূপে "my_pipeline" হিসাবে সেট করা হয়, তাই pipeline_name="my_pipeline" সেট করুন। টেমপ্লেট টিউটোরিয়াল চালানোর সময় আপনি যদি পাইপলাইনের নাম পরিবর্তন করে থাকেন, তাহলে আপনাকে সেই অনুযায়ী --pipeline_name পরিবর্তন করতে হবে।

2. Kubeflow DAG রানারে Stub Executors সক্ষম করুন

প্রথমে, নিশ্চিত করুন যে পূর্বনির্ধারিত টেমপ্লেটটি tfx template copy CLI কমান্ড ব্যবহার করে আপনার প্রকল্প ডিরেক্টরিতে অনুলিপি করা হয়েছে। কপি করা সোর্স ফাইলগুলিতে নিম্নলিখিত দুটি ফাইল সম্পাদনা করা প্রয়োজন।

  1. kubeflow_dag_runner.py যে ডিরেক্টরিতে অবস্থিত সেখানে stub_component_launcher.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 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 Engine