View a markdown version of this page

获取生成式 AI 推理部署建议 - 亚马逊 SageMaker AI

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

获取生成式 AI 推理部署建议

AI 推荐作业会分析您的模型和工作负载特征,以生成针对成本、延迟或吞吐量进行了优化的部署配置。该服务评估实例类型,应用推测性解码等优化,并在真实的 GPU 基础设施上对每种配置进行基准测试。

先决条件

在创建推荐作业之前,您需要满足以下条件:

  • 以 HuggingFace 检查点格式对存储在 Amazon S3 中的工件进行建模,并带有 SafeTensor 权重

  • 用于推荐输出的 Amazon S3 存储桶

  • AWS 身份和访问管理 (IAM) Access Management 执行角色,可 SageMaker 授予 AI 访问您的模型工件和输出存储桶的权限

步骤 1:创建推荐作业

推荐任务会分析您的模型并生成部署建议。您可以指定模型位置、输出位置、工作负载配置和性能目标。

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

限制要评估的实例类型(最多三个)。例如:{"InstanceTypes": ["ml.g5.12xlarge", "ml.p4d.24xlarge"]}

OptimizeModel

设置为true允许模型优化,例如推测性解码。

InferenceSpecification

指定推理框架。有效值:LMIVLLM

步骤 2:监控作业状态

轮询任务状态,直到其达到终止状态。

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 步:查看建议

任务完成后,描述响应将包含一个Recommendations数组。每项建议都包含具有以下信息的部署就绪配置:

DeploymentConfiguration

容器镜像 URI、实例类型、实例计数和环境变量。您可以使用此配置直接部署到 A SageMaker I 终端节点。

ExpectedPerformance

经过验证的性能指标,包括第一个令牌的时间 (TTFT)、P90 和 P99 时的请求延迟、每秒令牌吞吐量以及请求吞吐量。

OptimizationDetails

应用了诸如推测性解码或内核调整之类的优化技术及其配置参数。

可以应用以下优化技术:

推测解码

推测性解码通过并行处理多个令牌而不是一次处理一个令牌来加快文本生成。一个轻量级的投机者在一个步骤中提出了几个候选代币,然后主模型在一次向前传递中将它们一起验证,保留同意自己分配的候选代币,而丢弃其余的候选代币。对投机者进行训练,使其与主模型的数据分布保持一致,以便其更多的提案被接受,这直接转化为每次向前传递产生的更有用的代币。保留了主模型的输出分布,因此响应质量保持不变。结果是更高的每秒输出令牌和更低的代币间延迟 (ITL),从而改善您的吞吐量指标。

内核调整

内核调整从解析模型执行图开始,以确定适合调整的性能关键内核,例如注意力和融合的运算符内核。然后调整它们的启动和平铺参数,以便实现与目标 GPU 硬件和预期的流量模式(例如并发性)更好地匹配。这些参数会影响内存重用、缓存局部性和并行性,从而提高执行效率。还调整了用于加载数据和计算的流水线阶段的数量,这有助于将内存移动与计算重叠。通过针对模型、硬件和服务工作负载的特定组合调整这些参数,内核调整可确保 GPU 得到充分利用,从而提高吞吐量和延迟。

以下绩效目标指标可用:

ttft-ms

获得第一个代币的时间(以毫秒为单位)。

throughput

每秒令牌数。

cost

部署配置的每小时成本。

ExpectedPerformance响应中的每个指标都包含一个表示统计度量的Stat字段Value、a 和一个可选字段Unit。常见的统计数据包括:averagep50p90p95p99max、和min

管理推荐资源

使用以下操作来管理您的推荐任务和工作负载配置。

# 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" )