View a markdown version of this page

为生成式 AI 推理建议设置工作负载配置 - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为生成式 AI 推理建议设置工作负载配置

工作负载配置定义了 SageMaker AI 在评估您的模型或端点时使用的流量模式和基准参数。在运行推荐作业或基准测试作业之前,您需要创建工作负载配置。相同的工作负载配置可以在多个作业中重复使用。

您可以通过两种方式定义工作负载:

  • 内联规范。直接在 API 调用中指定代币分配和流量参数。

  • 来自亚马逊 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

参数

可选的映射。传递给 aiPerf 引擎的基准参数。未知的参数名称会被拒绝。除非另有说明,否则所有参数均为可选参数。

代币分配

prompt_input_tokens_mean

整数。生成合成提示的每个请求的输入令牌的平均数。别名:synthetic_input_tokens_meanisl

prompt_input_tokens_stddev

浮动。输入令牌计数的标准差。别名:synthetic_input_tokens_stddevisl_stddev

output_tokens_mean

整数。每个请求的输出令牌的平均数。别名:prompt_output_tokens_meanosl

output_tokens_stddev

浮动。输出代币计数的标准差。别名:prompt_output_tokens_stddevosl_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-encoded 输入。

random_seed

整数。生成随机数的种子。默认值:42

verbose

布尔值。启用详细日志。默认值:false

num_conversations

整数。要模拟的多回合对话数量。别名:conversation_numnum_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 Huging Face 访问令牌)。parameters

每个密钥都是一个参数名称,其值是 Secrets Manager 中 AWS 密钥的 ARN。在作业启动时,该服务会解析密钥并将该值注入基准测试环境。

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

工具

可选的映射。指定 API 标准和工具版本。

tooling/api_standard

可选。端点使用的 API 标准。例如 openai

tooling/version

可选。基准测试工具的版本。默认为最新的可用版本。