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

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 จากนั้นเรียกดูพื้นที่เก็บข้อมูล เลือกที่เก็บข้อมูล แล้วคลิกลบ:

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