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 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 các dịch vụ có thể chia thành 2 phần:

  1. Tạo và triển khai mô hình học máy
  2. Điều kiện 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 được lấy 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

Điều kiện kích hoạt để dự đoán bằng API ML:

  1. Hàm đá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ề phim được dự đoán SCORE

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

5ae50607c0f2db20.pngS

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 nhưng nếu bạn cũng muốn phát triển ứng dụng, 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 các thành phần bảng và mô hình
  • Mô hình AutoML của Vertex AI (tạo và triển khai)
  • Trình kích hoạt chức năng đám mây Java để dự đoán bằng cách sử dụ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 trê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 rằng bạn đã bật tính năng thanh toán cho dự án trên Google 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 này. Bạn cũng có thể mở trực tiếp giao diện người dùng web BigQuery bằng cách nhập URL sau vào trình duyệt của mình: 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 Bảng điều khiển Cloud, 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. 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 thiết lập, hãy sử dụng lệnh sau để thiết lập dự án:
gcloud config set project <PROJECT_ID>

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

3. Đang chuẩn bị dữ liệu huấn luyện

Đây là một bước quan trọng đối với 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 bên cạnh 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. Vì mục đích của 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 đã được 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 được lưu trữ tại 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 trong 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à "phim".
bq mk --location=<<LOCATION>> movies

Đặt vị trí thành một khu vực (asia-south1). Đừng quên đặt khu vực này làm khu vực cho bước VERTEX AI (cả hai trường hợp phải ở trên 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 tải bq để tải tệp CSV của bạn vào 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:

Chúng ta có thể tương tác với BigQuery theo 3 cách. Chúng ta sẽ thử hai cách trong số đó: a. Giao diện người dùng web 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.pngS

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ể tự thực hiện AutoML từ BigQuery, đồng thời đăng ký mô hình với VertexAI và hiển thị điểm cuối. Hãy tham khảo tài liệu về BigQuery AutoML. Tuy nhiên, trong ví dụ này, chúng ta 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 chưa bật, mở rộng dữ liệu rồi chọn Datasets, nhấp vào Create data set (Tạo tập dữ liệu), chọn TABULAR data type (Loại dữ liệu TABULAR) rồi chọn "Regression / phân loại" rồi nhấp vào Tạo:

4104c75c34cbd2d9.pngS

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 từ BigQuery" và chọn bảng từ BigQuery trong trường BROWSE (DUYỆT TÌM) đường dẫn BigQuery. Nhấp vào Tiếp tục.

Lưu ý: Thực thể của BigQuery và tập dữ liệu của Vertex AI phải ở cùng một khu vực thì bảng BigQuery mới xuất hiện trong Vertex AI.

b787ef18dbca4cff.png

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

Đào tạo mô hình

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

bf095263d57106de.png

  1. Để mục tiêu là Phân loại rồi chọn AutoML 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 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 vừa 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ể xem bài viết "Xuất tập dữ liệu thử nghiệm sang BigQuery" , giúp bạn dễ dàng xem tập kiểm thử với kết quả trong cơ sở dữ liệu một cách hiệu quả mà không cần lớp tích hợp bổ sung hay 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 mọi lựa chọn huấn luyện nâng cao 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 chú ý đến giá trước khi tăng số giờ của nút mà bạn muốn dùng để huấn luyện.

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

e72b004a17849bd.png

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

Sau khi quá trình đào tạo hoàn tất, bạn có thể nhấp vào Đào tạo (trong tiêu đề Phát triển mô hình ở trình đơn bên trái) và xem khoá đào tạo của mình được liệt kê trong phần Quy trình đào tạo. Nhấp vào đó để truy cập vào trang Model Registry (Đă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ể 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 mô hình trong phản hồi.

95fb4495618174f0.pngS

Trước khi chuyển sang phần này, hãy nhớ ghi lại mã điểm 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 điểm cuối của Vertex AI.

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

Bạn có nhớ cách chúng tôi có điểm cuối và các thông tin chi tiết khác trong bước triển khai công nghệ học máy không? Chúng ta sẽ sử dụng hàm đó tại đây và vì chúng ta đ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 tôi dùng thư viện google-cloud-aiplatform để sử dụng API điểm cuối Vertex AI AutoML.

  1. Tìm kiếm Cloud Functions trong bảng điều khiển Google Cloud rồi nhấp vào "Create Function".
  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, Trình kích hoạt (trong trường hợp này là HTTPS), Xác thực theo lựa chọn của bạ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, chọn Thời gian chạy (Java 11), Mã nguồn (Cùng dòng hoặc tải lên) và bắt đầu chỉnh sửa

13df616369ca5951.pngS

  1. Sao chép các tệp javapom.xml từ repo rồi dán vào các tệp tương ứng trong trình chỉnh sửa cùng dòng. 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 qua 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 vui lòng lưu ý rằng phương pháp hay nhất là sử dụng Secret Manager (Trình quản lý bí mật) để lưu trữ thông tin xác thực
  3. Đối với 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 của bạn

Hãy tiếp tục và triển khai hàm này sau khi hoàn tất tất cả thay đổi. Bạn sẽ thấy URL điểm cuối có thể dùng trong ứng dụng khách của mình để gửi yêu cầu đến Chức năng đám mây này và nhận điểm 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 cho các tài nguyên sử 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 Google 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, nhập ID dự án, sau đó 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 phim trong Vertex AI AutoML và đã kích hoạt mô hình được triển khai từ Cloud Functions.