

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為生成式 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>

如果您有代表性的真實請求資料集，請使用 `DatasetConfig` 參數搭配 `InputDataConfig`頻道透過 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`  
選用。基準測試工具的版本。預設為最新的可用版本。