Vertex AI: Xuất và triển khai Mô hình học máy của BigQuery để dự đoán

1. Tổng quan

Trong phòng thí nghiệm này, bạn sẽ huấn luyện một mô hình bằng BigQuery Machine Learning, sau đó xuất và triển khai mô hình đó sang Vertex AI. Đây là sản phẩm AI mới nhất trên Google Cloud.

Kiến thức bạn sẽ học được

Bạn sẽ tìm hiểu cách:

  • Huấn luyện mô hình bằng BigQuery Machine Learning (BQML)
  • Xuất mô hình BQML sang Cloud Storage
  • Triển khai BQML đã huấn luyện cho Vertex AI
  • Nhận thông tin dự đoán về mô hình đã triển khai

Tổng chi phí để chạy bài tập này trên Google Cloud là khoảng 2 USD.

2. Giới thiệu về Vertex AI

Phòng thí nghiệm này sử dụng sản phẩm AI mới nhất có trên Google Cloud. Vertex AI tích hợp các sản phẩm ML trên Google Cloud để mang đến trải nghiệm phát triển liền mạch. Trước đây, các mô hình được huấn luyện bằng AutoML và các mô hình tuỳ chỉnh có thể truy cập thông qua các dịch vụ riêng biệt. Sản phẩm mới này kết hợp cả hai thành một API duy nhất, cùng với các sản phẩm mới khác. Bạn cũng có thể di chuyển các dự án hiện có sang Vertex AI. Nếu bạn có ý kiến phản hồi, vui lòng truy cập trang hỗ trợ.

Vertex AI có nhiều sản phẩm để hỗ trợ quy trình làm việc ML toàn diện. Phòng thí nghiệm này sẽ tập trung vào các sản phẩm được làm nổi bật bên dưới: Dự đoán và Sổ tay.

Tổng quan về sản phẩm Vertex

3. Thiết lập môi trường

Bạn cần có một dự án trên Google Cloud Platform đã bật tính năng thanh toán để chạy lớp học lập trình này. Để tạo một dự án, hãy làm theo hướng dẫn tại đây.

Bước 1: Bật Compute Engine API

Chuyển đến Compute Engine rồi chọn Bật nếu bạn chưa bật. Bạn sẽ cần thông tin này để tạo phiên bản sổ tay.

Bước 2: Bật Vertex AI API

Chuyển đến mục Vertex AI trong Bảng điều khiển Cloud rồi nhấp vào Bật Vertex AI API.

Trang tổng quan Vertex AI

Bước 3: Tạo một phiên bản Notebooks

Chúng ta sẽ sử dụng Notebooks để nhận thông tin dự đoán sau khi triển khai mô hình. Trong phần Vertex AI của Cloud Console, hãy nhấp vào Notebooks:

Trình đơn Vertex AI

Tại đây, hãy chọn New Instance (Phiên bản mới). Sau đó, hãy chọn loại phiên bản TensorFlow Enterprise 2.3 không có GPU:

Phiên bản TFE

Sử dụng các lựa chọn mặc định rồi nhấp vào Tạo. Sau khi tạo phiên bản, hãy chọn Open JupyterLab (Mở JupyterLab):

Mở Sổ tay CAIP

4. Huấn luyện một mô hình BigQuery ML

BigQuery ML cho phép bạn huấn luyện các mô hình học máy tuỳ chỉnh bằng dữ liệu được lưu trữ trong BigQuery. Bạn có thể huấn luyện và nhận thông tin dự đoán từ các mô hình trong SQL. Trong phòng thí nghiệm này, chúng ta sẽ sử dụng một tập dữ liệu có sẵn công khai trong BigQuery để dự đoán khả năng thanh toán thẻ tín dụng bị trễ.

Bước 1: Tạo một tập dữ liệu BigQuery trong dự án của bạn

Để huấn luyện một mô hình trong BigQuery ML, bạn cần tạo một tập dữ liệu trong dự án của mình để lưu trữ mô hình này. Nhấp vào dự án của bạn trong thanh trình đơn bên trái, rồi chọn Tạo tập dữ liệu:

Tạo tập dữ liệu BQ

Trong trường Mã nhận dạng tập dữ liệu, hãy nhập cc_default. Giữ nguyên các trường còn lại rồi nhấp vào Tạo tập dữ liệu.

Bước 2: Chạy truy vấn CREATE MODEL

Trong Trình chỉnh sửa truy vấn của BigQuery, hãy chạy truy vấn CREATE MODEL sau đây để tạo và huấn luyện một mô hình BigQuery ML trên tập dữ liệu công khai mà chúng ta sẽ sử dụng. Nhớ thay thế your-project bằng tên dự án trên đám mây:

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`

Thao tác này sẽ tạo ra một mô hình hồi quy logistic xuất ra một giá trị số trong khoảng từ 0 đến 1, cho biết mất khoảng một phút để chạy. Khi quá trình này hoàn tất, bạn sẽ thấy mô hình trong tập dữ liệu của mình:

Thông tin chi tiết về mô hình BQML

Bạn có thể nhấp vào mô hình để xem các chỉ số huấn luyện và đánh giá của mô hình.

5. Xuất mô hình BigQuery ML

Với mô hình BQML đã được huấn luyện, chúng ta có thể sử dụng cú pháp SQL của BQML để nhận thông tin dự đoán hoặc xuất mô hình để triển khai ở nơi khác. Tại đây, chúng ta sẽ xuất mô hình để có thể triển khai mô hình đó lên Vertex AI nhằm phân phát mô hình một cách có thể mở rộng và nhận được các dự đoán.

Bước 1: Tạo một Nhóm lưu trữ trên đám mây cho mô hình của bạn

Trong phần chi tiết về mô hình, hãy nhấp vào Xuất mô hình:

Xuất mô hình BQML

Thao tác này sẽ nhắc bạn nhập vị trí Google Cloud Storage (GCS) mà bạn muốn xuất các thành phần của mô hình. Đừng lo lắng nếu bạn chưa có vùng lưu trữ GCS! Chúng ta sắp tạo một tài khoản. Trước tiên, hãy nhấp vào Duyệt qua:

Duyệt xem các bộ chứa GCS

Sau đó, nhấp vào biểu tượng + để tạo một nhóm mới:

Bộ chứa GCS mới

Đặt tên riêng biệt cho bộ chứa (Tên bộ chứa lưu trữ phải là tên duy nhất trên toàn cầu). Nhấp vào Tiếp tục. Trong bước tiếp theo, trong mục Loại vị trí, hãy chọn Khu vực rồi chọn một khu vực bất kỳ trong trình đơn thả xuống:

Vị trí bộ chứa

Sử dụng lớp lưu trữ mặc định và trong phần kiểm soát quyền truy cập, hãy đảm bảo bạn đã chọn Đồng nhất:

Kiểm soát quyền truy cập đồng nhất

Nhấp vào Tiếp tục và sử dụng các giá trị mặc định cho các lựa chọn còn lại. Sau đó, hãy nhấp vào Tạo.

Bước 2: Xuất mô hình BQML

Sau khi tạo vùng chứa mới, hãy nhập model-assets (hoặc bất kỳ tên nào bạn muốn) vào trường Tên rồi nhấp vào Chọn:

Đường dẫn xuất mô hình

Sau đó, nhấp vào Xuất. Thao tác này sẽ tạo một công việc trong BigQuery để xuất mô hình của bạn ở định dạng SavedModel của TensorFlow sang vùng chứa GCS mới tạo mà bạn đã chỉ định. Quá trình xuất sẽ mất khoảng một phút.

Trong khi mô hình của bạn đang được xuất, hãy chuyển đến mục Lưu trữ của bảng điều khiển Cloud. Khi công việc hoàn tất, bạn sẽ thấy các thành phần mô hình được xuất vào nhóm mà bạn vừa tạo trong thư mục con model-assets:

Thành phần mô hình đã xuất

6. Nhập mô hình vào Vertex AI

Trong bước này, chúng ta sẽ tham chiếu vị trí lưu trữ GCS mà chúng ta vừa xuất tài sản mô hình để tạo và nhập mô hình vào Vertex AI.

Bước 1: Nhập mô hình

Trong bảng điều khiển Cloud, hãy chuyển đến mục Models (Mô hình) của Vertex AI. Tại đây, hãy chọn Nhập:

Nhập mô hình

Ở bước đầu tiên, hãy đặt tên cho mô hình của bạn predict_default. Chọn cùng một khu vực nơi bạn đã tạo vùng lưu trữ (us-central1, europe-west4 hoặc asia-east1). Sau đó, hãy nhấp vào Tiếp tục. Trong phần Model settings (Cài đặt mô hình), hãy giữ lựa chọn "Import model artifacts into a new pre-built container" (Nhập các cấu phần phần mềm mô hình vào một vùng chứa mới được tạo sẵn).

Trong trình đơn thả xuống Khung mô hình, hãy chọn TensorFlow. Sau đó, hãy chọn 2.3 làm phiên bản khung.

Trong trường Vị trí của cấu phần phần mềm mô hình, hãy nhấp vào Duyệt qua, nhấp vào vùng lưu trữ GCS mà bạn vừa tạo rồi nhấp vào thư mục model-assets:

Đường dẫn đến thành phần mô hình

Sau đó, nhấp vào Nhập. Quá trình nhập mô hình sẽ mất vài phút. Sau khi tạo, bạn sẽ thấy mô hình đó trong phần mô hình của bảng điều khiển Cloud:

Mục Mô hình

7. Triển khai mô hình đến một điểm cuối

Sau khi tải mô hình lên, bước tiếp theo là tạo một Điểm cuối trong Vertex. Một tài nguyên Mô hình trong Vertex có thể có nhiều điểm cuối được liên kết và bạn có thể phân chia lưu lượng truy cập giữa các điểm cuối.

Bước 1: Tạo một điểm cuối

Trên trang mô hình, hãy chuyển đến thẻ Triển khai và kiểm thử rồi nhấp vào Triển khai đến điểm cuối:

Triển khai và kiểm thử

Đặt tên cho điểm cuối của bạn, chẳng hạn như default_pred_v1, giữ nguyên chế độ cài đặt phân chia lưu lượng truy cập, rồi chọn một loại máy cho việc triển khai mô hình. Chúng ta đã dùng n1-highcpu-2 ở đây, nhưng bạn có thể chọn loại máy mà mình muốn.

Sau đó, chọn Xong rồi nhấp vào Tiếp tục. Giữ nguyên chế độ cài đặt vị trí đã chọn, rồi nhấp vào Triển khai. Điểm cuối của bạn sẽ mất vài phút để triển khai. Khi hoàn tất, bạn sẽ thấy dấu kiểm màu xanh lục bên cạnh:

Điểm cuối được triển khai

Bạn sắp đạt được mục tiêu rồi! Giờ đây, bạn đã có thể nhận được các dự đoán về mô hình đã triển khai.

8. Nhận thông tin dự đoán về mô hình đã triển khai của chúng tôi

Có một số lựa chọn để nhận dự đoán của mô hình:

  • Giao diện người dùng Vertex AI
  • Vertex AI API

Tại đây, chúng tôi sẽ hướng dẫn cách nhận thông tin dự đoán thông qua API

Bước 1: Nhận thông tin dự đoán về mô hình bằng Vertex AI API

Để cho bạn thấy cách nhận dự đoán của mô hình tại đây, chúng ta sẽ sử dụng phiên bản Vertex Notebook mà bạn đã tạo ở đầu lớp học này.

Tiếp theo, hãy mở phiên bản sổ tay mà bạn đã tạo và mở một sổ tay Python 3 trong Trình chạy:

Mở sổ tay

Trong sổ tay, hãy chạy nội dung sau trong một ô để ghi ví dụ kiểm thử vào một tệp JSON có tên là default-pred.json. Chúng ta sẽ gửi ví dụ này đến mô hình để dự đoán:

%%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"}
  ]
}

Tiếp theo, trong giao diện người dùng Vertex, hãy nhấp vào Sample Request (Yêu cầu mẫu) cho điểm cuối mà bạn vừa triển khai:

Yêu cầu mẫu

Sao chép mã từ Bước 4 trên thẻ REST vào sổ tay của bạn rồi chạy ô:

Biến yêu cầu

Sau đó, hãy thêm một biến cho khu vực mà bạn đã tạo vùng chứa và mô hình. Thay thế your-region trong chuỗi bên dưới:

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

Cuối cùng, hãy đưa ra yêu cầu dự đoán cho điểm cuối của bạn bằng curl bằng cách sao chép mã sau vào sổ tay:

!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"

Bạn sẽ thấy nội dung tương tự như sau (các giá trị dự đoán chính xác sẽ có sự khác biệt nhỏ):

{
  "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"
}

Các giá trị trong default_payment_next_month_probs cho biết xác suất của từng lớp. Trong ví dụ này, mô hình của chúng tôi dự đoán rằng có 81% khả năng người này sẽ không thanh toán trễ cho lần thanh toán tiếp theo. Giá trị .819 tương ứng với lớp 0 (không phải mặc định).

🎉 Xin chúc mừng! 🎉

Bạn đã tìm hiểu cách:

  • Huấn luyện mô hình trong BQML
  • Xuất mô hình BQML sang Cloud Storage
  • Nhập mô hình BQML vào Vertex AI để dự đoán
  • Tạo mô hình Vertex AI và triển khai mô hình đó đến một điểm cuối
  • Nhận thông tin dự đoán về điểm cuối đã triển khai thông qua Vertex Notebooks và curl

Để tìm hiểu thêm về các phần khác nhau của Vertex AI, hãy xem tài liệu.

9. Dọn dẹp

Nếu muốn tiếp tục sử dụng sổ tay bạn đã tạo trong phòng thí nghiệm này, bạn nên tắt sổ tay khi không sử dụng. Trong giao diện người dùng Notebooks của Cloud Console, hãy chọn sổ tay rồi chọn Dừng:

Dừng phiên bản

Nếu bạn muốn xoá toàn bộ sổ tay, chỉ cần nhấp vào nút Xoá ở trên cùng bên phải.

Để xoá điểm cuối mà bạn đã triển khai, hãy chuyển đến phần Điểm cuối trong bảng điều khiển Vertex AI rồi nhấp vào biểu tượng xoá:

Xoá điểm cuối

Để xoá Thùng lưu trữ, hãy sử dụng trình đơn Điều hướng trong Cloud Console, duyệt tìm Bộ nhớ, chọn thùng của bạn rồi nhấp vào Xoá:

Xoá bộ nhớ