當我執行 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 筆記本連接到外部資源