GCP的AI開發作業流程

Vertex AI 的 ML 工作流程分為三個主要階段。

  1. 資料準備,包括”資料上傳和特徵工程”兩個步驟。模型需要大量資料來學習。資料的品質和數量決定了ML的良率。ML中使用的資料可以是"串流或批次"資料。資料也可以是"結構化的或非結構化"的。
  2. 模型開發 — 模型需要大量的"迭代訓練"。這是"訓練和評估( training and evaluation)"形成一個循環,訓練模型,然後評估模型,然後再訓練模型。
  3. 最後一個階段是模型運作(model serving)。模型需要實際使用才能預測結果。這是"部署和監控"ML模型的時候。如果不將ML模型投入生產,它就沒有任何用處,只是一個理論模型。

現在,需要注意的是,ML作業流程是非線性的,而是迭代的。例如,在模型訓練期間,可能需要傳回raw data並產生更有用的特徵來為模型提供資料。在模型運作期間監控模型時,我們可能會發現資料漂移(data drifting),或者預測的準確性突然下降。我們可能需要檢查資料來源並調整模型參數。幸運的是,這些步驟可以透過 MLOps 實現自動化。

儘管主要階段是不變的,但我們有兩個選項來使用 Vertex AI 設定作業流程:

  1. AutoML,這是一種no-code解決方案,可透過 UI 建立 ML 模型。
  2. Vertex AI Workbench 或使用 Vertex AI Pipelines 的 Colab 對作業流程進行編碼。

Vertex AI Pipelines 本質上是一個工具包,其中包括預先建置的 SDK 和軟體開發套件,它們是流水線的建構區塊(building block)。 如果是經驗豐富的ML工程師或資料科學家,並且希望以程式設計方式自動化工作流程,那麼對流水線進行編碼是一個不錯的選擇。

資料準備

資料來源可以從GCP的storage service或是本機電腦。AutoML 支援四種資料類型: image, tabular, text, video。

  • Image —
    對於Image data,可以訓練模型將image分類為單一標籤或多標籤(也就是分類classification與物件偵測object detection)。單一標籤意味著只能為一個image分配一個標籤,例如狗或貓,而多標籤意味著可以為image給予多個標籤,例如狗、大小和顏色。還可以訓練模型來偵測物件並發現影像分割(image segmentation)
  • Tabular —
    這一類資料可以訓練模型來解決迴歸(Regression)、分類(Classification)或預測(Forecasting)問題。預測對於零售等許多產業至關重要。
  • Text —
    訓練模型: 對文字進行分類。提取實體(entities)。並進行情緒分析
  • Video —
    訓練模型來辨識影片動作。將影片分類。並追蹤物件。

資料準備階段中也需要進行特徵工程。特徵工程:
在模型開始訓練之前必須處理資料。特徵是指有助於預測的因素。它就像統計資料中的自變數或表格中的列(column)。特徵工程作業既具有挑戰性又乏味。

為了提供協助,Vertex AI 提供了一項名為 Vertex AI Feature Store 的服務,它是一個用於管理、服務和共享功能的集中式儲存庫。它聚合了 BigQuery 中不同來源的特徵,並使它們可用於即時(通常稱為線上)和批次(通常稱為離線)服務。它可以管理和服務嵌入,這是AI中的關鍵資料類型。它還支援即時檢索相似項目,確保低延遲。

Vertex AI Feature Store的效益:

  • 可共享用於模型訓練與模型運作
  • 可重覆使用
  • 可擴展
    自動擴展以提供低延遲服務,因此可以專注於開發建立它們的邏輯,而無需擔心部署

模型開發

這個階段涉及兩個步驟:

  1. 模型訓練,
  2. 模型評估

而這個過程可能是迭代的。

圖一

要設定 ML 模型,我們需要指定一些內容(如上圖一)。

  1. 是訓練方法(Training method),將準備階段中上傳的資料集告訴 Vertex AI。根據資料類型(無論是表格、圖像、文字或影片),我們可以指定訓練目標。這就是模型訓練的目標,也是要解決的任務。
  2. 選擇哪一種訓練方法:AutoML,no-code,或自訂訓練,使用代碼。
  3. 確定訓練細節(如下圖二)。 例如,如果正在訓練模型來解決迴歸和分類等監督學習問題,則必須從資料集中選擇目標列(target column)。
  4. 在訓練選項中(如下圖三),可以選擇某些特徵來參與訓練,並根據需要轉換資料類型
  5. 最後指定預算和定價(如下圖四),然後開始訓練。
圖二
圖三

AutoML 將為我們訓練模型,並從數千個其他模型中選擇最佳表現的模型。AutoML 背後的技術是神經架構搜尋和遷移學習(neural architecture search and transfer learning)。 Vertex AI 提供廣泛的評估指標來幫助確定模型的效能。

這是模型開發階段的評估部分。 Vertex AI 提供廣泛的評估指標來幫助確定模型的效能。 在評估分類模型的表現時,我們要看的指標是recall和precision標。 為此,需要使用混淆矩陣(confusion matrix)。混淆矩陣是機器學習分類問題的特定效能度量。關於更多的混淆矩陣(confusion matrix)與其Recall與Precision的計算,可參閱本部落格"AWS-ML認證筆記 — Domain 3 Part 1"文章介紹。

Vertex AI 可以將 precision-recall曲線視覺化,以便可以根據需要解決的問題進行調整。

您將有機會在 AutoML Lab中實踐調整precision and recall。除了混淆矩陣和為衡量precision and recall而產生的指標之外,另一個有用的衡量標準是特徵重要性(Feature importance)。在 Vertex AI 中,特徵重要性透過長條圖顯示,以說明每個特徵如何對預測做出貢獻。條形越長,或與某個特徵相關的數值越大,它就越重要。

特徵重要性只是 Vertex AI 稱為可解釋 AI(Explainable AI) 的ML功能的範例之一。可解釋AI是一組工具和框架,可幫助理解和解釋ML模型所做的預測。

服務運作(Model serving)

模型運作包括兩個步驟:

  1. 模型部署
  2. 模型監控

我們需要注意,模型管理存在於整個工作流程中,用於管理底層ML基礎架構。這讓數據科學家專注於做什麼,而不是如何做

模型佈署

這是模型實現並準備好提供服務。這裡有兩個主要選項:

  1. 將模型部署到端點(Endpoint)以進行即時預測(或通常稱為線上預測)。當需要低延遲的即時結果時,此選項是最佳選擇,例如根據使用者在線上時的瀏覽習慣進行即時推薦。模型必須先部署到端點,然後才能用於提供即時預測
  2. 直接從模型資源請求預測作業以進行批次預測(Prediction)。當不需要立即回應時,此選項是最佳選擇。例如,根據客戶最近的購買行為以及當前市場上的流行商品,每隔一周發送一次行銷活動。而批次預測不需要將模型部署到端點。

模型監控

一旦模型部署並開始進行預測或產生內容,監控其效能就非常重要。 Vertex AI 上自動化 ML 工作流程的主要功能是一個名為 Vertex AI Pipelines 的工具包。它透過以no-code方式編排工作流程來自動化、監控和管理ML系統。

MLOps與工作流程自動化

上面我們介紹了透過三個主要階段建立 ML 模型:資料準備、模型開發和模型運作。我們可以使用兩種方法來建立端到端工作流程。

  1. 透過 Google Cloud 控制台實現no-code,例如 Vertex AI 上的 AutoML。但是,如果您想要自動化此工作流程以實現持續整合、持續訓練和持續交付,該怎麼做?
  2. 這裡還有另一個選項:編寫一個自動化 ML 作業流程的流水線。機MLOps就是拿來在這用的。

MLOps 將ML開發與維運結合,並將 DevOps中的類似原則應用於ML模型。 MLOps 旨在解決與ML相關的生產環境挑戰。這是指建立整合性的ML系統並在生產環境中運行它。 這些被ML從業者社群認為是最大的痛點,因為資料和代碼在ML中都在不斷變動。

實踐 MLOps 意味著自動化和監控 ML 系統建置的每個步驟,以實現持續整合(CI)、持續訓練(CT)和持續交付(CD)。 Vertex AI 上的 MLOps 的骨幹是一個名為 Vertex AI Pipelines 的工具包,它支援

  1. Kubeflow Pipelines(KFP)
  2. TensorFlow Extended(TFX)。

如果我們已經使用 TensorFlow 建立了處理 TB 級的結構化資料 ML 模型,那麼使用 TFX 並將該代碼轉換為 ML流水線是有意義的。否則,KFP 可能是個不錯的選擇。

ML 流水線包含一系列流程並在兩個不同的環境中運行。第一個是實驗(experimentation)、開發(Development)和測試(test)環境,第二個是staging、預生產(pre-production)和生產環境。 在開發環境中,從資料準備(包括資料提取、分析和準備)開始,到模型開發(如訓練、評估和驗證)。 成果是經過訓練的模型,可以輸入模型註冊表(model registry)中。

一旦模型經過訓練,流水線流程就會跑到暫存和生產環境,可以在其中提供模型運作,包括預測和監控。其中每個進程都可以是流水線組件,它是執行工作流程的一項任務的一組獨立的代碼。我們可以將組件視為一個函數,它是流水線的建構區塊(building block)。 我們可以自行建立自訂組件,也可以利用 Google 提供的預建置組件。

如果您想要完成特定任務來自訂 ML 工作流程,例如確定模型部署的特殊閾值,您可能需要編寫自訂元件。組織通常分三個階段實施ML自動化。

  1. 階段零是起點,尚未設定任何 MLOps。通常使用基於 GUI 的工作流程(例如 AutoML)進行訊連、部署和服務。階段零至關重要,因為它可以幫助我們在自動化之前手動建立端到端作業流程。
  2. 階段一是透過使用 Vertex AI Pipelines SDK 建置組件來開始自動化 ML 作業流程。組件的一個例子是訓練流水線。正是在這個階段,我們開發了供之後使用的建構區塊。
  3. 在第二階段,整合單獨的組件以形成整個工作流程並實現 CI、CT 和 CD。

案例: 使用AutoML來預測借款風險

在這個案例中,我們有2500個資料點,AutoML需要至少1000個資料點。目標是用ML作業流程的三個階段:資料準備(包含資料上傳)、模型開發和模型運作。在開始之前,我們要定義甚麼模型的效能(也就是訓練成果)是我們需要的。所以需要定義模型評估(model evaluation)。

功能表:Vertex AI →DATA →Datasets
上圖中,我們已經將資料建立在Vertex AI中。在選擇資料集時,除了給予名稱之外還需要指定資料型態與目標。在此例中我們選擇的是Tabular與Regression/classification(如下圖)

功能表:Vertex AI →Model development → Training(如下圖)
我們需要訓練一個新的模型。除了選擇Datasets之外,也要指定其目標。這裡我們選擇的是分類問題。

接下來我們需要指定要經過ML流程之後要預測表格中的哪一個目標欄位。在這裡我們選擇default。

在進階選項中(如下圖),我們可以看到要將資料集進行"訓練、驗證與測試"的比例。可以看到有最佳實踐、手動或依時間序。

在訓練選項中(如下圖)。指定想要在訓練模型中包含的column。例如,ClientID 可能與預測貸款風險無關。針對AutoML對於表格優化的預測可參考ptimization objectives for tabular AutoML models guide

我們也可以選擇要優化的指標是哪一種(如下圖)。

最後是指定預算。

模型評估(model evaluation)

我們進行訓練時取得混淆矩陣(confusion matrix)的資料如下:

上面這張圖告訴我們其結果的計算是用以下的公式計算出來的:

這張表格告訴我們100% 真陽性率(true positive):這意味著該模型可以完美識別每個將還錢的人。模型不會漏失掉任何一個好的借款人。另外有87% 的真實陰性(true negative)率:該模型還正確識別了 87% 的不還錢的人。

另外就是13% 的假陽性(false positive)率:這意味著模型錯誤地將 13% 的會還錢的人判定為不還錢的。這意味著根據模型,我們可能會少做到這13%的生意。最後,0%的假陰性(false negative)率:這意味著模型永遠不會錯誤地將會還錢識別為可能會不還錢的人。

所以我們可以在AutoML計算出precision-recall curve(如下圖)。
功能表: Vertex AI →Deploy and Use → Model Registry

其中置信度閾值(confidence threshold)決定了ML模型如何計算陽性(positive)案例。

  • 閾值越高 — precision會增加,recall會減少
  • 閾值越低 — precision會減少,recall會增加

我們在Vertex AI中可以任意調整這個置信度閾值。在上面的案例中,將置信度閾值移至零可產生最高的 100% 的recall和最低的 50% 的precision。該模型預測 100% 的街錢的人會還錢。但實際上只有50%的人能夠還還錢。用這個門檻來識別不還錢情況可能會有風險,因為這意味著有一半的人可能不會還錢。

哪如果我們把閥值調整成1呢?哪 precision就會是100%,而recall就只剩下1%。

這意味著,在所有預計將還錢的人之中,100%的人實際上都償還了貸款。但是,我們只會向 1% 的借錢提供貸款,從而拒絕了 99% 的借錢人。這生意其實不用做了。

所以如何在這中間取捨,靠的是人的智慧,而不是機器。

Feature importance

在 Vertex AI 中,特徵重要性透過長條圖顯示,以說明每個特徵如何有助於預測。條形越長或特徵相關的數值越大,其重要性就越大。

佈署模型

在Vertex AI中,

  1. Deploy & test
  2. Deploy to Endpoint
  3. 於Endpoint name, type LoanRisk

--

--

運用"雲端服務"加速企業的數位轉型願景
運用"雲端服務"加速企業的數位轉型願景

Written by 運用"雲端服務"加速企業的數位轉型願景

我們協助您駕馭名為"雲端運算"的怪獸,馴服它為您所用。諮詢請來信jason.kao@suros.com.tw. https://facebook.com/jason.kao.for.cloud

No responses yet