当我运行 Amazon SageMaker Processing、训练或预测任务时,请求失败并显示响应“HTTP Error 500: Internal Server Error”(HTTP 错误 500:内部服务器错误)或“InternalServerError: We encountered an internal error.Please try again”(InternalServerError:我们遇到了一个内部错误。请重试)。
解决方案
如果您的 SageMaker 任务或对端点的推理请求失败并显示“InternalServerError”,请重试该请求。重试请求可解决由暂时性问题导致的失败。
如果仍然出现失败,请按照以下步骤在 Amazon CloudWatch 上查看任务或端点的日志。
查看 CloudWatch 日志
检查与 SageMaker 资源关联的 CloudWatch 日志以确定根本原因:
1. 打开 SageMaker console(SageMaker 控制台)。
2. 在 Processing(处理)、Training(训练)或 Inference(推理)下,选择相关资源。
3. 选择端点、处理或训练任务的名称。
4. 在 Monitor(监视器)部分中,选择 View logs(查看日志)以打开 CloudWatch 控制台。
5. 在 CloudWatch 控制台中,选择任务或端点的日志流。
6. 如果没有日志流,或者日志流为空,请确认资源的执行角色具有包含以下权限的策略:
{
"Effect": "Allow",
"Action": [
"cloudwatch:PutMetricData",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:CreateLogGroup",
"logs:DescribeLogStreams",
"ecr:GetAuthorizationToken"
],
"Resource": "*"
}
7. 查看日志找到错误消息。
向推理脚本添加调试代码(可选)
为了简化日志查看过程,您可以向推理脚本添加调试代码。下面是用于调试端点的推理代码示例。您可以使用此代码来确认您正确地调用了 predict() 函数。该代码还会打印向您显示传递到端点的实际值的 data 变量。在此示例中,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 中查看实例的 CPUUtilization、MemoryUtilization 和 DiskUtilization 指标,以了解资源利用率。
要查看实例指标,请执行以下步骤:
1. 打开 SageMaker console(SageMaker 控制台)。
2. 在 Processing/Training Jobs(处理/训练任务)部分中,选择 Processing/Training(处理/训练)。
3. 选择任务名称。
4. 在 Monitoring(监控)部分中,选择 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 Notebooks 连接到外部资源