自訂推論處理常式

自訂推論程序可讓您使用預先處理和後置處理程式碼建構自訂容器,不必處理設定 HTTP 伺服器或從頭建構容器的細節。您可以使用預先處理功能,將輸入內容正規化及轉換,或呼叫外部服務來取得額外資料,並使用後置處理功能,設定模型推論格式或執行商業邏輯。

下圖說明有無自訂推論程序的使用者工作流程。

主要差異如下:

  • 您不需要編寫模型伺服器或 Dockerfile。模型伺服器是託管模型的 HTTP 伺服器,由系統提供。

  • 您可以在本機部署及偵錯模型,加快開發期間的疊代週期。

建構及部署自訂容器

本節說明如何使用 CPR 建構具備預先處理和後置處理邏輯的自訂容器,並部署至本機和線上端點。

設定

環境中必須安裝 Agent Platform SDK for Python 和 Docker。

編寫自訂 Predictor 推論介面

實作 Predictor 介面。

例如,請參閱 Sklearn 的 Predictor 實作。

撰寫自訂Handler (選用)

自訂處理常式可存取原始要求物件,因此在極少數情況下,如果您需要自訂網路伺服器相關邏輯,例如支援其他要求和回應標頭,或反序列化非 JSON 格式的推論要求,這項功能就非常實用。

以下是實作預測器和處理器的筆記本範例。

雖然這並非必要,但為了提升程式碼組織和重複使用性,建議您在處理常式中實作網路伺服器邏輯,並在預測器中實作機器學習邏輯,如預設處理常式所示。

建構自訂容器

如需在映像檔中安裝任何套件,請將自訂程式碼和額外的 requirements.txt 檔案放入目錄。

使用 Agent Platform SDK for Python 建構自訂容器,步驟如下:

from google.cloud.aiplatform.prediction import LocalModel

# {import your predictor and handler}

local_model = LocalModel.build_cpr_model(
    {PATH_TO_THE_SOURCE_DIR},
    f"{REGION}-docker.pkg.dev/{PROJECT_ID}/{REPOSITORY}/{IMAGE}",
    predictor={PREDICTOR_CLASS},
    handler={HANDLER_CLASS},
    requirements_path={PATH_TO_REQUIREMENTS_TXT},
)

您可以檢查容器規格,取得映像檔 URI 和環境變數等實用資訊。

local_model.get_serving_container_spec()

在本機執行容器 (選用)

只有在您想在本機執行及測試容器時,才需要執行這個步驟,這有助於加快疊代速度。在以下範例中,您會部署至本機端點,並傳送推論要求 (要求主體格式)。

with local_model.deploy_to_local_endpoint(
    artifact_uri={GCS_PATH_TO_MODEL_ARTIFACTS},
    credential_path={PATH_TO_CREDENTIALS},
) as local_endpoint:
    health_check_response = local_endpoint.run_health_check()
    predict_response = local_endpoint.predict(
        request_file={PATH_TO_INPUT_FILE},
        headers={ANY_NEEDED_HEADERS},
    )

列印健康狀態檢查和推論回應。

print(health_check_response, health_check_response.content)
print(predict_response, predict_response.content)

列印所有容器記錄。

local_endpoint.print_container_logs(show_all=True)

上傳至 Gemini Enterprise Agent Platform Model Registry

模型需要存取模型構件 (訓練檔案),因此請務必將這些檔案上傳至 Cloud Storage。

將映像檔推送至 Artifact Registry。

local_model.push_image()

然後上傳至 Model Registry。

from google.cloud import aiplatform

model = aiplatform.Model.upload(
    local_model=local_model,
    display_name={MODEL_DISPLAY_NAME},
    artifact_uri={GCS_PATH_TO_MODEL_ARTIFACTS},
)

模型上傳至 Model Registry 後,可用於取得批次推論,或部署至 Agent Platform 端點,取得線上推論。

部署至 Agent Platform 端點

endpoint = model.deploy(machine_type="n1-standard-4")

模型部署後,您就可以取得線上推論。

Notebook 範例

這些範例展示了如何使用 Vertex AI Inference,以自訂預先處理和後處理方式部署模型。