สร้างต้นแบบไปสู่เวอร์ชันที่ใช้งานจริง: รับการคาดการณ์จากโมเดลที่ผ่านการฝึกแบบกำหนดเอง

1. ภาพรวม

ในชั้นเรียนนี้ คุณจะใช้ Vertex AI เพื่อรับการคาดการณ์แบบออนไลน์และการคาดการณ์แบบกลุ่มจากโมเดลที่ฝึกตามที่กำหนดเอง

วิดีโอนี้เป็นส่วนหนึ่งของซีรีส์วิดีโอจากต้นแบบสู่เวอร์ชันที่ใช้งานจริง โปรดศึกษาห้องทดลองก่อนหน้านี้ให้เสร็จเรียบร้อยก่อนที่จะทดลองใช้ คุณดูข้อมูลเพิ่มเติมได้จากวิดีโอประกอบต่อไปนี้

.

สิ่งที่ได้เรียนรู้

โดยคุณจะได้เรียนรู้วิธีต่อไปนี้

  • อัปโหลดโมเดลไปยัง Vertex AI Model Registry
  • ทำให้โมเดลใช้งานได้ในปลายทาง
  • รับการคาดการณ์แบบออนไลน์และแบบกลุ่มด้วย UI และ SDK

ค่าใช้จ่ายรวมในการเรียกใช้ห้องทดลองนี้บน Google Cloud อยู่ที่ประมาณ $1

2. ข้อมูลเบื้องต้นเกี่ยวกับ Vertex AI

ห้องทดลองนี้ใช้ข้อเสนอผลิตภัณฑ์ AI ใหม่ล่าสุดที่มีให้บริการใน Google Cloud Vertex AI ผสานรวมข้อเสนอ ML ใน Google Cloud เข้ากับประสบการณ์การพัฒนาที่ราบรื่น ก่อนหน้านี้ โมเดลที่ฝึกด้วย AutoML และโมเดลที่กำหนดเองจะเข้าถึงได้ผ่านบริการแยกต่างหาก ข้อเสนอใหม่นี้รวมทั้ง 2 รายการไว้ใน API เดียว พร้อมกับผลิตภัณฑ์ใหม่อื่นๆ นอกจากนี้ คุณยังย้ายข้อมูลโปรเจ็กต์ที่มีอยู่ไปยัง Vertex AI ได้ด้วย

Vertex AI มีผลิตภัณฑ์หลายอย่างเพื่อรองรับเวิร์กโฟลว์ ML ตั้งแต่ต้นจนจบ ห้องทดลองนี้จะมุ่งเน้นที่ผลิตภัณฑ์ที่ไฮไลต์ไว้ด้านล่าง ได้แก่ การคาดคะเนและ Workbench

ภาพรวมผลิตภัณฑ์ Vertex

3. ตั้งค่าสภาพแวดล้อม

ทําตามขั้นตอนในแล็บการฝึกโมเดลที่กําหนดเองด้วย Vertex AI ให้เสร็จสมบูรณ์เพื่อตั้งค่าสภาพแวดล้อม

4. อัปโหลดโมเดลไปยังรีจิสทรี

ก่อนที่จะใช้โมเดลเพื่อรับการคาดการณ์ เราจำเป็นต้องอัปโหลดโมเดลไปยัง Vertex AI Model Registry ซึ่งเป็นที่เก็บที่คุณจัดการวงจรของโมเดล ML ได้

คุณสามารถอัปโหลดโมเดลเมื่อกำหนดค่างานการฝึกที่กำหนดเองดังที่แสดงด้านล่าง

training_prediction

หรือจะนําเข้าโมเดลหลังจากที่งานการฝึกเสร็จสมบูรณ์แล้วก็ได้ ตราบใดที่คุณจัดเก็บอาร์ติแฟกต์โมเดลที่บันทึกไว้ไว้ในที่เก็บข้อมูล Cloud Storage นี่คือตัวเลือกที่เราจะใช้ในห้องทดลองนี้

ไปที่ส่วนรุ่นในคอนโซล

เมนูโมเดล

เลือกนําเข้า

import_model

เลือกนําเข้าเป็นโมเดลใหม่ แล้วตั้งชื่อโมเดล

new_model

ในส่วนการตั้งค่าโมเดล ให้นําเข้าโมเดลด้วยคอนเทนเนอร์ที่สร้างไว้ล่วงหน้าและใช้ TensorFlow 2.8 ดูรายการคอนเทนเนอร์การคาดการณ์ที่สร้างไว้ล่วงหน้าทั้งหมดได้ที่นี่

จากนั้นระบุเส้นทางไปยังที่เก็บข้อมูล Cloud Storage ที่คุณบันทึกอาร์ติแฟกต์ของโมเดลไว้ในงานการฝึกที่กําหนดเอง ซึ่งควรมีลักษณะดังนี้ gs://{PROJECT_ID}-bucket/model_output

เราจะข้ามส่วนความสามารถในการอธิบายได้ แต่หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับ Vertex Explainable AI โปรดอ่านเอกสารประกอบ

เมื่อนําเข้ารูปแบบแล้ว คุณจะเห็นรูปแบบนั้นในรีจิสทรี

flower_model

โปรดทราบว่าหากต้องการทําผ่าน SDK แทน UI ให้เรียกใช้คำสั่งต่อไปนี้จากโน้ตบุ๊ก Workbench เพื่ออัปโหลดโมเดล

from google.cloud import aiplatform

my_model = aiplatform.Model.upload(display_name='flower-model',
                                  artifact_uri='gs://{PROJECT_ID}-bucket/model_output',
                                  serving_container_image_uri='us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest')

5. ทำให้โมเดลใช้งานได้ในปลายทาง

งานการคาดการณ์ที่เราเรียกใช้ได้ใน Vertex AI มี 2 ประเภท ได้แก่ แบบกลุ่มและแบบออนไลน์

การคาดการณ์แบบกลุ่มเป็นคําขอแบบไม่พร้อมกัน เหมาะสมในกรณีที่คุณไม่ต้องการการตอบกลับโดยทันทีและต้องการประมวลผลข้อมูลสะสมในคำขอเดียว

ในทางกลับกัน หากคุณต้องการรับการคาดการณ์ที่มีเวลาในการตอบสนองต่ำจากข้อมูลที่ส่งไปยังโมเดลของคุณแบบเรียลไทม์ คุณจะใช้การคาดการณ์ออนไลน์

เมื่อโมเดลอยู่ในรีจิสทรีแล้ว เราจึงใช้โมเดลดังกล่าวในการคาดการณ์แบบเป็นกลุ่มได้

แต่หากเราต้องการรับการคาดการณ์ทางออนไลน์ เราจะทำให้โมเดลใช้งานได้ที่ปลายทาง ซึ่งจะเชื่อมโยงอาร์ติแฟกต์โมเดลที่บันทึกไว้กับทรัพยากรจริงเพื่อการคาดการณ์ที่มีเวลาในการตอบสนองต่ำ

หากต้องการทำให้ใช้งานได้ที่อุปกรณ์ปลายทาง ให้เลือกจุด 3 จุดที่ด้านขวาสุดของโมเดล แล้วเลือกทำให้ใช้งานได้ที่อุปกรณ์ปลายทาง

deploy_model

ตั้งชื่อปลายทาง แล้วปล่อยการตั้งค่าที่เหลือไว้ตามเดิม แล้วคลิกต่อไป

endpoint_name

Endpoint รองรับการปรับขนาดอัตโนมัติ ซึ่งหมายความว่าคุณสามารถตั้งค่าจำนวนขั้นต่ำและสูงสุดได้ และโหนดการประมวลผลจะปรับขนาดเพื่อตอบสนองดีมานด์การรับส่งข้อมูลภายในขอบเขตเหล่านั้น

เนื่องจากห้องทดลองนี้มีไว้เพื่อสาธิตเท่านั้นและเราจะไม่ใช้ปลายทางนี้กับการเข้าชมสูง คุณจึงตั้งค่าจำนวนโน้ตการประมวลผลสูงสุดเป็น 1 และเลือก n1-standard-4 เป็นประเภทเครื่องได้

endpoint_compute

เราจะข้ามการตรวจสอบโมเดล แต่หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์นี้ โปรดอ่านเอกสารประกอบ

จากนั้นคลิกทำให้ใช้งานได้

การปรับใช้งานจะใช้เวลา 2-3 นาที แต่เมื่อเสร็จแล้ว คุณจะเห็นสถานะการปรับใช้งานของโมเดลเปลี่ยนเป็นใช้งานใน Vertex AI แล้ว

หากต้องการทําให้โมเดลใช้งานได้ผ่าน SDK ให้เรียกใช้คําสั่งด้านล่าง

my_model = aiplatform.Model("projects/{PROJECT_NUMBER}/locations/us-central1/models/{MODEL_ID}") 

endpoint = my_model.deploy(
     deployed_model_display_name='my-endpoint',
     traffic_split={"0": 100},
     machine_type="n1-standard-4",
     accelerator_count=0,
     min_replica_count=1,
     max_replica_count=1,
   )

6. รับการคาดการณ์

การคาดการณ์ออนไลน์

เมื่อมีการทําให้โมเดลใช้งานได้ในปลายทาง คุณจะเรียกใช้โมเดลนั้นได้เหมือนกับปลายทาง REST อื่นๆ ซึ่งหมายความว่าคุณสามารถเรียกใช้จากฟังก์ชันระบบคลาวด์ แชทบ็อต เว็บแอป ฯลฯ

สำหรับการสาธิต เราจะเรียกปลายทางนี้จาก Workbench

กลับไปที่โน้ตบุ๊กที่คุณสร้างในก่อนหน้านี้ สร้างโน้ตบุ๊ก TensorFlow 2 ใหม่จากตัวเปิด

tf_kernel

นำเข้า Vertex AI Python SDK, Numpy และ PIL

from google.cloud import aiplatform

import numpy as np
from PIL import Image

ดาวน์โหลดรูปภาพด้านล่างและอัปโหลดไปยังอินสแตนซ์ Workbench เราจะทดสอบโมเดลนี้กับรูปภาพดอกแดนเดไลออนนี้

test_image

ก่อนอื่น ให้กําหนดปลายทาง คุณจะต้องแทนที่ {PROJECT_NUMBER} และ {ENDPOINT_ID} ด้านล่าง

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/{PROJECT_NUMBER}/locations/us-central1/endpoints/{ENDPOINT_ID}")

คุณจะค้นหา Endpoints_id ได้ในส่วน Endpoints ของ Cloud Console

endpoint_id

และคุณจะเห็นหมายเลขโปรเจ็กต์ในหน้าแรกของคอนโซล โปรดทราบว่ารหัสนี้แตกต่างจากรหัสโปรเจ็กต์

หมายเลขโปรเจ็กต์

โค้ดด้านล่างจะเปิดขึ้นและปรับขนาดรูปภาพด้วย PIL

IMAGE_PATH = "test-image.jpg"
im = Image.open(IMAGE_PATH)

จากนั้นแปลงข้อมูล NumPy เป็นประเภท float32 และแปลงเป็นลิสต์ เราแปลงเป็นลิสต์เนื่องจากข้อมูล NumPy ไม่สามารถจัดรูปแบบเป็น JSON ได้ เราจึงส่งข้อมูลดังกล่าวในเนื้อหาของคำขอไม่ได้

x_test = np.asarray(im).astype(np.float32).tolist()

สุดท้าย ให้โทรหา endpoint.predict

endpoint.predict(instances=x_test).predictions

ผลลัพธ์ที่คุณได้รับคือเอาต์พุตของโมเดล ซึ่งเป็นเลเยอร์ Softmax ที่มี 5 หน่วย หากต้องการเขียนตรรกะที่กำหนดเองเพื่อแสดงผลป้ายกำกับสตริงแทนดัชนี ให้ใช้รูทีนการคาดการณ์ที่กำหนดเอง

การคาดการณ์แบบกลุ่ม

การจัดรูปแบบข้อมูลสำหรับการคาดการณ์แบบเป็นกลุ่มมีหลายวิธี เราจะวางข้อมูล NumPy ลงในไฟล์ JSON และบันทึกไฟล์ลงใน Cloud Storage เพื่อลดความซับซ้อน

with open('test-data.json', 'w') as fp:
    json.dump(x_test, fp)

!gsutil cp test-data.json gs://{YOUR_BUCKET}

ถัดไป ให้กำหนดโมเดล วิธีนี้คล้ายกับการกำหนดปลายทาง เว้นแต่ว่าคุณจะต้องระบุ MODEL_ID แทน ENDPOINT_ID

my_model=aiplatform.Model("projects/{PROJECT_NUMBER}/locations/us-central1/models/{MODEL_ID}") 

คุณดูรหัสโมเดลได้โดยเลือกชื่อและเวอร์ชันโมเดลจากส่วนโมเดลของคอนโซล แล้วเลือกรายละเอียดเวอร์ชัน

model_id

สุดท้าย ให้ใช้ SDK เพื่อเรียกใช้งานการคาดการณ์แบบเป็นกลุ่ม โดยส่งเส้นทาง Cloud Storage ที่คุณจัดเก็บไฟล์ JSON และระบุตำแหน่ง Cloud Storage สำหรับจัดเก็บผลลัพธ์การคาดการณ์

batch_prediction_job = my_model.batch_predict(
    job_display_name='flower_batch_predict',
    gcs_source='gs://{YOUR_BUCKET}/test-data.json',
    gcs_destination_prefix='gs://{YOUR_BUCKET}/prediction-results',
    machine_type='n1-standard-4',)

คุณสามารถติดตามความคืบหน้าของงานได้ในส่วนการคาดการณ์แบบกลุ่มของคอนโซล โปรดทราบว่าการเรียกใช้งานการคาดการณ์แบบกลุ่มสําหรับรูปภาพเดียวนั้นไม่มีประสิทธิภาพ

batch_pred

ขั้นตอนถัดไป

ในตัวอย่างนี้ เราแปลงรูปภาพทดสอบเป็น NumPy ก่อนเรียกใช้การคาดการณ์ สำหรับ Use Case ที่เป็นจริงมากขึ้น คุณอาจต้องการส่งรูปภาพโดยตรงโดยไม่ต้องโหลดลงใน NumPy ก่อน โดยคุณจะต้องปรับฟังก์ชันการแสดงผล TensorFlow เพื่อถอดรหัสไบต์รูปภาพ วิธีนี้ต้องใช้ความพยายามมากกว่าเล็กน้อย แต่มีประสิทธิภาพมากขึ้นมากสำหรับรูปภาพขนาดใหญ่และการสร้างแอปพลิเคชัน ดูตัวอย่างในสมุดบันทึกนี้ได้

🎉 ยินดีด้วย 🎉

คุณได้เรียนรู้วิธีใช้ Vertex AI เพื่อทำสิ่งต่อไปนี้

  • อัปโหลดโมเดลไปยัง Vertex AI Model Registry
  • รับการคาดการณ์แบบกลุ่มและแบบออนไลน์

ดูข้อมูลเพิ่มเติมเกี่ยวกับส่วนต่างๆ ของ Vertex ได้ในเอกสารประกอบ

7. ล้างข้อมูล

คุณจะต้องยกเลิกการทำให้โมเดลใช้งานได้จากปลายทางหากไม่ได้วางแผนที่จะใช้โมเดลเหล่านี้ หรือจะลบปลายทางทั้งหมดก็ได้ คุณสามารถทำให้โมเดลใช้งานได้อีกครั้งในปลายทางได้ทุกเมื่อหากต้องการ

undeploy_model

โน้ตบุ๊กที่มีการจัดการของ Workbench จะหมดเวลาโดยอัตโนมัติหลังจากไม่มีการใช้งานเป็นเวลา 180 นาที คุณจึงไม่ต้องกังวลเกี่ยวกับการปิดอินสแตนซ์ หากต้องการปิดอินสแตนซ์ด้วยตนเอง ให้คลิกปุ่มหยุดในส่วน Vertex AI Workbench ของคอนโซล หากต้องการลบสมุดบันทึกทั้งหมด ให้คลิกปุ่ม "ลบ"

หยุดอินสแตนซ์

หากต้องการลบที่เก็บข้อมูล ให้ใช้เมนูการนำทางใน Cloud Console เพื่อไปที่พื้นที่เก็บข้อมูล เลือกที่เก็บข้อมูล แล้วคลิกลบ

ลบพื้นที่เก็บข้อมูล