多模型端點的自訂容器合約 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

多模型端點的自訂容器合約

若要處理多個模型,您的容器必須支援一組 APIs ,讓 Amazon 能夠視需要與容器 SageMaker 通訊,以便載入、列出、取得和卸載模型。在新的 集合中使用 model_name APIs作為金鑰輸入參數。客戶容器應使用 model_name 做為對應金鑰來追蹤已載入的模型。此外, model_name 是不透明的識別符,不一定是傳遞至 InvokeEndpointTargetModel 參數值API。InvokeEndpoint 請求中的原始TargetModel值會傳遞至 中的容器,APIs做為可用於記錄的X-Amzn-SageMaker-Target-Model標頭。

注意

GPU 支援執行個體的多模型端點目前僅支援 SageMaker的 NVIDIA Triton 推論伺服器容器 。此容器已經實作如下定義的合同。客戶可以直接將此容器與其多模型GPU端點搭配使用,而無需任何其他工作。

您可以在容器APIs上為CPU支援的多模型端點設定下列項目。

載入模型 API

指示容器將主體 url 欄位中現有的特定模型載入到客戶容器記憶體中,並使用獲派的 model_name 進行追蹤。載入模型後,容器應該已準備就緒,可使用此 model_name 為推斷請求提供服務。

POST /models HTTP/1.1 Content-Type: application/json Accept: application/json { "model_name" : "{model_name}", "url" : "/opt/ml/models/{model_name}/model", }
注意

如果 model_name 已載入,則API應該會傳回 409。每當模型因記憶體不足或任何其他資源而無法載入時,這API應該會將 507 HTTP 狀態碼傳回 SageMaker,然後啟動卸載未使用的模型以回收。

清單模型 API

傳回已載入到客戶容器的記憶體的模型清單。

GET /models HTTP/1.1 Accept: application/json Response = { "models": [ { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, .... ] }

API 這也支援分頁。

GET /models HTTP/1.1 Accept: application/json Response = { "models": [ { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, .... ] }

SageMaker 一開始可以呼叫 List Models,API而不需要提供 的值next_page_token。如果回應中傳回了 nextPageToken 欄位,則會提供該欄位做為後續 List Models 呼叫中 next_page_token 的值。若未傳回 nextPageToken,則表示沒有其他要傳回的模型。

取得模型 API

這是model_name實體API上的簡單讀取。

GET /models/{model_name} HTTP/1.1 Accept: application/json { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }
注意

如果 model_name 未載入,API則應傳回 404。

卸載模型 API

指示 SageMaker 平台指示客戶容器從記憶體卸載模型。這會根據平台在開始載入新模型程序時的判斷,發起移出候選模型。佈建為 的資源model_name應在API傳回回應時由容器回收。

DELETE /models/{model_name}
注意

如果 model_name 未載入,API則應傳回 404。

叫用模型 API

從提供的特定 model_name 提出預測請求。 SageMaker 執行期InvokeEndpoint請求支援X-Amzn-SageMaker-Target-Model作為新標頭,該標頭採用指定用於調用之模型的相對路徑。 SageMaker 系統會將CreateModelAPI通話中提供的字首與模型的相對路徑結合,以建構模型的絕對路徑。

POST /models/{model_name}/invoke HTTP/1.1 Content-Type: ContentType Accept: Accept X-Amzn-SageMaker-Custom-Attributes: CustomAttributes X-Amzn-SageMaker-Target-Model: [relativePath]/{artifactName}.tar.gz
注意

如果 model_name 未載入,API則應傳回 404。

此外,在GPU執行個體上,如果由於記憶體或其他資源不足而InvokeEndpoint失敗,這API應該會將 507 HTTP 狀態碼傳回 SageMaker,然後啟動卸載未使用的模型以回收。