如何对 Amazon SageMaker 上的 InternalServerError 响应进行故障排除?

2 分钟阅读
0

当我运行 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 中查看实例的 CPUUtilizationMemoryUtilizationDiskUtilization 指标,以了解资源利用率。

要查看实例指标,请执行以下步骤:

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 连接到外部资源

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