使用 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 雲端函式,用於觸發已部署 AutoML 模型的端點,該端點會將電影詳細資料做為 UI 要求,並傳回預測的電影 SCORE

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

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. 請使用下列任一方式進行查詢:

我們可以透過三種方式與 BigQuery 互動,我們將嘗試其中兩種: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

選取資料來源

在下一頁中選取資料來源。選擇「Select a table or view from BigQuery」(從 BigQuery 選取資料表或檢視表) 選項,然後在 BigQuery 路徑 BROWSE 欄位中選取 BigQuery 中的資料表。按一下 [繼續]。

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

b787ef18dbca4cff.png

選取來源資料表/檢視畫面時,請記得按一下瀏覽清單中的單選按鈕,繼續執行下列步驟。如果不小心按一下資料表/檢視表的名稱,系統會將您帶往 Dataplex。如果發生這種情況,您只需瀏覽 Vertex AI 即可。

訓練模型

  1. 建立資料集後,您應該會看到「分析」頁面,其中提供訓練新模型的選項。按一下該按鈕:

bf095263d57106de.png

  1. 將目標設為「分類」,在第一頁中選取「AutoML」選項,然後按一下「繼續」:e50597bc3f29894c.png
  2. 為模型命名,然後在下拉式選單中選取「Score」做為「Target Column」名稱,然後按一下「Continue」。
  3. 另請注意,您可以勾選「Export test dataset to BigQuery」(將測試資料集匯出至 BigQuery) 選項,輕鬆查看資料庫中的測試集,且無需額外整合層或在服務之間移動資料。
  4. 在下一頁中,您可以選取所需的進階訓練選項,以及要設定模型訓練的時間。請注意,在增加要用於訓練的節點時數之前,請先考量價格。

按一下「Start Training」(開始訓練),開始訓練新模型。

e72b004a17849bd.png

評估、部署及測試模型

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

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

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

95fb4495618174f0.png

在離開本節之前,請務必記下已部署模型的端點 ID、位置和其他 Vertex AI 端點部分的詳細資料。

6. 用於觸發 ML 叫用作業的 Java Cloud Function

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

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

a68272022df062f2.png

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

13df616369ca5951.png

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

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

7. 清理

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

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

8. 恭喜

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