Vertex AI 提供代管訓練服務,可讓您將大規模模型訓練作業化為可執行的程序。您可以使用 Vertex AI 在Google Cloud 基礎架構上,根據任何機器學習 (ML) 架構執行訓練應用程式。Vertex AI 也針對下列熱門機器學習架構提供整合支援,簡化模型訓練和提供的準備程序:
本頁說明 Vertex AI 自訂訓練的優點、相關工作流程,以及可用的各種訓練選項。
Vertex AI 可大規模執行訓練
將模型訓練作業化為實際運作有許多挑戰。這些挑戰包括訓練模型所需的時間和成本、管理運算基礎架構所需的專業技能,以及提供企業級安全性的需求。Vertex AI 不僅能解決這些問題,還提供許多其他優點。
全代管運算基礎架構
|
Vertex AI 的模型訓練服務為全代管服務,不需要管理實體基礎架構。您可以訓練機器學習模型,無須佈建或管理伺服器。您只需為實際使用的運算資源付費。Vertex AI 也會處理工作記錄、排隊和監控作業。 |
高效能
|
Vertex AI 訓練工作已針對機器學習模型訓練進行最佳化,因此比直接在 GKE 叢集中執行訓練應用程式更快。您也可以使用 Cloud Profiler,找出訓練工作中的效能瓶頸並進行偵錯。 |
分散式訓練
|
Reduction Server 是 Vertex AI 中的全縮減演算法,可在 NVIDIA 圖形處理器 (GPU) 上,提高多節點分散式訓練的吞吐量,並縮短延遲時間。這項最佳化功能有助於縮短完成大型訓練工作所需的時間和成本。 |
超參數最佳化
|
超參數調整工作會使用不同的超參數值,為訓練應用程式執行多次試驗。您指定要測試的值範圍,Vertex AI 就會在該範圍內找出模型的最佳值。 |
企業安全性
|
Vertex AI 提供下列企業安全性功能:
|
機器學習運作 (MLOps) 整合
|
Vertex AI 提供一套整合式機器學習運作工具和功能,可用於下列用途:
|
自訂訓練的工作流程
下圖概略說明 Vertex AI 中的自訂訓練工作流程。以下各節將詳細說明每個步驟。
載入及準備訓練資料
為獲得最佳效能和支援,請使用下列任一 Google Cloud 服務做為資料來源:
如要比較這些服務,請參閱「資料準備總覽」。
您也可以在使用訓練管道訓練模型時,將 Vertex AI 代管資料集指定為資料來源。使用相同的資料集訓練自訂模型和 AutoML 模型,即可比較兩個模型的效能。
準備訓練應用程式
如要準備訓練應用程式以便在 Vertex AI 上使用,請執行下列操作:
- 實作 Vertex AI 訓練程式碼最佳做法。
- 決定要使用的容器映像檔類型。
- 根據所選容器映像檔類型,將訓練應用程式封裝為支援的格式。
實作訓練程式碼最佳做法
訓練應用程式應導入 Vertex AI 訓練程式碼最佳做法。這些最佳做法與訓練應用程式執行下列功能的能力有關:
- 存取 Google Cloud 服務。
- 載入輸入資料。
- 啟用實驗追蹤的自動記錄功能。
- 匯出模型構件。
- 使用 Vertex AI 的環境變數。
- 確保 VM 重新啟動時能復原。
選取容器類型
Vertex AI 會在 Docker 容器映像檔中執行訓練應用程式。Docker 容器映像檔是獨立的軟體套件,內含程式碼和所有依附元件,幾乎可在任何運算環境中執行。您可以指定要使用的預建容器映像檔 URI,或是建立並上傳預先安裝訓練應用程式和依附元件的自訂容器映像檔。
下表列出預先建構和自訂容器映像檔的差異:
規格 | 預先建構的容器映像檔 | 自訂容器映像檔 |
---|---|---|
機器學習架構 | 每個容器映像檔都專屬於 ML 架構。 | 使用任何機器學習架構或不使用任何架構。 |
機器學習架構版本 | 每個容器映像檔都會與特定機器學習架構版本相關聯。 | 使用任何 ML 架構版本,包括次要版本和每日版本。 |
應用程式依附元件 | 預先安裝機器學習架構的常見依附元件。您可以指定要安裝在訓練應用程式中的其他依附元件。 | 預先安裝訓練應用程式所需的依附元件。 |
應用程式提交格式 |
|
在自訂容器映像檔中預先安裝訓練應用程式。 |
設定難易度 | 低 | 高 |
推薦學習對象 | 以 ML 框架和具有可用預先建立容器映像檔的框架版本為基礎的 Python 訓練應用程式。 |
|
封裝訓練應用程式
確定要使用的容器映像檔類型後,請根據容器映像檔類型,將訓練應用程式封裝成下列其中一種格式:
在預先建構的容器中使用的單一 Python 檔案
將訓練應用程式編寫為單一 Python 檔案,然後使用 Python 適用的 Vertex AI SDK 建立
CustomJob
或CustomTrainingJob
類別。Python 檔案會封裝至 Python 來源發行版本,並安裝至預先建構的容器映像檔。將訓練應用程式以單一 Python 檔案的形式提供,適合用於製作原型。對於實際訓練應用程式,您可能會將訓練應用程式安排在多個檔案中。可在預先建構的容器中使用的 Python 來源發行檔
將訓練應用程式封裝至一或多個 Python 來源發行版本,然後上傳至 Cloud Storage 值區。建立訓練工作時,Vertex AI 會將原始碼發布內容安裝至預建的容器映像檔。
自訂容器映像檔
建立您自己的 Docker 容器映像檔,其中預先安裝訓練應用程式和依附元件,然後上傳至 Artifact Registry。如果訓練應用程式是使用 Python 編寫,您可以使用一個 Google Cloud CLI 指令執行這些步驟。
設定訓練工作
Vertex AI 訓練工作會執行下列工作:
- 佈建一或多個 (分散式訓練) 虛擬機器 (VM) (單一節點訓練)。
- 在已佈建的 VM 上執行容器化訓練應用程式。
- 在訓練工作完成後刪除 VM。
Vertex AI 提供三種訓練工作,可用於執行訓練應用程式:
-
自訂工作 (
CustomJob
) 會執行訓練應用程式。如果您使用的是預先建構的容器映像檔,模型構件會輸出至指定的 Cloud Storage 值區。對於自訂容器映像檔,訓練應用程式也可以將模型構件輸出至其他位置。 -
超參數調整工作 (
HyperparameterTuningJob
) 會使用不同的超參數值執行訓練應用程式的多次試驗,直到產生成效最佳的超參數值模型成果為止。您可以指定要測試的超參數值範圍,以及要最佳化的指標。 -
訓練管線 (
CustomTrainingJob
) 會執行自訂工作或超參數調整工作,並視需要將模型構件匯出至 Vertex AI,以便建立模型資源。您可以指定 Vertex AI 代管資料集做為資料來源。
建立訓練工作時,請指定用於執行訓練應用程式的運算資源,並設定容器設定。
運算設定
指定訓練工作使用的運算資源。Vertex AI 支援單一節點訓練,也就是在單一 VM 上執行訓練工作,以及分散式訓練,也就是在多個 VM 上執行訓練工作。
您可以為訓練工作指定的運算資源如下:
VM 機器類型
不同的機器類型提供的 CPU、記憶體大小和頻寬各有不同。
圖形處理器 (GPU)
您可以將一或多個 GPU 新增至 A2 或 N1 類型的 VM。如果訓練應用程式設計為使用 GPU,新增 GPU 可大幅提升效能。
Tensor Processing Unit (TPU)
TPU 專門用於加速機器學習工作負載。使用 TPU VM 進行訓練時,您只能指定一個工作站集區。該工作者資源池只能有一個複本。
開機磁碟
您可以使用 SSD (預設) 或 HDD 做為開機磁碟。如果訓練應用程式會讀取及寫入磁碟,使用 SSD 可提升效能。您也可以根據訓練應用程式寫入磁碟的暫時性資料量,指定開機磁碟的大小。開機磁碟的大小可介於 100 GiB (預設) 和 64,000 GiB 之間。工作站集區中的所有 VM 都必須使用相同類型和大小的開機磁碟。
容器設定
您需要進行的容器設定取決於您使用的是預先建構或自訂容器映像檔。
預先建構的容器設定:
- 指定要使用的預先建構容器映像檔的 URI。
- 如果訓練應用程式是以 Python 原始碼發行版本封裝,請指定套件所在的 Cloud Storage URI。
- 指定訓練應用程式的進入點模組。
- 選用:指定要傳遞至訓練應用程式進入點模組的指令列引數清單。
自訂容器設定:
- 指定自訂容器映像檔的 URI,可以是 Artifact Registry 或 Docker Hub 中的 URI。
- 選用:覆寫容器映像檔中的
ENTRYPOINT
或CMD
指示。
建立訓練工作
準備好資料和訓練應用程式後,請建立下列任一訓練工作來執行訓練應用程式:
如要建立訓練工作,您可以使用 Google Cloud 控制台、Google Cloud CLI、Python 適用的 Vertex AI SDK 或 Vertex AI API。
(選用) 將模型構件匯入 Vertex AI
訓練應用程式可能會將一或多個模型構件輸出至指定位置,通常是 Cloud Storage 值區。您必須先將模型構件匯入 Vertex AI Model Registry,才能在 Vertex AI 中從模型構件取得推論。
如同訓練用的容器映像檔,Vertex AI 也提供預建或自訂容器映像檔,供您用於推論。如果 ML 架構和架構版本提供用於推論的預先建構容器映像檔,建議您使用預先建構的容器映像檔。