View a markdown version of this page

생성형 AI 추론 권장 사항을 위한 워크로드 구성 설정 - Amazon SageMaker AI

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

생성형 AI 추론 권장 사항을 위한 워크로드 구성 설정

워크로드 구성은 SageMaker AI가 모델 또는 엔드포인트를 평가할 때 사용하는 트래픽 패턴과 벤치마크 파라미터를 정의합니다. 권장 작업 또는 벤치마크 작업을 실행하기 전에 워크로드 구성을 생성합니다. 여러 작업에서 동일한 워크로드 구성을 재사용할 수 있습니다.

다음 두 가지 방법으로 워크로드를 정의할 수 있습니다.

  • 인라인 사양. API 직접 호출에서 토큰 배포 및 트래픽 파라미터를 지정합니다.

  • Amazon S3의 데이터 세트. DatasetConfig 파라미터를 사용하여 실제 요청의 대표적인 데이터 세트를 제공합니다.

인라인 파라미터를 사용하여 워크로드 구성 생성

대표 데이터 세트가 없는 경우 인라인 파라미터를 사용하여 토큰 배포를 지정합니다.

Python(boto3)

import boto3 import json client = boto3.client("sagemaker", region_name="us-west-2") workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "prompt_input_tokens_mean": 550, "prompt_input_tokens_stddev": 150, "output_tokens_mean": 150, "output_tokens_stddev": 50, }, } response = client.create_ai_workload_config( AIWorkloadConfigName="my-workload-config", AIWorkloadConfigs={ "WorkloadSpec": {"Inline": json.dumps(workload_spec)} }, ) print(response["AIWorkloadConfigArn"])

AWS CLI

aws sagemaker create-ai-workload-config \ --ai-workload-config-name "my-workload-config" \ --ai-workload-configs '{"WorkloadSpec": {"Inline": "{\"benchmark\": {\"type\": \"aiperf\"}, \"parameters\": {\"prompt_input_tokens_mean\": 550, \"output_tokens_mean\": 150}}"}}' \ --region us-west-2

데이터 세트를 사용하여 워크로드 구성 생성

실제 요청의 대표 데이터 세트가 있는 경우 InputDataConfig 채널과 함께 DatasetConfig 파라미터를 사용하여 Amazon S3를 통해 제공합니다.

response = client.create_ai_workload_config( AIWorkloadConfigName="my-dataset-workload", DatasetConfig={ "InputDataConfig": [ { "ChannelName": "traffic", "DataSource": { "S3DataSource": { "S3Uri": "s3://DOC-EXAMPLE-BUCKET/datasets/traffic-trace/" } } } ] }, AIWorkloadConfigs={ "WorkloadSpec": {"Inline": json.dumps(workload_spec)} }, )

기본적으로 합성 프롬프트가 생성됩니다. 퍼블릭 데이터 세트를 사용하거나 Amazon S3에서 사용자 지정 데이터 세트를 제공할 수도 있습니다.

벤치마킹을 위한 워크로드 구성

기존 엔드포인트를 벤치마킹하기 위한 워크로드 구성을 생성할 때 토큰화기, 동시성, 요청 수 및 요청 속도와 같은 추가 파라미터를 지정할 수 있습니다.

workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "tokenizer": "TinyLlama/TinyLlama-1.1B-Chat-v1.0", "concurrency": 1, "request_count": 10, "streaming": True, "prompt_input_tokens_mean": 550, "prompt_input_tokens_stddev": 150, "output_tokens_mean": 50, "output_tokens_stddev": 10, "request_rate": 1.0, "benchmark_duration": 60, }, "tooling": {"api_standard": "openai", "version": "0.6.0"}, }

워크로드 구성 관리

다음 작업을 사용하여 워크로드 구성을 관리합니다.

# List workload configurations response = client.list_ai_workload_configs(MaxResults=10) for config in response["AIWorkloadConfigs"]: print(f"{config['AIWorkloadConfigName']} - {config['AIWorkloadConfigArn']}") # Describe a workload configuration response = client.describe_ai_workload_config( AIWorkloadConfigName="my-workload-config" ) # Delete a workload configuration client.delete_ai_workload_config( AIWorkloadConfigName="my-workload-config" )

워크로드 사양 참조

이 섹션에서는 워크로드 구성을 생성할 때 WorkloadSpec.Inline 필드에 전달하는 워크로드 사양 JSON 문서의 전체 스키마를 제공합니다.

구문

다음은 일반적으로 사용되는 파라미터가 있는 워크로드 사양의 대표적인 예입니다. 모든 파라미터는 아래 참조 표에 설명되어 있습니다.

{ "benchmark": { "type": "aiperf" }, "parameters": { "prompt_input_tokens_mean": 550, "prompt_input_tokens_stddev": 150.0, "output_tokens_mean": 150, "output_tokens_stddev": 50.0, "concurrency": 10, "request_count": 100, "request_rate": 5.0, "benchmark_duration": 120, "streaming": true, "tokenizer": "meta-llama/Llama-3.2-1B" }, "secrets": { "hf_token": "arn:aws:secretsmanager:us-west-2:111122223333:secret:my-hf-token-AbCdEf" }, "tooling": { "api_standard": "openai" } }

워크로드 사양 키

워크로드 사양에는 다음과 같은 최상위 키가 포함되어 있습니다. 알 수 없는 키는 거부됩니다.

벤치마크

필수 매핑. 사용할 벤치마킹 도구를 식별합니다.

benchmark/type

필수 사항입니다. 벤치마크 엔진입니다. 유일한 유효 값은 aiperf입니다.

parameters

선택적 매핑. AIPerf 엔진에 전달된 파라미터를 벤치마크합니다. 알 수 없는 파라미터 이름은 거부됩니다. 달리 명시되지 않는 한 모든 파라미터는 선택 사항입니다.

토큰 배포

prompt_input_tokens_mean

정수. 합성 프롬프트 생성을 위한 요청당 평균 입력 토큰 수입니다. 별칭: synthetic_input_tokens_mean, isl.

prompt_input_tokens_stddev

부동 소수점. 입력 토큰 수의 표준 편차입니다. 별칭: synthetic_input_tokens_stddev, isl_stddev.

output_tokens_mean

정수. 요청당 평균 출력 토큰 수입니다. 별칭: prompt_output_tokens_mean, osl.

output_tokens_stddev

부동 소수점. 출력 토큰 수의 표준 편차입니다. 별칭: prompt_output_tokens_stddev, osl_stddev.

트래픽 셰이핑

concurrency

정수. 벤치마크 중에 보낼 동시 요청 수입니다.

request_count

정수. 전송할 총 요청 수입니다. 별칭: num_requests.

request_rate

부동 소수점. 초당 대상 요청 수입니다.

benchmark_duration

정수. 벤치마크의 초 단위 지속 시간입니다.

max_concurrency

정수. 허용되는 최대 동시 요청 수입니다.

request_rate_mode

문자열. 도착 패턴을 요청합니다. 별칭: arrival_pattern.

arrival_smoothness

부동 소수점. 요청 도착의 버스트를 제어합니다. 값이 높을수록 트래픽이 더 부드러워집니다. 별칭: vllm_burstiness.

prefill_concurrency

정수. 동시 사전 채우기 요청 수입니다.

일반

streaming

부울. 스트리밍 응답을 사용할지 여부입니다. 기본값: true.

tokenizer

문자열. 토큰을 계산하는 데 사용되는 토큰화기의 HuggingFace 모델 이름 또는 로컬 디렉터리 경로입니다. 예시: meta-llama/Llama-3.2-1B.

hf_token

문자열. 게이트 모델 및 토큰화기를 다운로드하기 위한 Hugging Face 액세스 토큰입니다. 별칭: HF_TOKEN. 민감한 값의 경우 토큰을 일반 텍스트로 전달하는 대신 secrets 섹션을 사용합니다.

request_timeout_seconds

정수. 개별 요청에 대한 초 단위 제한 시간입니다.

benchmark_grace_period

정수. 진행 중인 요청이 완료될 수 있도록 벤치마크가 완료된 후 초 단위의 유예 기간입니다.

extra_inputs

문자열. 각 요청 페이로드에 포함할 추가 JSON 인코딩 입력입니다.

random_seed

정수. 난수 생성을 위해 시드됩니다. 기본값: 42.

verbose

부울. 상세 정보 로깅을 활성화합니다. 기본값: false.

num_conversations

정수. 시뮬레이션할 멀티턴 대화 수입니다. 별칭: conversation_num, num_sessions.

model_selection_strategy

문자열. 엔드포인트에서 여러 모델을 사용할 수 있는 경우 모델을 선택하는 전략입니다.

웜 업

워밍업 파라미터는 측정된 벤치마크 전에 실행되는 선택적 워밍업 단계를 제어합니다. 그러면 모델 서버의 캐시와 JIT 컴파일이 준비됩니다.

warmup_duration

정수. 초 단위의 워밍업 단계 지속 시간입니다.

warmup_request_count

정수. 워밍업 요청 수입니다. 별칭: num_warmup_requests.

warmup_concurrency

정수. 워밍업 중 동시성 수준입니다.

warmup_prefill_concurrency

정수. 워밍업 중에 동시성을 미리 채웁니다.

warmup_request_rate

부동 소수점. 워밍업 중 요청 속도입니다.

warmup_arrival_pattern

문자열. 워밍업 중 도착 패턴.

warmup_grace_period

부동 소수점. 워밍업이 완료된 후 초 단위의 유예 기간입니다.

num_warmup_sessions

정수. 워밍업 세션 수입니다.

데이터세트

public_dataset

문자열. 합성 생성 대신 벤치마크 프롬프트에 사용할 퍼블릭 데이터 세트의 이름입니다.

custom_dataset_type

문자열. Amazon S3를 통해 제공되는 사용자 지정 데이터 세트의 형식입니다.

input_file

문자열. 벤치마크 컨테이너 내의 입력 데이터 세트 파일 경로입니다. DatasetConfig 파라미터를 통해 데이터 세트를 제공하면 데이터가에 마운트됩니다/opt/ml/input/data/{ChannelName}/. 이 파라미터를 사용하여 해당 탑재 경로 내의 특정 파일을 가리킵니다.

이미지 입력

이미지 입력을 허용하는 멀티모달 모델을 벤치마킹하기 위한 파라미터입니다.

image_width_mean

부동 소수점. 합성 이미지의 평균 너비를 픽셀 단위로 표시합니다.

image_width_stddev

부동 소수점. 이미지 너비의 표준 편차입니다.

image_height_mean

부동 소수점. 합성 이미지의 평균 높이를 픽셀 단위로 표시합니다.

image_height_stddev

부동 소수점. 이미지 높이의 표준 편차입니다.

image_batch_size

정수. 요청당 이미지 수입니다. 별칭: batch_size_image.

image_format

문자열. 이미지 형식(예: , pngjpeg).

비디오 입력

비디오 입력을 수락하는 멀티모달 모델을 벤치마킹하기 위한 파라미터입니다.

video_batch_size

정수. 요청당 비디오 수입니다. 별칭: batch_size_video.

video_duration

부동 소수점. 초 단위의 합성 비디오 지속 시간입니다.

video_fps

정수. 합성 비디오의 초당 프레임 수입니다.

video_width

정수. 합성 비디오의 픽셀 단위 너비입니다.

video_height

정수. 합성 비디오의 픽셀 단위 높이입니다.

video_synth_type

문자열. 합성 비디오 생성 유형입니다.

video_format

문자열. 비디오 컨테이너 형식입니다.

video_codec

문자열. 비디오 코덱.

video_audio_sample_rate

정수. 오디오 샘플 레이트(Hz)입니다.

video_audio_num_channels

정수. 오디오 채널의 수입니다.

video_audio_codec

문자열. 오디오 코덱.

video_audio_depth

문자열. 오디오 비트 깊이입니다.

보안 암호

선택적 매핑. 이 섹션에서는에 일반 텍스트로 포함하는 대신 AWS Secrets Manager 보안 암호를 참조하여 민감한 값(예: Hugging Face 액세스 토큰)을 전달합니다parameters.

각 키는 파라미터 이름이고 값은 AWS Secrets Manager에서 보안 암호의 ARN입니다. 작업 시작 시 서비스는 보안 암호를 확인하고 벤치마크 환경에 값을 주입합니다.

"secrets": { "hf_token": "arn:aws:secretsmanager:us-west-2:111122223333:secret:my-hf-token-AbCdEf" }

도구

선택적 매핑. API 표준 및 도구 버전을 지정합니다.

tooling/api_standard

선택 사항. 엔드포인트에서 사용하는 API 표준입니다. 예를 들어 openai입니다.

tooling/version

선택 사항. 벤치마킹 도구의 버전입니다. 기본값은 사용 가능한 최신 버전입니다.