自訂容器是您建立用於執行訓練應用程式的 Docker 映像檔。在自訂容器中執行機器學習 (ML) 訓練工作,即可使用 Vertex AI 不支援的機器學習架構、非機器學習依附元件、程式庫和二進位檔。
以容器進行訓練的運作方式
您用自選的 ML 框架來實作的訓練應用程式就是整個訓練程序的核心。
使用您選擇的 ML 框架來建立訓練模型的應用程式。
決定是否要使用自訂容器。也許有已支援依附元件的預先建構容器可供使用;否則,您必須為訓練工作建構自訂容器。在自訂容器中,將訓練應用程式及其所有依附元件預先安裝至用於執行訓練工作的映像檔。
將訓練和驗證資料儲存在 Vertex AI 可存取的來源中。為簡化驗證程序並減少延遲,請將資料儲存在 Cloud Storage、Bigtable 或其他Google Cloud 儲存服務中,且必須與您用於 Vertex AI 的 Google Cloud 專案和區域相同。進一步瞭解 Vertex AI 載入資料的方式。
應用程式準備好可以執行時,您必須建構 Docker 映像檔並推送至 Artifact Registry 或 Docker Hub,確保 Vertex AI 能存取您的登錄檔。
Vertex AI 會為您的工作設定資源。這項服務會根據您的工作設定分配一或多個虛擬機器 (稱為「訓練執行個體」)。而您要設定訓練執行個體,請使用您在提交自訂訓練工作時指定做為
WorkerPoolSpec
物件一部分的自訂容器來進行設定。Vertex AI 會透過您在建立訓練工作時指定的任何指令列引數來執行 Docker 映像檔。
訓練工作成功完成或發生無法復原的錯誤時,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 範例。
後續步驟
- 進一步瞭解如何為訓練工作建立自訂容器。