如何對 Amazon SageMaker 的內部伺服器錯誤回應進行疑難排解?

2 分的閱讀內容
0

當我執行 Amazon SageMaker 處理、訓練或預測任務時,請求失敗並顯示 "HTTP Error 500: Internal Server Error" (HTTP 錯誤 500:內部伺服器錯誤) 或 "InternalServerError: We encountered an internal error.Please try again.” (內部伺服器錯誤:我們遇到了內部錯誤。請再試一次。) 的回應。

解決方法

如果您對端點的 SageMaker 任務或推論請求失敗,並顯示 "InternalServerError",請重試該請求。重試請求可消除暫時性問題所導致的失敗。

如果仍然失敗,請按照以下步驟在 Amazon CloudWatch 上檢閱任務或端點的日誌。

檢閱 CloudWatch 日誌

檢查與 SageMaker 資源相關聯的 CloudWatch 日誌,以判斷根本原因:

1.    開啟 SageMaker 主控台

2.    在處理訓練推論下選擇相關資源。

3.    選擇端點、處理或訓練任務的名稱。

4.    在監控區段中,選擇View logs (檢視日誌) 以開啟 CloudWatch 主控台。

5.    在 CloudWatch 主控台中,選擇任務或端點的日誌串流。

6.    如果沒有日誌串流,或日誌串流空白,請確認資源的執行角色具有包含下列權限的政策:

{
 "Effect": "Allow",
 "Action": [
 "cloudwatch:PutMetricData",
 "logs:CreateLogStream",
 "logs:PutLogEvents",
 "logs:CreateLogGroup",
 "logs:DescribeLogStreams",
 "ecr:GetAuthorizationToken"
 ],
 "Resource": "*"
}

7.    檢閱日誌以尋找錯誤訊息。

將偵錯程式碼新增至您的推論指令碼 (選用)

若要簡化日誌檢閱程序,您可以將偵錯程式碼新增至推論指令碼。以下是用於偵錯端點的推論程式碼範例。您可以使用此程式碼來確認您是否正確呼叫了 predict() 函數。程式碼也會列印資料變數,顯示傳遞至端點的實際值。在此範例中,MYDEBUG 是要在 CloudWatch 日誌串流中搜尋的關鍵字。

def predict():
    data = None
    print("MYDEBUG: Predict function called")
    # Convert from CSV to pandas
    if flask.request.content_type == 'text/csv':
        data = flask.request.data.decode('utf-8')
        s = StringIO.StringIO(data)
        data = pd.read_csv(s, header=None)
        ## To print the actual data set
        print( "MYDEBUG: Printing data")
        print( data.head(10) )

對 "InternalServerError" 的其他常見原因進行疑難排解

資源使用率

如果執行個體上的任務容器耗用了執行個體的資源,SageMaker 任務可能會失敗,並顯示 "InternalServerError"。您可以檢閱 CloudWatch 中執行個體的 CPU 使用率記憶體使用率磁碟使用率指標,以檢視資源的使用率。

若要檢閱執行個體指標,請依照下列步驟執行:

1.    開啟 SageMaker 主控台

2.    在處理/訓練任務區段中,選擇 Processing/Training (處理/訓練)。

3.    選擇任務名稱。

4.    在監控區段中,選擇 View instance metrics (檢視執行個體指標) 以開啟 CloudWatch 主控台。如果任務使用大量資源,請切換到較大的執行個體類型,或將較大的儲存磁碟區附加到現有的執行個體。

在 SageMaker 執行角色中缺少 EC2 許可

當未正確設定 Amazon Elastic Compute Cloud (Amazon EC2) 許可時,Amazon SageMaker 執行角色可能會顯示 "InternalServerError"。在 SageMaker 任務中指定 vPCConfig 物件時,請確認該任務的 SageMaker 執行角色具有包含下列權限的政策:

{
 "Effect": "Allow",
 "Action": [
 "ec2:CreateNetworkInterface",
 "ec2:CreateNetworkInterfacePermission",
 "ec2:DeleteNetworkInterface",
 "ec2:DeleteNetworkInterfacePermission",
 "ec2:DescribeNetworkInterfaces",
 "ec2:DescribeVpcs",
 "ec2:DescribeDhcpOptions",
 "ec2:DescribeSubnets",
 "ec2:DescribeSecurityGroups"
 ]
}

如需詳細資訊,請參閱 SageMaker 角色


相關資訊

日誌記錄和監控

CreateProcessingJob API: 執行角色許可

SageMaker 任務和端點指標

將 VPC 中的 SageMaker Studio 筆記本連接到外部資源

AWS 官方
AWS 官方已更新 2 年前