اختبار خط الأنابيب باستخدام 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 وقم بتشغيل الأوامر التالية:
أنشئ ملف kubeconfig ببيانات الاعتماد المناسبة:
bash gcloud container clusters get-credentials $cluster_name --zone $compute_zone --project $gcp_project_id$compute_zoneهي منطقة لمحرك gcp و$gcp_project_idهو معرف المشروع لمشروع GCP الخاص بك.قم بإعداد إعادة توجيه المنفذ للاتصال بـ MLMD:
bash nohup kubectl port-forward deployment/metadata-grpc-deployment -n $namespace $port:8080 &$namespaceهي مساحة اسم المجموعة و$portهو أي منفذ غير مستخدم سيتم استخدامه لـ إعادة توجيه المنفذ.استنساخ مستودع 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. من الضروري تحرير الملفين التاليين في الملفات المصدر المنسوخة.
أنشئ ملفًا يسمى
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)قم بتعيين معرفات المكونات لتكون قائمة بمعرفات المكونات التي سيتم اختبارها (بمعنى آخر، يتم استبدال منفذي المكونات الأخرى بـ BaseStubExecutor).
افتح
kubeflow_dag_runner.py. أضف بيان الاستيراد التالي في الأعلى لاستخدام فئةStubComponentLauncherالتي أضفناها للتو.import stub_component_launcherفي
kubeflow_dag_runner.py، أضف فئةStubComponentLauncherإلى فئةKubeflowDagRunnerConfigsupported_launcher_classlauncher_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