การทดสอบไปป์ไลน์โดยใช้ 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 แล้วรันคำสั่งต่อไปนี้:
สร้างไฟล์ kubeconfig ด้วยข้อมูลประจำตัวที่เหมาะสม:
bash gcloud container clusters get-credentials $cluster_name --zone $compute_zone --project $gcp_project_id$compute_zoneเป็นภูมิภาคสำหรับ gcp engine และ$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 ควรตั้งค่าเป็นหมายเลขพอร์ตที่คุณใช้สำหรับการส่งต่อพอร์ต และคุณสามารถตั้งค่า "localhost" สำหรับชื่อโฮสต์ได้
ในบทช่วยสอน template.ipynb ชื่อไปป์ไลน์จะถูกตั้งค่าเป็น "my_pipeline" ตามค่าเริ่มต้น ดังนั้นให้ตั้ง pipeline_name="my_pipeline" หากคุณได้แก้ไขชื่อไปป์ไลน์เมื่อเรียกใช้บทช่วยสอนเทมเพลต คุณควรแก้ไข --pipeline_name ตามนั้น
2. เปิดใช้งาน Stub Executors ใน Kubeflow DAG Runner
ขั้นแรก ตรวจสอบให้แน่ใจว่าได้คัดลอกเทมเพลตที่กำหนดไว้ล่วงหน้าไปยังไดเร็กทอรีโปรเจ็กต์ของคุณโดยใช้คำสั่ง CLI tfx template copy จำเป็นต้องแก้ไขสองไฟล์ต่อไปนี้ในไฟล์ต้นฉบับที่คัดลอก
สร้างไฟล์ชื่อ
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_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