自动化 Amazon Bedrock 批量推理:构建可扩展和高效的管道 机器学习博客
在 Amazon Bedrock 上自动化批量推理:构建可扩展高效的管道
作者: Yanyan Zhang Ishan Singh 和 Neeraj Lamba日期: 2024年10月29日分类: Amazon Bedrock Amazon DynamoDB 人工智能 AWS Lambda 生成性 AI
关键要点
Amazon Bedrock 是一项全托管服务,提供来自领先 AI 公司如 AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI 和 Amazon的高性能基础模型FMs。批量推理 适合处理大量数据,当对实时结果的需求不高时,可以高效地完成任务,且成本仅为按需价格的50。本文介绍了一种解决方案,利用 AWS Lambda 和 Amazon DynamoDB 构建了一个可扩展的队列管理系统,以自动监控可用的作业槽并在槽位可用时提交新作业。Amazon Bedrock 是一项全面管理的服务,用户可以通过单一 API 获取来自多个领先 AI 公司的高性能基础模型FMs,同时具备构建生成性 AI 应用程序所需的广泛功能,以确保安全性、隐私和负责任的 AI。
批量推理的优势
批量推理 在不需要实时结果的情况下,可有效处理大量数据。它非常适合那些对延迟不敏感的工作负载,如生成嵌入、实体提取以及文本分类和摘要等商业报告任务。其一个主要优势是具有成本效益,批量推理的费用相比按需定价低50。有关当前支持的AWS 区域和模型的信息,请参见支持的区域和模型。
尽管批量推理有许多好处,但在每个区域每个模型上提交的批量推理作业数量限制为 10 个。为了解决这一点并提高批量推理的使用效率,我们开发了一种使用 AWS Lambda 和 Amazon DynamoDB 的可扩展解决方案。本文将指导您实现一个队列管理系统,该系统会自动监控可用的作业槽,并在槽位可用时提交新作业。
我们将详细介绍解决方案中的核心逻辑。到最后,您将理解如何实施此解决方案,从而最大化 Amazon Bedrock 上批量推理工作流的效率。如果您需要有关如何启动 Amazon Bedrock 批量推理作业的说明,请参见使用 Amazon Bedrock 提升呼叫中心效率的批量推理。

解决方案概述
本文所介绍的解决方案使用 Amazon Bedrock 的批量推理,采用以下架构高效处理大量请求:
主要步骤包括:
用户将待处理的文件上传到 Amazon S3 桶 brbatchinference{AccountId}{AWSRegion} 的 toprocess 文件夹。此时,Amazon S3 将调用 {stackname}createbatchqueue{AWSRegion} 的 Lambda 函数。被调用的 Lambda 函数将在 DynamoDB 表中创建新的作业条目,状态为“待处理”。DynamoDB 表在整个作业周期内跟踪和管理批量推理作业,存储作业 ID、状态、创建时间和其他元数据。每 15 分钟调度运行的 Amazon EventBridge 规则 调用 {stackname}processbatchjobs{AWSRegion} 的 Lambda 函数。Lambda 函数执行若干关键任务:扫描 DynamoDB 表中处于 InProgress、Submitted、Validation 和 Scheduled 状态的作业根据 Amazon Bedrock 的最新信息更新 DynamoDB 中的作业状态计算可用作业槽,并在槽位可用时从 Pending 队列提交新作业处理错误场景,通过更新作业状态为 Failed 并记录错误细节以便排查Lambda 函数调用 GetModelInvocationJob API,以获取 Amazon Bedrock 中批量推理作业的最新状态。然后,Lambda 函数使用 UpdateItem API 调用更新 DynamoDB 中作业的状态,确保表始终反映每个作业的最新状态。Lambda 函数在达到批量推理作业的 服务配额限制 之前计算可用的作业槽数量,并根据结果从待处理状态中查询可以提交的作业。如果有可用槽,Lambda 函数将发出 CreateModelInvocationJob API 调用,为待处理的作业创建新的批量推理作业。更新 DynamoDB 表,记录在上一步中创建的批量推理作业的状态。一旦某个批量作业完成,其输出文件将在 S3 桶 brbatchinference{AccountId}{AWSRegion} 的 processed 文件夹中可用。前提条件
要执行此解决方案,您需要满足以下前提条件:
一个有效的 AWS 账户。一个位于批量推理 支持的区域 的 AWS 区域。可以访问您选定的在 Amazon Bedrock 上托管的模型。确保该模型在 Amazon Bedrock 中已经启用 selected model has been enabled。如果您计划为批量推理使用自己的 AWS 身份和访问管理 (IAM) 角色,请确保创建具有信任策略并访问 Amazon S3 的权限对输入数据所在文件夹具有读取权限,对存储输出数据的文件夹具有写入权限。部署指南
要部署此管道,请完成以下步骤:
选择 Launch Stack 按钮:
选择 Next ,如下图所示:
指定符合您用例的管道详细信息:
Stack name (Required) 指定的 AWS CloudFormation 名称。名称必须在您创建的区域内唯一。ModelId (Required) 提供需要批量作业运行的 模型 ID。RoleArn (Optional) 默认情况下,CloudFormation 堆栈将部署一个具有所需权限的新 IAM 角色。如果您有希望使用的角色而不是创建新角色,请提供具有足够权限在 Amazon Bedrock 中创建批量推理作业以及在创建的 S3 桶 brbatchinference{AccountId}{AWSRegion} 中进行读写的 IAM 角色 Amazon Resource Name (ARN)。按照前提条件部分中的说明来创建此角色。
在 Amazon 配置堆栈选项部分,如果需要,可以添加可选的标签、权限和其他高级设置。或者,您可以留空并选择 Next ,如下图所示:
审核堆栈详情,并选择 我承认 AWS CloudFormation 可能会创建 AWS IAM 资源,如下图所示:
选择 提交。这将启动您 AWS 账户中的管道部署过程。
堆栈成功部署后,您可以开始使用管道。首先,在创建的 Amazon S3 位置下创建一个 /toprocess 文件夹。上传到此文件夹的 jsonl 文件将会创建批量作业,使用所选模型。以下是您可以在 DynamoDB 表中跟踪作业状态和其他相关元数据的示例截图。
在管道中的第一个批量作业完成后,管道将在同一桶下创建 /processed 文件夹,如下图所示。批量作业输出将存储在此文件夹中。
要开始使用此管道,请上传您为 Amazon Bedrock 准备的 jsonl 文件。
您完成了!成功部署您的管道后,您可以在 Amazon Bedrock 控制台中检查批量作业状态。如果您希望获取有关每个 jsonl 文件状态的更多信息,请前往创建的 DynamoDB 表 {StackName}DynamoDBTable{UniqueString} 进行检查。您可能需要等待最多 15 分钟才能观察到创建的批量作业,因为 EventBridge 被调度为每 15 分钟扫描一次 DynamoDB。
清理
如果您不再需要此自动化管道,请遵循以下步骤删除它所创建的资源,以避免额外费用:
在 Amazon S3 控制台中,手动删除桶内的内容。在进入第 2 步之前,请确保桶是空的。在 AWS CloudFormation 控制台中,选择导航窗格中的 Stacks。选择已创建的堆栈并选择 删除 ,如下图所示:这将自动删除已部署的堆栈。
结论
在本文中,我们介绍了一种可扩展和高效的解决方案,用于自动化 Amazon Bedrock 中的批量推理作业。通过使用 AWS Lambda、Amazon DynamoDB 和 Amazon EventBridge,我们解决了管理大规模批处理工作流中的关键挑战。
该解决方案提供了若干显著的好处:
自动化的队列管理 通过动态管理作业槽和提交,最大化吞吐量。成本优化 利用批量推理定价的50折扣,实现经济高效的大规模处理。此自动化管道显著增强了您使用 Amazon Bedrock 进行批量推理处理大量数据的能力。无论您是在生成嵌入、分类文本,还是大规模分析内容,此解决方案提供了一种可扩展、高效且具成本效益的批量推理方法。
在实施此解决方案时,请定期审查和优化您的配置,以满足特定工作负载模式和需求。借助此自动化管道和 Amazon Bedrock 的强大功能,您将能够有效且高效地处理大规模 AI 推理任务。我们鼓励您尝试,并分享您的反馈,以帮助我们不断改进此解决方案。
相关资源
用户指南 使用批量推理处理多个提示代码示例 为您的批量推理作业构建的示例博客文章 使用 Amazon Bedrock 的批量推理提升呼叫中心效率关于作者
Yanyan Zhang 是 Amazon Web Services 的高级生成性 AI 数据科学家,专注于前沿的 AI/ML 技术。她帮助客户利用生成性 AI 实现所需的结果。她持有德克萨斯 AampM 大学电气工程博士学位。工作之外,她喜欢旅行、锻炼和探索新事物。
Ishan Singh 是 Amazon Web Services 的生成性 AI 数据科学家,致力于帮助客户建立创新且负责任的生成性 AI 解决方案和产品。他在 AI/ML 方面有着扎实的背景,专注于推动商业价值的生成性 AI 解决方案。在闲暇时间,他喜欢打排球、探索当地自行车道,以及和妻子和狗一起度过时光。
飞驰加速器app下载Neeraj Lamba 是 Amazon Web Services 全球公共部门专业服务的云基础设施架构师,帮助客户设计云解决方案并提供技术指导以转型他们的业务。在闲暇时间,他喜欢旅行、打网球和尝试新技术。