Vertex AI: ส่งออกและทำให้โมเดลแมชชีนเลิร์นนิง BigQuery ใช้งานได้สำหรับการคาดการณ์

Vertex AI:
ส่งออกและทำให้โมเดลแมชชีนเลิร์นนิง BigQuery ใช้งานได้สำหรับการคาดการณ์

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ พ.ค. 18, 2021
account_circleเขียนโดย Googler

1 ภาพรวม

ในห้องทดลองนี้ คุณจะได้ฝึกโมเดลด้วย BigQuery Machine Learning แล้วส่งออกและทำให้โมเดลนั้นใช้งานได้ไปยัง Vertex AI นี่เป็นข้อเสนอผลิตภัณฑ์ AI ล่าสุดใน Google Cloud

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

  • ฝึกโมเดลด้วยแมชชีนเลิร์นนิงของ BigQuery (BQML)
  • ส่งออกโมเดล BQML ไปยัง Cloud Storage
  • ทำให้ BQML ที่ผ่านการฝึกอบรมแล้วใช้งานได้กับ Vertex AI
  • รับการคาดการณ์บนโมเดลที่ทำให้ใช้งานได้แล้ว

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

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

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

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

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

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

คุณจะต้องมีโปรเจ็กต์ Google Cloud Platform ที่เปิดใช้การเรียกเก็บเงินเพื่อเรียกใช้ Codelab นี้ หากต้องการสร้างโปรเจ็กต์ ให้ทำตามวิธีการที่นี่

ขั้นตอนที่ 1: เปิดใช้ Compute Engine API

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

ขั้นตอนที่ 2: เปิดใช้ Vertex AI API

ไปที่ส่วน Vertex AI ของ Cloud Console แล้วคลิกเปิดใช้ Vertex AI API

แดชบอร์ด Vertex AI

ขั้นตอนที่ 3: สร้างอินสแตนซ์สมุดบันทึก

เราจะใช้สมุดบันทึกเพื่อรับการคาดการณ์หลังจากที่ได้ทำให้โมเดลของเราใช้งานได้ จากส่วน Vertex AI ของ Cloud Console ให้คลิกสมุดบันทึกโดยทำดังนี้

เมนู Vertex AI

จากนั้นเลือกอินสแตนซ์ใหม่ จากนั้นเลือกประเภทอินสแตนซ์ TensorFlow Enterprise 2.3 ที่ไม่มี GPU ดังนี้

อินสแตนซ์ TFE

ใช้ตัวเลือกเริ่มต้นแล้วคลิกสร้าง เมื่อสร้างอินสแตนซ์แล้ว ให้เลือก Open JupyterLab:

เปิดสมุดบันทึก CAIP

4 ฝึกโมเดล ML ของ BigQuery

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

ขั้นตอนที่ 1: สร้างชุดข้อมูล BigQuery ในโปรเจ็กต์

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

สร้างชุดข้อมูล BQ

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

ขั้นตอนที่ 2: เรียกใช้การค้นหา "Create MODEL"

ในตัวแก้ไขคำค้นหาของ BigQuery ให้เรียกใช้การค้นหา CREATE MODEL ต่อไปนี้เพื่อสร้างและฝึกโมเดล ML ของ BigQuery บนชุดข้อมูลสาธารณะที่เราจะใช้ โปรดแทนที่ your-project ด้วยชื่อโปรเจ็กต์ที่อยู่ในระบบคลาวด์ดังนี้

CREATE OR REPLACE MODEL
 
`your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
    input_label_cols
=['default_payment_next_month']) AS
SELECT
  limit_balance
,
  sex
,
  education_level
,
  marital_status
,
  age
,
  pay_0
,
  pay_2
,
  pay_3
,
  pay_4
,
  pay_5
,
  pay_6
,
  bill_amt_1
,
  bill_amt_2
,
  bill_amt_3
,
  bill_amt_4
,
  bill_amt_5
,
  bill_amt_6
,
  pay_amt_1
,
  pay_amt_2
,
  pay_amt_3
,
  pay_amt_4
,
  pay_amt_5
,
  pay_amt_6
,
  default_payment_next_month
FROM
 
`bigquery-public-data.ml_datasets.credit_card_default`

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

รายละเอียดโมเดล BQML

คุณสามารถคลิกโมเดลเพื่อดูเมตริกการฝึกและการประเมิน

5 ส่งออกโมเดล BigQuery ML

ด้วยโมเดล BQML ที่ผ่านการฝึกแล้ว เราจะสามารถใช้ไวยากรณ์ BQML SQL เพื่อรับการคาดการณ์หรือเราจะส่งออกโมเดลไปทำให้ใช้งานได้ที่อื่นก็ได้ ในส่วนนี้ เราจะส่งออกโมเดลเพื่อให้นำไปติดตั้งใช้งานกับ Vertex AI เพื่อให้บริการโมเดลที่รองรับการปรับขนาดและรับการคาดการณ์ได้

ขั้นตอนที่ 1: สร้างที่เก็บข้อมูล Cloud Storage สำหรับโมเดล

ในรายละเอียดโมเดล ให้คลิกส่งออกโมเดล

ส่งออกโมเดล BQML

ระบบจะแจ้งให้คุณป้อนตำแหน่งของ Google Cloud Storage (GCS) ที่คุณต้องการส่งออกชิ้นงานของโมเดล หากยังไม่มีที่เก็บข้อมูล GCS ก็ไม่ต้องกังวล เรากำลังจะสร้าง ก่อนอื่น ให้คลิกเรียกดู แล้วทำดังนี้

เรียกดูที่เก็บข้อมูล GCS

จากนั้นคลิกไอคอน + เพื่อสร้างที่เก็บข้อมูลใหม่ ดังนี้

ที่เก็บข้อมูล GCS ใหม่

ตั้งชื่อที่ไม่ซ้ำกัน (ชื่อที่เก็บข้อมูลของพื้นที่เก็บข้อมูลต้องไม่ซ้ำกัน) คลิกต่อไป ในขั้นตอนถัดไป ให้เลือกภูมิภาคในส่วนประเภทสถานที่ตั้ง แล้วเลือกภูมิภาคจากเมนูแบบเลื่อนลง

ตำแหน่งที่เก็บข้อมูล

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

การควบคุมสิทธิ์เข้าถึงแบบเดียวกัน

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

ขั้นตอนที่ 2: ส่งออกโมเดล BQML

เมื่อสร้างที่เก็บข้อมูลใหม่แล้ว ให้ป้อน model-assets (หรือค่าใดก็ได้ที่ต้องการ) ในช่องชื่อ แล้วคลิกเลือก:

เส้นทางการส่งออกโมเดล

จากนั้นคลิกส่งออก การดำเนินการนี้จะสร้างงานใน BigQuery เพื่อส่งออกโมเดลในรูปแบบ SaveModel ของ TensorFlow ไปยังที่เก็บข้อมูล GCS ที่สร้างขึ้นใหม่ที่คุณระบุ การดำเนินการนี้จะใช้เวลาประมาณ 1 นาทีในการส่งออก

ขณะส่งออกโมเดล ให้ไปที่ส่วนพื้นที่เก็บข้อมูลของ Cloud Console เมื่องานเสร็จสิ้นแล้ว คุณควรเห็นชิ้นงานโมเดลที่ส่งออกไปยังที่เก็บข้อมูลที่เพิ่งสร้างในไดเรกทอรีย่อย model-assets

ชิ้นงานโมเดลที่ส่งออก

6 นำเข้าโมเดลไปยัง Vertex AI

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

ขั้นตอนที่ 1: นำเข้าโมเดล

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

นำเข้าโมเดล

ในขั้นตอนแรก ให้ตั้งชื่อโมเดลของคุณว่า predict_default เลือกภูมิภาคเดียวกับที่คุณสร้างที่เก็บข้อมูล (us-central1, europe-west4 หรือ asia-east1 จากนั้นคลิกดำเนินการต่อ ในการตั้งค่าโมเดล ให้เก็บ "นำเข้าอาร์ติแฟกต์ของโมเดลไปยังคอนเทนเนอร์ที่สร้างไว้ล่วงหน้าใหม่" ที่เลือกไว้

เลือก TensorFlow ในเมนูแบบเลื่อนลงเฟรมเวิร์กโมเดล จากนั้นเลือก 2.3 เป็นเวอร์ชันเฟรมเวิร์ก

ในช่องตำแหน่งอาร์ติแฟกต์ของโมเดล ให้คลิกเรียกดู คลิกที่เก็บข้อมูล GCS ที่คุณเพิ่งสร้าง แล้วคลิกไดเรกทอรี model-assets ดังนี้

เส้นทางชิ้นงานโมเดล

จากนั้นคลิกนำเข้า ระบบจะใช้เวลาสักครู่ในการนำเข้าโมเดล เมื่อสร้างแล้ว คุณจะเห็นโมเดลในส่วนโมเดล ของ Cloud Console

ส่วนรุ่น

7 ทำให้โมเดลใช้งานได้ที่ปลายทาง

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

ขั้นตอนที่ 1: การสร้างปลายทาง

ในหน้าโมเดล ให้ไปที่แท็บทำให้ใช้งานได้และทดสอบ แล้วคลิกทำให้ใช้งานได้ที่ปลายทาง

ทำให้ใช้งานได้และทดสอบ

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

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

ปลายทางที่ทำให้ใช้งานได้แล้ว

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

8 การรับการคาดการณ์ในโมเดลที่ทำให้ใช้งานได้ของเรา

ตัวเลือกในการรับการคาดการณ์โมเดลมี 2-3 ตัวเลือกดังนี้

  • UI ของ Vertex AI
  • Vertex AI API

เราจะแสดงวิธีรับการคาดการณ์ผ่าน API

ขั้นตอนที่ 1: รับการคาดการณ์โมเดลด้วย Vertex AI API

เราจะใช้อินสแตนซ์สมุดบันทึก Vertex ที่คุณสร้างขึ้นในช่วงเริ่มต้นของห้องทดลองนี้เพื่อแสดงวิธีรับการคาดการณ์โมเดล

จากนั้นให้เปิดอินสแตนซ์สมุดบันทึกที่คุณสร้าง และเปิดสมุดบันทึก Python 3 จาก Launcher โดยทำดังนี้

เปิดสมุดบันทึก

ในสมุดบันทึก ให้เรียกใช้คำสั่งต่อไปนี้ในเซลล์เพื่อเขียนตัวอย่างทดสอบลงในไฟล์ JSON ชื่อ default-pred.json เราจะส่งตัวอย่างนี้ไปยังโมเดลของเราเพื่อคาดการณ์:

%%writefile default-pred.json
{
 
"instances": [
   
{"age": 39,
   
"bill_amt_1": 47174,
   
"bill_amt_2": 47974,
   
"bill_amt_3": 48630,
   
"bill_amt_4": 50803,
   
"bill_amt_5": 30789,
   
"bill_amt_6": 15874,
   
"education_level": "1",
   
"limit_balance": 50000,
   
"marital_status": "2",
   
"pay_0": 0,
   
"pay_2":0,
   
"pay_3": 0,
   
"pay_4": 0,
   
"pay_5": "0",
   
"pay_6": "0",
   
"pay_amt_1": 1800,
   
"pay_amt_2": 2000,
   
"pay_amt_3": 3000,
   
"pay_amt_4": 2000,
   
"pay_amt_5": 2000,
   
"pay_amt_6": 2000,
   
"sex": "1"}
 
]
}

ถัดไป ให้คลิกคำขอตัวอย่างของปลายทางที่คุณเพิ่งทำให้ใช้งานได้ใน Vertex UI

ตัวอย่างคำขอ

คัดลอกโค้ดจากขั้นตอนที่ 4 ในแท็บ REST ลงในสมุดบันทึกแล้วเรียกใช้เซลล์ ดังนี้

ขอตัวแปร

จากนั้นเพิ่มตัวแปรสำหรับภูมิภาคที่คุณสร้างที่เก็บข้อมูลและโมเดล แทนที่ your-region ในสตริงด้านล่าง

REGION="your-region" # either us-central1, europe-west4, or asia-east1

ขั้นตอนสุดท้าย ให้ส่งคำขอการคาดการณ์ไปยังปลายทางด้วย curl โดยคัดลอกโค้ดต่อไปนี้ลงในสมุดบันทึก

!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https
://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"

คุณควรเห็นข้อมูลต่อไปนี้ (ค่าการคาดการณ์จริงจะแตกต่างกันเล็กน้อย)

{
 
"predictions": [
   
{
     
"default_payment_next_month_values": [
       
"1",
       
"0"
     
],
     
"default_payment_next_month_probs": [
       
0.180815295299778,
       
0.819184704700222
     
],
     
"predicted_default_payment_next_month": [
       
"0"
     
]
   
}
 
],
 
"deployedModelId": "your-model-id"
}

ค่าใน default_payment_next_month_probs แสดงความน่าจะเป็นของแต่ละคลาส ในตัวอย่างนี้ โมเดลของเราคาดการณ์ว่ามีโอกาส 81% ที่บุคคลนี้จะไม่ถูกตั้งค่าผิดนัดชำระเงินครั้งถัดไป ค่า .819 สอดคล้องกับคลาส 0 (ไม่ใช่ค่าเริ่มต้น)

🎉 ยินดีด้วย 🎉

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

  • ฝึกโมเดลใน BQML
  • ส่งออกโมเดล BQML ไปยัง Cloud Storage
  • นำเข้าโมเดล BQML ไปยัง Vertex AI สำหรับการคาดการณ์
  • สร้างโมเดล Vertex AI และทำให้โมเดลใช้งานได้ที่ปลายทาง
  • รับการคาดการณ์บนปลายทางที่ทำให้ใช้งานได้ผ่านสมุดบันทึก Vertex และ curl

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

9 ล้างข้อมูล

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

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

หากคุณต้องการลบสมุดบันทึกทั้งหมด เพียงคลิกปุ่ม ลบ ที่ด้านบนขวา

หากต้องการลบปลายทางที่ทำให้ใช้งานได้แล้ว ให้ไปที่ส่วนปลายทางของคอนโซล Vertex AI และคลิกไอคอนลบ

ลบปลายทาง

หากต้องการลบที่เก็บข้อมูลของพื้นที่เก็บข้อมูล โดยใช้เมนูการนำทางใน Cloud Console จากนั้นเรียกดูพื้นที่เก็บข้อมูล เลือกที่เก็บข้อมูล แล้วคลิกลบ:

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