

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

# 生成 AI 推論デプロイの推奨事項を取得する
<a name="generative-ai-inference-recommendations-get-started"></a>

AI レコメンデーションジョブは、モデルとワークロードの特性を分析して、コスト、レイテンシー、スループットに最適化されたデプロイ設定を生成します。このサービスは、インスタンスタイプを評価し、投機的デコードなどの最適化を適用し、実際の GPU インフラストラクチャの各設定をベンチマークします。

## 前提条件
<a name="generative-ai-inference-recommendations-get-started-prereqs"></a>

レコメンデーションジョブを作成する前に、以下が必要です。
+ SafeTensor の重みを持つ HuggingFace チェックポイント形式で Amazon S3 に保存されるモデルアーティファクト
+ レコメンデーション出力用の Amazon S3 バケット
+ モデルアーティファクトと出力バケットへの SageMaker AI アクセスを許可する AWS Identity and Access Management (IAM) 実行ロール

## ステップ 1: レコメンデーションジョブを作成する
<a name="generative-ai-inference-recommendations-get-started-create"></a>

レコメンデーションジョブはモデルを分析し、デプロイのレコメンデーションを生成します。モデルの場所、出力の場所、ワークロード設定、パフォーマンスターゲットを指定します。

**Python (boto3)**

```
response = client.create_ai_recommendation_job(
    AIRecommendationJobName="my-recommendation-job",
    ModelSource={
        "S3": {
            "S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/",
        }
    },
    OutputConfig={
        "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/"
    },
    PerformanceTarget={
        "Constraints": [
            {"Metric": "ttft-ms"}
        ]
    },
    AIWorkloadConfigIdentifier="my-recommendation-workload",
    RoleArn="arn:aws:iam::111122223333:role/ExampleRole",
)
print(response["AIRecommendationJobArn"])
```

**AWS CLI**

```
aws sagemaker create-ai-recommendation-job \
  --ai-recommendation-job-name "my-recommendation-job" \
  --model-source '{"S3": {"S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/"}}' \
  --output-config '{"S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/"}' \
  --performance-target '{"Constraints": [{"Metric": "ttft-ms"}]}' \
  --ai-workload-config-identifier "my-recommendation-workload" \
  --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \
  --region us-west-2
```

オプションで次のパラメータを指定することもできます。

`ComputeSpec`  
評価するインスタンスタイプを制限します (最大 3 つ）。例: `{"InstanceTypes": ["ml.g5.12xlarge", "ml.p4d.24xlarge"]}`

`OptimizeModel`  
投機的デコードなどのモデルの最適化を可能にする`true`には、 に設定します。

`InferenceSpecification`  
推論フレームワークを指定します。有効な値: `LMI`、`VLLM`。

## ステップ 2: ジョブのステータスをモニタリングする
<a name="generative-ai-inference-recommendations-get-started-monitor"></a>

終了状態になるまでジョブステータスをポーリングします。

**Python (boto3)**

```
import time

while True:
    response = client.describe_ai_recommendation_job(
        AIRecommendationJobName="my-recommendation-job"
    )
    status = response["AIRecommendationJobStatus"]
    print(f"Status: {status}")
    if status in ("Completed", "Failed", "Stopped"):
        break
    time.sleep(30)
```

**AWS CLI**

```
aws sagemaker describe-ai-recommendation-job \
  --ai-recommendation-job-name "my-recommendation-job" \
  --region us-west-2
```

## ステップ 3: レコメンデーションを確認する
<a name="generative-ai-inference-recommendations-get-started-results"></a>

ジョブが完了すると、describe レスポンスには`Recommendations`配列が含まれます。各レコメンデーションには、以下の情報を含むデプロイ可能な設定が含まれています。

`DeploymentConfiguration`  
コンテナイメージ URI、インスタンスタイプ、インスタンス数、環境変数。この設定を使用して、SageMaker AI エンドポイントに直接デプロイできます。

`ExpectedPerformance`  
最初のトークンまでの時間 (TTFT)、P90 および P99 でのリクエストレイテンシー、1 秒あたりのトークンのスループット、リクエストスループットなどの検証済みパフォーマンスメトリクス。

`OptimizationDetails`  
投機的デコードやカーネルチューニングなどの最適化手法とその設定パラメータを適用しました。

次の最適化手法を適用できます。

投機デコーディング  
投機的デコードは、一度に 1 つのトークンではなく複数のトークンを並行して処理することで、テキスト生成を高速化します。軽量投機家は 1 つのステップで複数の候補トークンを提案し、プライマリモデルはそれらを 1 つのフォワードパスで一緒に検証し、独自のディストリビューションに同意する候補を保持して残りを破棄します。投機家は、プライマリモデルのデータディストリビューションに合わせてトレーニングされ、より多くの提案が受け入れられます。これにより、フォワードパスごとに生成されるより有用なトークンに直接変換されます。プライマリモデルの出力分布は保持されるため、応答品質は変更されません。その結果、1 秒あたりの出力トークンが増加し、トークン間レイテンシー (ITL) が低くなり、スループットメトリクスが向上します。

カーネルチューニング  
カーネルチューニングは、モデル実行グラフを解析して、注意やフュージョン演算子カーネルなど、チューニングに適したパフォーマンスクリティカルなカーネルを特定することから始めます。その後、起動パラメータとタイルパラメータが調整され、実装がターゲット GPU ハードウェアと同時実行などの予想されるトラフィックパターンによりよく一致します。これらのパラメータはメモリの再利用、キャッシュのローカリティ、並列処理に影響を与え、実行効率を向上させます。データのロードとコンピューティングに使用されるパイプラインステージの数も調整され、メモリの移動と計算の重複に役立ちます。モデル、ハードウェア、サービスワークロードの特定の組み合わせに合わせてこれらのパラメータを調整することで、カーネル調整は GPU を最大限に活用することでスループットとレイテンシーを向上させます。

次のパフォーマンスターゲットメトリクスを使用できます。

`ttft-ms`  
最初のトークンまでの時間をミリ秒単位で指定します。

`throughput`  
1 秒あたりのトークン数。

`cost`  
デプロイ設定の 1 時間あたりのコスト。

`ExpectedPerformance` レスポンスの各メトリクスには、統計メジャーを示す`Stat`フィールド、`Value`、およびオプションの が含まれます`Unit`。一般的な統計には、`average`、、`p50`、`p90`、`p95``p99`、`max`、および が含まれます`min`。

## レコメンデーションリソースを管理する
<a name="generative-ai-inference-recommendations-get-started-manage"></a>

次のオペレーションを使用して、レコメンデーションジョブとワークロード設定を管理します。

```
# List recommendation jobs
response = client.list_ai_recommendation_jobs(MaxResults=10)
for job in response["AIRecommendationJobs"]:
    print(f"{job['AIRecommendationJobName']} - {job['AIRecommendationJobStatus']}")

# Stop a running job
client.stop_ai_recommendation_job(
    AIRecommendationJobName="my-recommendation-job"
)

# Delete a job (must be in a terminal state)
client.delete_ai_recommendation_job(
    AIRecommendationJobName="my-recommendation-job"
)

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

# Delete a workload configuration
client.delete_ai_workload_config(
    AIWorkloadConfigName="my-recommendation-workload"
)
```