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ố của phim bằng Vertex AI AutoML và kích hoạt điểm cuối của mô hình đã triển khai từ Java Cloud Functions. Mô hình được huấn luyện bằng dữ liệu được 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 API học máy

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

  1. Dữ liệu từ tệp CSV sang 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. Hàm trên đám mây Java để kích hoạt lệnh gọi điểm cuối của mô hình AutoML đã triển khai, lấy 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 của phim được dự đoán

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

5ae50607c0f2db20.png

Việc áp dụng cấu trúc 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 cũng muốn phát triển ứ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

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

2. Yêu cầu

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

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

Tạo dự án

  1. Trong Google Cloud Console, trên trang bộ chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud.
  2. Đảm bảo 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 dự án hay không.
  3. Chuyển đến BigQuery để bật API. Bạn cũng có thể mở trực tiếp giao diện người dùng web của BigQuery 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: Trên Cloud Console, hãy nhấp vào 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 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 dự án của bạn chưa được đặt, hãy sử dụng lệnh sau để đặt dự án:
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, đòi hỏi nhiều kiến thức chuyên môn về lĩnh vực này 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ả 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 để giới hạn 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 sử 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 vùng này làm vùng cho bước VERTEX AI (cả hai thực thể phải nằm trên cùng một vùng).

  1. Đảm bảo bạn đã có tệp dữ liệu (.csv). Thực thi các lệnh sau trong Cloud Shell để nhân bản 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 bảng BigQuery (vui lòng lưu ý rằng bạn cũng có thể tải trực tiếp lên 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 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 BigQuery Web SQL Workspace để chạy truy vấn. Không gian làm việc SQL 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 trong BigQuery để trực tiếp tạo mô hình AutoML bằng Vertex AI. Hãy nhớ rằng chúng ta cũng có thể thực hiện AutoML từ chính BigQuery, đồng thời đăng ký mô hình với VertexAI và 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 trên Google Cloud Console, bật API Vertex AI nếu bạn chưa bật, mở rộng dữ liệu rồi chọn Tập dữ liệu, nhấp vào Tạo tập dữ liệu, chọn loại dữ liệu TABULAR và tuỳ chọn "Hồi quy / phân loại", rồi nhấp vào 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 tuỳ chọn "Chọn một bảng hoặc chế độ xem từ BigQuery" rồi chọn bảng từ BigQuery trong trường Duyệt qua đường dẫn BigQuery. Nhấp vào Tiếp tục.

Lưu ý: Phiên bản BigQuery và tập dữ liệu Vertex AI phải có cùng một khu vực để bảng BigQuery xuất hiện trong Vertex AI.

b787ef18dbca4cff.png

Khi bạn chọn bảng/thành phần 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/thành phần hiển thị, bạn sẽ được chuyển đến Dataplex. Bạn chỉ cần quay 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ó lựa chọn huấn luyện mô hình mới. Nhấp vào nút đó:

bf095263d57106de.png

  1. Giữ nguyên Mục tiêu là Phân loại và chọn tuỳ chọn AutoML (Tự động học máy) trên trang đầu tiên rồi nhấp vào tiếp tục: e50597bc3f29894c.png
  2. Đặt tên cho mô hình rồi chọn tên Cột mục tiêu là "Điểm số" 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, bạn có thể chọn "Xuất tập dữ liệu kiểm thử sang BigQuery" để dễ dàng xem tập dữ liệu kiểm thử 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ỳ tuỳ chọn huấn luyện nâng cao nào mà bạn cần và số giờ bạn muốn đặt mô hình để huấn luyện. Xin lưu ý rằng bạn nên cân nhắ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 tiêu đề Phát triển mô hình trong trình đơn bên trái) và thấy quá trình huấn luyện của mình được liệt kê trong mục Quy trình huấn luyện. Nhấp vào đó để chuyển đến trang Đă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 và có thể được dùng trong ứng dụng của bạn để 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ã thiết bị đầu cuối, vị trí và các thông tin chi tiết khác của mô hình đã triển khai trong phần thiết bị đầu cuối Vertex AI.

6. Hàm trên đám mây Java để kích hoạt lệnh gọi ML

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

  1. Tìm Cloud Functions trong Google Cloud Console 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 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 sao chép 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 Trình quản lý bí mật để lưu trữ thông tin xác thực
  3. Trong phạm vi của lớp học lập trình này, hãy chú thích các phần MongoDB trong lớp .java trong mã nguồn đã sao chép

Hãy tiếp tục triển khai hàm sau khi hoàn tất tất cả các thay đổi. Bạn sẽ thấy URL điểm cuối có thể được dùng trong ứng dụng khách để gửi yêu cầu đến Hàm trên đám mây 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í cho tài khoản Google Cloud của bạn đối với các tài nguyên được sử dụng trong bài đăng này, hãy làm theo các bước sau:

  1. Trong Google Cloud Console, 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ô hình dự đoán điểm số của phim trong Vertex AI AutoML, đồng thời kích hoạt mô hình đã triển khai từ Cloud Functions.