如要自訂 Vertex AI 從自訂訓練模型提供線上推論的方式,您可以在建立 Model
資源時,指定自訂容器,而非預建容器。使用自訂容器時,Vertex AI 會在每個推論節點上執行您選擇的 Docker 容器。
您可能基於下列原因而使用自訂容器:
- 使用無法以預先建構的容器提供的架構訓練機器學習模型,以便提供推論
- 預先處理推論要求或對模型產生的推論進行後處理
- 執行以您選擇的程式設計語言編寫的推論伺服器
- 安裝要用於自訂推論的依附元件
本指南說明如何建立使用自訂容器的模型。但不會提供設計及建立 Docker 容器映像檔的詳細操作說明。
準備容器映像檔
如要建立使用自訂容器的 Model
,您必須提供 Docker 容器映像檔做為該容器的基礎。此容器映像檔必須符合「自訂容器需求」一節所述的規定。
如果您打算使用信任的第三方建立的現有容器映像檔,可以略過下列一或兩個部分。
建立容器映像檔
設計及建構符合容器映像檔需求的 Docker 容器映像檔。
如要瞭解設計及建構 Docker 容器映像檔的基本概念,請參閱 Docker 說明文件的快速入門指南
將容器映像檔推送至 Artifact Registry
將容器映像檔推送至 Artifact Registry 存放區。
瞭解如何將容器映像檔推送至 Artifact Registry。
建立 Model
如要建立使用自訂容器的 Model
,請執行下列任一操作:
以下各節說明如何在使用上述任一方式建立 Model
時,設定與自訂容器相關的 API 欄位。
容器相關 API 欄位
建立 Model
時,請務必使用自訂容器詳細資料設定 containerSpec
欄位,而非使用預先建構的容器。
您必須在 Model.containerSpec
欄位中指定 ModelContainerSpec
訊息。您可以在該訊息中指定下列子欄位:
imageUri
(必要元素)容器映像檔的 Artifact Registry URI。
如果您使用的是
gcloud ai models upload
指令,可以使用--container-image-uri
標記指定這個欄位。command
(選填)可執行檔和引數的陣列,用於覆寫容器的
ENTRYPOINT
指令。如要進一步瞭解如何設定這個欄位的格式,以及該欄位與args
欄位的互動方式,請參閱ModelContainerSpec
API 參考資料。如果您使用的是
gcloud ai models upload
指令,可以使用--container-command
標記指定這個欄位。args
(選填)可覆寫容器
CMD
的執行檔和引數陣列。如要進一步瞭解如何設定這個欄位的格式,以及與command
欄位的互動方式,請參閱ModelContainerSpec
API 參考資料。如果您使用的是
gcloud ai models upload
指令,可以使用--container-args
標記指定這個欄位。ports
(選填)通訊埠陣列;Vertex AI 會將有效性檢查、健康狀態檢查和推論要求傳送至列出的第 1 個通訊埠,或預設的
8080
。指定其他連接埠不會產生任何影響。如果您使用的是
gcloud ai models upload
指令,可以使用--container-ports
標記指定這個欄位。env
(選填)容器的
ENTRYPOINT
指令以及command
和args
欄位可參照的環境變數陣列。如要進一步瞭解其他欄位如何參照這些環境變數,請參閱ModelContainerSpec
API 參考資料。如果您使用的是
gcloud ai models upload
指令,可以使用--container-env-vars
標記指定這個欄位。healthRoute
(選填)容器 HTTP 伺服器的路徑,您希望 Vertex AI 傳送健康狀態檢查的路徑。
如果您未指定這個欄位,當您將
Model
部署為DeployedModel
至Endpoint
資源時,系統會將其預設為/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL
,其中 ENDPOINT 會替換為Endpoint
的name
欄位 (接在endpoints/
之後),而 DEPLOYED_MODEL 會替換為DeployedModel
的id
欄位。如果您使用的是
gcloud ai models upload
指令,可以使用--container-health-route
標記指定這個欄位。predictRoute
(選填)容器 HTTP 伺服器的路徑,您希望 Vertex AI 將推論要求轉送至此。
如果您未指定這個欄位,當您將
Model
部署為DeployedModel
至Endpoint
資源時,系統會將其預設為/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL:predict
,其中 ENDPOINT 會替換為Endpoint
的name
欄位 (接在endpoints/
之後),而 DEPLOYED_MODEL 會替換為DeployedModel
的id
欄位。如果您使用的是
gcloud ai models upload
指令,可以使用--container-predict-route
標記指定這個欄位。sharedMemorySizeMb
(選填)在模型的共用記憶體磁區中保留的 VM 記憶體量,以 MB 為單位。
共用記憶體是一種處理序間通訊 (IPC) 機制,可讓多個處理序存取及操作共同的記憶體區塊。所需的共用記憶體數量 (如有) 是容器和模型的實作細節。如需指引,請參閱模型伺服器的說明文件。
如果您使用的是
gcloud ai models upload
指令,可以使用--container-shared-memory-size-mb
標記指定這個欄位。startupProbe
(選填)用於檢查容器應用程式是否已啟動的探測作業規格。
如果您使用的是
gcloud ai models upload
指令,可以使用--container-startup-probe-exec, --container-startup-probe-period-seconds, --container-startup-probe-timeout-seconds
標記指定這個欄位。healthProbe
(選填)用於檢查容器是否已準備好接受流量的探測器規格。
如果您使用的是
gcloud ai models upload
指令,可以使用--container-health-probe-exec, --container-health-probe-period-seconds, --container-health-probe-timeout-seconds
標記指定這個欄位。
除了您在 Model.containerSpec.env
欄位中設定的變數之外,Vertex AI 也會根據您的設定設定其他幾個變數。進一步瞭解如何在這些欄位和容器的 ENTRYPOINT
指令中使用這些環境變數。
模型匯入範例
以下範例說明匯入模型時,如何指定容器相關的 API 欄位。
gcloud
以下範例使用 gcloud ai models upload
指令:
gcloud ai models upload \
--region=LOCATION \
--display-name=MODEL_NAME \
--container-image-uri=IMAGE_URI \
--container-command=COMMAND \
--container-args=ARGS \
--container-ports=PORTS \
--container-env-vars=ENV \
--container-health-route=HEALTH_ROUTE \
--container-predict-route=PREDICT_ROUTE \
--container-shared-memory-size-mb=SHARED_MEMORY_SIZE \
--container-startup-probe-exec=STARTUP_PROBE_EXEC \
--container-startup-probe-period-seconds=STARTUP_PROBE_PERIOD \
--container-startup-probe-timeout-seconds=STARTUP_PROBE_TIMEOUT \
--container-health-probe-exec=HEALTH_PROBE_EXEC \
--container-health-probe-period-seconds=HEALTH_PROBE_PERIOD \
--container-health-probe-timeout-seconds=HEALTH_PROBE_TIMEOUT \
--artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY
--container-image-uri
旗標為必要項目,所有以 --container-
開頭的其他旗標皆為選用項目。如要瞭解這些欄位的值,請參閱本指南的前一個章節。
Java
在試用這個範例之前,請先按照 Vertex AI 快速入門:使用用戶端程式庫中的操作說明設定 Java。詳情請參閱 Vertex AI Java API 參考說明文件。
如要向 Vertex AI 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
在試用這個範例之前,請先按照 Vertex AI 快速入門:使用用戶端程式庫中的操作說明設定 Node.js。詳情請參閱 Vertex AI Node.js API 參考說明文件。
如要向 Vertex AI 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python 適用的 Vertex AI SDK
如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 Vertex AI SDK for Python API 參考說明文件。
如需更多背景資訊,請參閱模型匯入指南。
傳送推論要求
如要將線上推論要求傳送至 Model
,請按照「從自訂訓練模型取得推論」中的操作說明進行操作:無論是否使用自訂容器,這個程序都會以相同方式運作。
請參閱預測要求和回應的預測容器相關規定。
後續步驟
- 如要瞭解設計自訂容器時應考量的所有事項,以便與 Vertex AI 搭配使用,請參閱「自訂容器需求」。