บทนำ
บทช่วยสอนนี้ออกแบบมาเพื่อแนะนำ TensorFlow Extended (TFX) และ ไปป์ไลน์ AIPlatform และช่วยให้คุณเรียนรู้วิธีสร้างไปป์ไลน์แมชชีนเลิร์นนิงของคุณเองบน Google Cloud แสดงการผสานรวมกับ TFX, AI Platform Pipelines และ Kubeflow รวมถึงการโต้ตอบกับ TFX ในโน้ตบุ๊ก Jupyter
ในตอนท้ายของบทช่วยสอนนี้ คุณจะได้สร้างและเรียกใช้ ML Pipeline ซึ่งโฮสต์บน Google Cloud คุณจะสามารถเห็นภาพผลลัพธ์ของการวิ่งแต่ละครั้ง และดูเชื้อสายของสิ่งประดิษฐ์ที่สร้างขึ้น
คุณจะปฏิบัติตามกระบวนการพัฒนา ML ทั่วไป โดยเริ่มจากการตรวจสอบชุดข้อมูล และจบลงด้วยขั้นตอนการทำงานที่สมบูรณ์ ระหว่างทาง คุณจะสำรวจวิธีการแก้ไขจุดบกพร่องและอัปเดตไปป์ไลน์ของคุณ ตลอดจนวัดประสิทธิภาพ
ชุดข้อมูลแท็กซี่ชิคาโก
คุณกำลังใช้ ชุดข้อมูล Taxi Trips ที่ออกโดยเมืองชิคาโก
คุณสามารถ อ่านเพิ่มเติม เกี่ยวกับชุดข้อมูลใน Google BigQuery สำรวจชุดข้อมูลทั้งหมดใน BigQuery UI
เป้าหมายของโมเดล - การจัดประเภทไบนารี
ลูกค้าจะให้ทิปมากหรือน้อยกว่า 20% หรือไม่?
1. ตั้งค่าโครงการ Google Cloud
1.a ตั้งค่าสภาพแวดล้อมของคุณบน Google Cloud
ในการเริ่มต้น คุณต้องมีบัญชี Google Cloud หากคุณมีอยู่แล้ว ให้ข้ามไปที่ Create New Project
ไปที่ Google Cloud Console
ยอมรับข้อกำหนดในการให้บริการของ Google Cloud
หากคุณต้องการเริ่มต้นด้วยบัญชีทดลองใช้งานฟรี ให้คลิกที่ Try For Free (หรือ Get started for free )
เลือกประเทศของคุณ.
ยอมรับข้อกำหนดในการให้บริการ
ป้อนรายละเอียดการเรียกเก็บเงิน
คุณจะไม่ถูกเรียกเก็บเงิน ณ จุดนี้ หากคุณไม่มีโปรเจ็กต์ Google Cloud อื่นๆ คุณสามารถทำบทแนะนำนี้ให้เสร็จสิ้นได้โดยไม่ใช้ขีดจำกัด Google Cloud Free Tier ซึ่งรวมถึงคอร์สูงสุด 8 คอร์ที่ทำงานพร้อมกัน
1.b สร้างโครงการใหม่
- จาก แดชบอร์ดหลักของ Google Cloud ให้คลิกเมนูแบบเลื่อนลงของโปรเจ็กต์ที่อยู่ถัดจากส่วนหัว ของ Google Cloud Platform แล้วเลือก โปรเจ็กต์ใหม่
- ตั้งชื่อโครงการของคุณและป้อนรายละเอียดโครงการอื่น ๆ
- เมื่อคุณสร้างโปรเจ็กต์แล้ว อย่าลืมเลือกจากเมนูดรอปดาวน์โปรเจ็กต์
2. ตั้งค่าและปรับใช้ AI Platform Pipeline บนคลัสเตอร์ Kubernetes ใหม่
ไปที่หน้า คลัสเตอร์ไปป์ไลน์แพลตฟอร์ม AI
ใต้เมนูการนำทางหลัก: ≡ > แพลตฟอร์ม AI > ไปป์ไลน์
คลิก + อินสแตนซ์ใหม่ เพื่อสร้างคลัสเตอร์ใหม่
ในหน้าภาพรวมของ Kubeflow Pipelines ให้คลิก Configure
คลิก "เปิดใช้งาน" เพื่อเปิดใช้งาน Kubernetes Engine API
ในหน้า Deploy Kubeflow Pipelines :
เลือก โซน (หรือ "ภูมิภาค") สำหรับคลัสเตอร์ของคุณ เครือข่ายและเครือข่ายย่อยสามารถตั้งค่าได้ แต่สำหรับวัตถุประสงค์ของบทช่วยสอนนี้ เราจะปล่อยให้เป็นค่าเริ่มต้น
สำคัญ เลือกช่องทำเครื่องหมาย อนุญาตการเข้าถึง Cloud API ต่อไปนี้ (สิ่งนี้จำเป็นสำหรับคลัสเตอร์นี้เพื่อเข้าถึงส่วนอื่นๆ ของโปรเจ็กต์ของคุณ หากคุณพลาดขั้นตอนนี้ การแก้ไขในภายหลังค่อนข้างยุ่งยาก)
คลิก Create New Cluster และรอหลายนาทีจนกว่าคลัสเตอร์จะถูกสร้างขึ้น การดำเนินการนี้จะใช้เวลาสักครู่ เมื่อเสร็จแล้วคุณจะเห็นข้อความเช่น:
สร้างคลัสเตอร์ "cluster-1" สำเร็จในโซน "us-central1-a"
เลือกเนมสเปซและชื่ออินสแตนซ์ (ใช้ค่าเริ่มต้นก็ได้) สำหรับวัตถุประสงค์ของบทช่วยสอนนี้ โปรดอย่าทำเครื่องหมายที่ executor.emissary หรือ managedstorage.enabled
คลิก Deploy และรอสักครู่จนกว่าไปป์ไลน์จะถูกทำให้ใช้งานได้ การปรับใช้ Kubeflow Pipelines แสดงว่าคุณยอมรับข้อกำหนดในการให้บริการ
3. ตั้งค่าอินสแตนซ์โน้ตบุ๊ก Cloud AI Platform
ไปที่หน้า Vertex AI Workbench ครั้งแรกที่คุณเรียกใช้ Workbench คุณจะต้องเปิดใช้งาน Notebooks API
ใต้เมนูนำทางหลัก: ≡ -> Vertex AI -> Workbench
หากได้รับแจ้ง ให้เปิดใช้งาน Compute Engine API
สร้าง โน้ตบุ๊กใหม่ ที่ติดตั้ง TensorFlow Enterprise 2.7 (หรือสูงกว่า)
โน้ตบุ๊กใหม่ -> TensorFlow Enterprise 2.7 -> ไม่มี GPU
เลือกภูมิภาคและโซน แล้วตั้งชื่ออินสแตนซ์โน้ตบุ๊ก
เพื่อให้อยู่ภายในขีดจำกัด Free Tier คุณอาจต้องเปลี่ยนการตั้งค่าเริ่มต้นที่นี่ เพื่อลดจำนวน vCPU ที่พร้อมใช้งานสำหรับอินสแตนซ์นี้จาก 4 เป็น 2:
- เลือก ตัวเลือกขั้นสูง ที่ด้านล่างของแบบฟอร์ม สมุดบันทึกใหม่
ภายใต้ การกำหนดค่าเครื่อง คุณอาจต้องการเลือกการกำหนดค่าที่มี 1 หรือ 2 vCPU หากคุณต้องการอยู่ใน Free Tier
รอให้สมุดบันทึกใหม่ถูกสร้างขึ้น จากนั้นคลิก เปิดใช้งาน Notebooks API
4. เปิดสมุดบันทึกการเริ่มต้นใช้งาน
ไปที่หน้า คลัสเตอร์ไปป์ไลน์แพลตฟอร์ม AI
ใต้เมนูนำทางหลัก: ≡ -> แพลตฟอร์ม AI -> ท่อ
ในบรรทัดสำหรับคลัสเตอร์ที่คุณใช้ในบทช่วยสอนนี้ ให้คลิก Open Pipelines Dashboard
ในหน้า เริ่มต้น ให้คลิก เปิดโน้ตบุ๊ก Cloud AI Platform บน Google Cloud
เลือกอินสแตนซ์ Notebook ที่คุณใช้สำหรับบทช่วยสอนนี้และ ดำเนิน การต่อ จากนั้น ยืนยัน
5. ทำงานใน Notebook ต่อไป
ติดตั้ง
สมุดบันทึกการเริ่มต้นใช้งานเริ่มต้นด้วยการติดตั้ง TFX และ Kubeflow Pipelines (KFP) ลงใน VM ที่ Jupyter Lab ทำงานอยู่
จากนั้นจะตรวจสอบเวอร์ชันของ TFX ที่ติดตั้ง นำเข้า และตั้งค่าและพิมพ์รหัสโครงการ:
เชื่อมต่อกับบริการ Google Cloud ของคุณ
การกำหนดค่าไปป์ไลน์ต้องใช้รหัสโปรเจ็กต์ของคุณ ซึ่งคุณสามารถเข้าไปที่โน้ตบุ๊กและตั้งค่าเป็นตัวแปรสภาพแวดล้อมได้
# Read GCP project id from env.
shell_output=!gcloud config list --format 'value(core.project)' 2>/dev/null
GCP_PROJECT_ID=shell_output[0]
print("GCP project ID:" + GCP_PROJECT_ID)
ตอนนี้ตั้งค่าปลายทางคลัสเตอร์ KFP ของคุณ
สามารถพบได้จาก URL ของแดชบอร์ดไปป์ไลน์ ไปที่แดชบอร์ด Kubeflow Pipeline และดูที่ URL ปลายทางคือทุกอย่างใน URL ที่ ขึ้นต้นด้วย https://
จนถึงและรวมถึง googleusercontent.com
ENDPOINT='' # Enter YOUR ENDPOINT here.
จากนั้นโน้ตบุ๊กจะตั้งชื่อเฉพาะสำหรับอิมเมจ Docker แบบกำหนดเอง:
# Docker image name for the pipeline image
CUSTOM_TFX_IMAGE='gcr.io/' + GCP_PROJECT_ID + '/tfx-pipeline'
6. คัดลอกเทมเพลตลงในไดเร็กทอรีโครงการของคุณ
แก้ไขเซลล์สมุดบันทึกถัดไปเพื่อตั้งชื่อไปป์ไลน์ของคุณ ในบทช่วยสอนนี้ เราจะใช้ my_pipeline
PIPELINE_NAME="my_pipeline"
PROJECT_DIR=os.path.join(os.path.expanduser("~"),"imported",PIPELINE_NAME)
โน้ตบุ๊กใช้ tfx
CLI เพื่อคัดลอกเทมเพลตไปป์ไลน์ บทช่วยสอนนี้ใช้ชุดข้อมูล Chicago Taxi เพื่อทำการจำแนกประเภทไบนารี ดังนั้นเทมเพลตจึงตั้งค่าโมเดลเป็น taxi
:
!tfx template copy \
--pipeline-name={PIPELINE_NAME} \
--destination-path={PROJECT_DIR} \
--model=taxi
จากนั้นโน้ตบุ๊กจะเปลี่ยนบริบท CWD เป็นไดเร็กทอรีโครงการ:
%cd {PROJECT_DIR}
เรียกดูไฟล์ไปป์ไลน์
ที่ด้านซ้ายมือของ Cloud AI Platform Notebook คุณควรเห็นไฟล์เบราว์เซอร์ ควรมีไดเร็กทอรีที่มีชื่อไปป์ไลน์ของคุณ ( my_pipeline
) เปิดและดูไฟล์ (คุณจะสามารถเปิดและแก้ไขจากสภาพแวดล้อมของโน้ตบุ๊กได้เช่นกัน)
# You can also list the files from the shell
ls
คำสั่ง tfx template copy
ด้านบนสร้างโครงพื้นฐานของไฟล์ที่สร้างไปป์ไลน์ ซึ่งรวมถึงซอร์สโค้ด Python ข้อมูลตัวอย่าง และโน้ตบุ๊ก Jupyter สิ่งเหล่านี้มีไว้สำหรับตัวอย่างเฉพาะนี้ สำหรับไปป์ไลน์ของคุณเอง ไฟล์เหล่านี้จะเป็นไฟล์สนับสนุนที่ไปป์ไลน์ของคุณต้องการ
นี่คือคำอธิบายสั้น ๆ ของไฟล์ Python
-
pipeline
- ไดเร็กทอรีนี้มีคำจำกัดความของไปป์ไลน์-
configs.py
— กำหนดค่าคงที่ทั่วไปสำหรับไพพ์ไลน์รันเนอร์ -
pipeline.py
— กำหนดส่วนประกอบ TFX และไปป์ไลน์
-
-
models
- ไดเร็กทอรีนี้มีคำจำกัดความโมเดล ML-
features.py
features_test.py
— กำหนดคุณสมบัติสำหรับ model -
preprocessing.py
/preprocessing_test.py
— กำหนดงานก่อนการประมวลผลโดยใช้tf::Transform
-
estimator
- ไดเร็กทอรีนี้มีโมเดลที่ใช้ Estimator-
constants.py
— กำหนดค่าคงที่ของ model -
model.py
/model_test.py
— กำหนดโมเดล DNN โดยใช้ตัวประมาณ TF
-
-
keras
- ไดเร็กทอรีนี้มีโมเดลตาม Keras-
constants.py
— กำหนดค่าคงที่ของ model -
model.py
/model_test.py
— กำหนดโมเดล DNN โดยใช้ Keras
-
-
-
beam_runner.py
/kubeflow_runner.py
— กำหนดนักวิ่งสำหรับเอ็นจิ้นการประสานแต่ละรายการ
7. เรียกใช้ TFX ไปป์ไลน์แรกของคุณบน Kubeflow
โน้ตบุ๊กจะเรียกใช้ไปป์ไลน์โดยใช้คำสั่ง tfx run
CLI
เชื่อมต่อกับที่เก็บข้อมูล
ไปป์ไลน์ที่รันอยู่จะสร้างสิ่งประดิษฐ์ที่ต้องเก็บไว้ใน ML-Metadata สิ่งประดิษฐ์หมายถึงเพย์โหลด ซึ่งเป็นไฟล์ที่ต้องเก็บไว้ในระบบไฟล์หรือที่เก็บข้อมูลแบบบล็อก สำหรับบทแนะนำนี้ เราจะใช้ GCS เพื่อจัดเก็บเพย์โหลดข้อมูลเมตาของเรา โดยใช้บัคเก็ตที่สร้างขึ้นโดยอัตโนมัติระหว่างการตั้งค่า ชื่อจะเป็น <your-project-id>-kubeflowpipelines-default
สร้างไปป์ไลน์
สมุดบันทึกจะอัปโหลดข้อมูลตัวอย่างของเราไปยังบัคเก็ต GCS เพื่อให้เรานำไปใช้ในไปป์ไลน์ได้ในภายหลัง
gsutil cp data/data.csv gs://{GOOGLE_CLOUD_PROJECT}-kubeflowpipelines-default/tfx-template/data/taxi/data.csv
จากนั้นโน้ตบุ๊กจะใช้คำสั่ง tfx pipeline create
เพื่อสร้างไพพ์ไลน์
!tfx pipeline create \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT} \
--build-image
ขณะสร้างไปป์ไลน์ Dockerfile
จะถูกสร้างขึ้นเพื่อสร้างอิมเมจ Docker อย่าลืมเพิ่มไฟล์เหล่านี้ในระบบควบคุมต้นทางของคุณ (เช่น git) พร้อมกับไฟล์ต้นทางอื่นๆ
เรียกใช้ไปป์ไลน์
จากนั้นโน้ตบุ๊กจะใช้คำสั่ง tfx run create
เพื่อเริ่มการรันไพพ์ไลน์ของคุณ นอกจากนี้ คุณจะเห็นการดำเนินการนี้แสดงอยู่ภายใต้การทดสอบในแดชบอร์ดไปป์ไลน์ของ Kubeflow
tfx run create --pipeline-name={PIPELINE_NAME} --endpoint={ENDPOINT}
คุณสามารถดูไปป์ไลน์ของคุณจาก Kubeflow Pipelines Dashboard
8. ตรวจสอบข้อมูลของคุณ
งานแรกใน data science หรือ ML project คือการทำความเข้าใจและทำความสะอาดข้อมูล
- ทำความเข้าใจประเภทข้อมูลสำหรับคุณลักษณะแต่ละอย่าง
- มองหาความผิดปกติและค่าที่หายไป
- ทำความเข้าใจการแจกแจงสำหรับแต่ละฟีเจอร์
ส่วนประกอบ
- ExampleGen นำเข้าและแยกชุดข้อมูลอินพุต
- StatisticsGen คำนวณสถิติสำหรับชุดข้อมูล
- SchemaGen SchemaGen ตรวจสอบสถิติและสร้างสคีมาข้อมูล
- ExampleValidator จะค้นหาความผิดปกติและค่าที่ขาดหายไปในชุดข้อมูล
ในตัวแก้ไขไฟล์แล็บ Jupyter:
ใน pipeline
/ไพพ์ pipeline.py
.py ให้ยกเลิกหมายเหตุบรรทัดที่ต่อท้ายส่วนประกอบเหล่านี้กับไปป์ไลน์ของคุณ:
# components.append(statistics_gen)
# components.append(schema_gen)
# components.append(example_validator)
( ExampleGen
เปิดใช้งานแล้วเมื่อมีการคัดลอกไฟล์เทมเพลต)
อัปเดตไปป์ไลน์และเรียกใช้ใหม่
# Update the pipeline
! tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
! tfx run create --pipeline-name "{PIPELINE_NAME}"
ตรวจสอบท่อส่ง
สำหรับ Kubeflow Orchestrator ไปที่แดชบอร์ด KFP และค้นหาเอาต์พุตไปป์ไลน์ในหน้าสำหรับการรันไปป์ไลน์ของคุณ คลิกแท็บ "การทดสอบ" ทางด้านซ้าย และ "การรันทั้งหมด" ในหน้าการทดสอบ คุณควรจะสามารถค้นหาการทำงานด้วยชื่อไปป์ไลน์ของคุณได้
ตัวอย่างขั้นสูง
ตัวอย่างที่นำเสนอนี้มีขึ้นเพื่อให้คุณเริ่มต้นเท่านั้น สำหรับตัวอย่างขั้นสูง โปรดดูที่ TensorFlow Data Validation Colab
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ TFDV เพื่อสำรวจและตรวจสอบชุดข้อมูล ดูตัวอย่างใน tensorflow.org
9. วิศวกรรมคุณลักษณะ
คุณสามารถเพิ่มคุณภาพการคาดการณ์ของข้อมูลและ/หรือลดมิติข้อมูลด้วยวิศวกรรมคุณลักษณะ
- คุณลักษณะข้าม
- คำศัพท์
- ฝัง
- PCA
- การเข้ารหัสตามหมวดหมู่
ข้อดีอย่างหนึ่งของการใช้ TFX คือ คุณจะเขียนโค้ดการแปลงของคุณหนึ่งครั้ง และการแปลงผลลัพธ์จะสอดคล้องกันระหว่างการฝึกอบรมและการให้บริการ
ส่วนประกอบ
- การแปลง ดำเนินการวิศวกรรมคุณลักษณะในชุดข้อมูล
ในตัวแก้ไขไฟล์แล็บ Jupyter:
ใน pipeline
/ไพพ์ pipeline.py
.py ให้ค้นหาและยกเลิกหมายเหตุบรรทัดที่ต่อท้าย Transform ไปยังไพพ์ไลน์
# components.append(transform)
อัปเดตไปป์ไลน์และเรียกใช้ใหม่
# Update the pipeline
! tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
! tfx run create --pipeline-name "{PIPELINE_NAME}"
ตรวจสอบเอาต์พุตไปป์ไลน์
สำหรับ Kubeflow Orchestrator ไปที่แดชบอร์ด KFP และค้นหาเอาต์พุตไปป์ไลน์ในหน้าสำหรับการรันไปป์ไลน์ของคุณ คลิกแท็บ "การทดสอบ" ทางด้านซ้าย และ "การรันทั้งหมด" ในหน้าการทดสอบ คุณควรจะสามารถค้นหาการทำงานด้วยชื่อไปป์ไลน์ของคุณได้
ตัวอย่างขั้นสูง
ตัวอย่างที่นำเสนอนี้มีขึ้นเพื่อให้คุณเริ่มต้นเท่านั้น สำหรับตัวอย่างขั้นสูง โปรดดู TensorFlow Transform Colab
10. การฝึกอบรม
ฝึกโมเดล TensorFlow ด้วยข้อมูลที่แปลงแล้วที่สวยงาม สะอาดตา
- รวมการแปลงจากขั้นตอนก่อนหน้าเพื่อให้นำไปใช้อย่างสม่ำเสมอ
- บันทึกผลลัพธ์เป็น SavedModel สำหรับการผลิต
- เห็นภาพและสำรวจกระบวนการฝึกอบรมโดยใช้ TensorBoard
- บันทึก EvalSavedModel เพื่อวิเคราะห์ประสิทธิภาพของแบบจำลองด้วย
ส่วนประกอบ
- เทรนเนอร์ฝึก โมเดล TensorFlow
ในตัวแก้ไขไฟล์แล็บ Jupyter:
ใน pipeline
/ไพพ์ pipeline.py
.py ให้ค้นหาและยกเลิกหมายเหตุที่ต่อท้าย Trainer กับไปป์ไลน์:
# components.append(trainer)
อัปเดตไปป์ไลน์และเรียกใช้ใหม่
# Update the pipeline
! tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
! tfx run create --pipeline-name "{PIPELINE_NAME}"
ตรวจสอบเอาต์พุตไปป์ไลน์
สำหรับ Kubeflow Orchestrator ไปที่แดชบอร์ด KFP และค้นหาเอาต์พุตไปป์ไลน์ในหน้าสำหรับการรันไปป์ไลน์ของคุณ คลิกแท็บ "การทดสอบ" ทางด้านซ้าย และ "การรันทั้งหมด" ในหน้าการทดสอบ คุณควรจะสามารถค้นหาการทำงานด้วยชื่อไปป์ไลน์ของคุณได้
ตัวอย่างขั้นสูง
ตัวอย่างที่นำเสนอนี้มีขึ้นเพื่อให้คุณเริ่มต้นเท่านั้น สำหรับตัวอย่างขั้นสูง โปรดดู TensorBoard Tutorial
11. การวิเคราะห์ประสิทธิภาพของแบบจำลอง
ทำความเข้าใจมากกว่าแค่เมตริกระดับบนสุด
- ผู้ใช้พบกับประสิทธิภาพของโมเดลสำหรับการสืบค้นเท่านั้น
- ประสิทธิภาพต่ำในส่วนของข้อมูลอาจถูกซ่อนโดยตัวชี้วัดระดับบนสุด
- ความเป็นธรรมของแบบจำลองเป็นสิ่งสำคัญ
- บ่อยครั้งที่ชุดย่อยหลักของผู้ใช้หรือข้อมูลมีความสำคัญมากและอาจมีขนาดเล็ก
- ประสิทธิภาพในสภาวะวิกฤติแต่ไม่ปกติ
- ประสิทธิภาพสำหรับผู้ชมหลักเช่นผู้มีอิทธิพล
- หากคุณกำลังจะเปลี่ยนโมเดลที่กำลังอยู่ในระหว่างการผลิต ก่อนอื่นให้ตรวจสอบให้แน่ใจว่าอันใหม่ดีกว่า
ส่วนประกอบ
- ผู้ประเมิน จะทำการวิเคราะห์ผลการฝึกอบรมอย่างลึกซึ้ง
ในตัวแก้ไขไฟล์แล็บ Jupyter:
ใน pipeline
/ไพพ์ pipeline.py
.py ค้นหาและยกเลิกหมายเหตุบรรทัดที่ผนวกตัวประเมินกับไปป์ไลน์:
components.append(evaluator)
อัปเดตไปป์ไลน์และเรียกใช้ใหม่
# Update the pipeline
! tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
! tfx run create --pipeline-name "{PIPELINE_NAME}"
ตรวจสอบเอาต์พุตไปป์ไลน์
สำหรับ Kubeflow Orchestrator ไปที่แดชบอร์ด KFP และค้นหาเอาต์พุตไปป์ไลน์ในหน้าสำหรับการรันไปป์ไลน์ของคุณ คลิกแท็บ "การทดสอบ" ทางด้านซ้าย และ "การรันทั้งหมด" ในหน้าการทดสอบ คุณควรจะสามารถค้นหาการทำงานด้วยชื่อไปป์ไลน์ของคุณได้
12. เสิร์ฟโมเดล
ถ้ารุ่นใหม่พร้อมก็จัดเลย
- Pusher ปรับใช้ SavedModels ไปยังตำแหน่งที่รู้จักกันดี
เป้าหมายการทำให้ใช้งานได้ได้รับโมเดลใหม่จากสถานที่ที่มีชื่อเสียง
- การให้บริการ TensorFlow
- TensorFlow Lite
- TensorFlow JS
- TensorFlow Hub
ส่วนประกอบ
- Pusher ปรับใช้โมเดลกับโครงสร้างพื้นฐานที่ให้บริการ
ในตัวแก้ไขไฟล์แล็บ Jupyter:
ใน pipeline
/ไพพ์ pipeline.py
.py ค้นหาและยกเลิกหมายเหตุบรรทัดที่ต่อท้าย Pusher กับไปป์ไลน์:
# components.append(pusher)
ตรวจสอบเอาต์พุตไปป์ไลน์
สำหรับ Kubeflow Orchestrator ไปที่แดชบอร์ด KFP และค้นหาเอาต์พุตไปป์ไลน์ในหน้าสำหรับการรันไปป์ไลน์ของคุณ คลิกแท็บ "การทดสอบ" ทางด้านซ้าย และ "การรันทั้งหมด" ในหน้าการทดสอบ คุณควรจะสามารถค้นหาการทำงานด้วยชื่อไปป์ไลน์ของคุณได้
เป้าหมายการทำให้ใช้งานได้
คุณได้ฝึกฝนและตรวจสอบแบบจำลองของคุณแล้ว และแบบจำลองของคุณก็พร้อมสำหรับการผลิตแล้ว ตอนนี้คุณสามารถปรับใช้โมเดลของคุณกับเป้าหมายการปรับใช้ TensorFlow ใดๆ รวมถึง:
- TensorFlow Serving สำหรับให้บริการโมเดลของคุณบนเซิร์ฟเวอร์หรือเซิร์ฟเวอร์ฟาร์ม และประมวลผล REST และ/หรือคำขออนุมาน gRPC
- TensorFlow Lite สำหรับการรวมโมเดลของคุณในแอปพลิเคชันมือถือ Android หรือ iOS หรือในแอปพลิเคชัน Raspberry Pi, IoT หรือไมโครคอนโทรลเลอร์
- TensorFlow.js สำหรับการรันโมเดลของคุณในเว็บเบราว์เซอร์หรือแอปพลิเคชัน Node.JS
ตัวอย่างขั้นสูงเพิ่มเติม
ตัวอย่างที่นำเสนอข้างต้นมีขึ้นเพื่อให้คุณเริ่มต้นเท่านั้น ด้านล่างนี้คือตัวอย่างบางส่วนของการผสานรวมกับบริการคลาวด์อื่นๆ
ข้อควรพิจารณาเกี่ยวกับทรัพยากรของ Kubeflow Pipelines
การกำหนดค่าเริ่มต้นสำหรับการปรับใช้ Kubeflow Pipelines อาจตอบสนองความต้องการของคุณหรือไม่ก็ได้ ทั้งนี้ขึ้นอยู่กับข้อกำหนดของปริมาณงานของคุณ คุณสามารถปรับแต่งการกำหนดค่าทรัพยากรของคุณโดยใช้ pipeline_operator_funcs
_operator_funcs ในการเรียก KubeflowDagRunnerConfig
pipeline_operator_funcs
เป็นรายการของรายการ OpFunc
ซึ่งแปลงอินสแตนซ์ ContainerOp
ที่สร้างขึ้นทั้งหมดในข้อมูลจำเพาะไปป์ไลน์ KFP ซึ่งรวบรวมจาก KubeflowDagRunner
ตัวอย่างเช่น ในการกำหนดค่าหน่วยความจำ เราสามารถใช้ set_memory_request
เพื่อประกาศจำนวนหน่วยความจำที่ต้องการ วิธีทั่วไปในการทำเช่นนั้นคือสร้าง wrapper สำหรับ set_memory_request
และใช้เพื่อเพิ่มไปยังรายการไพพ์ไลน์ OpFunc
s:
def request_more_memory():
def _set_memory_spec(container_op):
container_op.set_memory_request('32G')
return _set_memory_spec
# Then use this opfunc in KubeflowDagRunner
pipeline_op_funcs = kubeflow_dag_runner.get_default_pipeline_operator_funcs()
pipeline_op_funcs.append(request_more_memory())
config = KubeflowDagRunnerConfig(
pipeline_operator_funcs=pipeline_op_funcs,
...
)
kubeflow_dag_runner.KubeflowDagRunner(config=config).run(pipeline)
ฟังก์ชันการตั้งค่าคอนฟิกทรัพยากรที่คล้ายกันประกอบด้วย:
-
set_memory_limit
-
set_cpu_request
-
set_cpu_limit
-
set_gpu_limit
ลอง BigQueryExampleGen
BigQuery เป็นคลังข้อมูลบนระบบคลาวด์แบบไร้เซิร์ฟเวอร์ ปรับขนาดได้สูง และคุ้มค่าใช้จ่าย สามารถใช้ BigQuery เป็นแหล่งสำหรับตัวอย่างการฝึกอบรมใน TFX ในขั้นตอนนี้ เราจะเพิ่ม BigQueryExampleGen
ไปยังไปป์ไลน์
ในตัวแก้ไขไฟล์แล็บ Jupyter:
ดับเบิลคลิกเพื่อเปิด pipeline.py
.py แสดงความคิดเห็น CsvExampleGen
และยกเลิกการใส่เครื่องหมายบรรทัดที่สร้างอินสแตนซ์ของ BigQueryExampleGen
คุณต้องยกเลิกการใส่ข้อคิดเห็นอาร์กิวเมนต์ query
ของฟังก์ชัน create_pipeline
เราจำเป็นต้องระบุโครงการ GCP ที่จะใช้สำหรับ BigQuery และทำได้โดยการตั้งค่า --project
ใน beam_pipeline_args
เมื่อสร้างไปป์ไลน์
ดับเบิลคลิกเพื่อเปิด configs.py
ยกเลิกการใส่ความคิดเห็นคำจำกัดความของ BIG_QUERY_WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGS
และ BIG_QUERY_QUERY
คุณควรแทนที่รหัสโปรเจ็กต์และค่าภูมิภาคในไฟล์นี้ด้วยค่าที่ถูกต้องสำหรับโปรเจ็กต์ GCP
เปลี่ยนไดเร็กทอรีขึ้นหนึ่งระดับ คลิกชื่อไดเร็กทอรีเหนือรายการไฟล์ ชื่อของไดเร็กทอรีคือชื่อของไปป์ไลน์ซึ่งก็คือ my_pipeline
หากคุณไม่ได้เปลี่ยนชื่อไปป์ไลน์
ดับเบิลคลิกเพื่อเปิด kubeflow_runner.py
ยกเลิกการใส่ความคิดเห็นสองอาร์กิวเมนต์ query
และ beam_pipeline_args
สำหรับฟังก์ชัน create_pipeline
ตอนนี้ไปป์ไลน์พร้อมที่จะใช้ BigQuery เป็นแหล่งตัวอย่างแล้ว อัปเดตไปป์ไลน์เหมือนเมื่อก่อนและสร้างการดำเนินการใหม่ตามที่เราทำในขั้นตอนที่ 5 และ 6
อัปเดตไปป์ไลน์และเรียกใช้ใหม่
# Update the pipeline
!tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
ลองดาต้าโฟลว์
คอมโพเนนต์ TFX หลายรายการใช้ Apache Beam เพื่อใช้ไปป์ไลน์ข้อมูลแบบขนาน และหมายความว่าคุณสามารถกระจายปริมาณงานการประมวลผลข้อมูลโดยใช้ Google Cloud Dataflow ในขั้นตอนนี้ เราจะตั้งค่า Kubeflow orchestrator ให้ใช้ Dataflow เป็นแบ็คเอนด์การประมวลผลข้อมูลสำหรับ Apache Beam
# Select your project:
gcloud config set project YOUR_PROJECT_ID
# Get a list of services that you can enable in your project:
gcloud services list --available | grep Dataflow
# If you don't see dataflow.googleapis.com listed, that means you haven't been
# granted access to enable the Dataflow API. See your account adminstrator.
# Enable the Dataflow service:
gcloud services enable dataflow.googleapis.com
ดับเบิลคลิก pipeline
เพื่อเปลี่ยนไดเร็กทอรี และดับเบิลคลิกเพื่อเปิด configs.py
ยกเลิกหมายเหตุคำจำกัดความของ GOOGLE_CLOUD_REGION
และ DATAFLOW_BEAM_PIPELINE_ARGS
เปลี่ยนไดเร็กทอรีขึ้นหนึ่งระดับ คลิกชื่อไดเร็กทอรีเหนือรายการไฟล์ ชื่อของไดเร็กทอรีคือชื่อของไปป์ไลน์ซึ่งก็คือ my_pipeline
หากคุณไม่ได้เปลี่ยนแปลง
ดับเบิลคลิกเพื่อเปิด kubeflow_runner.py
ไม่ beam_pipeline_args
(อย่าลืมแสดงความคิดเห็น beam_pipeline_args
ปัจจุบันที่คุณเพิ่มไว้ในขั้นตอนที่ 7)
อัปเดตไปป์ไลน์และเรียกใช้ใหม่
# Update the pipeline
!tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
คุณค้นหางาน Dataflow ได้ใน Dataflow ใน Cloud Console
ลองใช้การฝึกอบรมและคาดการณ์ Cloud AI Platform ด้วย KFP
TFX ทำงานร่วมกับบริการ GCP ที่มีการจัดการหลายอย่าง เช่น Cloud AI Platform for Training and Prediction คุณตั้งค่าคอมโพเนนต์ Trainer
เพื่อใช้ Cloud AI Platform Training ซึ่งเป็นบริการที่มีการจัดการสำหรับโมเดล ML การฝึกอบรมได้ นอกจากนี้ เมื่อโมเดลของคุณถูกสร้างขึ้นและพร้อมที่จะให้บริการ คุณสามารถ พุ ชโมเดลของคุณไปที่ Cloud AI Platform Prediction เพื่อให้บริการได้ ในขั้นตอนนี้ เราจะตั้งค่าองค์ประกอบ Trainer
และ Pusher
เพื่อใช้บริการ Cloud AI Platform
ก่อนแก้ไขไฟล์ คุณอาจต้องเปิดใช้ งาน AI Platform Training & Prediction API ก่อน
ดับเบิลคลิก pipeline
เพื่อเปลี่ยนไดเร็กทอรี และดับเบิลคลิกเพื่อเปิด configs.py
ยกเลิกหมายเหตุคำจำกัดความของ GOOGLE_CLOUD_REGION
, GCP_AI_PLATFORM_TRAINING_ARGS
และ GCP_AI_PLATFORM_SERVING_ARGS
เราจะใช้อิมเมจคอนเทนเนอร์ที่สร้างขึ้นเองเพื่อฝึกโมเดลใน Cloud AI Platform Training ดังนั้นเราควรตั้งค่า masterConfig.imageUri
ใน GCP_AI_PLATFORM_TRAINING_ARGS
เป็นค่าเดียวกับ CUSTOM_TFX_IMAGE
ด้านบน
เปลี่ยนไดเรกทอรีขึ้นหนึ่งระดับ และดับเบิลคลิกเพื่อเปิด kubeflow_runner.py
Uncomment ai_platform_training_args
และ ai_platform_serving_args
อัปเดตไปป์ไลน์และเรียกใช้ใหม่
# Update the pipeline
!tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
คุณสามารถค้นหางานการฝึกอบรมของคุณได้ในงาน Cloud AI Platform หากไปป์ไลน์ของคุณเสร็จสมบูรณ์ คุณจะพบโมเดลของคุณใน Cloud AI Platform Models
14. ใช้ข้อมูลของคุณเอง
ในบทช่วยสอนนี้ คุณสร้างไปป์ไลน์สำหรับโมเดลโดยใช้ชุดข้อมูล Chicago Taxi ตอนนี้ลองใส่ข้อมูลของคุณเองลงในไปป์ไลน์ ข้อมูลของคุณจัดเก็บได้ทุกที่ที่ไปป์ไลน์เข้าถึงได้ ซึ่งรวมถึงไฟล์ Google Cloud Storage, BigQuery หรือ CSV
คุณต้องแก้ไขข้อกำหนดไปป์ไลน์เพื่อรองรับข้อมูลของคุณ
หากข้อมูลของคุณถูกเก็บไว้ในไฟล์
- แก้ไข
DATA_PATH
ในkubeflow_runner.py
โดยระบุตำแหน่ง
หากข้อมูลของคุณถูกเก็บไว้ใน BigQuery
- แก้ไข
BIG_QUERY_QUERY
ใน configs.py เป็นคำสั่งการสืบค้นของคุณ - เพิ่มคุณสมบัติใน
models
/features.py
- แก้ไข
models
/preprocessing.py
เพื่อ แปลงข้อมูลอินพุตสำหรับการฝึกอบรม - แก้ไข
models
/keras
/model.py
และmodels
/keras
/constants.py
เพื่อ อธิบายโมเดล ML ของคุณ
เรียนรู้เพิ่มเติมเกี่ยวกับเทรนเนอร์
ดู คู่มือส่วนประกอบเทรนเนอร์ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับไปป์ไลน์การฝึกอบรม
การทำความสะอาด
หากต้องการล้างทรัพยากร Google Cloud ทั้งหมดที่ใช้ในโปรเจ็กต์นี้ คุณสามารถ ลบโปรเจ็กต์ Google Cloud ที่ คุณใช้สำหรับบทช่วยสอนได้
อีกวิธีหนึ่ง คุณสามารถล้างข้อมูลทรัพยากรแต่ละรายการโดยไปที่แต่ละคอนโซล: - Google Cloud Storage - Google Container Registry - Google Kubernetes Engine