การคาดการณ์การจัดประเภทภาพยนตร์ด้วย Vertex AI AutoML

1. บทนำ

ใน Codelab นี้ เราจะสร้างโมเดลการคาดการณ์คะแนนภาพยนตร์โดยใช้ Vertex AI AutoML และปลายทางโมเดลที่ทำให้ใช้งานได้แล้วซึ่งทริกเกอร์จาก Java Cloud Functions โมเดลจะได้รับการฝึกด้วยข้อมูลที่จัดเก็บไว้ใน BigQuery และลงทะเบียนใน Vertex AI รายการบริการอาจประกอบด้วย 2 ส่วน ดังนี้

  1. การสร้างโมเดล ML และการติดตั้งใช้งาน
  2. ทริกเกอร์ให้คาดการณ์โดยใช้ ML API

การสร้างโมเดล ML:

  1. ข้อมูลจาก CSV ไปยัง BigQuery
  2. ข้อมูล BigQuery ที่ผสานรวมกับ Vertex AI สำหรับการสร้างโมเดล AutoML
  3. โมเดลที่ทำให้ใช้งานได้ใน Vertex AI Model Registry เพื่อสร้าง API ปลายทาง

ทริกเกอร์ให้คาดการณ์โดยใช้ ML API:

  1. Java Cloud Functions เพื่อทริกเกอร์ปลายทางของโมเดล AutoML ที่ทำให้ใช้งานได้แล้ว ซึ่งจะนำรายละเอียดภาพยนตร์เป็นคำขอจาก UI แสดงผลภาพยนตร์ที่คาดการณ์ไว้ SCORE

ด้านล่างนี้เป็นภาพรวมทางสถาปัตยกรรมระดับสูงของแอปพลิเคชันนี้

5ae50607c0f2db20.png

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

เรามาเจาะลึกขั้นตอนการติดตั้งใช้งานกัน

สิ่งที่คุณจะสร้าง

คุณจะได้สร้าง

  • ชุดข้อมูล BigQuery ที่จะมีคอมโพเนนต์ของตารางและโมเดล
  • โมเดล AutoML ของ Vertex AI (สร้างและทำให้ใช้งานได้)
  • ทริกเกอร์ Java Cloud Functions เพื่อคาดการณ์โดยใช้ ML API

2. ข้อกำหนด

  • เบราว์เซอร์ เช่น Chrome หรือ Firefox
  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน

ข้อกำหนดเบื้องต้นมีดังนี้

สร้างโปรเจ็กต์

  1. ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
  2. ตรวจสอบว่าเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์แล้ว ดูวิธีตรวจสอบว่าเปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้ว
  3. ไปที่ BigQuery เพื่อเปิดใช้ API นอกจากนี้คุณยังเปิด UI เว็บของ BigQuery ได้โดยตรงโดยการป้อน URL ต่อไปนี้ในเบราว์เซอร์ของคุณ: https://console.cloud.google.com/bigquery

เปิดใช้งาน Cloud Shell

  1. คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานใน Google Cloud ซึ่งมีการโหลดไว้ล่วงหน้าโดยมี bq โดยจาก Cloud Console ให้คลิก "เปิดใช้งาน Cloud Shell" ที่มุมขวาบน: 6757b2fb50ddcc2d.png
  2. เมื่อเชื่อมต่อกับ Cloud Shell คุณควรเห็นว่าได้รับการตรวจสอบสิทธิ์แล้ว และโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์แล้ว เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์แล้ว
gcloud auth list
  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้เกี่ยวกับโปรเจ็กต์ของคุณ
gcloud config list project
  1. หากไม่ได้ตั้งค่าโปรเจ็กต์ไว้ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่าโปรเจ็กต์
gcloud config set project <PROJECT_ID>

ดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ

3. กำลังเตรียมข้อมูลการฝึก

นี่เป็นขั้นตอนสำคัญในโปรเจ็กต์ ผลิตภัณฑ์ และแอปทั้งหมดที่เกี่ยวข้องกับข้อมูล ซึ่งต้องอาศัยความเชี่ยวชาญด้านโดเมนเป็นอย่างมาก นอกเหนือจากเทคโนโลยีเพื่อเตรียมชุดข้อมูลที่ดีที่สุดและเตรียมพร้อมสำหรับโปรเจ็กต์ ML สำหรับ Codelab นี้ เราจะสมมติว่ามีการจัดเตรียมข้อมูลและใช้ไฟล์ data ที่ประมวลผลแล้ว

4. การสร้างและโหลดชุดข้อมูล

ชุดข้อมูล BigQuery คือคอลเล็กชันของตาราง ตารางทั้งหมดในชุดข้อมูลจะได้รับการจัดเก็บไว้ในตำแหน่งข้อมูลเดียวกัน คุณยังแนบการควบคุมการเข้าถึงที่กำหนดเองเพื่อจำกัดการเข้าถึงชุดข้อมูลและตารางของชุดข้อมูลได้ด้วย

  1. ใน Cloud Shell ให้ใช้คำสั่ง bq mk เพื่อสร้างชุดข้อมูลที่ชื่อ "movies"
bq mk --location=<<LOCATION>> movies

ตั้งค่าตำแหน่งเป็นภูมิภาค (asia-south1) อย่าลืมตั้งค่าเป็นภูมิภาคสำหรับขั้นตอน VERTEX AI ด้วย (ทั้ง 2 อินสแตนซ์ควรอยู่ในภูมิภาคเดียวกัน)

  1. ตรวจสอบว่าคุณมีไฟล์ข้อมูล (.csv) พร้อมแล้ว เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อโคลนที่เก็บและไปยังโปรเจ็กต์
git clone <<repository link>>

cd movie-score
  1. ใช้คำสั่งการโหลด BQ เพื่อโหลดไฟล์ CSV ลงในตาราง BigQuery (โปรดทราบว่าคุณจะอัปโหลดได้โดยตรงจาก BigQuery UI) ดังนี้
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string
  1. ค้นหาโดยใช้ 1 ใน 3 วิธีต่อไปนี้

เราสามารถโต้ตอบกับ BigQuery ได้ 3 วิธี โดยจะลองใช้ 2 วิธีต่อไปนี้ ก. UI ของเว็บ BigQuery ข. คำสั่ง bq c API

SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

ฉันใช้พื้นที่ทำงาน BigQuery Web SQL เพื่อเรียกใช้การค้นหาแล้ว พื้นที่ทำงานของ SQL มีลักษณะดังนี้

109a0b2c7155e9b3.png

กำลังใช้คำสั่ง bq:

bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

5. การใช้ข้อมูล BigQuery ใน Vertex AI AutoML

ใช้ข้อมูลจาก BigQuery เพื่อสร้างโมเดล AutoML ด้วย Vertex AI โดยตรง โปรดอย่าลืมว่าเราสามารถดำเนินการ AutoML จาก BigQuery เอง รวมถึงลงทะเบียนโมเดลกับ VertexAI และแสดงปลายทางได้ด้วย โปรดดูเอกสารประกอบสำหรับ BigQuery AutoML อย่างไรก็ตาม ในตัวอย่างนี้ เราจะใช้ Vertex AI AutoML เพื่อสร้างโมเดล

การสร้างชุดข้อมูล Vertex AI

ไปที่ Vertex AI จาก Google Cloud Console, เปิดใช้ Vertex AI API หากยังไม่ได้ทำ ขยายข้อมูลและเลือกชุดข้อมูล คลิกสร้างชุดข้อมูล เลือกประเภทข้อมูลแท็บ และ "การถดถอย / การแยกประเภท" แล้วคลิกสร้าง

4104c75c34cbd2d9.png

เลือกแหล่งข้อมูล

ในหน้าถัดไป ให้เลือกแหล่งข้อมูล เลือกตัวเลือก "เลือกตารางหรือมุมมองจาก BigQuery" แล้วเลือกตารางจาก BigQuery ในช่อง "เรียกดู" ของเส้นทาง BigQuery คลิก "ต่อไป"

อย่าลืมว่าอินสแตนซ์ BigQuery และชุดข้อมูล Vertex AI ควรอยู่ในภูมิภาคเดียวกันเพื่อให้ตาราง BigQuery แสดงใน Vertex AI

b787ef18dbca4cff.png

เมื่อคุณเลือกตาราง/มุมมองแหล่งที่มา จากรายการเรียกดู อย่าลืมคลิกปุ่มตัวเลือกเพื่อดำเนินการต่อด้วยขั้นตอนด้านล่าง หากคุณคลิกที่ชื่อตาราง/มุมมองโดยไม่ได้ตั้งใจ ระบบจะนำคุณไปที่ Dataplex คุณเพียงแค่ต้องย้อนกลับไปดู Vertex AI หากเกิดกรณีเช่นนี้

ฝึกโมเดล

  1. เมื่อสร้างชุดข้อมูลแล้ว คุณควรเห็นหน้าวิเคราะห์ซึ่งมีตัวเลือกให้ฝึกโมเดลใหม่ ให้คลิกตัวเลือกต่อไปนี้

bf095263d57106de.png

  1. ปล่อยให้วัตถุประสงค์เป็นการจัดประเภทแล้วเลือกตัวเลือก AutoML ในหน้าแรกและคลิกดำเนินการต่อ: e50597bc3f29894c.png
  2. ตั้งชื่อให้โมเดลของคุณแล้วเลือกชื่อคอลัมน์เป้าหมายเป็น "คะแนน" จากเมนูแบบเลื่อนลงที่ปรากฏขึ้น แล้วคลิก "ดำเนินการต่อ"
  3. นอกจากนี้ โปรดทราบว่าคุณสามารถตรวจสอบ "ส่งออกชุดข้อมูลทดสอบไปยัง BigQuery" ได้ ซึ่งทำให้มองเห็นชุดทดสอบพร้อมผลลัพธ์ในฐานข้อมูลได้ง่ายอย่างมีประสิทธิภาพ โดยไม่ต้องมีชั้นการผสานรวมเพิ่มเติมหรือต้องย้ายข้อมูลระหว่างบริการต่างๆ
  4. ในหน้าถัดไป คุณจะเลือกตัวเลือกการฝึกขั้นสูงที่ต้องการและชั่วโมงที่ต้องการตั้งค่าโมเดลเพื่อฝึก โปรดทราบว่าคุณอาจต้องคำนึงถึงราคาก่อนที่จะเพิ่มจำนวนชั่วโมงทำงานของโหนดที่ต้องการใช้สำหรับการฝึก

คลิก เริ่มการฝึก เพื่อเริ่มการฝึกโมเดลใหม่ของคุณ

e72b004a17849bd.png

ประเมิน ทำให้ใช้งานได้ และทดสอบโมเดล

เมื่อการฝึกเสร็จสมบูรณ์ คุณควรสามารถคลิกการฝึก (ใต้หัวข้อการพัฒนาโมเดลในเมนูด้านซ้าย) และดูการฝึกของคุณที่แสดงในส่วนไปป์ไลน์การฝึก คลิกเพื่อไปยังหน้า Model Registry คุณควรที่จะดำเนินการต่อไปนี้ได้

  1. ดูและประเมินผลการฝึกอบรม 4767b4bbd7cf93fa.png
  2. ทำให้โมเดลใช้งานได้และทดสอบโมเดลด้วยปลายทาง API

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

95fb4495618174f0.png

ก่อนจากส่วนนี้ โปรดจดรหัสปลายทาง ตำแหน่ง และรายละเอียดอื่นๆ ของโมเดลที่ทำให้ใช้งานได้แล้วในส่วนปลายทาง Vertex AI

6. Java Cloud Function เพื่อทริกเกอร์การเรียกใช้ ML

จำได้ไหมว่าเรามีปลายทางและรายละเอียดอื่นๆ จากขั้นตอนการทำให้ ML ใช้งานได้อย่างไร ซึ่งเราจะนำไปใช้ในส่วนนี้ และเนื่องจากเราใช้ Java Cloud Functions เราจึงจะใช้ pom.xml ในการจัดการทรัพยากร Dependency ด้วย เราใช้ไลบรารี google-cloud-aiplatform เพื่อใช้ Vertex AI AutoML End API

  1. ค้นหา Cloud Functions ในคอนโซล Google Cloud แล้วคลิก "สร้างฟังก์ชัน"
  2. ป้อนรายละเอียดการกำหนดค่า เช่น สภาพแวดล้อม ชื่อฟังก์ชัน ภูมิภาค ทริกเกอร์ (ในกรณีนี้คือ HTTPS) การตรวจสอบสิทธิ์ที่คุณเลือก เปิดใช้ "ต้องใช้ HTTPS" แล้วคลิก "ถัดไป/บันทึก"

a68272022df062f2.png

  1. ในหน้าถัดไป ให้เลือกรันไทม์ (Java 11) ซอร์สโค้ด (ในบรรทัดหรืออัปโหลด) แล้วเริ่มแก้ไข

13df616369ca5951.png

  1. คัดลอกไฟล์ java และ pom.xml จากที่เก็บแล้ววางไฟล์ที่เกี่ยวข้องในเครื่องมือแก้ไขในบรรทัด หากใช้เครื่องมือแก้ไขในเครื่อง (แนะนำ) ให้โคลนแหล่งที่มาจากที่เก็บ
  2. สำหรับตัวอย่างนี้ เปลี่ยนรหัสโปรเจ็กต์ รหัสปลายทาง ตำแหน่ง และปลายทางในไฟล์ต้นฉบับ .java แต่แนวทางปฏิบัติแนะนำคือการใช้ Secret Manager เพื่อจัดเก็บข้อมูลเข้าสู่ระบบ
  3. สำหรับขอบเขตของ Codelab นี้ ให้แสดงความคิดเห็นในส่วน MongoDB ในคลาส .java ในซอร์สโค้ดที่คัดลอกมา

ติดตั้งใช้งานฟังก์ชันเมื่อการเปลี่ยนแปลงทั้งหมดเสร็จสมบูรณ์ คุณควรเห็น URL ปลายทางที่สามารถใช้ในแอปพลิเคชันไคลเอ็นต์ของคุณเพื่อส่งคำขอไปยัง Cloud Function นี้และได้รับคะแนนภาพยนตร์เป็นการตอบกลับ

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

โปรดทำตามขั้นตอนต่อไปนี้เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในโพสต์นี้

  1. ในคอนโซล Google Cloud ให้ไปที่หน้าจัดการทรัพยากร
  2. ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
  3. ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเครื่องเพื่อลบโปรเจ็กต์

8. ขอแสดงความยินดี

ยินดีด้วย คุณสร้างและทำให้โมเดลการคาดการณ์คะแนนภาพยนตร์ใช้งานได้ใน Vertex AI AutoML และเรียกใช้โมเดลที่ทำให้ใช้งานได้จาก Cloud Functions เรียบร้อยแล้ว