การทดสอบไปป์ไลน์โดยใช้ Stub Executors

การแนะนำ

คุณควรทำบทช่วยสอน template.ipynb ให้เสร็จสิ้นจนถึง ขั้นตอนที่ 6 เพื่อดำเนินการต่อบทช่วยสอนนี้

เอกสารนี้จะให้คำแนะนำในการทดสอบไปป์ไลน์ TensorFlow Extended (TFX) โดยใช้ BaseStubExecuctor ซึ่งสร้างสิ่งประดิษฐ์ปลอมโดยใช้ข้อมูลการทดสอบทองคำ สิ่งนี้มีไว้สำหรับผู้ใช้เพื่อแทนที่ตัวดำเนินการที่พวกเขาไม่ต้องการทดสอบ เพื่อให้สามารถประหยัดเวลาจากการเรียกใช้ตัวสั่งการจริง ตัวดำเนินการ Stub มาพร้อมกับแพ็คเกจ TFX Python ภายใต้ tfx.experimental.pipeline_testing.base_stub_executor

บทช่วยสอนนี้ทำหน้าที่เป็นส่วนขยายของบทช่วยสอน template.ipynb ดังนั้น คุณจะใช้ ชุดข้อมูล Taxi Trips ที่เผยแพร่โดยเมืองชิคาโกด้วย เราขอแนะนำให้คุณลองแก้ไขส่วนประกอบก่อนที่จะใช้ตัวดำเนินการ stub

1. บันทึกเอาต์พุตไปป์ไลน์ใน Google Cloud Storage

ก่อนอื่น เราต้องบันทึกเอาต์พุตไปป์ไลน์เพื่อให้ตัวดำเนินการ stub สามารถคัดลอกส่วนประดิษฐ์จากเอาต์พุตที่บันทึกไว้ได้

เนื่องจากบทช่วยสอนนี้ถือว่าคุณได้เสร็จสิ้น 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 engine และ $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 Executors ใน Kubeflow DAG Runner

ขั้นแรก ตรวจสอบให้แน่ใจว่าได้คัดลอกเทมเพลตที่กำหนดไว้ล่วงหน้าไปยังไดเร็กทอรีโปรเจ็กต์ของคุณโดยใช้คำสั่ง CLI 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 ให้เพิ่มคลาส StubComponentLauncher ให้กับ KubeflowDagRunnerConfig supported_launcher_class ของ Kubeflow เพื่อเปิดใช้งานการเรียกใช้ stub executors:

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

3. อัปเดตและรันไปป์ไลน์ด้วยตัวดำเนินการ Stub

อัปเดตไปป์ไลน์ที่มีอยู่ด้วยคำจำกัดความไปป์ไลน์ที่แก้ไขด้วยตัวดำเนินการ stub

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