Vertex AI 教學與介紹 – 實作以 AutoML 訓練機器學習模型

Vertex AI 教學與介紹 – 實作以 AutoML 訓練機器學習模型

AutoML 意思是自動化機器學習,它也是 Google Cloud 的 Vertex AI 平台上的工具,能讓開發人員更輕鬆地自訂機器學習模型!此次的 AutoML 教學將從 Vertex AI Workbench 的部署出發,帶大家輕鬆訓練出一個辨識受損車輛照片的機器學習模型。

Google Cloud 的三大 AI 與機器學習工具

在進入 AutoML 教學前,先帶大家認識 Google Cloud 上三大主要的 AI 人工智慧與機器學習(Machine Learning,簡稱:ML)服務:「Pre-built APIs」、「BigQueryML」和「Vertex AI」,三種服務適用的情境和行業各有不同,大家可依據自身狀況進行選擇。

三大 Google Cloud AI 與機器學習工具_Pre-built APIs、BigQueryML 和 Vertex AI 特色

首先 Pre-built APIs 是 Google 將其已訓練好的模型包裝成 API,讓使用者即便沒有 AI 和機器學習的專業知識,也可透過呼叫 API 來快速針對需求導入合適的 AI 服務,例如:Vision AI、Text-to-Speech 以及 Natural Language AI 等。BigQuery ML 則是以 SQL 語法實現機器學習的功能,其優點在於 SQL 專業人員能直接使用現有的 SQL 工具和技能創建模型。最後 Vertex AI 為 Google 開發的一套整合式 AI 平台,裡面包含各種預先訓練和自訂工具,能加快使用者建立、部署及擴充機器學習模型的速度。下面一起來了解 Vertex AI 的主要特色和實作方式。

Vertex AI 介紹

Vertex AI 是 Google Cloud 上的一套整合多種工具的代管式 AI 平台。它除了在訓練模型方面提供 AutoML 訓練和自定義的訓練選項,讓使用者可依據需求選擇,同時也具備多樣化的機器學習相關工具,以下簡單介紹當中的四樣可讓模型訓練過程更順利的實用工具。

  • Vertex AI Vizier:協助使用者調節複雜機器學習模型中的超參數(Hyperparameter)。
  • Vertex AI TensorBoard:視覺化機器學習訓練。
  • Vertex AI Feature Store:提供用於整理、儲存和供應機器學習特徵的集中式儲存庫。
  • Vertex AI Model Monitoring:用於資料偏移、概念偏移(Concept drift)或其他可能需要監控的模型及效能突發事件。

Vertex AI Workbench Notebook 的類型選擇

Google Cloud 中也提供了使用者機器學習 IDE(整合開發環境,Integrated Development Environment)Workbench 來做機器學習, Workbench 是基於 Jupyter Notebook 的開發環境,可用於整個數據科學的 workflow,而 Vertex AI Workbench 的 Jupyter Notebook 則可與 Vertex AI 及其他 Google Cloud 服務交互使用。另外在 Workbench 中,使用者可依據需求選擇使用 Managed Notebook 或 User – Managed Notebook,以下簡介這兩者的差異。

圖片來源:freepik

其中 Managed Notebook 是 Google 代管的環境,因為具備已整合的功能,所以使用者可在 JupyterLab 介面對整個 workflow 生產環境進行設置和使用。而 User – Managed Notebook 則是可高度自定義的 Deep Learning VM Image Instance,因此非常適合有較大環境自訂需求的使用者。

Vertex AI 與 AutoML 教學 – 訓練辨識受損車輛照片的模型

一、Notebook 部署

接著為大家介紹如何部署 Notebook 。User – Managed Notebook 在部署上非常容易,首先需進入 Google Cloud 的 Vertex AI 介面,啟動 Vertex AI 及 Notebook 的 API ,接著設定 Service Account User for Vertex AI 並給予 Vertex AI User 的 Role ,操作步驟請參考下圖。

設定完 API 及使用權限後就可開始建立 Notebook ,首先為大家示範如何建立 User – Managed Notebook。在 Vertex AI 的介面中進入 Workbench 後,我們就能選擇要建立哪種類型的 Notebook。

截圖自:Google Cloud Platform 頁面
©2022 Google Inc.

在 User – Managed Notebook 中,大家可依據需求選擇 Google Cloud 預先建立好的 ML 環境,例如 Tensorflow、Pytorch 和 Python ……等。提醒大家 Managed Notebook 主要是提供代管服務,所以就沒有上述這些預先建好的 ML 環境可選擇。

截圖自:Google Cloud Platform 頁面
©2022 Google Inc.

在選擇好所需的環境後,接著就能為 ML 的環境選擇地區、網路環境以及規格。

依據需求設定好環境後就可以建立 Notebook,建立完成後點擊 OPEN JUPYTERLAB 就能打開 Notebook 並開始操作自訂的機器學習。

二、以 AutoML 訓練模型

部屬完 Notebook 後,緊接著就能執行機器學習了!以下為各位示範如何利用 AutoML 訓練一個判斷圖片是否為受損車輛的模型。在開始前我們需先準備訓練的圖片,並將這些資料上傳至 Google Cloud Storage。這項前置作業的第一步是設置環境變數,並建立一個 Cloud Storage Bucket。

export PROJECT_ID=$DEVSHELL_PROJECT_ID
export BUCKET=$YOUR_BUCKET_ID
gsutil mb -p $PROJECT_ID -c standard -l us-central1 gs://${BUCKET}

建立好 Bucket 後,就能將準備好的圖片上傳,這邊我們將預先準備好的圖片複製進 Bucket。

gsutil -m cp -r gs://car_damage_lab_images/* gs://${BUCKET}

完成以上步驟後,我們就可以在 Cloud Storage 上看到剛剛創建的 Bucket 以及上傳的檔案。

接著我們需創建一個 CSV 檔來連結 Dateset 與圖片,CSV 檔中每一行都包含著訓練圖片的 url 和該圖片的關聯標籤。這邊我們將已建立好的 CSV 命名為 data.csv 複製進 Bucket,並將 CSV 裡的路徑更新。

gsutil cp gs://car_damage_lab_metadata/data.csv .
sed -i -e "s/car_damage_lab_images/${BUCKET}/g" ./data.csv

CSV 及 Bucket 的內容如下圖所示,這邊需確認 data.csv 已複製進 Bucket。

準備好訓練資料後就可以來建立 AutoML,首先我們要創建 Dataset。操作方式是進入 Vertex AI 的 Dataset 點選 CREATE 並依序設定名稱、資料類型以及地區。

完成後我們就會進入下圖的 Dataset 介面,接著我們花一點時間將要用來訓練的圖片導入至 Dataset。

機器學習訓練資料導入 Dataset 教學圖
截圖自:Google Cloud Platform 頁面
©2022 Google Inc.

導入完畢後就可以在 Browse 介面中看到我們的訓練資料及 Filter Label 區塊,而在 Analyze 介面內,則可以看到所有特徵 Label 的統計資料。

確認所有資料都沒有問題後就可以開始訓練模型。此次示範的訓練方式是直接將 AutoML 模型部署到雲端,完成前述設定後還須為模型命名。

這次我們其他的設定都先選擇 default,最後提醒大家可以將 Compute and pricing 中將 Node 調高來加快訓練速度,而完成所有環境後就可以開始訓練了。

訓練完成後我們就可以將建立好的模型 Endpoint 部署到 Cloud Run 上使用。提醒大家訓練會花費較長的時間,需要一些耐心來等候。

訓練完成模型 Endpoint 部署到 Cloud Run_教學圖
截圖自:Google Cloud Platform 頁面
©2022 Google Inc.

上圖為部署完成後的 Cloud Run,這邊我們將紅框內的 url 使用 Cloud Shell 加進環境變數 AUTOML_PROXY 之中,並接著創建一個 payload.json 的檔案,裡面內容為我們所要預測的圖片資訊。

AUTOML_PROXY=<automl-proxy url>
INPUT_DATA_FILE=payload.json
{
    "instances": [{
      "content": " "
    }],
    "parameters": {
      "confidenceThreshold": 0.5,
      "maxPredictions": 5
    }
  }

其中 content 就是我們的圖片資訊,可以對圖片使用 ​​Base64 Image Encoder,並將其 Encode 出來的資訊填入 content 中,完成後就可以用 curl 來觸發 Cloud Run 進行預測,預測的範例如下。

curl -X POST -H "Content-Type: application/json" $AUTOML_PROXY/v1 -d "@${INPUT_DATA_FILE}"

以下我們實際預測一張汽車圖片,讓模型判斷其是否為受損的車。在結果中我們看到 displayNames”:[“bumper”] 這個資訊,代表根據我們測試的圖片經預測後為受損的車輛。

截圖自:Google Cloud Skills Boost 頁面
©2022 Google Inc
{"predictions":[{"confidences":[0.951557755],"displayNames":["bumper"],"ids":["1960986684719890432"]}],"deployedModelId":"4271461936421404672","model":"projects/1030115194620/locations/us-central1/models/2143634257791156224","modelDisplayName":"damaged_car_parts_vertex","modelVersionId":"1"}

這次簡單介紹了關於 Vertex AI 的功能及自訂義環境部署方式,其中 AutoML 讓訓練的過程相較於一般訓練變得更簡易好入門。如想了解更多關於 Vertex AI 及機器學習的產品使用歡迎聯絡 Cloud Ace ,讓我們協助您規劃雲端架構並實現機器學習環境的建置。

延伸閱讀:

BigQuery 是什麼?大數據時代一定要認識的最強資料分析工具
BigQuery 教學―操作界面與分析、視覺化步驟完整圖解
立即實踐大數據分析應用!步驟、工具、目標建議一次了解
使用 BigQueryML 來預測新生兒體重
以更好上手的機器學習工具,普及化資料分析與洞察

Cloud Ace 研討會主頁

發佈留言