文章段落
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」,三種服務適用的情境和行業各有不同,大家可依據自身狀況進行選擇。
首先 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,以下簡介這兩者的差異。
其中 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。
©2022 Google Inc.
在 User – Managed Notebook 中,大家可依據需求選擇 Google Cloud 預先建立好的 ML 環境,例如 Tensorflow、Pytorch 和 Python ……等。提醒大家 Managed Notebook 主要是提供代管服務,所以就沒有上述這些預先建好的 ML 環境可選擇。
©2022 Google Inc.
在選擇好所需的環境後,接著就能為 ML 的環境選擇地區、網路環境以及規格。
©2022 Google Inc.
依據需求設定好環境後就可以建立 Notebook,建立完成後點擊 OPEN JUPYTERLAB 就能打開 Notebook 並開始操作自訂的機器學習。
©2022 Google Inc.
二、以 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 以及上傳的檔案。
©2022 Google Inc.
接著我們需創建一個 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。
©2022 Google Inc.
準備好訓練資料後就可以來建立 AutoML,首先我們要創建 Dataset。操作方式是進入 Vertex AI 的 Dataset 點選 CREATE 並依序設定名稱、資料類型以及地區。
©2022 Google Inc.
完成後我們就會進入下圖的 Dataset 介面,接著我們花一點時間將要用來訓練的圖片導入至 Dataset。
©2022 Google Inc.
導入完畢後就可以在 Browse 介面中看到我們的訓練資料及 Filter Label 區塊,而在 Analyze 介面內,則可以看到所有特徵 Label 的統計資料。
©2022 Google Inc.
確認所有資料都沒有問題後就可以開始訓練模型。此次示範的訓練方式是直接將 AutoML 模型部署到雲端,完成前述設定後還須為模型命名。
©2022 Google Inc.
這次我們其他的設定都先選擇 default,最後提醒大家可以將 Compute and pricing 中將 Node 調高來加快訓練速度,而完成所有環境後就可以開始訓練了。
©2022 Google Inc.
訓練完成後我們就可以將建立好的模型 Endpoint 部署到 Cloud Run 上使用。提醒大家訓練會花費較長的時間,需要一些耐心來等候。
©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”] 這個資訊,代表根據我們測試的圖片經預測後為受損的車輛。
©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 來預測新生兒體重
・以更好上手的機器學習工具,普及化資料分析與洞察