背景
Amazon Bedrock 是一项强大的服务,可以帮助客户基于先进的基础模型(FMs),轻松地构建和扩展基于生成式人工智能的应用程序。这些模型由领先的人工智能公司(如 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和亚马逊)提供,具有出色的性能表现。作为一项全面托管的服务,Bedrock 为客户提供了构建生成式人工智能应用程序所需的全套功能,从而简化了开发过程。同时,它也注重数据的隐私和安全性,确保客户的数据得到妥善保护。
挑战
企业用户在使用 Bedrock 构建生成式人工智能应用程序的时候,不仅关注应用程序本身是否能够解决业务痛点或者实现业务创新,同时还会关心业务流程是否存在风险、大语言模型应用是否得到有效的治理和性能成本是否可控等等。以下总结了构建生成式人工智能的应用程序的时候,经常碰到的监控和管理方面的痛点:
- 多账号管理:企业组织内通常有多个团队或者部门,使用不同的 IAM 账号来使用大语言模型(比如 Claude3)。这个时候就需要运维或者治理团队来统一管控跨账号的可观测性。
- 成本控制:调用大语言模型通常需要消耗大量的计算资源,模型调用和 token 使用量直接影响成本支出。所以需要实时监控 token 的使用情况,控制成本在可接受范围内。
- 性能监控:需要实时监控模型的响应时间、吞吐量等性能指标,确保应用程序的高效运行,任何性能下降都可能影响最终用户体验。
- 内容审计:出于安全、隐私和合规性考虑,需要详细记录和审计所有模型请求及响应的内容,了解模型输入是否合规、输出是否存在风险。
- 警报和自动化:需要基于各种指标设置合理阈值,及时触发告警,并通过自动化流程快速应对,如自动扩缩容、IAM 账号暂停服务等。
通过集成云原生的 CloudWatch 监控服务,Amazon Bedrock 旨在帮助客户应对以上挑战,提供全面的监控、审计和成本控制能力,简化大语言模型应用的运维管理。CloudWatch 可以帮助客户跟踪应用程序的使用情况指标,并为审计目的构建自定义仪表盘(Dashboards)。通过监控这些指标,可以了解单个账户中单个基础模型或跨多个账户的所有基础模型的使用情况,包括模型调用次数和令牌计数等。此外,Bedrock 还为客户提供了模型调用日志记录功能。通过启用此功能,Bedrock 会收集账户中所有模型调用的元数据、请求和响应,方便客户进行审计和分析。不过,默认情况下此功能是关闭的,您需要手动启用它。
在本篇博客文章中,我们将深入探讨如何利用 CloudWatch 结合 Lambda 监控 Bedrock 的运行状况。CloudWatch 提供的指标和日志可用于触发警报,并在指标值超过预定义阈值时采取相应的操作,例如通过 Lambda 来触发预警,从而帮助您及时发现并处理潜在问题。本文设定了一个用户场景,就是企业级用户使用多个 IAM 用户来使用 Bedrock Claude3,管理人员监控每个 IAM 用户的 InputToken 和 OutputToken 以及费用,当单个 IAM 用户的使用量超过阈值的时候发送邮件报警,同时也可以剥夺该 IAM 用户的 Bedrock 使用权限(Bedrock Permission),从而实现对单个 IAM 用户的精细成本管控,避免因为不当使用大语言模型而造成潜在的巨大成本损失。
除此之外,CloudWatch 还提供了诸多其他强大功能,例如跨账户可观测性、日志和指标关联、复合警报、日志分析和应用程序性能监控等,这些功能可以为您提供更全面的监控和故障排查能力。通过本文,我们希望能够帮助初学者更好地理解 Amazon Bedrock 和 CloudWatch 的集成方式,并学习如何利用它们来构建和监控生成式人工智能应用程序。
架构设计
操作步骤
a)启用 Bedrock 的模型调用日志记录
要配置日志记录,请在 Bedrock 控制台的左侧导航栏中导航到”设置”页面。然后切换”模型调用日志记录”按钮,系统会要求您填写几个字段后才能启用日志记录。
首先,选择要包含在日志中的数据类型。您可以选择文本、图像和嵌入。