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 提供許多不同的產品,可支援端對端機器學習工作流程。本研究室的重點將著重於下列產品:適用於表格資料、預測和 Workbench 的 AutoML。
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:
接著在「使用者自行管理的筆記本」中,按一下「新增筆記本」:
接著選取最新版的「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
。然後選取「Continue」:
匯入資料集後,畫面應如下所示:
如有需要,可以按一下 [產生統計資料],查看這個資料集的其他資訊 (但執行下一步前不一定要執行)。這個資料集包含真實的信用卡交易。大部分資料欄名稱都經過遮蔽,這就是 V1
、V2
等名稱。
5. 使用 AutoML 訓練模型
上傳代管資料集之後,就可以開始使用這些資料訓練模型。我們將訓練分類模型,以預測特定交易是否屬於詐欺活動。Vertex AI 提供兩種訓練模型的選項:
- AutoML:只需要最基本的機器學習專業知識,就能輕鬆訓練出高品質模型。
- 自訂訓練:使用 Google Cloud 其中一個預先建構的容器,或在雲端執行自訂訓練應用程式。
在本研究室中,我們將使用 AutoML 進行訓練。
步驟 1:開始執行訓練工作
在上一步執行的資料集詳細資料頁面中,選取右上方的「Train new model」(訓練新模型)。選取「分類」做為目標,保持選取「AutoML」進行模型訓練,然後按一下「繼續」:
為模型命名,也可以使用預設值。在「目標資料欄」下方,選取「類別」。是一個整數,表示特定交易是否為詐欺 (0
為非詐欺,1
代表詐欺)。
然後選取「Continue」:
在這個步驟中,向下捲動並點選展開「進階選項」。這個資料集極度不平衡 (資料中只有不到 1% 包含詐欺交易),因此選擇「AUC PRC」選項,盡量提高較不常見的類別的精確度:
選取「繼續」,然後繼續執行最後一個步驟 (運算和定價)。在此輸入 1 做為預算的節點時數,並保持啟用提前停止功能。1 個運算時數的 AutoML 模型訓練通常是不錯的起點,有助於瞭解所選的特徵和標籤是否有關聯性。您可以據此修改特徵,並增加訓練時間來改善模型成效。接著選取「開始訓練」。
您會在訓練工作完成時收到電子郵件。訓練作業需要一小時以上的時間,才能考量啟動及拆卸資源的時間。
6. 探索模型評估指標
在這個步驟中 您將瞭解模型的成效
模型訓練工作完成後,請前往 Vertex 中的「Models」分頁。按一下您剛訓練的模型,然後查看「評估」分頁標籤。評估指標有很多,我們的重點是混淆矩陣和特徵重要性。
步驟 1:瞭解混淆矩陣
混淆矩陣會指出模型在測試集的「各個類別」中,模型正確預測結果的樣本百分比。如果出現類似於我們處理的資料集等不平衡的資料集,則相較於整體準確率,這個指標較適合用來評估模型成效。
請記住,資料集中只有不到 1% 是詐欺性交易,所以如果模型準確率為 99%,我們就有機會隨機猜測非詐欺類別 99% 的機率。這就是為什麼這裡會顯示模型的準確度,就比較適合用來瞭解各個類別的指標。
如果您在「評估」分頁中向下捲動,應該會看到如下的混淆矩陣 (確切的百分比可能有所不同):
混淆矩陣顯示我們的初始模型,能將測試集中 85% 的詐欺範例正確分類。這種情況相當不錯,尤其在資料集不平衡的情況下更是如此。接下來,我們可以嘗試訓練模型增加運算時數,看看是否能提升 85% 的效能。
步驟 2:瞭解特徵重要性
混淆矩陣下方會顯示特徵重要性圖表,如下所示:
我們可以看到在預測時,為模型提供最大信號的特徵。特徵重要性是 Explainable AI 的一種,這個領域包含多種方法,可幫助企業深入瞭解機器學習模型正在進行預測。這裡顯示的特徵重要性圖表,是根據測試集上所有的模型預測結果計算得出。它會從一批範例中看出最重要的特徵,
如果資料集內的大部分地圖項目沒有模糊不清,這張圖表會更有趣。舉例來說,我們可能知道交易的類型 (匯款、存款等) 是詐欺的主要指標。
在實際情境中,這些特徵重要性的值可用於改善模型,並提高預測結果的可信度。我們可能會決定在下次訓練模型時,移除重要性最低的特徵,或將兩個重要性較高的特徵合併為一個交錯組合特徵,看看是否能提升模型成效。
我們認為該特徵在批次中相當重要,但 Vertex AI 的個別預測結果也相當重要。部署模型後,我們將說明如何進行。
7. 將模型部署至端點
現在您已將模型訓練完成,下一步就是在 Vertex 中建立端點。Vertex 中的模型資源可能有多個相關聯的端點,您可以將流量拆分至各個端點。
步驟 1:建立端點
在模型頁面上,前往「Deploy and test」分頁,然後按一下「Deploy toEndpoint」:
為您的端點命名 (例如 fraud_v1
),將「存取權」的設定為「標準」,然後按一下「繼續」。
保留「流量分配」和「機器類型」的預設設定,然後依序點選「完成」和「繼續」。
我們不會針對這個端點使用模型監控,因此您可以不選取該選項,然後按一下「部署」。端點會在幾分鐘內部署完畢。完成時,待完成事項旁會顯示綠色勾號:
就快大功告成了!現在,您可以從部署的模型取得預測結果了。
8. 針對已部署的模型取得預測結果
取得模型預測結果的方式如下:
- Vertex AI UI
- Vertex AI API
在這裡一併列出這兩個項目。
步驟 1:在 UI 中取得模型預測結果
在顯示端點的模型頁面中 (也就是在最後一個步驟中離開的地方),向下捲動至「Test your model」(測試模型) 區段:
Vertex AI 會為每個模型特徵隨機挑選一個值,用來取得測試預測資料。您可以視需要變更這些值。向下捲動至頁面底部,然後選取「預測」。
本頁面的「預測結果」部分應會顯示每個類別的模型預測百分比。舉例來說,0
類別的可信度分數為 0.99
,代表模型認為這個範例的非詐欺性活動佔 99%。
步驟 2:透過 Vertex AI API 取得模型預測結果
UI 是確保部署的端點可如預期運作的絕佳方式,但是您可能會想透過 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)
您應該會看到 .67
周圍的預測結果 0 類別,這代表模型認為這筆交易有 67% 的機率不會詐欺。
🎉 恭喜!🎉
您已瞭解如何使用 Vertex AI 執行下列作業:
- 上傳代管資料集
- 使用 AutoML 訓練及評估表格資料模型
- 將模型部署至端點
- 透過 Vertex 的 SDK 取得模型端點的預測結果
如要進一步瞭解 Vertex AI 的其他部分,請參閱說明文件。
9. 清除
如果想繼續使用您在這個研究室中建立的筆記本,建議在不使用時將其關閉。在 Cloud 控制台的 Workbench 使用者介面中,選取筆記本,然後選取「Stop」。
如想完全刪除筆記本,只要按一下右上方的「刪除」按鈕即可。
如要刪除您部署的端點,請前往 Vertex AI 控制台的「端點」部分,然後從端點取消部署模型:
如要刪除 Storage 值區,請使用 Cloud 控制台中的導覽選單前往「Storage」(儲存空間)、選取值區,然後點選「Delete」(刪除):