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

1. ภาพรวม

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

แล็บนี้เป็นส่วนหนึ่งของวิดีโอซีรีส์ต้นแบบสู่การผลิต โปรดทำแล็บก่อนหน้าให้เสร็จก่อนที่จะลองใช้แล็บนี้ ดูข้อมูลเพิ่มเติมได้ในวิดีโอประกอบ

.

สิ่งที่คุณจะได้เรียนรู้

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

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

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

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

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

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

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

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

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

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

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

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

training_prediction

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

ไปที่ส่วนโมเดลในคอนโซล

เมนูโมเดล

เลือกIMPORT

import_model

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

new_model

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

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

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

เมื่อนำเข้ารุ่นแล้ว คุณจะเห็นรุ่นดังกล่าวในรีจิสทรี

flower_model

โปรดทราบว่าหากต้องการดำเนินการนี้ผ่าน SDK แทน UI คุณสามารถเรียกใช้คำสั่งต่อไปนี้จาก Notebook ของ 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 ประเภท ได้แก่ แบบกลุ่มและแบบออนไลน์

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

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

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

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

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

deploy_model

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

endpoint_name

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

เนื่องจาก Lab นี้มีไว้เพื่อการสาธิตเท่านั้น และเราจะไม่ใช้อุปกรณ์ปลายทางนี้สำหรับการรับส่งข้อมูลสูง คุณจึงตั้งค่าจำนวนโหนดการคำนวณสูงสุดเป็น 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 อื่นๆ ซึ่งหมายความว่าคุณเรียกใช้โมเดลจาก Cloud Function, แชทบ็อต, เว็บแอป ฯลฯ ได้

เราจะเรียกใช้ปลายทางนี้จาก Workbench เพื่อวัตถุประสงค์ในการสาธิต

กลับไปที่สมุดบันทึกที่คุณสร้างไว้ใน Lab ก่อนหน้า สร้าง Notebook 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}")

คุณจะดู endpoint_id ได้ในส่วน "Endpoints" ของ Cloud Console

endpoint_id

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

project_number

โค้ดด้านล่างจะเปิดและปรับขนาดรูปภาพด้วย 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 เพื่อถอดรหัสไบต์รูปภาพ วิธีนี้ต้องใช้ความพยายามมากกว่าเล็กน้อย แต่จะมีประสิทธิภาพมากกว่ามากสำหรับรูปภาพขนาดใหญ่และการสร้างแอปพลิเคชัน คุณดูตัวอย่างได้ใน Notebook นี้

🎉 ยินดีด้วย 🎉

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

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

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

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

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

undeploy_model

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

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

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

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