Vertex AI 自訂訓練總覽

Vertex AI 提供代管訓練服務,可協助您大規模訓練模型。您可以使用 Vertex AI,在Google Cloud 基礎架構上,根據任何機器學習 (ML) 架構執行訓練應用程式。對於下列熱門的機器學習架構,Vertex AI 也整合了支援功能,可簡化模型訓練和服務的準備程序:

本頁說明在 Vertex AI 上進行自訂訓練的優點、相關工作流程,以及各種可用的訓練選項。

Vertex AI 可大規模運作訓練作業

模型訓練作業化面臨多項挑戰。這些挑戰包括訓練模型所需的時間和成本、管理運算基礎架構所需的技能深度,以及提供企業級安全性的需求。Vertex AI 不僅能解決這些難題,還提供許多其他優點。

全代管運算基礎架構

代管基礎架構

在 Vertex AI 上訓練模型是全代管服務,不需要管理實體基礎架構。您可以訓練機器學習模型,無須佈建或管理伺服器。您只需要為耗用的運算資源付費。Vertex AI 也會處理工作記錄、排隊和監控作業。

高效能

高效能

Vertex AI 訓練作業專為機器學習模型訓練而設計,因此效能比直接在 Google Kubernetes Engine (GKE) 叢集上執行訓練應用程式更快。您也可以使用 Cloud Profiler 找出訓練工作的效能瓶頸並進行偵錯。

分散式訓練

分散式訓練

縮減伺服器 是 Vertex AI 中的全縮減演算法,可提高輸送量,並縮短 NVIDIA 圖形處理器 (GPU) 多節點分散式訓練的延遲時間。這項最佳化功能有助於縮短完成大型訓練作業的時間,並降低成本。

超參數最佳化

超參數調整

超參數調整工作會使用不同的超參數值,對訓練應用程式執行多項試驗。您指定要測試的值範圍,Vertex AI 會在該範圍內找出模型的最佳值。

企業安全性

企業安全性

Vertex AI 提供下列企業安全功能:

機器學習運作 (MLOps) 整合

MLOps

Vertex AI 提供一套整合式機器學習運作工具和功能,可用於下列用途:

  • 自動化調度管理端對端機器學習工作流程。
  • 執行特徵工程。
  • 執行實驗。
  • 管理及疊代模型。
  • 追蹤機器學習中繼資料。
  • 監控及評估模型品質。

自訂訓練工作流程

下圖顯示 Vertex AI 自訂訓練工作流程的概要總覽。接下來的章節將詳細說明每個步驟。

自訂訓練工作流程

載入及準備訓練資料

為獲得最佳效能和支援,請使用下列 Google Cloud 其中一項服務做為資料來源:

如要比較這些服務,請參閱「資料準備總覽」。

使用訓練 pipeline 訓練模型時,您也可以指定 Vertex AI 代管資料集做為資料來源。使用相同資料集訓練自訂模型和 AutoML 模型,即可比較這兩個模型的效能。

準備訓練應用程式

如要準備訓練應用程式以在 Vertex AI 上使用,請執行下列操作:

  • 為 Vertex AI 導入訓練程式碼最佳做法。
  • 決定要使用的容器映像檔類型。
  • 根據所選容器映像檔類型,將訓練應用程式封裝為支援的格式。

實作訓練程式碼最佳做法

訓練應用程式應實作 Vertex AI 訓練程式碼最佳做法。這些最佳做法與訓練應用程式的下列功能有關:

  • 存取 Google Cloud 服務。
  • 載入輸入資料。
  • 啟用自動記錄功能,追蹤實驗。
  • 匯出模型構件。
  • 使用 Vertex AI 的環境變數。
  • 確保 VM 重新啟動後仍可正常運作。

選取容器類型

Vertex AI 會在 Docker 容器映像檔中執行訓練應用程式。Docker 容器映像檔是獨立的軟體套件,內含程式碼和所有依附元件,幾乎可在任何運算環境中執行。您可以指定要使用的預建容器映像檔 URI,也可以建立並上傳已預先安裝訓練應用程式和依附元件的自訂容器映像檔

下表列出預先建構和自訂容器映像檔之間的差異:

規格 預先建構的容器映像檔 自訂容器映像檔
機器學習架構 每個容器映像檔都專屬於某個 ML 架構。 使用任何機器學習架構,或不使用任何架構。
機器學習架構版本 每個容器映像檔都適用於特定 ML 架構版本。 使用任何 ML 架構版本,包括次要版本和每夜建構版本。
應用程式依附元件 系統會預先安裝機器學習架構的常見依附元件。您可以在訓練應用程式中指定要安裝的其他依附元件。 預先安裝訓練應用程式所需的依附元件。
應用程式交付格式
  • Python 來源發布。
  • 單一 Python 檔案。
在自訂容器映像檔中預先安裝訓練應用程式。
設定難易度 Low
推薦學習對象 以機器學習架構和架構版本為基礎的 Python 訓練應用程式,且有預先建構的容器映像檔可用。
  • 提供更多自訂和控制選項。
  • 非 Python 訓練應用程式。
  • 私有或自訂依附元件。
  • 訓練應用程式使用的機器學習架構或架構版本沒有可用的預先建構容器映像檔。

封裝訓練應用程式

決定要使用的容器映像檔類型後,請根據容器映像檔類型,將訓練應用程式封裝成下列其中一種格式:

  • 可在預先建構的容器中使用的單一 Python 檔案

    將訓練應用程式寫入單一 Python 檔案,並使用 Python 適用的 Vertex AI SDK 建立 CustomJobCustomTrainingJob 類別。Python 檔案會封裝到 Python 來源發行套件中,並安裝到預先建構的容器映像檔。以單一 Python 檔案的形式提供訓練應用程式,適合用於原型設計。對於實際工作環境的訓練應用程式,您可能會將訓練應用程式安排到多個檔案中。

  • 用於預先建構容器的 Python 來源發行套件

    將訓練應用程式封裝成一或多個 Python 來源發布套件,然後上傳至 Cloud Storage 值區。建立訓練工作時,Vertex AI 會將來源發布內容安裝至預建的容器映像檔。

  • 自訂容器映像檔

    建立自己的 Docker 容器映像檔,預先安裝訓練應用程式和依附元件,然後上傳至 Artifact Registry。如果訓練應用程式是以 Python 編寫,您可以使用一個 Google Cloud CLI 指令執行這些步驟

設定訓練工作

Vertex AI 訓練工作會執行下列工作:

  • 佈建一或多個虛擬機器 (VM) (單一節點訓練) 或多個虛擬機器 (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。
    • 選用:覆寫容器映像檔中的 ENTRYPOINTCMD 指令。

建立訓練工作

準備好資料和訓練應用程式後,請建立下列其中一項訓練工作,執行訓練應用程式:

如要建立訓練工作,可以使用 Google Cloud 控制台、Google Cloud CLI、Python 適用的 Vertex AI SDK 或 Vertex AI API。

(選用) 將模型構件匯入 Vertex AI

訓練應用程式可能會將一或多個模型構件輸出至指定位置,通常是 Cloud Storage bucket。如要從模型構件在 Vertex AI 中取得推論結果,請先將模型構件匯入 Vertex AI Model Registry

與訓練用的容器映像檔類似,Vertex AI 可讓您選擇使用預建自訂容器映像檔進行推論。如果您的機器學習架構和架構版本有可用的預建推論容器映像檔,建議使用預建容器映像檔。

後續步驟