

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

# 생성형 AI 추론 권장 사항을 위한 워크로드 구성 설정
<a name="generative-ai-inference-recommendations-workload-config"></a>

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

다음 두 가지 방법으로 워크로드를 정의할 수 있습니다.
+ **인라인 사양.** API 직접 호출에서 토큰 배포 및 트래픽 파라미터를 지정합니다.
+ **Amazon S3의 데이터 세트.** `DatasetConfig` 파라미터를 사용하여 실제 요청의 대표적인 데이터 세트를 제공합니다.

## 인라인 파라미터를 사용하여 워크로드 구성 생성
<a name="generative-ai-inference-recommendations-workload-config-inline"></a>

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

**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
```

## 데이터 세트를 사용하여 워크로드 구성 생성
<a name="generative-ai-inference-recommendations-workload-config-dataset"></a>

실제 요청의 대표 데이터 세트가 있는 경우 `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에서 사용자 지정 데이터 세트를 제공할 수도 있습니다.

## 벤치마킹을 위한 워크로드 구성
<a name="generative-ai-inference-recommendations-workload-config-benchmark"></a>

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

```
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"},
}
```

## 워크로드 구성 관리
<a name="generative-ai-inference-recommendations-workload-config-manage"></a>

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

```
# 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"
)
```

## 워크로드 사양 참조
<a name="generative-ai-inference-recommendations-workload-config-reference"></a>

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

### 구문
<a name="generative-ai-inference-recommendations-workload-config-syntax"></a>

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

```
{
    "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"
    }
}
```

### 워크로드 사양 키
<a name="generative-ai-inference-recommendations-workload-config-keys"></a>

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

#### 벤치마크
<a name="workload-config-ref-benchmark"></a>

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

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

#### parameters
<a name="workload-config-ref-parameters"></a>

선택적 매핑. 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`  
문자열. 이미지 형식(예: , `png``jpeg`).

**비디오 입력**

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

`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`  
문자열. 오디오 비트 깊이입니다.

#### 보안 암호
<a name="workload-config-ref-secrets"></a>

선택적 매핑. 이 섹션에서는에 일반 텍스트로 포함하는 대신 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"
}
```

#### 도구
<a name="workload-config-ref-tooling"></a>

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

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

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