اختبار خط الأنابيب باستخدام Stub Executors

مقدمة

يجب عليك إكمال البرنامج التعليمي template.ipynb حتى الخطوة 6 لمتابعة هذا البرنامج التعليمي.

سيوفر هذا المستند تعليمات لاختبار خط أنابيب TensorFlow Extended (TFX) باستخدام BaseStubExecuctor ، الذي يقوم بإنشاء عناصر مزيفة باستخدام بيانات الاختبار الذهبية. هذا مخصص للمستخدمين لاستبدال المنفذين الذين لا يريدون اختبارهم حتى يتمكنوا من توفير الوقت من تشغيل المنفذين الفعليين. يتم توفير منفذ Stub مع حزمة TFX Python ضمن tfx.experimental.pipeline_testing.base_stub_executor .

يعد هذا البرنامج التعليمي بمثابة امتداد للبرنامج التعليمي template.ipynb ، وبالتالي ستستخدم أيضًا مجموعة بيانات Taxi Trips الصادرة عن مدينة شيكاغو. نحن نشجعك بشدة على محاولة تعديل المكونات قبل استخدام منفذي كعب الروتين.

1. قم بتسجيل مخرجات خط الأنابيب في Google Cloud Storage

نحتاج أولاً إلى تسجيل مخرجات خط الأنابيب حتى يتمكن منفذو كعب الروتين من نسخ القطع الأثرية من المخرجات المسجلة.

نظرًا لأن هذا البرنامج التعليمي يفترض أنك قد أكملت template.ipynb حتى الخطوة 6، فيجب أن يتم حفظ تشغيل خط أنابيب ناجح في MLMD . يمكن الوصول إلى معلومات التنفيذ في MLMD باستخدام خادم gRPC.

افتح Terminal وقم بتشغيل الأوامر التالية:

  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 Cloud Storage حيث سيتم تسجيل مخرجات خط الأنابيب، لذا تأكد من استبدال <gcp_project_id> بمعرف مشروع GCP.

$host و $port هما اسم المضيف ومنفذ خادم البيانات التعريفية grpc للاتصال بـ MLMD. يجب تعيين $port على رقم المنفذ الذي استخدمته لإعادة توجيه المنفذ ويمكنك تعيين "المضيف المحلي" لاسم المضيف.

في البرنامج التعليمي template.ipynb ، يتم تعيين اسم خط الأنابيب كـ "my_pipeline" افتراضيًا، لذا قم بتعيين pipeline_name="my_pipeline" . إذا قمت بتعديل اسم خط الأنابيب عند تشغيل البرنامج التعليمي للقالب، فيجب عليك تعديل --pipeline_name وفقًا لذلك.

2. تمكين منفذي Stub في Kubeflow DAG Runner

أولاً، تأكد من نسخ القالب المحدد مسبقًا إلى دليل المشروع الخاص بك باستخدام أمر tfx template copy CLI. من الضروري تحرير الملفين التاليين في الملفات المصدر المنسوخة.

  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 ، أضف فئة StubComponentLauncher إلى فئة KubeflowDagRunnerConfig supported_launcher_class launcher_class لتمكين تشغيل منفذي كعب الروتين:

    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 Cloud المستخدمة في هذا المشروع، يمكنك حذف مشروع Google Cloud الذي استخدمته في البرنامج التعليمي.

وبدلاً من ذلك، يمكنك تنظيف الموارد الفردية من خلال زيارة كل وحدة تحكم: - Google Cloud Storage - Google Container Registry - Google Kubernetes Engine