آزمایش خط لوله با استفاده از Stub Executors

مقدمه

برای ادامه این آموزش، باید آموزش template.ipynb را تا مرحله 6 کامل کنید.

این سند دستورالعمل‌هایی را برای آزمایش خط لوله TensorFlow Extended (TFX) با استفاده از BaseStubExecuctor ارائه می‌کند، که مصنوعات جعلی را با استفاده از داده‌های آزمایش طلایی تولید می‌کند. این برای کاربران در نظر گرفته شده است تا مجری هایی را که نمی خواهند آزمایش کنند جایگزین کنند تا بتوانند در زمان اجرای مجری های واقعی صرفه جویی کنند. اجراکننده خرد با بسته TFX Python تحت tfx.experimental.pipeline_testing.base_stub_executor ارائه شده است.

این آموزش به عنوان یک افزونه برای آموزش template.ipynb عمل می کند، بنابراین شما همچنین از مجموعه داده سفرهای تاکسی منتشر شده توسط شهر شیکاگو استفاده خواهید کرد. ما قویاً شما را تشویق می‌کنیم که قبل از استفاده از اجراکننده‌های خرد سعی کنید مؤلفه‌ها را اصلاح کنید.

1. خروجی های خط لوله را در Google Cloud Storage ثبت کنید

ابتدا باید خروجی های خط لوله را ضبط کنیم تا مجریان خرد بتوانند از روی مصنوعات خروجی های ضبط شده کپی کنند.

از آنجایی که این آموزش فرض می کند که شما template.ipynb تا مرحله 6 تکمیل کرده اید، یک اجرای موفقیت آمیز خط لوله باید در MLMD ذخیره شده باشد. اطلاعات اجرا در MLMD با استفاده از سرور gRPC قابل دسترسی است.

یک ترمینال را باز کنید و دستورات زیر را اجرا کنید:

  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 باید روی شماره پورتی که برای ارسال پورت استفاده کردید تنظیم شود و می‌توانید "localhost" را برای نام میزبان تنظیم کنید.

در آموزش 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 زیر را در بالا اضافه کنید.

    import stub_component_launcher
    
  4. در kubeflow_dag_runner.py ، کلاس StubComponentLauncher را به supported_launcher_class KubeflowDagRunnerConfig اضافه کنید تا راه‌اندازی اجراکنندگان خرد را فعال کنید:

    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