本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为生成式 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_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-encoded 输入。
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-
字符串。音频位深度。
密钥
可选的映射。使用本节通过 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-
可选。基准测试工具的版本。默认为最新的可用版本。