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 แบบครบวงจร ห้องทดลองนี้จะมุ่งเน้นที่ผลิตภัณฑ์ที่ไฮไลต์ไว้ด้านล่าง ได้แก่ การคาดการณ์และเวิร์กเบนช์

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

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

เลือกIMPORT

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

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

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

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

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

เราจะข้ามการตรวจสอบโมเดล แต่หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์นี้ โปรดดูเอกสารประกอบ
จากนั้นคลิกติดตั้งใช้งาน
การติดตั้งใช้งานจะใช้เวลา 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 ใหม่จากตัวเรียกใช้

นำเข้า Vertex AI Python SDK, numpy และ PIL
from google.cloud import aiplatform
import numpy as np
from PIL import Image
ดาวน์โหลดรูปภาพด้านล่างแล้วอัปโหลดไปยังอินสแตนซ์ Workbench เราจะทดสอบโมเดลกับรูปภาพดอกแดนดิไลออนนี้

ก่อนอื่น ให้กำหนดปลายทาง คุณจะต้องแทนที่ {PROJECT_NUMBER} และ {ENDPOINT_ID} ด้านล่าง
endpoint = aiplatform.Endpoint(
endpoint_name="projects/{PROJECT_NUMBER}/locations/us-central1/endpoints/{ENDPOINT_ID}")
คุณจะดู endpoint_id ได้ในส่วน "Endpoints" ของ Cloud Console

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

โค้ดด้านล่างจะเปิดและปรับขนาดรูปภาพด้วย 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}")
คุณดูรหัสโมเดลได้โดยเลือกชื่อและเวอร์ชันของโมเดลจากส่วนโมเดลของคอนโซล แล้วเลือกรายละเอียดเวอร์ชัน

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

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

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

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