自訂容器總覽

自訂容器是您建立的 Docker 映像檔,用於執行訓練應用程式。在「自訂容器」中執行機器學習 (ML) 訓練工作,即可使用 Vertex AI 不支援的 ML 架構、非 ML 依附元件、程式庫和二進位檔。

以容器進行訓練的運作方式

您用自選的 ML 框架來實作的訓練應用程式就是整個訓練程序的核心。

  1. 使用您選擇的 ML 框架來建立訓練模型的應用程式。

  2. 決定是否要使用自訂容器。也許有已支援依附元件的預先建構容器可供使用;如果沒有,您就必須為訓練工作建構自訂容器。在自訂容器中,將訓練應用程式及其所有依附元件都預先安裝到用來執行訓練工作的映像檔中。

  3. 將訓練和驗證資料儲存在 Vertex AI 可存取的來源中。如要簡化驗證程序並縮短延遲時間,請將資料儲存在與 Vertex AIGoogle Cloud 專案和區域 Google Cloud 相同的 Cloud Storage、Bigtable 或其他儲存服務中。進一步瞭解 Vertex AI 載入資料的方式

  4. 應用程式準備好可以執行時,您必須建構 Docker 映像檔並推送至 Artifact Registry 或 Docker Hub,確保 Vertex AI 能存取您的登錄檔

  5. 如要提交自訂訓練工作,請建立自訂工作建立自訂訓練管道

  6. Vertex AI 會為您的工作設定資源。這項服務會根據您的工作設定分配一或多個虛擬機器 (稱為「訓練執行個體」)。如要設定訓練執行個體,請使用您在提交自訂訓練工作時,指定做為 WorkerPoolSpec 物件一部分的自訂容器。

  7. Vertex AI 會透過您在建立訓練工作時指定的任何指令列引數來執行 Docker 映像檔。

  8. 訓練工作成功完成或發生無法復原的錯誤時,Vertex AI 會停止所有工作程序並清除資源。

自訂容器的優點

自訂容器可讓您指定和預先安裝所有應用程式需要的依附元件。

  • 啟動時間更短。如果您使用已預先安裝依附元件的自訂容器,訓練應用程式啟動時就不用再花時間安裝。
  • 使用自己選擇的機器學習架構。如果找不到內含所需機器學習架構的 Vertex AI 預先建構容器,您可以建構內含所選架構的自訂容器,並在 Vertex AI 上使用自訂容器執行工作。舉例來說,您可以使用客戶容器,透過 PyTorch 進行訓練。
  • 分散式訓練的擴充支援。透過自訂容器,您可以使用任何 ML 框架來進行分散式訓練。
  • 使用最新版本。您還可以使用最新版本或次要版本的 ML 框架。舉例來說,您可以建構自訂容器來使用 tf-nightly 進行訓練。

使用自訂容器進行超參數調整

如要在 Vertex AI 上進行超參數調整,請指定目標指標,以及是否要將每個指標最小化或最大化。舉例來說,您可以最大化模型的準確率,或選擇最小化模型的損失率。您也可以列出要調整的超參數,以及每個超參數可接受的值範圍。Vertex AI 會對您的訓練應用程式進行多次「試驗」,並在每次試驗後追蹤及調整超參數。超參數調整工作完成後,Vertex AI 會報告最有效率的超參數設定值,以及每次試驗的摘要資訊。

如要透過自訂容器進行超參數調整,您必須先進行以下設定:

  • 在您的 Dockerfile 中:安裝 cloudml-hypertune
  • 在您的訓練程式碼中:
    • 使用 cloudml-hypertune 回報每次測試的結果,方法是呼叫測試作業的輔助函式 report_hyperparameter_tuning_metric
    • 為每個超參數新增指令列引數,然後使用引數剖析器 (例如 argparse) 來處理引數剖析。

瞭解如何設定使用自訂容器的超參數調整工作,或進一步瞭解如何在 Vertex AI 上進行超參數調整

自訂容器中的 GPU

如要透過 GPU 進行訓練,您的自訂容器必須符合幾項特殊要求。您需要另外建構一個不同於透過 CPU 訓練時所使用的 Docker 映像檔。

  • 在 Docker 映像檔中預先安裝 CUDA 工具包和 cuDNN。如要建構支援 GPU 的自訂容器,建議使用 nvidia/cuda 映像檔做為自訂容器的基本映像檔。nvidia/cuda 容器映像檔已預先安裝版本相符的 CUDA 工具包和 cuDNN,有助您正確設定相關環境變數。
  • 在 Docker 映像檔中安裝訓練應用程式,以及必要的 ML 框架和其他依附元件。

請參閱透過 GPU 進行訓練的 Dockerfile 範例

後續步驟