Amazon SageMaker에서 InternalServerError 응답 문제를 해결하려면 어떻게 해야 하나요?

3분 분량
0

Amazon SageMaker 처리, 교육 또는 예측 작업을 실행할 때 요청이 실패하고 다음과 같은 응답과 함께 요청이 실패합니다. 'HTTP Error 500: Internal Server Error(HTTP Error 500: 내부 서버 오류)' 또는 'InternalServerError: We encountered an internal error Please try again.(내부 서버 오류: 내부 오류가 발생했습니다. 다시 시도하세요)'

해결 방법

엔드포인트에 대한 SageMaker 작업 또는 추론 요청이 'InternalServerError'로 인해 실패한 경우 요청을 재시도합니다. 요청을 재시도하면 일시적인 문제로 인한 실패를 해결할 수 있습니다.

여전히 오류가 발생하면 다음 단계에 따라 Amazon CloudWatch에서 작업 또는 엔드포인트의 로그를 검토하세요.

CloudWatch logs 검토

SageMaker 리소스와 연결된 CloudWatch 로그를 확인하여 근본 원인을 파악하세요.

1.    SageMaker 콘솔을엽니다.

2.    처리(Processing), 교육(Training) 또는 **추론(Inference)**에서 관련 리소스를 선택합니다.

3.    엔드포인트, 처리 또는 교육 작업의 이름을 선택합니다.

4.    모니터링(Monitoring) 섹션에서 **로그 보기(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) 변수를 프린트합니다. 이 예에서 CloudWatch 로그 스트림에서 검색하려는 키워드는 MYDEBUG입니다.

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(내부 서버 오류)'의 기타 일반적인 원인 문제 해결

리소스 사용률(Resource utilization)

인스턴스의 작업 컨테이너가 인스턴스의 리소스를 모두 사용하는 경우 SageMaker 작업이 'InternalServerError(내부 서버 오류)'로 실패할 수 있습니다. CloudWatch에서 인스턴스의 CPUUtilization, MemoryUtilizationDiskUtilization 지표를 검토하여 리소스 사용률을 확인할 수 있습니다.

인스턴스 지표를 검토하려면 다음 단계를 따르세요.

1.    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년 전
댓글 없음

관련 콘텐츠