使用 Vertex AI AutoML 預測電影評分

1. 簡介

在本程式碼研究室中,我們將使用 Vertex AI AutoML 建立電影評分預測模型,並從 Java Cloud Functions 觸發已部署的模型端點。模型會使用儲存在 BigQuery 中的資料進行訓練,並在 Vertex AI 中註冊。服務清單可分為兩部分:

  1. 建立及部署機器學習模型
  2. 觸發條件,使用 ML API 進行預測

建立機器學習模型:

  1. 從 CSV 匯入 BigQuery 的資料
  2. 將 BigQuery 資料整合至 Vertex AI,建立 AutoML 模型
  3. 在 Vertex AI Model Registry 中部署模型,以產生端點 API

使用 ML API 觸發預測:

  1. Java Cloud Functions,用於觸發已部署的 AutoML 模型端點的叫用,該端點會從 UI 接收電影詳細資料做為要求,並傳回預測的電影分數

以下是應用程式的整體架構總覽:

5ae50607c0f2db20.png

本程式碼研究室不會說明如何套用上述架構,但如果您也想開發用戶端應用程式,請參閱這篇網誌

接著來瞭解實作步驟。

建構項目

您將建立

  • BigQuery 資料集,用於存放資料表和模型元件
  • Vertex AI AutoML 模型 (建立及部署)
  • Java Cloud Functions 觸發程序,用於透過 ML API 進行預測

2. 需求條件

  • ChromeFirefox 瀏覽器
  • 已啟用計費功能的 Google Cloud 雲端專案

事前準備如下:

建立專案

  1. Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案
  2. 確認 Cloud 專案已啟用計費功能。瞭解如何檢查專案是否已啟用計費功能
  3. 前往 BigQuery 啟用 API。您也可以在瀏覽器中輸入下列網址,直接開啟 BigQuery 網頁版 UI:https://console.cloud.google.com/bigquery

啟用 Cloud Shell

  1. 您將使用 Cloud Shell,這是 Google Cloud 中執行的指令列環境,已預先載入 bq:在 Cloud 控制台中,按一下右上角的「啟用 Cloud Shell」:6757b2fb50ddcc2d.png
  2. 連至 Cloud Shell 後,您應該會看到驗證已完成,專案也已設為獲派的專案 ID。在 Cloud Shell 中執行下列指令,確認您已通過驗證:
gcloud auth list
  1. 在 Cloud Shell 中執行下列指令,確認 gcloud 指令已瞭解您的專案
gcloud config list project
  1. 如果未設定專案,請使用下列指令來設定:
gcloud config set project <PROJECT_ID>

如要瞭解 gcloud 指令和用法,請參閱說明文件

3. 準備訓練資料

這是所有資料相關專案、產品和應用程式的重要步驟,除了技術之外,還需要大量領域專業知識,才能準備最佳資料集,並為機器學習專案做好準備。在本程式碼研究室中,我們將假設資料已準備就緒,並使用這個已處理的資料檔案。

4. 建立及載入資料集

BigQuery 資料集是資料表的集合,資料集中的所有資料表都儲存在同一個資料位置。您也可以附加自訂存取權控管,限制資料集及其資料表的存取權。

  1. 在 Cloud Shell 中,使用 bq mk 指令建立名為「movies」的資料集。
bq mk --location=<<LOCATION>> movies

將「位置」設為區域 (asia-south1)。請記得將這個區域設為 VERTEX AI 步驟的區域 (兩個執行個體應位於相同區域)。

  1. 請確認資料檔案 (.csv) 已準備就緒。在 Cloud Shell 中執行下列指令,複製存放區並前往專案:
git clone <<repository link>>

cd movie-score
  1. 使用 bq load 指令將 CSV 檔案載入 BigQuery 資料表 (請注意,您也可以直接從 BigQuery UI 上傳):
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. 您可以透過下列 3 種方式查詢:

與 BigQuery 互動的方式有三種,我們將試用其中兩種:a. BigQuery 網頁版 UI b. bq 指令 c。API

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

我已使用 BigQuery 網頁版 SQL 工作區執行查詢。SQL 工作區如下所示:

109a0b2c7155e9b3.png

使用 bq 指令:

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

5. 在 Vertex AI AutoML 中使用 BigQuery 資料

使用 BigQuery 中的資料,直接透過 Vertex AI 建立 AutoML 模型。請注意,我們也可以從 BigQuery 執行 AutoML,並向 Vertex AI 註冊模型,然後公開端點。請參閱 BigQuery AutoML 說明文件。不過,在本範例中,我們將使用 Vertex AI AutoML 建立模型。

建立 Vertex AI 資料集

前往 Google Cloud 控制台的 Vertex AI,啟用 Vertex AI API (如果尚未啟用),展開資料並選取「資料集」,按一下「建立資料集」,選取「表格」資料類型和「迴歸 / 分類」選項,然後按一下「建立」:

4104c75c34cbd2d9.png

選取資料來源

在下一頁選取資料來源。選擇「從 BigQuery 選取資料表或檢視表」選項,然後在「BigQuery 路徑」的「瀏覽」欄位中,選取 BigQuery 中的資料表。按一下 [繼續]。

提醒:BigQuery 執行個體和 Vertex AI 資料集必須位於相同區域,BigQuery 資料表才會顯示在 Vertex AI 中。

b787ef18dbca4cff.png

選取來源表格/檢視畫面時,請務必從瀏覽清單中點選圓形按鈕,繼續執行下列步驟。如果您不小心點選資料表/檢視區塊的名稱,系統會將您帶往 Dataplex。如果發生這種情況,只要返回 Vertex AI 即可。

訓練模型

  1. 建立資料集後,您應該會看到「分析」頁面,並可選擇訓練新模型。按一下:

bf095263d57106de.png

  1. 將目標保留為「分類」,然後在第一頁選取 AutoML 選項,並按一下「繼續」:e50597bc3f29894c.png
  2. 為模型命名,然後從顯示的下拉式選單中選取「分數」做為目標資料欄名稱,並按一下「繼續」。
  3. 此外,您也可以勾選「將測試資料集匯出至 BigQuery」選項,這樣就能輕鬆在資料庫中查看測試集和結果,不必額外整合或在服務之間移動資料。
  4. 在下一個頁面中,您可以視需要選取任何進階訓練選項,以及設定模型訓練時數。請注意,增加訓練使用的節點時數前,建議先瞭解價格。

按一下「開始訓練」,開始訓練新模型。

e72b004a17849bd.png

評估、部署及測試模型

訓練完成後,您應該可以點選「訓練」(左側選單的「模型開發」標題下方),並在「訓練管線」部分中看到訓練作業。點選該連結即可前往「Model Registry」頁面。您必須具備以下能力:

  1. 查看及評估訓練結果 4767b4bbd7cf93fa.png
  2. 使用 API 端點部署及測試模型

部署模型後,系統會建立 API 端點,您可以在應用程式中使用該端點傳送要求,並在回應中取得模型預測結果。

95fb4495618174f0.png

在繼續進行本節內容之前,請務必記下已部署模型的端點 ID、位置,以及 Vertex AI 端點專區中的其他詳細資料。

6. Java Cloud Function,用於觸發 ML 呼叫

還記得我們在機器學習部署步驟中取得的端點和其他詳細資料嗎?我們將在此使用該檔案,由於我們使用 Java Cloud Functions,因此會使用 pom.xml 處理依附元件。我們使用 google-cloud-aiplatform 程式庫來取用 Vertex AI AutoML 端點 API。

  1. 在 Google Cloud 控制台中搜尋 Cloud Functions,然後按一下「建立函式」。
  2. 輸入設定詳細資料,例如環境、函式名稱、區域、觸發條件 (本例為 HTTPS)、您選擇的驗證方式,啟用「Require HTTPS」(需要 HTTPS),然後按一下「下一步」/「儲存」

a68272022df062f2.png

  1. 在下一個頁面中,選取「執行階段」(Java 11)、「原始碼」(內嵌或上傳),然後開始編輯

13df616369ca5951.png

  1. 從存放區複製 javapom.xml 檔案,然後貼到內嵌編輯器中的對應檔案。如果使用本機編輯器 (建議),請從存放區複製來源
  2. 在本範例的 .java 來源檔案中,變更專案 ID、端點 ID、位置和端點,但請注意,最佳做法是使用 Secret Manager 儲存憑證
  3. 就本程式碼研究室的範圍而言,請在複製的原始碼中,註解掉 .java 類別中的 MongoDB 部分

完成所有變更後,請繼續部署函式。您應該會看到端點網址,可用於用戶端應用程式,將要求傳送至這個 Cloud 函式,並接收電影評分做為回應。

7. 清理

如要避免系統向您的 Google Cloud 帳戶收取本文章所用資源的費用,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中前往「管理資源」頁面。
  2. 在專案清單中選取要刪除的專案,然後按一下「刪除」
  3. 在對話方塊中輸入專案 ID,然後按一下「關閉」刪除專案

8. 恭喜

恭喜!您已在 Vertex AI AutoML 中成功建立及部署電影評分預測模型,並從 Cloud Functions 觸發已部署的模型。