TFX บนไปป์ไลน์แพลตฟอร์ม Cloud AI

บทนำ

บทช่วยสอนนี้ออกแบบมาเพื่อแนะนำ 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

  1. ไปที่ Google Cloud Console

  2. ยอมรับข้อกำหนดในการให้บริการของ Google Cloud

  3. หากคุณต้องการเริ่มต้นด้วยบัญชีทดลองใช้งานฟรี ให้คลิกที่ Try For Free (หรือ Get started for free )

    1. เลือกประเทศของคุณ.

    2. ยอมรับข้อกำหนดในการให้บริการ

    3. ป้อนรายละเอียดการเรียกเก็บเงิน

      คุณจะไม่ถูกเรียกเก็บเงิน ณ จุดนี้ หากคุณไม่มีโปรเจ็กต์ Google Cloud อื่นๆ คุณสามารถทำบทแนะนำนี้ให้เสร็จสิ้นได้โดยไม่ใช้ขีดจำกัด Google Cloud Free Tier ซึ่งรวมถึงคอร์สูงสุด 8 คอร์ที่ทำงานพร้อมกัน

1.b สร้างโครงการใหม่

  1. จาก แดชบอร์ดหลักของ Google Cloud ให้คลิกเมนูแบบเลื่อนลงของโปรเจ็กต์ที่อยู่ถัดจากส่วนหัว ของ Google Cloud Platform แล้วเลือก โปรเจ็กต์ใหม่
  2. ตั้งชื่อโครงการของคุณและป้อนรายละเอียดโครงการอื่น ๆ
  3. เมื่อคุณสร้างโปรเจ็กต์แล้ว อย่าลืมเลือกจากเมนูดรอปดาวน์โปรเจ็กต์

2. ตั้งค่าและปรับใช้ AI Platform Pipeline บนคลัสเตอร์ Kubernetes ใหม่

  1. ไปที่หน้า คลัสเตอร์ไปป์ไลน์แพลตฟอร์ม AI

    ใต้เมนูการนำทางหลัก: ≡ > แพลตฟอร์ม AI > ไปป์ไลน์

  2. คลิก + อินสแตนซ์ใหม่ เพื่อสร้างคลัสเตอร์ใหม่

  3. ในหน้าภาพรวมของ Kubeflow Pipelines ให้คลิก Configure

  4. คลิก "เปิดใช้งาน" เพื่อเปิดใช้งาน Kubernetes Engine API

  5. ในหน้า Deploy Kubeflow Pipelines :

    1. เลือก โซน (หรือ "ภูมิภาค") สำหรับคลัสเตอร์ของคุณ เครือข่ายและเครือข่ายย่อยสามารถตั้งค่าได้ แต่สำหรับวัตถุประสงค์ของบทช่วยสอนนี้ เราจะปล่อยให้เป็นค่าเริ่มต้น

    2. สำคัญ เลือกช่องทำเครื่องหมาย อนุญาตการเข้าถึง Cloud API ต่อไปนี้ (สิ่งนี้จำเป็นสำหรับคลัสเตอร์นี้เพื่อเข้าถึงส่วนอื่นๆ ของโปรเจ็กต์ของคุณ หากคุณพลาดขั้นตอนนี้ การแก้ไขในภายหลังค่อนข้างยุ่งยาก)

    3. คลิก Create New Cluster และรอหลายนาทีจนกว่าคลัสเตอร์จะถูกสร้างขึ้น การดำเนินการนี้จะใช้เวลาสักครู่ เมื่อเสร็จแล้วคุณจะเห็นข้อความเช่น:

      สร้างคลัสเตอร์ "cluster-1" สำเร็จในโซน "us-central1-a"

    4. เลือกเนมสเปซและชื่ออินสแตนซ์ (ใช้ค่าเริ่มต้นก็ได้) สำหรับวัตถุประสงค์ของบทช่วยสอนนี้ โปรดอย่าทำเครื่องหมายที่ executor.emissary หรือ managedstorage.enabled

    5. คลิก Deploy และรอสักครู่จนกว่าไปป์ไลน์จะถูกทำให้ใช้งานได้ การปรับใช้ Kubeflow Pipelines แสดงว่าคุณยอมรับข้อกำหนดในการให้บริการ

3. ตั้งค่าอินสแตนซ์โน้ตบุ๊ก Cloud AI Platform

  1. ไปที่หน้า Vertex AI Workbench ครั้งแรกที่คุณเรียกใช้ Workbench คุณจะต้องเปิดใช้งาน Notebooks API

    ใต้เมนูนำทางหลัก: ≡ -> Vertex AI -> Workbench

  2. หากได้รับแจ้ง ให้เปิดใช้งาน Compute Engine API

  3. สร้าง โน้ตบุ๊กใหม่ ที่ติดตั้ง TensorFlow Enterprise 2.7 (หรือสูงกว่า)

    โน้ตบุ๊กใหม่ -> TensorFlow Enterprise 2.7 -> ไม่มี GPU

    เลือกภูมิภาคและโซน แล้วตั้งชื่ออินสแตนซ์โน้ตบุ๊ก

    เพื่อให้อยู่ภายในขีดจำกัด Free Tier คุณอาจต้องเปลี่ยนการตั้งค่าเริ่มต้นที่นี่ เพื่อลดจำนวน vCPU ที่พร้อมใช้งานสำหรับอินสแตนซ์นี้จาก 4 เป็น 2:

    1. เลือก ตัวเลือกขั้นสูง ที่ด้านล่างของแบบฟอร์ม สมุดบันทึกใหม่
    2. ภายใต้ การกำหนดค่าเครื่อง คุณอาจต้องการเลือกการกำหนดค่าที่มี 1 หรือ 2 vCPU หากคุณต้องการอยู่ใน Free Tier

    3. รอให้สมุดบันทึกใหม่ถูกสร้างขึ้น จากนั้นคลิก เปิดใช้งาน Notebooks API

4. เปิดสมุดบันทึกการเริ่มต้นใช้งาน

  1. ไปที่หน้า คลัสเตอร์ไปป์ไลน์แพลตฟอร์ม AI

    ใต้เมนูนำทางหลัก: ≡ -> แพลตฟอร์ม AI -> ท่อ

  2. ในบรรทัดสำหรับคลัสเตอร์ที่คุณใช้ในบทช่วยสอนนี้ ให้คลิก Open Pipelines Dashboard

  3. ในหน้า เริ่มต้น ให้คลิก เปิดโน้ตบุ๊ก Cloud AI Platform บน Google Cloud

  4. เลือกอินสแตนซ์ 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 เพื่อวิเคราะห์ประสิทธิภาพของแบบจำลองด้วย

ส่วนประกอบ

ในตัวแก้ไขไฟล์แล็บ 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

คุณต้องแก้ไขข้อกำหนดไปป์ไลน์เพื่อรองรับข้อมูลของคุณ

หากข้อมูลของคุณถูกเก็บไว้ในไฟล์

  1. แก้ไข DATA_PATH ใน kubeflow_runner.py โดยระบุตำแหน่ง

หากข้อมูลของคุณถูกเก็บไว้ใน BigQuery

  1. แก้ไข BIG_QUERY_QUERY ใน configs.py เป็นคำสั่งการสืบค้นของคุณ
  2. เพิ่มคุณสมบัติใน models / features.py
  3. แก้ไข models / preprocessing.py เพื่อ แปลงข้อมูลอินพุตสำหรับการฝึกอบรม
  4. แก้ไข models / keras / model.py และ models / keras / constants.py เพื่อ อธิบายโมเดล ML ของคุณ

เรียนรู้เพิ่มเติมเกี่ยวกับเทรนเนอร์

ดู คู่มือส่วนประกอบเทรนเนอร์ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับไปป์ไลน์การฝึกอบรม

การทำความสะอาด

หากต้องการล้างทรัพยากร Google Cloud ทั้งหมดที่ใช้ในโปรเจ็กต์นี้ คุณสามารถ ลบโปรเจ็กต์ Google Cloud ที่ คุณใช้สำหรับบทช่วยสอนได้

อีกวิธีหนึ่ง คุณสามารถล้างข้อมูลทรัพยากรแต่ละรายการโดยไปที่แต่ละคอนโซล: - Google Cloud Storage - Google Container Registry - Google Kubernetes Engine