使用 Vertex AI AutoML 預測電影評分

1. 簡介

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

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

建立機器學習模型:

  1. 資料來源為 CSV 到 BigQuery
  2. 整合至 Vertex AI 的 BigQuery 資料,以便建立 AutoML 模型
  3. 部署於 Vertex AI Model Registry 的模型,用來產生端點 API

使用 ML API 預測的觸發條件:

  1. Java Cloud Functions,用於觸發已部署 AutoML 模型端點的叫用作業,而該模型會在 UI 中接收電影詳細資料的要求,並傳回預測的電影 SCORE。

以下是應用程式的高階架構總覽:

5ae50607c0f2db20.png

上述架構的應用方式不在本程式碼研究室的範圍內,但如果您也想開發用戶端應用程式,請參考網誌

現在來看看導入步驟。

建構項目

建立專屬代碼

  • 一個 BigQuery 資料集,內含資料表和模型元件
  • Vertex AI AutoML 模型 (建立及部署)
  • 可使用 ML API 預測的 Java Cloud Functions 觸發條件

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

將「location」設為區域 (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 Web 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,並使用 VertexAI 註冊模型並公開端點。請參閱 BigQuery AutoML 的說明文件。但在這個範例中,我們將使用 Vertex AI AutoML 建立模型。

建立 Vertex AI 資料集

如果尚未啟用,請從 Google Cloud 控制台前往 Vertex AI,然後啟用 Vertex AI API,然後展開資料並選取「資料集」,接著依序點選「建立資料集」和「TABULAR」資料類型和「迴歸 / 分類」選項,然後按一下「建立」:

4104c75c34cbd2d9.png

選取資料來源

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

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

b787ef18dbca4cff.png

選取來源資料表/檢視畫面時,請記得從瀏覽清單中按一下圓形按鈕,繼續完成下列步驟。如果您不小心點選了資料表/檢視表的名稱,系統會將您導向 Dataplex。遇到這種情況時,只要返回 Vertex AI 即可。

訓練模型

  1. 建立資料集後,您應會看到「Analyze」頁面,其中提供訓練新模型的選項。視需要點選下列選項:

bf095263d57106de.png

  1. 將「目標」保留為「分類」,並在第一頁選取 [AutoML] 選項,然後按一下「繼續」:e50597bc3f29894c.png
  2. 為模型命名,並選取「目標資料欄」的名稱做為「分數」然後按一下「繼續」。
  3. 另外請注意,您可以勾選 [將測試資料集匯出至 BigQuery]選項,可讓您輕鬆查看測試集和資料庫中的結果,不必另外導入整合層,也不必在服務之間移動資料。
  4. 進入下一頁後,您可以選擇所需的進階訓練選項,以及訓練模型的時數。請注意,在增加用於訓練的節點時數之前,建議您先考慮價格。

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

e72b004a17849bd.png

評估、部署及測試模型

訓練完成後,您只要點選左側選單的「模型開發」標題下方的「訓練」,就能在「訓練管道」專區中查看您的訓練成果。按一下,即可前往「Model Registry」頁面。您必須具備以下能力:

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

模型部署完畢後,即會建立 API 端點,用於在應用程式中傳送要求,並在回應中取得模型預測結果。

95fb4495618174f0.png

繼續本節前,請務必記下 Vertex AI 端點區塊中已部署模型的端點 ID、位置和其他詳細資料。

6. 可觸發機器學習叫用的 Java Cloud 函式

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

  1. 在 Google Cloud 控制台中搜尋 Cloud Functions,然後按一下「建立函式」。
  2. 輸入設定詳細資料,例如環境、函式名稱、區域、觸發條件 (本例中為 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 觸發部署的模型。