公司动态
首页 > 公司动态 > 通过新的推理优化工具包,实现在 Amazon SageMaker 上的生成式 AI 推理吞吐量提高近

通过新的推理优化工具包,实现在 Amazon SageMaker 上的生成式 AI 推理吞吐量提高近

2026 .01 .27

提升 Amazon SageMaker 中生成 AI 推理性能的最佳实践 第 2 部分

by James Wu Kumara Swami Borra Qing Lan Qiyun Zhao Rishabh Ray Chaudhury and Saurabh Trikande 于 2024 年 7 月 9 日发布于 Amazon SageMaker。

关键要点

Amazon SageMaker 推出的推理优化工具包可提升生成 AI 模型的推理吞吐量高达 2 倍,并降低成本约 50。新的优化技术如编译、量化和推测解码可加快模型优化过程,缩短从几个月到几小时的时间。通过 Amazon SageMaker JumpStart 或 Python SDK,可以轻松实现模型部署和优化,支持多种模型和配置。

在生成 AI 推理日益重要的商业环境中,客户渴望提升生成 AI 操作的规模或将生成 AI 模型集成到现有工作流程中。模型优化愈发成为关键步骤,以在成本效益和响应能力之间取得平衡,从而提高生产力。然而,各种用例的性价比需求各不相同。聊天应用程序通常要求最低延迟,以提供交互式体验,而实时应用程序如推荐系统则要求最大化吞吐量。针对这些权衡,快速采用生成 AI 变得尤其具有挑战性,因为必须仔细选择和评估不同的优化技术。

为了克服这些挑战,我们很高兴地介绍推理优化工具包,这是 Amazon SageMaker 中一项完全托管的模型优化功能。该新特性可为 Llama 3、Mistral 和 Mixtral 等生成 AI 模型提供高达 2 倍的吞吐量,同时降低约 50的成本。例如,使用 Llama 370B 模型,您可以在 mlp548xlarge 实例上实现高达 2400 tokens/sec 的速度,而以前未优化的速度为约 1200 tokens/sec。

推理优化工具包采用最新的生成 AI 模型优化技术,如 编译、量化 和 推测解码,帮助您将生成 AI 模型的优化时间从几个月减少到几小时,同时为您的应用场景实现最佳的性价比。编译方面,工具包利用 Neuron 编译器针对特定硬件 如 AWS Inferentia优化模型的计算图,从而提升运行时间并减少资源利用率。量化方面,工具包使用激活感知权重量化 (AWQ) 有效缩小模型尺寸和内存占用,同时保持质量。推测解码方面,工具包利用更快的草案模型并行预测候选输出,从而提升长文本生成任务的推理速度。要了解更多关于每种技术的信息,请访问 优化 Amazon SageMaker 中的模型推理。有关流行开源模型的更多详细信息和基准结果,请查看 利用新推理优化工具包,在 Amazon SageMaker 中实现高达 2 倍的吞吐量,并将成本降低约 50 第 1 部分。

在这篇文章中,我们将演示如何使用推理优化工具包支持的模型启动 Amazon SageMaker JumpStart ,以及 Amazon SageMaker Python SDK。 SageMaker JumpStart 是一个完全托管的模型中心,可让您仅需几次点击即可探索、微调和部署流行的开源模型。您可以使用预优化模型或创建自己的自定义优化。同时,您还可以通过 SageMaker Python SDK 完成此过程,具体见下方示例笔记本。要查看完整的支持模型列表,请参考 优化 Amazon SageMaker 中的模型推理。

在 SageMaker JumpStart 中使用预优化模型

推理优化工具包提供了预优化模型,这些模型已针对出色的成本效益进行了优化且没有影响准确性。您可以根据用例的延迟和吞吐量要求选择配置,并只需一次点击即可部署。

以 SageMaker JumpStart 中的 MetaLlama38b 模型为例,您可以选择模型页面上的 Deploy。在部署配置中,您可以展开模型配置选项,选择并发用户的数量,然后部署优化模型。

使用 SageMaker Python SDK 部署预优化模型

您还可以使用 SageMaker Python SDK,通过几行代码轻松部署一个预优化的生成 AI 模型。在以下代码中,我们为 SageMaker JumpStart 模型设置 ModelBuilder 类。ModelBuilder 类提供了对各种部署方面的细致控制,如实例类型、网络隔离和资源分配。您可以使用它创建可部署的模型实例,将框架模型如 XGBoost 或 PyTorch或推理规格转换为可用于部署的 SageMaker 兼容模型。有关更多详细信息,请参阅 在 Amazon SageMaker 中创建模型与 ModelBuilder。

pythonsampleinput = { inputs Hello Im a language model parameters {maxnewtokens 128 dosample True}}

sampleoutput = [ { generatedtext Hello Im a language model and Im here to help you with your English }]

通过新的推理优化工具包,实现在 Amazon SageMaker 上的生成式 AI 推理吞吐量提高近

schemabuilder = SchemaBuilder(sampleinput sampleoutput)

builder = ModelBuilder( model=metatextgenerationllama38b # JumpStart 模型 ID schemabuilder=schemabuilder rolearn=rolearn)

通过以下代码列出可用的预基准配置:

pythonbuilderdisplaybenchmarkmetrics()

根据您的并发用户、延迟和吞吐量要求,从列表中选择合适的 instancetype 和 configname。在前面的表格中,您可以看到针对给定实例类型和配置名称,不同并发水平的延迟和吞吐量情况。如果配置名称为 lmioptimized,则表示 SageMaker 已对该配置进行了预优化。然后您可以调用 build() 运行优化任务。任务完成后,您可以部署到端点并测试模型预测。请查看以下代码:

python

设置带有预配置优化的部署配置

buildersetdeploymentconfig( instancetype=mlg512xlarge configname=lmioptimized)

构建可部署模型

model = builderbuild()

将模型部署到 SageMaker 端点

predictor = modeldeploy(accepteula=True)

使用示例输入有效负载测试已部署的端点

predictorpredict(sampleinput)

使用推理优化工具包创建自定义优化

除了创建预优化模型外,您还可以根据所选择的实例类型创建自定义优化。下表提供了所有可用组合的完整列表。接下来的部分中,我们首先探索在 AWS Inferentia 上进行的编译,然后尝试适用于 GPU 实例的其他优化技术。

实例类型优化技术配置AWS Inferentia编译Neuron 编译器GPUs量化AWQGPUs推测解码SageMaker 提供或自定义BYO草案模型

SageMaker JumpStart 的编译

对于编译,您可以选择同样的 MetaLlama38b 模型,然后点击模型页面的 Optimize 选项。在优化配置页面,您可以选择 mlinf28xlarge 作为实例类型,并提供优化工件的输出 Amazon Simple Storage Service (Amazon S3) 位置。对于像 Llama 2 70B 这样的大型模型,编译作业可能需要超过一小时。因此,我们建议使用推理优化工具包进行提前编译。这样,您只需编译一次。

使用 SageMaker Python SDK 的编译

在 SageMaker Python SDK 中,您可以通过更改 optimize() 函数中的环境变量来配置编译。有关 compilationconfig 的更多详细信息,请参见 LMI NeuronX 先前编译模型教程。

风驰加速器app下载安装

pythoncompiledmodel = builderoptimize( instancetype=mlinf28xlarge accepteula=True compilationconfig={ OverrideEnvironment { OPTIONTENSORPARALLELDEGREE 2 OPTIONNPOSITIONS 2048 OPTIONDTYPE fp16 OPTIONROLLINGBATCH auto OPTIONMAXROLLINGBATCHSIZE 4 OPTIONNEURONOPTIMIZELEVEL 2 } } outputpath=fs3//{outputbucketname}/compiled/)

将已编译模型部署到 SageMaker 端点

predictor = compiledmodeldeploy(accepteula=True)

使用示例输入有效负载测试已部署的端点

predictorpredict(sampleinput)

从 SageMaker JumpStart 进行量化和推测解码

要优化 GPU 上的模型,mlg512xlarge 是 Llama38b 的默认部署实例类型。您可以作为优化选项选择量化、推测解码或两者。量化使用 AWQ 将模型权重降低到低位INT4表示。而且,您可以提供 S3 输出 URL 来存储优化工件。

使用推测解码,您可以通过使用 SageMaker 提供的草案模型,或从公共 Hugging Face 模型库带入自己的草案模型或从自己的 S3 存储桶上载,来提高延迟和吞吐量。

一旦优化任务完成,您就可以部署模型或在优化模型上运行进一步的评估任务。在 SageMaker Studio 界面中,您可以选择使用默认示例数据集,或通过 S3 URI 提供自己的数据集。撰写时,评估性能选项仅可通过 Amazon SageMaker Studio 界面访问。

使用 SageMaker Python SDK 的量化和推测解码

以下是进行量化的 SageMaker Python SDK 代码片段。您只需在 optimize() 函数中提供 quantizationconfig 属性。

pythonoptimizedmodel = builderoptimize( instancetype=mlg512xlarge accepteula=True quantizationconfig={ OverrideEnvironment { OPTIONQUANTIZE awq } } outputpath=fs3//{outputbucketname}/quantized/)

将优化模型部署到 SageMaker 端点

predictor = optimizedmodeldeploy(accepteula=True)

使用示例输入有效负载测试已部署的端点

predictorpredict(sampleinput)

对于推测解码,您可以改为将 speculativedecodingconfig 属性更改为配置 SageMaker 或自定义模型。您可能需要根据草案模型和目标模型的大小调整 GPU 利用率,以使它们都适应该实例的推理。

pythonoptimizedmodel = builderoptimize( instancetype=mlg512xlarge accepteula=True speculativedecodingconfig={ ModelProvider sagemaker } # speculativedecodingconfig={ # ModelProvider custom # 使用 S3 URI 或 HuggingFace 模型 ID 来提供自定义草案模型 # 注意:使用 HuggingFace 模型 ID 作为草案模型需要 HFTOKEN 在环境变量中 # ModelSource s3//custombucket/draftmodel # })

将优化模型部署到 SageMaker 端点

predictor = optimizedmodeldeploy(accepteula=True)

使用示例输入有效负载测试已部署的端点

predictorpredict(sampleinput)

结论

优化生成 AI 模型的推理性能至关重要,可以提供具有成本效益和响应速度快的生成 AI 解决方案。通过推出推理优化工具包,您如今可以使用最新的技术,如推测解码、编译和量化来优化生成 AI 模型,实现吞吐量高达约 2 倍,并将成本降低约 50。这使您仅需在 SageMaker JumpStart 中点击几下,或通过几行代码便可实现针对特定用例的最佳性价比。推理优化工具包显著简化了模型优化过程,使您的企业能够加速生成 AI 的应用,开辟更多推动业务成果的机会。

要了解更多,请访问 优化 Amazon SageMaker 中的模型推理 和 在 Amazon SageMaker 中实现高达 2 倍的吞吐量并将成本降低约 50 的推理优化工具包 第 1 部分。

作者简介

James Wu 是一名高级 AI/ML 专家解决方案架构师Saurabh Trikande 是一名高级产品经理Rishabh Ray Chaudhury 是一名高级产品经理Kumara Swami Borra 是一名前端工程师Alwin (Qiyun) Zhao 是一名高级软件开发工程师Qing Lan 是一名高级软件开发工程师

加载评论

构建自动化流程,以加速使用 Amazon Bedrock 和 AWS Systems Manager

联系我们
留言

Copyright © 欢迎来到风驰加速器官網|风驰加速器 版权所有 网站地图

WeChat
WeChat

留言框-

欢迎来到风驰加速器官網|风驰加速器

13594780068