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
3. ตั้งค่าสภาพแวดล้อม
ทําตามขั้นตอนในแล็บการฝึกโมเดลที่กําหนดเองด้วย Vertex AI ให้เสร็จสมบูรณ์เพื่อตั้งค่าสภาพแวดล้อม
4. อัปโหลดโมเดลไปยังรีจิสทรี
ก่อนที่จะใช้โมเดลเพื่อรับการคาดการณ์ เราจำเป็นต้องอัปโหลดโมเดลไปยัง Vertex AI Model Registry ซึ่งเป็นที่เก็บที่คุณจัดการวงจรของโมเดล ML ได้
คุณสามารถอัปโหลดโมเดลเมื่อกำหนดค่างานการฝึกที่กำหนดเองดังที่แสดงด้านล่าง
หรือจะนําเข้าโมเดลหลังจากที่งานการฝึกเสร็จสมบูรณ์แล้วก็ได้ ตราบใดที่คุณจัดเก็บอาร์ติแฟกต์โมเดลที่บันทึกไว้ไว้ในที่เก็บข้อมูล Cloud Storage นี่คือตัวเลือกที่เราจะใช้ในห้องทดลองนี้
ไปที่ส่วนรุ่นในคอนโซล
เลือกนําเข้า
เลือกนําเข้าเป็นโมเดลใหม่ แล้วตั้งชื่อโมเดล
ในส่วนการตั้งค่าโมเดล ให้นําเข้าโมเดลด้วยคอนเทนเนอร์ที่สร้างไว้ล่วงหน้าและใช้ TensorFlow 2.8 ดูรายการคอนเทนเนอร์การคาดการณ์ที่สร้างไว้ล่วงหน้าทั้งหมดได้ที่นี่
จากนั้นระบุเส้นทางไปยังที่เก็บข้อมูล Cloud Storage ที่คุณบันทึกอาร์ติแฟกต์ของโมเดลไว้ในงานการฝึกที่กําหนดเอง ซึ่งควรมีลักษณะดังนี้ gs://{PROJECT_ID}-bucket/model_output
เราจะข้ามส่วนความสามารถในการอธิบายได้ แต่หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับ Vertex Explainable AI โปรดอ่านเอกสารประกอบ
เมื่อนําเข้ารูปแบบแล้ว คุณจะเห็นรูปแบบนั้นในรีจิสทรี
โปรดทราบว่าหากต้องการทําผ่าน 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 จุดที่ด้านขวาสุดของโมเดล แล้วเลือกทำให้ใช้งานได้ที่อุปกรณ์ปลายทาง
ตั้งชื่อปลายทาง แล้วปล่อยการตั้งค่าที่เหลือไว้ตามเดิม แล้วคลิกต่อไป
Endpoint รองรับการปรับขนาดอัตโนมัติ ซึ่งหมายความว่าคุณสามารถตั้งค่าจำนวนขั้นต่ำและสูงสุดได้ และโหนดการประมวลผลจะปรับขนาดเพื่อตอบสนองดีมานด์การรับส่งข้อมูลภายในขอบเขตเหล่านั้น
เนื่องจากห้องทดลองนี้มีไว้เพื่อสาธิตเท่านั้นและเราจะไม่ใช้ปลายทางนี้กับการเข้าชมสูง คุณจึงตั้งค่าจำนวนโน้ตการประมวลผลสูงสุดเป็น 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 อื่นๆ ซึ่งหมายความว่าคุณสามารถเรียกใช้จากฟังก์ชันระบบคลาวด์ แชทบ็อต เว็บแอป ฯลฯ
สำหรับการสาธิต เราจะเรียกปลายทางนี้จาก Workbench
กลับไปที่โน้ตบุ๊กที่คุณสร้างในก่อนหน้านี้ สร้างโน้ตบุ๊ก 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}")
คุณจะค้นหา Endpoints_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 เพื่อถอดรหัสไบต์รูปภาพ วิธีนี้ต้องใช้ความพยายามมากกว่าเล็กน้อย แต่มีประสิทธิภาพมากขึ้นมากสำหรับรูปภาพขนาดใหญ่และการสร้างแอปพลิเคชัน ดูตัวอย่างในสมุดบันทึกนี้ได้
🎉 ยินดีด้วย 🎉
คุณได้เรียนรู้วิธีใช้ Vertex AI เพื่อทำสิ่งต่อไปนี้
- อัปโหลดโมเดลไปยัง Vertex AI Model Registry
- รับการคาดการณ์แบบกลุ่มและแบบออนไลน์
ดูข้อมูลเพิ่มเติมเกี่ยวกับส่วนต่างๆ ของ Vertex ได้ในเอกสารประกอบ
7. ล้างข้อมูล
คุณจะต้องยกเลิกการทำให้โมเดลใช้งานได้จากปลายทางหากไม่ได้วางแผนที่จะใช้โมเดลเหล่านี้ หรือจะลบปลายทางทั้งหมดก็ได้ คุณสามารถทำให้โมเดลใช้งานได้อีกครั้งในปลายทางได้ทุกเมื่อหากต้องการ
โน้ตบุ๊กที่มีการจัดการของ Workbench จะหมดเวลาโดยอัตโนมัติหลังจากไม่มีการใช้งานเป็นเวลา 180 นาที คุณจึงไม่ต้องกังวลเกี่ยวกับการปิดอินสแตนซ์ หากต้องการปิดอินสแตนซ์ด้วยตนเอง ให้คลิกปุ่มหยุดในส่วน Vertex AI Workbench ของคอนโซล หากต้องการลบสมุดบันทึกทั้งหมด ให้คลิกปุ่ม "ลบ"
หากต้องการลบที่เก็บข้อมูล ให้ใช้เมนูการนำทางใน Cloud Console เพื่อไปที่พื้นที่เก็บข้อมูล เลือกที่เก็บข้อมูล แล้วคลิกลบ