1. 總覽
在本實驗室中,您將使用 Vertex AI 並搭配表格型資料訓練及提供模型。這是 Google Cloud 最新推出的 AI 產品服務,目前為預先發布版。
課程內容
內容如下:
- 將代管資料集上傳至 Vertex AI
- 使用 AutoML 訓練模型
- 將訓練好的 AutoML 模型部署至端點,並使用該端點取得預測結果
在 Google Cloud 上執行這個實驗室的總費用約為 $22 美元。
2. Vertex AI 簡介
本實驗室使用 Google Cloud 最新推出的 AI 產品服務。Vertex AI 整合了 Google Cloud 機器學習服務,提供流暢的開發體驗。以 AutoML 訓練的模型和自訂模型,先前需透過不同的服務存取。這項新服務將兩者併至單一 API,並加入其他新產品。您也可以將現有專案遷移至 Vertex AI。如有任何意見,請參閱支援頁面。
Vertex AI 包含許多不同的產品,可支援端對端機器學習工作流程。本實驗室將著重於下列產品:表格型資料的 AutoML、Prediction 和 Workbench。

3. 設定環境
您必須擁有已啟用計費功能的 Google Cloud Platform 專案,才能執行這項程式碼研究室。如要建立專案,請按照這裡的說明操作。
步驟 1:啟用 Compute Engine API
前往「Compute Engine」,然後選取「啟用」 (如果尚未啟用)。您需要這項資訊才能建立筆記本執行個體。
步驟 2:啟用 Vertex AI API
前往 Cloud 控制台的 Vertex AI 專區,然後點選「啟用 Vertex AI API」。

步驟 3:建立 Vertex AI Workbench 執行個體
在 Cloud 控制台的「Vertex AI」部分中,按一下「Workbench」:

然後在「使用者自行管理的 Notebooks」中,按一下「New Notebook」(新增 Notebook):

然後選取最新版本的「TensorFlow 企業版 (含 LTS)」執行個體類型,且「不加入任何 GPU」:

使用預設選項,然後按一下「建立」。
步驟 5:開啟筆記本
建立執行個體後,請選取「Open JupyterLab」:

我們將使用這個信用卡詐欺偵測資料集的資料訓練模型。我們會使用 BigQuery 中公開提供的這個資料集版本。
4. 建立代管資料集
在 Vertex AI 中,您可以為各種資料類型建立代管資料集。接著,您可以產生這些資料集的統計資料,並使用這些資料,透過 AutoML 或您自己的自訂模型程式碼訓練模型。
步驟 1:建立資料集
在控制台的 Vertex 選單中,選取「資料集」:

在本實驗室中,我們將建構詐欺偵測模型,判斷特定信用卡交易是否應歸類為詐欺。
在「資料集」頁面中為資料集命名,然後選取「表格」和「迴歸/分類」。接著建立資料集:

您可以透過下列幾種方式,將資料匯入 Vertex 的代管資料集:
- 從電腦上傳本機檔案
- 從 Cloud Storage 選取檔案
- 從 BigQuery 選取資料
我們將從公開的 BigQuery 資料表上傳資料。
步驟 2:從 BigQuery 匯入資料
選擇「從 BigQuery 選取資料表或檢視表」做為匯入方法,然後將下列內容複製到「BigQuery 資料表」方塊:bigquery-public-data.ml_datasets.ulb_fraud_detection。然後選取「繼續」:

匯入資料集後,您應該會看到類似下列的畫面:

如要查看這個資料集的其他資訊,可以按一下「產生統計資料」,但這並非必要步驟。這個資料集包含真實的信用卡交易。大部分的資料欄名稱都已隱藏,因此稱為 V1、V2 等。
5. 使用 AutoML 訓練模型
上傳代管資料集後,就能開始使用這項資料訓練模型。我們將訓練分類模型,預測特定交易是否為詐欺交易。Vertex AI 提供兩種模型訓練選項:
- AutoML:輕鬆訓練高品質模型,僅需最基本的機器學習專業知識。
- 自訂訓練:使用 Google Cloud 其中一個預先建構的容器,或使用自己的容器,在雲端執行自訂訓練應用程式。
在本實驗室中,我們將使用 AutoML 進行訓練。
步驟 1:啟動訓練工作
在您於上一個步驟中離開的資料集詳細資料頁面,選取右上方的「訓練新模型」。選取「分類」做為目標,保留選取的「AutoML」做為模型訓練方法,然後按一下「繼續」:

為模型命名,或使用預設名稱。在「目標資料欄」下方選取「類別」。這是整數,表示特定交易是否為詐欺交易 (0 代表非詐欺交易,1 代表詐欺交易)。
然後選取「繼續」:

在這個步驟中,請向下捲動並按一下展開進階選項。由於這個資料集嚴重不平衡 (只有不到 1% 的資料包含詐欺交易),請選擇「AUC PRC」選項,盡可能提高較不常見類別的查準率和查全率:

選取「繼續」,然後前往最後一個步驟 (運算和價格)。在這裡,請輸入 1 做為預算的節點時數,並保持啟用提早中止訓練功能。1 個運算時數的 AutoML 模型訓練通常是不錯的起點,有助於瞭解所選的特徵和標籤是否有關聯性。您可以據此修改特徵,並增加訓練時間來改善模型成效。接著選取「開始訓練」。
訓練工作完成後,您會收到電子郵件通知。訓練作業會稍微超過一小時,因為需要時間啟動及終止資源。
6. 探索模型評估指標
在這個步驟中,我們會查看模型的成效。
模型訓練工作完成後,請前往 Vertex 的「Models」分頁。點選剛剛訓練的模型,然後查看「Evaluate」(評估) 分頁。這裡有許多評估指標,我們將著重於兩個指標:混淆矩陣和特徵重要性。
步驟 1:瞭解混淆矩陣
混淆矩陣會告訴我們在測試集的「各個類別」中,模型正確預測結果的樣本百分比。就我們處理的不平衡資料集而言,這項指標比整體準確率更能評估模型成效。
請注意,資料集中只有不到 1% 的例子是詐欺交易,因此如果模型準確率為 99%,很可能只是隨機猜測非詐欺類別,猜對的機率為 99%。因此,查看模型在每個類別的準確度,是更合適的指標。
在「評估」分頁中向下捲動,您應該會看到類似下方的混淆矩陣 (確切百分比可能有所不同):

混淆矩陣顯示,初始模型能正確分類測試集中 85% 的詐欺樣本。考慮到資料集嚴重不平衡,這個結果相當不錯。接下來,我們可以嘗試增加模型的訓練運算時數,看看能否將準確度從 85% 提高。
步驟 2:查看特徵重要性
混淆矩陣下方應會顯示類似下方的特徵重要性圖表:

這會顯示模型在進行預測時,提供最大信號的特徵。特徵重要性是可解釋 AI 的一種,這個領域包含各種方法,可深入瞭解機器學習模型如何做出預測。這裡顯示的特徵重要性圖表,是根據模型對測試集的所有預測結果,以匯總方式計算得出。這會顯示一批範例中最重要特徵。
如果資料集中的大部分特徵沒有遭到遮蓋,這張圖表會更有趣。舉例來說,我們可能會發現交易類型 (轉帳、存款等) 是詐欺的最大指標。
在實際情況中,這些特徵重要性的值可用於改善模型,並提高預測結果的可信度。我們可能會在下次訓練模型時,移除重要性最低的特徵,或將兩個重要性較高的特徵合併為一個交錯組合特徵,看看是否能提升模型成效。
我們在這裡查看的是批次特徵重要性,但也可以在 Vertex AI 中取得個別預測的特徵重要性。部署模型後,我們將瞭解如何執行這項操作。
7. 將模型部署至端點
現在我們已將模型訓練完成,下一步就是在 Vertex 中建立端點。Vertex 中的模型資源可能有多個相關聯的端點,您可以將流量拆分至各個端點。
步驟 1:建立端點
在模型頁面中,前往「部署及測試」分頁,然後點選「部署至端點」:

為端點命名 (例如 fraud_v1),將「存取權」設為「標準」,然後按一下「繼續」。
保留流量分配和機型預設設定,依序點選「完成」和「繼續」。
我們不會為這個端點使用模型監控功能,因此您可以取消選取該選項,然後按一下「部署」。端點會在幾分鐘內部署完畢。完成後,旁邊會顯示綠色勾號:

就快完成了!現在,您可以從部署的模型取得預測結果了。
8. 從部署的模型取得預測結果
您可以透過幾種方式取得模型預測結果:
- Vertex AI 使用者介面
- Vertex AI API
我們會在這裡顯示兩者。
步驟 1:在使用者介面中取得模型預測結果
在顯示端點的模型頁面 (上一個步驟的最後一個畫面),向下捲動至「測試模型」部分:

在這裡,Vertex AI 為模型的各項特徵選擇了隨機值,可用於取得測試預測結果。您可以視需要變更這些值。向下捲動到頁面底部,然後選取「預測」。
在頁面的「預測結果」部分,您應該會看到模型預測的每個類別百分比。舉例來說,如果類別 0 的信賴分數為 0.99,表示模型認為這個樣本有 99% 的機率不是詐欺。
步驟 2:使用 Vertex AI API 取得模型預測結果
使用者介面是確保已部署端點正常運作的絕佳方式,但您可能想透過 REST API 呼叫動態取得預測結果。為向您展示如何取得模型預測結果,我們將使用在本實驗室一開始建立的 Vertex Workbench 執行個體。
接著開啟您建立的筆記本執行個體,然後從啟動器開啟 Python 3 筆記本:

在筆記本的儲存格中執行下列指令,安裝 Vertex SDK:
!pip3 install google-cloud-aiplatform --upgrade --user
接著在筆記本中新增儲存格,匯入 SDK 並建立剛部署端點的參照:
from google.cloud import aiplatform
endpoint = aiplatform.Endpoint(
endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)
您必須將上述 endpoint_name 字串中的兩個值,換成專案編號和端點。前往專案資訊主頁,即可找到專案編號值。
如要查看端點 ID,請前往控制台的端點專區:

最後,請在新儲存格中複製並執行下列程式碼,向端點進行預測:
test_instance={
'Time': 80422,
'Amount': 17.99,
'V1': -0.24,
'V2': -0.027,
'V3': 0.064,
'V4': -0.16,
'V5': -0.152,
'V6': -0.3,
'V7': -0.03,
'V8': -0.01,
'V9': -0.13,
'V10': -0.18,
'V11': -0.16,
'V12': 0.06,
'V13': -0.11,
'V14': 2.1,
'V15': -0.07,
'V16': -0.033,
'V17': -0.14,
'V18': -0.08,
'V19': -0.062,
'V20': -0.08,
'V21': -0.06,
'V22': -0.088,
'V23': -0.03,
'V24': 0.01,
'V25': -0.04,
'V26': -0.99,
'V27': -0.13,
'V28': 0.003
}
response = endpoint.predict([test_instance])
print('API response: ', response)
您應該會看到 0 類別的預測值約為 .67,這表示模型認為這筆交易有 67% 的機率並非詐欺。
🎉 恭喜!🎉
您已瞭解如何使用 Vertex AI 執行下列作業:
- 上傳代管資料集
- 使用 AutoML 訓練及評估表格資料模型
- 將模型部署至端點
- 使用 Vertex SDK 取得模型端點的預測結果
如要進一步瞭解 Vertex AI 的其他部分,請參閱說明文件。
9. 清除
如要繼續使用在本實驗室中建立的筆記本,建議您在未使用時關閉筆記本。在 Cloud 控制台的 Workbench 使用者介面中,選取筆記本,然後選取「停止」。
如要徹底刪除筆記本,請按一下右上方的「刪除」按鈕。
如要刪除已部署的端點,請前往 Vertex AI 控制台的「端點」專區,然後從端點取消部署模型:

如要刪除 Storage Bucket,請使用 Cloud 控制台中的導覽選單瀏覽至 Storage,選取 bucket,然後按一下「Delete」:
