SageMaker Python SDK 속도 초과 및 제한 예외를 해결하려면 어떻게 해야 합니까?
최종 업데이트 날짜: 2022년 9월 7일
Amazon SageMaker Python SDK를 사용할 때 “botocore.exceptions.ClientError: 오류 발생(ThrottlingException)”과 같은 제한 오류를 해결하려면 어떻게 해야 합니까?
간략한 설명
AWS 서비스에 대한 API 호출은 계정 및 AWS 리전당 허용되는 최대 API 요청 속도를 초과할 수 없습니다. 이러한 API 호출은 애플리케이션, AWS Command Line Interface(AWS CLI) 또는 AWS Management Console에서 호출될 수 있습니다. API 요청이 최대 속도를 초과하면 "속도 초과(Rate Exceeded)" 오류가 수신되고 API 호출이 제한됩니다.
Boto3의 기본 재시도 구성으로 인해 SageMaker API를 호출할 때 이 오류가 발생할 수 있습니다. 이 구성을 재정의하여 재시도 횟수와 응답 연결 및 읽기 시간 제한을 늘릴 수 있습니다.
사용자 지정 재시도 구성을 사용한 SageMaker boto3 클라이언트를 SageMaker Python SDK 클라이언트에 추가합니다.
해결 방법
1. 사용자 지정 재시도 구성을 사용하여 SageMaker boto3 클라이언트를 생성합니다. 예:
import boto3
from botocore.config import Config
sm_boto = boto3.client('sagemaker', config=Config(connect_timeout=5, read_timeout=60, retries={'max_attempts': 20}))
print(sm_boto.meta.config.retries)
2. 이전 단계에서 생성한 boto3 클라이언트를 사용하여 SageMaker Python SDK 클라이언트를 생성합니다. 예:
import sagemaker
sagemaker_session = sagemaker.Session(sagemaker_client = sm_boto)
region = sagemaker_session.boto_session.region_name
print(sagemaker_session.sagemaker_client.meta.config.retries)
3. SageMaker Python SDK에서 여러 개의 요청을 사용하여 SageMaker API를 테스트합니다. 예:
import multiprocessing
def worker(TrainingJobName):
print(sagemaker_session.sagemaker_client
.describe_training_job(TrainingJobName=TrainingJobName)
['TrainingJobName'])
return
if __name__ == '__main__':
jobs = []
TrainingJobName = 'your-job-name'
for i in range(10):
p = multiprocessing.Process(target=worker, args=(TrainingJobName,))
jobs.append(p)
p.start()
4. sagemaker_session 파라미터를 사용하여 sagemaker.estimator.Estimator 클래스의 인스턴스를 생성합니다. 예:
estimator = sagemaker.estimator.Estimator(container,
role,
train_instance_count=1,
train_instance_type='ml.c4.4xlarge',
train_volume_size = 30,
train_max_run = 360000,
input_mode= 'File',
output_path=s3_output_location,
sagemaker_session=sagemaker_session )
5. 이전 단계에서 생성한 예측기에서 훈련 작업을 실행하여 이 재시도 구성으로 조절 예외가 해결되는지 확인합니다.
estimator.fit()