사용자 지정 부하 테스트 실행하기 - Amazon SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

사용자 지정 부하 테스트 실행하기

Amazon SageMaker Inference Recommender 로드 테스트는 지연 시간 및 처리량, 사용자 지정 트래픽 패턴, 서버리스 엔드포인트 또는 선택한 실시간 인스턴스(최대 10개)에 대한 프로덕션 요구 사항을 기반으로 광범위한 벤치마크를 수행합니다.

다음 섹션에서는 AWS SDK for Python (Boto3) 및 를 사용하여 프로그래밍 방식으로 로드 테스트를 생성, 설명 및 중지하거나 Amazon SageMaker Studio Classic 또는 SageMaker 콘솔을 사용하여 대화형으로 로드 테스트를 생성 AWS CLI, 설명 및 중지하는 방법을 보여줍니다.

부하 테스트 작업 생성하기

를 사용하여 프로그래밍 방식으로 로드 테스트를 생성 AWS CLI하거나 AWS SDK for Python (Boto3)를 사용하거나 Studio Classic 또는 SageMaker 콘솔을 사용하여 대화형으로 로드 테스트를 생성합니다. 추론 추천과 마찬가지로 모델 레지스트리에 모델을 등록할 때ARN부터 로드 테스트의 작업 이름, AWS IAM 역할, ARN입력 구성 및 모델 패키지를 지정합니다. 부하 테스트를 실시하려면 트래픽 패턴과 중단 조건도 지정해야 합니다.

AWS SDK for Python (Boto3)

CreateInferenceRecommendationsJob API 를 사용하여 추론 추천자 로드 테스트를 생성합니다. Advanced을(를) JobType 필드에 지정하고 다음을 입력합니다.

  • 부하 테스트 작업 이름(JobName). 작업 이름은 AWS 리전 및 AWS 계정 내에서 고유해야 합니다.

  • Inference Recommender가 사용자를 대신하여 작업을 수행할 수 있는 IAM 역할의 Amazon 리소스 이름(ARN)입니다. RoleArn 필드에 정의합니다.

  • 엔드포인트 구성 사전(InputConfig)에서 다음을 지정합니다.

    • TrafficPattern에 단계별 또는 계단식 트래픽 패턴을 지정합니다. 단계별 트래픽 패턴으로 지정하면 지정한 속도로 1분마다 새 사용자가 생성됩니다. 계단식 트래픽 패턴으로 지정하면 지정한 속도로 일정한 시간 간격(또는 단계)마다 새 사용자가 생성됩니다. 다음 중 하나를 선택합니다.

      • TrafficType에서 PHASES를 지정합니다. 그런 다음 Phases 배열에 InitialNumberOfUsers(시작할 동시 사용자 수, 최소 1명~최소 3명), SpawnRate(부하 테스트 특정 단계에서 분당 생성되는 사용자 수, 최소 0명~최대 3명), DurationInSeconds(트래픽 단계 지속 시간, 최단 120초~최장 3,600초) 을(를) 지정합니다.

      • TrafficType에서 STAIRS를 지정합니다. 그런 다음 Stairs 배열에 DurationInSeconds(트래픽 단계 지속 시간, 최단 120초~최장 3,600초), NumberOfSteps(단계 중에 사용되는 간격 수), UsersPerStep(개별 간격 중에 추가되는 사용자 수)을(를) 지정합니다. 참고로 개별 단계의 길이는 DurationInSeconds / NumberOfSteps의 값입니다. 예를 들어, DurationInSeconds이(가) 600이고 5 단계를 지정한 경우, 각 단계는 120초입니다.

        참고

        사용자는 루프에서 실행되고 Inference Recommender의 일부로 엔드포인트에 대한 요청을 호출하는 시스템 생성 액터로 정의됩니다. ml.c5.large 인스턴스에서 실행되는 일반적인 XGBoost 컨테이너의 경우 엔드포인트는 15~20명의 사용자만으로 분당 30,000회 호출(500tps)에 도달할 수 있습니다.

    • ResourceLimitMaxNumberOfTests(Inference Recommender 작업에 대한 최대 벤치마킹 부하 테스트 수, 최소 1회~최대 10회) 및 MaxParallelOfTests(Inference Recommender에 대한 최대 병렬 벤치마킹 부하 테스트 수, 최소 1회~최대 10회)을(를) 지정합니다.

    • EndpointConfigurations에는 다음 중 한 가지를 지정할 수 있습니다.

      • InstanceType 필드에서는 부하 테스트를 실행하고자 하는 인스턴스 유형을 지정합니다.

      • ServerlessConfig에서는 서버리스 엔드포인트에 대한 MaxConcurrencyMemorySizeInMB의 이상적인 값을 지정합니다. 자세한 정보는 서버리스 추론 설명서에서 확인하세요.

  • 중단 조건 사전(StoppingConditions)에서 맞는 조건이 있을 경우 Inference Recommender 작업이 중단됩니다. 이 예제에서는 다음 필드를 사전에서 지정합니다.

    • MaxInvocations에 엔드포인트에 대해 예상되는 분당 최대 요청 수를 최소 1에서 최대 30,000으로 지정합니다.

    • ModelLatencyThresholdsPercentile(모델 지연 시간 백분위수 임계값) 및 ValueInMilliseconds(모델 지연 시간 백분위수 값(밀리초))을(를) 지정합니다.

    • (선택 사항) 의 경우 TPS (분당 호출 수) 속도가 평평해질 때 로드 테스트를 계속할지 여부를 지정할 FlatInvocations수 있습니다. 평탄화 TPS 속도는 일반적으로 엔드포인트가 용량에 도달했음을 의미합니다. 단, 최대 용량 조건에서는 엔드포인트를 계속 모니터링하는 것이 좋습니다. 이 경우 부하 테스트를 계속하려면 이 값을 Continue로 지정합니다. 그렇지 않은 경우 기본값은 Stop입니다.

# Create a low-level SageMaker service client. import boto3 aws_region=<INSERT> sagemaker_client=boto3.client('sagemaker', region=aws_region) # Provide a name to your recommendation based on load testing load_test_job_name="<INSERT>" # Provide the name of the sagemaker instance type instance_type="<INSERT>" # Provide the IAM Role that gives SageMaker permission to access AWS services role_arn='arn:aws:iam::<account>:role/*' # Provide your model package ARN that was created when you registered your # model with Model Registry model_package_arn='arn:aws:sagemaker:<region>:<account>:role/*' sagemaker_client.create_inference_recommendations_job( JobName=load_test_job_name, JobType="Advanced", RoleArn=role_arn, InputConfig={ 'ModelPackageVersionArn': model_package_arn, "JobDurationInSeconds": 7200, 'TrafficPattern' : { # Replace PHASES with STAIRS to use the stairs traffic pattern 'TrafficType': 'PHASES', 'Phases': [ { 'InitialNumberOfUsers': 1, 'SpawnRate': 1, 'DurationInSeconds': 120 }, { 'InitialNumberOfUsers': 1, 'SpawnRate': 1, 'DurationInSeconds': 120 } ] # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern # 'Stairs' : { # 'DurationInSeconds': 240, # 'NumberOfSteps': 2, # 'UsersPerStep': 2 # } }, 'ResourceLimit': { 'MaxNumberOfTests': 10, 'MaxParallelOfTests': 3 }, "EndpointConfigurations" : [{ 'InstanceType': 'ml.c5.xlarge' }, { 'InstanceType': 'ml.m5.xlarge' }, { 'InstanceType': 'ml.r5.xlarge' }] # Uncomment the ServerlessConfig and comment out the InstanceType field if you want recommendations for a serverless endpoint # "ServerlessConfig": { # "MaxConcurrency": value, # "MemorySizeInMB": value # } }, StoppingConditions={ 'MaxInvocations': 1000, 'ModelLatencyThresholds':[{ 'Percentile': 'P95', 'ValueInMilliseconds': 100 }], # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten 'FlatInvocations': 'Stop' } )

에 전달할 수 있는 선택적 및 필수 인수의 전체 목록은 Amazon SageMaker API 참조 가이드를 참조하세요CreateInferenceRecommendationsJob.

AWS CLI

create-inference-recommendations-job API 를 사용하여 추론 추천자 로드 테스트를 생성합니다. Advanced을(를) JobType 필드에 지정하고 다음을 입력합니다.

  • 부하 테스트 작업 이름(job-name). 작업 이름은 AWS 리전 및 AWS 계정 내에서 고유해야 합니다.

  • Inference Recommender가 사용자를 대신하여 작업을 수행할 수 있는 IAM 역할의 Amazon 리소스 이름(ARN)입니다. role-arn 필드에 정의합니다.

  • 엔드포인트 구성 사전(input-config)에서 다음을 지정합니다.

    • TrafficPattern에 단계별 또는 계단식 트래픽 패턴을 지정합니다. 단계별 트래픽 패턴으로 지정하면 지정한 속도로 1분마다 새 사용자가 생성됩니다. 계단식 트래픽 패턴으로 지정하면 지정한 속도로 일정한 시간 간격(또는 단계)마다 새 사용자가 생성됩니다. 다음 중 하나를 선택합니다.

      • TrafficType에서 PHASES를 지정합니다. 그런 다음 Phases 배열에 InitialNumberOfUsers(시작할 동시 사용자 수, 최소 1명~최소 3명), SpawnRate(부하 테스트 특정 단계에서 분당 생성되는 사용자 수, 최소 0명~최대 3명), DurationInSeconds(트래픽 단계 지속 시간, 최단 120초~최장 3,600초) 을(를) 지정합니다.

      • TrafficType에서 STAIRS를 지정합니다. 그런 다음 Stairs 배열에 DurationInSeconds(트래픽 단계 지속 시간, 최단 120초~최장 3,600초), NumberOfSteps(단계 중에 사용되는 간격 수), UsersPerStep(개별 간격 중에 추가되는 사용자 수)을(를) 지정합니다. 참고로 개별 단계의 길이는 DurationInSeconds / NumberOfSteps의 값입니다. 예를 들어, DurationInSeconds이(가) 600이고 5 단계를 지정한 경우, 각 단계는 120초입니다.

        참고

        사용자는 루프에서 실행되고 Inference Recommender의 일부로 엔드포인트에 대한 요청을 호출하는 시스템 생성 액터로 정의됩니다. ml.c5.large 인스턴스에서 실행되는 일반적인 XGBoost 컨테이너의 경우 엔드포인트는 15~20명의 사용자만으로 분당 30,000회 호출(500tps)에 도달할 수 있습니다.

    • ResourceLimitMaxNumberOfTests(Inference Recommender 작업에 대한 최대 벤치마킹 부하 테스트 수, 최소 1회~최대 10회) 및 MaxParallelOfTests(Inference Recommender에 대한 최대 병렬 벤치마킹 부하 테스트 수, 최소 1회~최대 10회)을(를) 지정합니다.

    • EndpointConfigurations에는 다음 중 한 가지를 지정할 수 있습니다.

      • InstanceType 필드에서는 부하 테스트를 실행하고자 하는 인스턴스 유형을 지정합니다.

      • ServerlessConfig에서는 서버리스 엔드포인트에 대한 MaxConcurrencyMemorySizeInMB의 이상적인 값을 지정합니다.

  • 중단 조건 사전(stopping-conditions)에서 맞는 조건이 있을 경우 Inference Recommender 작업이 중단됩니다. 이 예제에서는 다음 필드를 사전에서 지정합니다.

    • MaxInvocations에 엔드포인트에 대해 예상되는 분당 최대 요청 수를 최소 1에서 최대 30,000으로 지정합니다.

    • ModelLatencyThresholdsPercentile(모델 지연 시간 백분위수 임계값) 및 ValueInMilliseconds(모델 지연 시간 백분위수 값(밀리초))을(를) 지정합니다.

    • (선택 사항) 의 경우 TPS (분당 호출 수) 속도가 평평해질 때 로드 테스트를 계속할지 여부를 지정할 FlatInvocations수 있습니다. 평탄화 TPS 속도는 일반적으로 엔드포인트가 용량에 도달했음을 의미합니다. 단, 최대 용량 조건에서는 엔드포인트를 계속 모니터링하는 것이 좋습니다. 이 경우 부하 테스트를 계속하려면 이 값을 Continue로 지정합니다. 그렇지 않은 경우 기본값은 Stop입니다.

aws sagemaker create-inference-recommendations-job\ --region <region>\ --job-name <job-name>\ --job-type ADVANCED\ --role-arn arn:aws:iam::<account>:role/*\ --input-config \"{ \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region>:<account>:role/*\", \"JobDurationInSeconds\": 7200, \"TrafficPattern\" : { # Replace PHASES with STAIRS to use the stairs traffic pattern \"TrafficType\": \"PHASES\", \"Phases\": [ { \"InitialNumberOfUsers\": 1, \"SpawnRate\": 60, \"DurationInSeconds\": 300 } ] # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern # 'Stairs' : { # 'DurationInSeconds': 240, # 'NumberOfSteps': 2, # 'UsersPerStep': 2 # } }, \"ResourceLimit\": { \"MaxNumberOfTests\": 10, \"MaxParallelOfTests\": 3 }, \"EndpointConfigurations\" : [ { \"InstanceType\": \"ml.c5.xlarge\" }, { \"InstanceType\": \"ml.m5.xlarge\" }, { \"InstanceType\": \"ml.r5.xlarge\" } # Use the ServerlessConfig and leave out the InstanceType fields if you want recommendations for a serverless endpoint # \"ServerlessConfig\": { # \"MaxConcurrency\": value, # \"MemorySizeInMB\": value # } ] }\" --stopping-conditions \"{ \"MaxInvocations\": 1000, \"ModelLatencyThresholds\":[ { \"Percentile\": \"P95\", \"ValueInMilliseconds\": 100 } ], # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten \"FlatInvocations\": \"Stop\" }\"
Amazon SageMaker Studio Classic

Studio Classic을 사용하여 로드 테스트를 생성합니다.

  1. Studio Classic 애플리케이션에서 홈 아이콘()을 선택합니다 Black square icon representing a placeholder or empty image. .

  2. Studio Classic의 왼쪽 사이드바에서 배포를 선택합니다.

  3. 드롭다운 목록에서 Inference recommender를 선택합니다.

  4. Inference Recommender 작업 생성(Create inference recommender job)을 선택합니다. Inference Recommender 작업 생성(Create inference recommender job) 탭이 열립니다.

  5. 드롭다운 모델 그룹(Model group) 필드에서 모델 그룹 이름을 선택합니다. 목록에는 Studio Classic 외부에 등록된 모델을 포함하여 계정의 모델 레지스트리에 등록된 모든 모델 그룹이 포함됩니다.

  6. 드롭다운 모델 버전(Model version) 필드에서 모델 버전을 선택합니다.

  7. 계속을 선택합니다.

  8. 작업 이름을 이름(Name) 필드에 입력합니다.

  9. (선택 사항) 작업 설명을 설명(Description) 필드에 입력합니다.

  10. 추론 추천자에게 AWS 서비스에 액세스할 수 있는 권한을 부여하는 IAM 역할을 선택합니다. 역할을 생성하고 AmazonSageMakerFullAccess IAM 관리형 정책을 연결하여 이 작업을 수행하거나 Studio Classic에서 역할을 생성하도록 할 수 있습니다.

  11. 중단 조건(Stopping Conditions)을 선택하여 사용 가능한 입력 필드를 확장합니다. 배포 권장 사항 중단 조건을 입력합니다.

    1. 엔드포인트에 대해 예상되는 분당 최대 요청 수를 분당 최대 간접 호출 수(Max Invocations Per Minute) 필드에 지정합니다.

    2. 모델 지연 시간 임계값을 마이크로초 단위로 모델 지연 시간 임계값(Model Latency Threshold) 필드에 지정합니다. 모델 지연 임계값은 Inference Recommender에서 본 모델 응답 시간 간격을 나타냅니다. 이 간격에는 요청을 전송하고 모델 컨테이너에서 응답을 가져오는 데 걸리는 로컬 통신 시간과 컨테이너에서 추론을 완료하는 데 걸리는 시간도 포함됩니다.

  12. 트래픽 패턴(Traffic Pattern)을 선택하여 사용 가능한 입력 필드를 확장합니다.

    1. 초기 사용자 수(Initial Number of Users) 필드에 정수를 지정하여 초기 가상 사용자 수를 설정합니다.

    2. 생성 속도(Spawn Rate) 필드에 정수를 입력합니다. 생성 속도는 초당 생성되는 사용자 수를 설정합니다.

    3. 지속 시간(Duration) 필드에 정수를 지정하여 단계 지속 시간을 초 단위로 설정합니다.

    4. (선택 사항) 부가 트래픽 패턴을 추가합니다. 추가(Add)를 선택합니다.

  13. 부가(Additional) 설정을 선택하여 최장 테스트 지속 시간(Max test duration) 필드를 표시합니다. 작업 중 테스트에 소요될 수 있는 최대 시간을 초 단위로 지정합니다. 정해진 지속 시간이 지난 후에는 새 작업이 예약되지 않습니다. 이렇게 하면 진행 중인 작업이 중단되지 않고 완료된 작업만 볼 수 있습니다.

  14. 계속을 선택합니다.

  15. 인스턴스 선택(Select Instances)을 선택합니다.

  16. 벤치마킹용 인스턴스(Instances for benchmarking) 필드에서 테스트할 인스턴스 추가(Add instances to test)를 선택합니다. Inference Recommender가 부하 테스트에 사용할 인스턴스를 최대 10개까지 선택합니다.

  17. 부가 설정(Additional settings)을 선택합니다.

    1. 하나의 작업에서 실시할 수 있는 테스트 수의 상한을 최대 테스트 수(Max number of tests) 필드에 정수로 입력합니다. 참고로 개별 엔드포인트 구성은 새 부하 테스트로 귀결됩니다.

    2. 최대 병렬 테스트(Max parallel test) 필드에 정수를 입력합니다. 이 설정은 병렬 실행 가능한 부하 테스트 수의 상한을 정의합니다.

  18. 제출을 선택합니다.

    부하 테스트는 최장 2시간이 걸릴 수 있습니다.

    주의

    이 탭을 닫지 마세요. 이 탭을 닫으면 Inference Recommender 부하 테스트 작업이 취소됩니다.

SageMaker console

다음을 수행하여 SageMaker 콘솔을 통해 사용자 지정 로드 테스트를 생성합니다.

  1. 에서 SageMaker 콘솔로 이동합니다https://console.aws.amazon.com/sagemaker/.

  2. 왼쪽 탐색 창에서 추론(Inference)을 선택한 다음 Inference Recommender를 선택합니다.

  3. Inference Recommender 작업(Inference recommender jobs) 페이지에서 작업 생성(Create job)을 선택합니다.

  4. 1단계: 모델 구성에서 다음을 수행합니다.

    1. 작업 유형(Job type)으로 고급 Recommender 작업(Advanced recommender job)을 선택합니다.

    2. 모델 레지스트리에 SageMaker 등록된 모델을 사용하는 경우 모델 레지스트리에서 모델 선택 토글을 켜고 다음을 수행합니다.

      1. 모델 그룹 드롭다운 목록에서 모델이 있는 모델 레지스트리에서 SageMaker 모델 그룹을 선택합니다.

      2. 모델 버전(Model version) 드롭다운 목록에서 원하는 모델 버전을 선택합니다.

    3. 에서 생성한 모델을 사용하는 경우 모델 레지스트리에서 모델 선택 토글을 SageMaker끄고 다음을 수행합니다.

      1. 모델 이름 필드에 SageMaker 모델 이름을 입력합니다.

    4. IAM 역할 의 경우 인스턴스 추천 작업을 생성하는 데 필요한 권한이 있는 기존 AWS IAM 역할을 선택할 수 있습니다. 또는 기존 역할이 없는 경우 새 역할 생성을 선택하여 역할 생성 팝업을 열고 생성한 새 역할에 필요한 권한을 SageMaker 추가할 수 있습니다.

    5. 페이로드 벤치마킹용 S3 버킷(S3 bucket for benchmarking payload)에 샘플 페이로드 아카이브의 Amazon S3 경로를 입력합니다. 이 경로에는 Inference Recommender가 다양한 인스턴스 유형에서 모델을 벤치마크할 때 사용하는 샘플 페이로드 파일이 포함되어야 합니다.

    6. 페이로드 콘텐츠 유형 에 샘플 페이로드 데이터의 MIME 유형을 입력합니다.

    7. 트래픽 패턴(Traffic pattern)에서 부하 테스트 단계를 구성하는 방법은 다음과 같습니다.

      1. 초기 사용자 수(Initial number of users)에서 시작할 동시 사용자 수(최소 1명~최대 3명)를 지정합니다.

      2. 생성 속도(Spawn rate)에서 단계별로 1분 간 생성할 사용자 수(최소 0명~최대 3명)를 지정합니다.

      3. 지속 시간(초)(Duration (seconds))에서 트래픽 단계 지속 시간을 초 단위로 지정합니다(최단 120초~최장 3,600초).

    8. (선택 사항) 모델 레지스트리에서 모델 선택 토글을 끄고 SageMaker 모델을 지정한 경우 컨테이너 구성 에 대해 다음을 수행합니다.

      1. 도메인(Domain) 드롭다운 목록에서 컴퓨터 비전, 자연어 처리, 기계 학습 등 모델의 기계 학습 도메인을 선택합니다.

      2. 프레임워크 드롭다운 목록에서 TensorFlow 또는 와 같은 컨테이너의 프레임워크를 선택합니다XGBoost.

      3. 프레임워크 버전(Framework version)에 컨테이너 이미지의 프레임워크 버전을 입력합니다.

      4. 가장 가까운 모델 이름(Nearest model name) 드롭다운 목록에서 사용자 모델과 가장 가깝게 일치하는 사전 훈련된 모델을 선택합니다.

      5. 태스크(Task) 드롭다운 목록에서 모델이 수행하는 기계 학습 태스크(예: 이미지 분류, 회귀)를 선택합니다.

    9. (선택 사항) SageMaker Neo를 사용한 모델 컴파일의 경우 SageMaker Neo를 사용하여 컴파일한 모델에 대한 권장 작업을 구성할 수 있습니다. 데이터 입력 구성(Data input configuration){'input':[1,1024,1024,3]}와(과) 비슷한 형식으로 모델에 맞는 정확한 입력 데이터 형상을 입력합니다.

    10. Next(다음)를 선택합니다.

  5. 2단계: 인스턴스 및 환경 파라미터에서 다음을 수행합니다.

    1. 벤치마킹할 인스턴스 선택(Select instances for benchmarking)에서 벤치마킹할 인스턴스 유형을 최대 8개까지 선택합니다.

    2. (선택 사항) 환경 파라미터 범위(Environment parameter ranges)에서 모델 최적화에 도움이 되는 환경 파라미터를 지정할 수 있습니다. 파라미터를 키(Key)값(Value)의 쌍으로 지정합니다.

    3. Next(다음)를 선택합니다.

  6. 3단계: 작업 파라미터에서 다음을 수행합니다.

    1. (선택 사항) 작업 이름(Job name) 필드에 인스턴스 권장 작업의 이름을 입력합니다. 작업을 생성할 때 는 타임스탬프를 이 이름 끝에 SageMaker 추가합니다.

    2. (선택 사항) 작업 설명(Job description) 필드에 작업에 대한 설명을 입력합니다.

    3. (선택 사항) 암호화 키 드롭다운 목록에서 이름별로 AWS KMS 키를 선택하거나 키를 입력하여 데이터를 ARN 암호화합니다.

    4. (선택 사항) 최대 테스트 수(Max number of tests)에 권장 작업 중에 실행할 테스트 수를 입력합니다.

    5. (선택 사항) 최대 병렬 테스트(Max parallel of tests)에 권장 작업 중에 실행할 최대 병렬 테스트 수를 입력합니다.

    6. 최장 테스트 지속 시간(Max test duration (s))에 개별 테스트를 실행할 최장 시간(초)을 입력합니다.

    7. 분당 최대 간접 호출(Max invocations per minute)에 엔드포인트가 권장 작업을 중단하기 전에 도달할 수 있는 분당 최대 요청 수를 입력합니다. 이 한도에 도달하면 가 작업을 SageMaker 종료합니다.

    8. P99 모델 지연 시간 임계값(ms)(P99 Model latency threshold (ms))에 모델 지연 시간 백분위수를 밀리초 단위로 입력합니다.

    9. Next(다음)를 선택합니다.

  7. 4단계: 작업 검토에서 구성 검토 후 제출(Submit)을 선택합니다.

부하 테스트 결과 가져오기

AWS SDK for Python (Boto3), , AWS CLI Studio Classic 또는 콘솔을 사용하여 로드 테스트가 완료되면 모든 로드 테스트에서 프로그래밍 방식으로 지표를 SageMaker 수집할 수 있습니다.

AWS SDK for Python (Boto3)

를 사용하여 지표를 수집합니다DescribeInferenceRecommendationsJobAPI. JobName 필드에 대한 부하 테스트 작업 이름을 지정합니다.

load_test_response = sagemaker_client.describe_inference_recommendations_job( JobName=load_test_job_name )

응답 객체를 출력합니다.

load_test_response['Status']

이렇게 하면 다음 예제와 유사한 JSON 응답이 반환됩니다. 참고로 이 예제에서는 실시간 추론을 위한 권장 인스턴스 유형을 볼 수 있습니다(서버리스 추론 권장 사항을 보여주는 예는 다음 예제 참조).

{ 'JobName': 'job-name', 'JobDescription': 'job-description', 'JobType': 'Advanced', 'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 'Status': 'COMPLETED', 'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 'InputConfig': { 'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 'JobDurationInSeconds': 7200, 'TrafficPattern': { 'TrafficType': 'PHASES' }, 'ResourceLimit': { 'MaxNumberOfTests': 100, 'MaxParallelOfTests': 100 }, 'EndpointConfigurations': [{ 'InstanceType': 'ml.c5d.xlarge' }] }, 'StoppingConditions': { 'MaxInvocations': 1000, 'ModelLatencyThresholds': [{ 'Percentile': 'P95', 'ValueInMilliseconds': 100} ]}, 'InferenceRecommendations': [{ 'Metrics': { 'CostPerHour': 0.6899999976158142, 'CostPerInference': 1.0332434612791985e-05, 'MaximumInvocations': 1113, 'ModelLatency': 100000 }, 'EndpointConfiguration': { 'EndpointName': 'endpoint-name', 'VariantName': 'variant-name', 'InstanceType': 'ml.c5d.xlarge', 'InitialInstanceCount': 3 }, 'ModelConfiguration': { 'Compiled': False, 'EnvironmentParameters': [] } }], 'ResponseMetadata': { 'RequestId': 'request-id', 'HTTPStatusCode': 200, 'HTTPHeaders': { 'x-amzn-requestid': 'x-amzn-requestid', 'content-type': 'content-type', 'content-length': '1199', 'date': 'Tue, 26 Oct 2021 19:57:42 GMT' }, 'RetryAttempts': 0} }

처음 몇 줄에는 추론 부하 테스트 작업 자체에 대한 정보가 있습니다. 여기에는 작업 이름, 역할ARN, 생성 및 삭제 시간이 포함됩니다.

InferenceRecommendations 사전에는 Inference Recommender 추론 권장 사항 목록이 포함됩니다.

EndpointConfiguration 중첩 사전에는 인스턴스 유형(InstanceType) 권장 사항과 권장 사항 작업 중에 사용되는 엔드포인트 및 변형 이름(배포된 AWS 기계 학습 모델)이 포함되어 있습니다. Amazon CloudWatch Events에서 엔드포인트 및 변형 이름을 모니터링에 사용할 수 있습니다. 자세한 내용은 Amazon SageMaker 에서 Amazon을 모니터링하기 위한 지표 CloudWatch 섹션을 참조하세요.

EndpointConfiguration 중첩 사전에는 인스턴스 개수(InitialInstanceCount) 권장 사항도 포함되어 있습니다. MaxInvocations(StoppingConditions에 지정) 충족을 위해 엔드포인트에서 프로비저닝해야 하는 인스턴스 수입니다. 예를 들어 InstanceTypeml.m5.large 이고 InitialInstanceCount2인 경우 엔드포인트에 대해 2개의 ml.m5.large 인스턴스를 프로비저닝하여 MaxInvocations 중지 조건에 TPS 지정된 를 처리할 수 있도록 해야 합니다.

Metrics 중첩 사전에는 실시간 엔드포인트의 시간당 예상 비용(CostPerHour), 실시간 엔드포인트의 추론당 예상 비용(CostPerInference), 엔드포인트로 전송된 최대 InvokeEndpoint 요청 수, 모델이 에 응답하는 데 걸린 시간 간격(마이크로초ModelLatency)인 모델 지연 시간()에 대한 정보가 포함되어 있습니다 SageMaker. 모델 지연 시간에는 요청을 전송하고 모델 컨테이너에서 응답을 가져오는 데 걸리는 로컬 통신 시간과 컨테이너에서 추론을 완료하는 데 걸리는 시간도 포함됩니다.

다음 예제에서는 서버리스 추론 권장 사항을 반환하도록 구성된 부하 테스트 작업에 대한 응답의 InferenceRecommendations 일부를 볼 수 있습니다.

"InferenceRecommendations": [ { "EndpointConfiguration": { "EndpointName": "value", "InitialInstanceCount": value, "InstanceType": "value", "VariantName": "value", "ServerlessConfig": { "MaxConcurrency": value, "MemorySizeInMb": value } }, "InvocationEndTime": value, "InvocationStartTime": value, "Metrics": { "CostPerHour": value, "CostPerInference": value, "CpuUtilization": value, "MaxInvocations": value, "MemoryUtilization": value, "ModelLatency": value, "ModelSetupTime": value }, "ModelConfiguration": { "Compiled": "False", "EnvironmentParameters": [], "InferenceSpecificationName": "value" }, "RecommendationId": "value" } ]

서버리스 추론에 대한 권장 사항을 실시간 추론 결과와 비슷하게 해석할 수 있습니다. 단, ServerlessConfig의 경우에는 부하 테스트를 설정할 때 지정한 MaxConcurrencyMemorySizeInMB 값을 알려줍니다. 서버리스 권장 사항은 서버리스 엔드포인트에서 컴퓨터 리소스를 실행하는 데 걸리는 시간(마이크로초)을 측정하는 지표 ModelSetupTime도 측정합니다. 서버리스 엔드포인트 설정에 대한 자세한 정보는 서버리스 추론 설명서에서 확인하세요.

AWS CLI

를 사용하여 지표를 수집합니다describe-inference-recommendations-jobAPI. job-name 플래그에 대한 부하 테스트 작업 이름을 지정합니다.

aws sagemaker describe-inference-recommendations-job --job-name <job-name>

다음 예제와 유사한 응답을 반환합니다. 이 예제는 실시간 추론에 권장되는 인스턴스 유형을 보여줍니다(서버리스 추론 권장 사항을 보여주는 예제는 이 예제 뒤의 예제 참조).

{ 'JobName': 'job-name', 'JobDescription': 'job-description', 'JobType': 'Advanced', 'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 'Status': 'COMPLETED', 'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 'InputConfig': { 'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 'JobDurationInSeconds': 7200, 'TrafficPattern': { 'TrafficType': 'PHASES' }, 'ResourceLimit': { 'MaxNumberOfTests': 100, 'MaxParallelOfTests': 100 }, 'EndpointConfigurations': [{ 'InstanceType': 'ml.c5d.xlarge' }] }, 'StoppingConditions': { 'MaxInvocations': 1000, 'ModelLatencyThresholds': [{ 'Percentile': 'P95', 'ValueInMilliseconds': 100 }] }, 'InferenceRecommendations': [{ 'Metrics': { 'CostPerHour': 0.6899999976158142, 'CostPerInference': 1.0332434612791985e-05, 'MaximumInvocations': 1113, 'ModelLatency': 100000 }, 'EndpointConfiguration': { 'EndpointName': 'endpoint-name', 'VariantName': 'variant-name', 'InstanceType': 'ml.c5d.xlarge', 'InitialInstanceCount': 3 }, 'ModelConfiguration': { 'Compiled': False, 'EnvironmentParameters': [] } }], 'ResponseMetadata': { 'RequestId': 'request-id', 'HTTPStatusCode': 200, 'HTTPHeaders': { 'x-amzn-requestid': 'x-amzn-requestid', 'content-type': 'content-type', 'content-length': '1199', 'date': 'Tue, 26 Oct 2021 19:57:42 GMT' }, 'RetryAttempts': 0 } }

처음 몇 줄에는 추론 부하 테스트 작업 자체에 대한 정보가 있습니다. 여기에는 작업 이름, 역할ARN, 생성 및 삭제 시간이 포함됩니다.

InferenceRecommendations 사전에는 Inference Recommender 추론 권장 사항 목록이 포함됩니다.

EndpointConfiguration 중첩 사전에는 인스턴스 유형(InstanceType) 권장 사항과 권장 사항 작업 중에 사용되는 엔드포인트 및 변형 이름(배포된 AWS 기계 학습 모델)이 포함되어 있습니다. 엔드포인트 및 변형 이름을 사용하여 Amazon CloudWatch Events에서 모니터링할 수 있습니다. 자세한 내용은 Amazon SageMaker 에서 Amazon을 모니터링하기 위한 지표 CloudWatch 섹션을 참조하세요.

Metrics 중첩 사전에는 실시간 엔드포인트의 시간당 예상 비용(CostPerHour), 실시간 엔드포인트의 추론당 예상 비용(CostPerInference), 엔드포인트로 전송된 최대 InvokeEndpoint 요청 수, 모델이 에 응답하는 데 걸린 시간 간격(마이크로초ModelLatency)인 모델 지연 시간()에 대한 정보가 포함되어 있습니다 SageMaker. 모델 지연 시간에는 요청을 전송하고 모델 컨테이너에서 응답을 가져오는 데 걸리는 로컬 통신 시간과 컨테이너에서 추론을 완료하는 데 걸리는 시간도 포함됩니다.

다음 예제에서는 서버리스 추론 권장 사항을 반환하도록 구성된 부하 테스트 작업에 대한 응답의 InferenceRecommendations 일부를 볼 수 있습니다.

"InferenceRecommendations": [ { "EndpointConfiguration": { "EndpointName": "value", "InitialInstanceCount": value, "InstanceType": "value", "VariantName": "value", "ServerlessConfig": { "MaxConcurrency": value, "MemorySizeInMb": value } }, "InvocationEndTime": value, "InvocationStartTime": value, "Metrics": { "CostPerHour": value, "CostPerInference": value, "CpuUtilization": value, "MaxInvocations": value, "MemoryUtilization": value, "ModelLatency": value, "ModelSetupTime": value }, "ModelConfiguration": { "Compiled": "False", "EnvironmentParameters": [], "InferenceSpecificationName": "value" }, "RecommendationId": "value" } ]

서버리스 추론에 대한 권장 사항을 실시간 추론 결과와 비슷하게 해석할 수 있습니다. 단, ServerlessConfig의 경우에는 부하 테스트를 설정할 때 지정한 MaxConcurrencyMemorySizeInMB 값을 알려줍니다. 서버리스 권장 사항은 서버리스 엔드포인트에서 컴퓨터 리소스를 실행하는 데 걸리는 시간(마이크로초)을 측정하는 지표 ModelSetupTime도 측정합니다. 서버리스 엔드포인트 설정에 대한 자세한 정보는 서버리스 추론 설명서에서 확인하세요.

Amazon SageMaker Studio Classic

추천은 Studio Classic 내 추론 추천이라는 새 탭에 채워집니다. 결과가 표시되려면 최대 2시간이 걸릴 수 있습니다. 이 탭에는 결과(Results)세부정보(Details) 열이 포함됩니다.

세부정보(Details) 열에는 부하 테스트 작업에 지정된 이름, 작업이 생성된 시간(생성 시간(Creation time)) 등과 같은 부하 테스트 작업에 대한 정보가 있습니다. 또한 분당 발생한 최대 간접 호출 수 및 사용된 Amazon 리소스 이름에 대한 정보와 같은 설정(Settings) 정보도 포함되어 있습니다.

결과 열은 배포 중요도에 따라 결과가 표시되는 순서를 조정할 수 있는 배포 목표SageMaker 권장 사항 창을 제공합니다. 세 가지 드롭다운 메뉴를 사용하여 비용(Cost), 지연 시간(Latency), 처리량(Throughput)의 중요도를 사용 사례에 맞게 설정할 수 있습니다. 개별 목표(비용, 지연 시간, 처리량)의 중요도를 최저(Lowest Importance), 낮음(Low Importance), 보통(Moderate importance), 높음(High importance), 최고(Highest importance)로 설정할 수 있습니다.

각 목표에 대한 중요도 선택에 따라 Inference Recommender는 패널 오른쪽의 권장 사항 필드에 시간당 예상 비용 및 추론 요청과 함께 최상위 SageMaker 권장 사항을 표시합니다. 또한 예상 모델 지연 시간, 최대 간접 호출 수, 인스턴스 수에 대한 정보도 표시합니다.

표시된 상위 권장 사항 외에 Inference Recommender가 전체 실행(All runs) 섹션에서 테스트한 모든 인스턴스에 대한 동일한 정보를 볼 수 있습니다.

SageMaker console

다음을 수행하여 SageMaker 콘솔에서 사용자 지정 로드 테스트 작업 결과를 볼 수 있습니다.

  1. 에서 SageMaker 콘솔로 이동합니다https://console.aws.amazon.com/sagemaker/.

  2. 왼쪽 탐색 창에서 추론(Inference)을 선택한 다음 Inference Recommender를 선택합니다.

  3. Inference Recommender 작업(Inference recommender jobs) 페이지에서 추론 권장 작업 이름을 선택합니다.

작업의 세부 정보 페이지에서 다음 스크린샷과 같이 모델에 SageMaker 권장되는 인스턴스 유형인 추론 권장 사항을 볼 수 있습니다.

SageMaker 콘솔의 작업 세부 정보 페이지에 있는 추론 권장 사항 목록의 스크린샷입니다.

이 섹션에서는 모델 지연 시간(Model latency), 시간당 비용(Cost per hour), 추론당 비용(Cost per inference), 분당 간접 호출 수(Invocations per minute)와 같은 다양한 요인을 기준으로 인스턴스 유형을 비교할 수 있습니다.

이 페이지에서 작업에 지정한 구성을 볼 수도 있습니다. 모니터 섹션에서 각 인스턴스 유형에 대해 로깅된 Amazon CloudWatch 지표를 볼 수 있습니다. 이러한 지표 해석에 대한 자세한 내용은 결과 해석에서 확인하세요.