

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 生成 AI 推論レコメンデーションのワークロード設定をセットアップする
<a name="generative-ai-inference-recommendations-workload-config"></a>

ワークロード設定は、モデルまたはエンドポイントを評価するときに SageMaker AI が使用するトラフィックパターンとベンチマークパラメータを定義します。レコメンデーションジョブまたはベンチマークジョブを実行する前に、ワークロード設定を作成します。同じワークロード設定を複数のジョブで再利用できます。

ワークロードは、次の 2 つの方法で定義できます。
+ **インライン仕様。**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` です。

#### パラメータ
<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`  
浮動小数点。1 秒あたりのターゲットリクエスト数。

`benchmark_duration`  
整数。秒単位のベンチマークの期間。

`max_concurrency`  
整数。許可される同時リクエストの最大数。

`request_rate_mode`  
文字列。リクエストの到着パターン。エイリアス: `arrival_pattern`

`arrival_smoothness`  
浮動小数点。リクエストの到着のバーストを制御します。値を大きくすると、トラフィックがスムーズになります。エイリアス: `vllm_burstiness`

`prefill_concurrency`  
整数。同時事前入力リクエストの数。

**全般**

`streaming`  
Boolean。ストリーミングレスポンスを使用するかどうか。デフォルト: `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`  
Boolean。詳細なログ記録を有効にします。デフォルト: `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`  
整数。合成ビデオの 1 秒あたりのフレーム数。

`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`  
オプション。ベンチマークツールのバージョン。デフォルトは利用可能な最新バージョンです。