Dùng Vertex AI AutoML để dự đoán Xếp hạng phim

1. Giới thiệu

Trong lớp học lập trình này, chúng ta sẽ tạo một mô hình dự đoán điểm số phim bằng Vertex AI AutoML và kích hoạt điểm cuối mô hình đã triển khai từ Java Cloud Functions. Mô hình này được huấn luyện bằng dữ liệu lưu trữ trong BigQuery và được đăng ký trong Vertex AI. Danh sách dịch vụ có thể được chia thành hai phần:

  1. Tạo và triển khai mô hình học máy
  2. Kích hoạt để dự đoán bằng ML API

Tạo mô hình học máy:

  1. Dữ liệu có nguồn từ CSV đến BigQuery
  2. Dữ liệu BigQuery được tích hợp vào Vertex AI để tạo mô hình AutoML
  3. Mô hình được triển khai trong Vertex AI Model Registry để tạo API điểm cuối

Kích hoạt để dự đoán bằng API học máy:

  1. Java Cloud Functions để kích hoạt lệnh gọi của điểm cuối mô hình AutoML đã triển khai, nhận thông tin chi tiết về phim dưới dạng yêu cầu từ giao diện người dùng, trả về ĐIỂM số dự đoán của phim

Dưới đây là thông tin tổng quan về kiến trúc cấp cao của ứng dụng:

5ae50607c0f2db20.png

Việc áp dụng cấu trúc nêu trên nằm ngoài phạm vi của lớp học lập trình này. Tuy nhiên, nếu bạn muốn phát triển cả ứng dụng khách, vui lòng tham khảo blog.

Hãy cùng tìm hiểu các bước triển khai.

Sản phẩm bạn sẽ tạo ra

Bạn sẽ tạo một

  • Một tập dữ liệu BigQuery chứa các thành phần bảng và mô hình
  • Mô hình Vertex AI AutoML (tạo và triển khai)
  • Trình kích hoạt Java Cloud Functions để dự đoán bằng ML API

2. Yêu cầu

  • Một trình duyệt, chẳng hạn như Chrome hoặc Firefox
  • Một dự án trên Google Cloud đã bật tính năng thanh toán

Sau đây là các điều kiện tiên quyết:

Tạo dự án

  1. Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud.
  2. Đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án trên Cloud. Tìm hiểu cách kiểm tra xem tính năng thanh toán có được bật trên một dự án hay không.
  3. Chuyển đến BigQuery để bật API. Bạn cũng có thể mở giao diện người dùng web BigQuery trực tiếp bằng cách nhập URL sau vào trình duyệt: https://console.cloud.google.com/bigquery

Kích hoạt Cloud Shell

  1. Bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud được tải sẵn bq: Trong Cloud Console, hãy nhấp vào biểu tượng Kích hoạt Cloud Shell ở góc trên cùng bên phải: 6757b2fb50ddcc2d.png
  2. Sau khi kết nối với Cloud Shell, bạn sẽ thấy rằng mình đã được xác thực và dự án đã được đặt thành mã dự án của bạn. Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list
  1. Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn
gcloud config list project
  1. Nếu bạn chưa đặt dự án, hãy dùng lệnh sau để đặt:
gcloud config set project <PROJECT_ID>

Tham khảo tài liệu để biết các lệnh và cách sử dụng gcloud.

3. Chuẩn bị dữ liệu huấn luyện

Đây là một bước quan trọng trong tất cả các dự án, sản phẩm và ứng dụng liên quan đến dữ liệu. Bước này đòi hỏi nhiều kiến thức chuyên môn về miền ngoài công nghệ để chuẩn bị một tập dữ liệu tối ưu và sẵn sàng cho dự án học máy của bạn. Trong lớp học lập trình này, chúng ta sẽ giả định rằng dữ liệu đã được chuẩn bị và sử dụng tệp dữ liệu đã xử lý này.

4. Tạo và tải tập dữ liệu

Tập dữ liệu BigQuery là một tập hợp các bảng. Tất cả các bảng trong một tập dữ liệu đều được lưu trữ ở cùng một vị trí dữ liệu. Bạn cũng có thể đính kèm các chế độ kiểm soát quyền truy cập tuỳ chỉnh để hạn chế quyền truy cập vào một tập dữ liệu và các bảng của tập dữ liệu đó.

  1. Trong Cloud Shell, hãy dùng lệnh bq mk để tạo một tập dữ liệu có tên là "movies".
bq mk --location=<<LOCATION>> movies

Đặt vị trí thành một khu vực (asia-south1). Hãy nhớ đặt khu vực này cho bước VERTEX AI (cả hai phiên bản phải ở cùng một khu vực).

  1. Đảm bảo bạn đã chuẩn bị sẵn tệp dữ liệu (.csv). Thực thi các lệnh sau trong Cloud Shell để sao chép kho lưu trữ và chuyển đến dự án:
git clone <<repository link>>

cd movie-score
  1. Sử dụng lệnh bq load để tải tệp CSV vào một bảng BigQuery (xin lưu ý rằng bạn cũng có thể tải lên trực tiếp từ giao diện người dùng BigQuery):
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. Truy vấn theo một trong 3 cách sau:

Chúng ta có thể tương tác với BigQuery theo 3 cách, chúng ta sẽ thử 2 trong số đó: a. Giao diện người dùng trên web của BigQuery b. Lệnh bq c. API

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

Tôi đã sử dụng Không gian làm việc SQL trên web của BigQuery để chạy các truy vấn. SQL Workspace có dạng như sau:

109a0b2c7155e9b3.png

Sử dụng lệnh bq:

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

5. Sử dụng dữ liệu BigQuery trong Vertex AI AutoML

Sử dụng dữ liệu của bạn từ BigQuery để trực tiếp tạo mô hình AutoML bằng Vertex AI. Xin lưu ý rằng chúng ta cũng có thể thực hiện AutoML từ chính BigQuery và đăng ký mô hình với VertexAI, đồng thời hiển thị điểm cuối. Tham khảo tài liệu về BigQuery AutoML. Tuy nhiên, trong ví dụ này, chúng ta sẽ sử dụng Vertex AI AutoML để tạo mô hình.

Tạo tập dữ liệu Vertex AI

Chuyển đến Vertex AI trong Google Cloud Console, bật Vertex AI API nếu bạn chưa bật, mở rộng dữ liệu và chọn Datasets (Tập dữ liệu), nhấp vào Create data set (Tạo tập dữ liệu), chọn loại dữ liệu TABULAR (DẠNG BẢNG) và lựa chọn "Regression/classification" (Hồi quy/phân loại), rồi nhấp vào Create (Tạo):

4104c75c34cbd2d9.png

Chọn nguồn dữ liệu

Trên trang tiếp theo, hãy chọn một nguồn dữ liệu. Chọn mục "Chọn một bảng hoặc chế độ xem trong BigQuery" rồi chọn bảng trong BigQuery trong trường DUYỆT đường dẫn BigQuery. Nhấp vào Tiếp tục.

Lưu ý: Để bảng BigQuery xuất hiện trong Vertex AI, thực thể BigQuery và tập dữ liệu Vertex AI phải có cùng vùng.

b787ef18dbca4cff.png

Khi bạn chọn bảng/khung hiển thị nguồn, trong danh sách duyệt xem, hãy nhớ nhấp vào nút chọn để tiếp tục các bước bên dưới. Nếu vô tình nhấp vào tên của bảng/khung hiển thị, bạn sẽ được chuyển đến Dataplex. Bạn chỉ cần duyệt qua lại Vertex AI nếu gặp phải trường hợp này.

Huấn luyện mô hình

  1. Sau khi tạo tập dữ liệu, bạn sẽ thấy trang Phân tích cùng với lựa chọn huấn luyện một mô hình mới. Nhấp vào đó:

bf095263d57106de.png

  1. Để Mục tiêu là Phân loại và chọn AutoML ở trang đầu tiên rồi nhấp vào tiếp tục: e50597bc3f29894c.png
  2. Đặt tên cho mô hình của bạn và chọn tên Cột mục tiêu là "Điểm" trong trình đơn thả xuống xuất hiện rồi nhấp vào Tiếp tục.
  3. Ngoài ra, xin lưu ý rằng bạn có thể đánh dấu vào lựa chọn "Xuất tập kiểm định sang BigQuery". Lựa chọn này giúp bạn dễ dàng xem tập kiểm định có kết quả trong cơ sở dữ liệu một cách hiệu quả mà không cần thêm lớp tích hợp hoặc phải di chuyển dữ liệu giữa các dịch vụ.
  4. Trên trang tiếp theo, bạn có thể chọn bất kỳ lựa chọn đào tạo nâng cao nào mà bạn cần và số giờ bạn muốn đặt để mô hình đào tạo. Xin lưu ý rằng bạn nên cân nhắc mức giá trước khi tăng số giờ sử dụng nút mà bạn muốn dùng để huấn luyện.

Nhấp vào Bắt đầu huấn luyện để bắt đầu huấn luyện mô hình mới.

e72b004a17849bd.png

Đánh giá, triển khai và kiểm thử mô hình

Sau khi hoàn tất quá trình huấn luyện, bạn có thể nhấp vào Huấn luyện (trong phần Phát triển mô hình trong trình đơn bên trái) và xem quá trình huấn luyện của mình được liệt kê trong phần Quy trình huấn luyện. Nhấp vào đó để chuyển đến trang Model Registry (Sổ đăng ký mô hình). Bạn phải làm được những việc sau:

  1. Xem và đánh giá kết quả huấn luyện 4767b4bbd7cf93fa.png
  2. Triển khai và kiểm thử mô hình bằng điểm cuối API

Sau khi bạn triển khai mô hình, một điểm cuối API sẽ được tạo. Bạn có thể dùng điểm cuối này trong ứng dụng của mình để gửi yêu cầu và nhận kết quả dự đoán của mô hình trong phản hồi.

95fb4495618174f0.png

Trước khi chuyển sang phần tiếp theo, hãy nhớ ghi lại mã nhận dạng, vị trí và các thông tin chi tiết khác của Điểm cuối của mô hình đã triển khai trong phần điểm cuối Vertex AI.

6. Hàm Java Cloud để kích hoạt lệnh gọi ML

Bạn có nhớ cách chúng ta có điểm cuối và các thông tin khác từ bước triển khai ML không? Chúng ta sẽ sử dụng chức năng đó ở đây và vì đang dùng Java Cloud Functions, nên chúng ta sẽ dùng pom.xml để xử lý các phần phụ thuộc. Chúng tôi sử dụng thư viện google-cloud-aiplatform để sử dụng API điểm cuối Vertex AI AutoML.

  1. Tìm Cloud Functions trong bảng điều khiển Cloud rồi nhấp vào "Tạo hàm".
  2. Nhập thông tin chi tiết về cấu hình, chẳng hạn như Môi trường, Tên hàm, Khu vực, Điều kiện kích hoạt (trong trường hợp này là HTTPS), Phương thức xác thực mà bạn chọn, bật "Yêu cầu HTTPS" rồi nhấp vào tiếp theo/lưu

a68272022df062f2.png

  1. Trên trang tiếp theo, hãy chọn Runtime (Java 11), Source Code (Inline or upload) (Thời gian chạy (Java 11), Mã nguồn (Nội tuyến hoặc tải lên)) rồi bắt đầu chỉnh sửa

13df616369ca5951.png

  1. Sao chép các tệp javapom.xml từ kho lưu trữ rồi dán vào các tệp tương ứng trong trình chỉnh sửa nội tuyến. Nếu bạn đang sử dụng trình chỉnh sửa cục bộ (nên dùng), hãy nhân bản nguồn từ kho lưu trữ
  2. Thay đổi mã dự án, mã điểm cuối, vị trí và điểm cuối trong tệp nguồn .java cho ví dụ này, nhưng xin lưu ý rằng phương pháp hay nhất là sử dụng Secret Manager để lưu trữ thông tin đăng nhập
  3. Trong phạm vi của lớp học lập trình này, hãy nhận xét các phần MongoDB trong lớp .java trong mã nguồn đã sao chép

Hãy triển khai hàm sau khi hoàn tất mọi thay đổi. Bạn sẽ thấy URL điểm cuối có thể dùng trong ứng dụng khách để gửi yêu cầu đến Cloud Functions này và nhận điểm số của phim dưới dạng phản hồi.

7. Dọn dẹp

Để tránh bị tính phí vào tài khoản Google Cloud của bạn cho các tài nguyên được dùng trong bài đăng này, hãy làm theo các bước sau:

  1. Trong bảng điều khiển Cloud, hãy chuyển đến trang Quản lý tài nguyên
  2. Trong danh sách dự án, hãy chọn dự án mà bạn muốn xoá rồi nhấp vào Xoá
  3. Trong hộp thoại, hãy nhập mã dự án rồi nhấp vào Tắt để xoá dự án

8. Xin chúc mừng

Xin chúc mừng! Bạn đã tạo và triển khai thành công một Mô hình dự đoán điểm số phim trong Vertex AI AutoML, đồng thời kích hoạt mô hình đã triển khai từ Cloud Functions.