簡體   English   中英

SageMaker Endpoint:調用 InvokeEndpoint 操作時 ServiceUnavailable 503

[英]SageMaker Endpoint: ServiceUnavailable 503 when calling the InvokeEndpoint operation

我已經部署了一個 model 作為 SageMaker 端點,它在一段時間內運行良好,但現在通過 boto3 調用 model 時

import boto3

client = boto3.client('sagemaker-runtime')

response = client.invoke_endpoint(
        EndpointName="my-sagemaker-endpoint",
        ContentType="text/csv",
        Body=payload,
)

我收到以下錯誤

ServiceUnavailable: An error occurred (ServiceUnavailable) when calling the InvokeEndpoint operation (reached max retries: 4): A transient exception occurred while retrieving variant instances. Please try again later.

SageMaker 文檔中研究此錯誤,它指出以下內容

由於服務器的臨時故障,請求失敗。

我還檢查了 CW 中的實例指標,沒有任何異常。

我不確定為什么會發生此錯誤,任何建議都會有所幫助。

TL; DR 錯誤源於實例無法從 s3 檢索 SageMaker Model 工件。

解釋

SageMaker 端點實施/ping路由,檢查 model 工件是否能夠在實例中加載。 首先從 s3 檢索 model 工件,然后將其加載到實例中。 如果 model 在 s3 上不可用,它會顯示以下錯誤(下圖) 在此處輸入圖像描述

由於 model 工件由於被意外刪除而無法從 s3 檢索,因此無法加載它,從而在調用/ping路由檢查端點是否健康時引發錯誤No such file or directory (見下圖)

在此處輸入圖像描述

這反過來使負載均衡器假設實例有問題,阻止您訪問它,因此當您嘗試調用端點時,您會收到503: Service Unavailable Error

在此處輸入圖像描述

解決方案

我只是通過重新部署到一個新端點來解決這個問題,但這次考慮了以下幾點:

  • 至少num_instances=2以保證每個實例都在不同的 AZ,LB 至少與一個健康的實例通信。
  • 確保只有特定角色對 s3 model 工件路由models/model-name/version具有s3:PutObject權限

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM