使用亚马逊 Bedrock 和亚马逊 CloudWatch 集成监控生成式人工智能应用程序

Amazon Bedrock 是一种使用基础模型 (FM) 构建和扩展生成式 AI 应用程序的简便方法。作为一项完全托管的服务,它提供来自领先的人工智能公司(包括AI21实验室、Anthropic、Cohere、Meta、Stability AI和亚马逊)的高性能财务经理可供选择。它还提供了构建生成式 AI 应用程序所需的广泛功能,在维护隐私和安全的同时简化了开发。

Bedrock 与 Amazon CloudWatch 集成,可帮助您跟踪使用指标并构建用于审计目的的自定义控制面板。您可以使用这些指标来了解从单个账户中的一个基础模型到多个账户的所有基础模型的使用情况,例如模型调用和代币数量。Bedrock 还为客户提供模型调用日志,该功能可用于收集账户中所有模型调用的元数据、请求和响应。默认情况下,此功能处于禁用状态,必须由客户启用,Bedrock 才能开始发布调用日志。

在这篇博客文章中,我们将深入探讨如何使用 CloudWatch 近乎实时地监控 Bedrock,这些指标和日志可用于在值超过预定义阈值时触发警报并采取行动。CloudWatch 还具有丰富的其他功能可供您利用,包括跨账户可观察性、日志和指标关联、复合警报、日志分析和应用程序性能监控。

配置模型调用日志

模型调用日志目前处于预览状态,因此请记住此功能可能会发生变化。启用日志记录将收集您账户中所有模型调用的元数据、请求和响应。

要配置日志记录,请从左侧导航栏导航到 Bedrock 控制台 中的 “ 设置” 页面 。然后切换 Model 调用日志记录 按钮,该按钮将显示几个字段,需要先填写这些字段,然后才能启用日志记录。

首先,选择要包含在日志中的数据类型。您可以选择文本、图像和嵌入。

Multi-select control of data types to include with Logs (Text, Image, Embedding)

图 1:对要包含在日志中的数据类型(文本、图像、嵌入)进行多选控制

接下来,选择您的登录目的地,其中有三个选项。第一个选项是 “仅限 S3” ,它将 Bedrock 配置为仅将日志发送到您选择的 S3 存储桶。第二个选项是仅限 CloudWatch Lo gs ,它将日志发送到 CloudWatch,当模型输入或输出数据大于 100 kb 或采用二进制格式时,可以选择将其传输到 S3。最后一个选项是 S3 和 CloudWatch 日志, 其中日志同时发送到 S3 和 CloudWatch,当模型输入或输出数据大于 100 kb 或二进制格式的数据时,它只会发送到 S3。无论选择什么选项,您都可以控制模型的输入和输出,包括使用 KMS 和保留期限进行加密。就我而言,我选择了 “仅限 CloudWatch 日志 ” 选项。

在 CloudWatch Logs 配置部分中,指定日志组名称(在本例中我选择了 /aws/ bedrock)。请注意,您需要先在 CloudWatch 中创建此日志组。

接下来,选择 “ 创建并使用新角色 ” 选项,然后为您的角色提供名称。在这种情况下,我选择了 B edro ckCloudwatchLogs

最后,前往 S3 并创建一个 S3 存储桶,就我而言,我选择了这种格式的 基岩记录-[ACCOUNTID]-[REGION] 作为我的存储桶名称。 现在返回 Bedrock Settings,在用于大型数据传输的 S3 存储桶字段中选择新创建的存储桶,然后单击 “保存设置” 以完成配置。

从 Bedrock 生成日志数据

现在我们已经在 Bedrock 中设置了登录设置,让我们使用聊天室生成一些日志数据。

导航到 Bedrock 中的聊天室并选择您的模特并提供提示。在本例中,我想简要介绍一下亚马逊 CloudWatch。

Bedrock Chat playground with Claude Instant V1.2 model selected and being asked to provide a brief overview of Amazon CloudWatch

图 2:选择了 Claude Instant V1.2 模型并被要求简要概述亚马逊 CloudWatch 的 Bedrock Chat Playground

当您从 Logs Ins ights 中查询日志组时,您应该可以近乎实时地看到新创建的日志组中的 日 志 。

CloudWatch Log Insights query showing log events from newly created Log Group for Amazon Bedrock’s Model Invocation logging

图 3:CloudWatch Log Insights 查询显示了 Bedrock 模型调用日志记录中来自新创建的日志组的日志事件。

模型调用日志交付后,您可以使用 CloudWatch 中的两个功能来检查您的日志。第一个是 Live Tail,第二个是 Log Insights。

使用 Live Tail 直播日志

CloudWatch Logs 中的 Live Tail 是一项提供交互式日志分析体验的功能,可帮助您在采集日志时以近乎实时的交互方式查看日志。Live Tail 为客户提供了丰富的开箱即用体验,让他们能够查看和检测传入日志中的问题。此外,它还提供精细的控件,用于筛选、突出显示感兴趣的属性以及在解决问题时暂停/重播日志

CloudWatch Logs Live Tail displaying log event from Bedrock Model Invocation Log generated by Bedrock Chat Playground.

图 4:CloudWatch Logs Logs Live Tail 显示基岩聊天游乐场生成的基岩模型调用日志中的日志事件。

使用日志见解分析日志

CloudWatch Logs Insights 使您能够交互式地搜索和分析 CloudWatch 日志中的日志数据。您可以执行查询,以帮助您更高效、更有效地响应运营问题。

以 Bedrock 为例,我们可以使用 Log Insights 来搜索和分析模型调用日志,然后搜索特定的关键字或仅搜索最新的调用日志。你可以 在这里 找到命令的完整列表 。

Log Insights query show the 100 latest log events with modelId, operation, input & output token count and prompt

图 5:Log Insights 查询显示了 100 个最新的日志事件,包括 ModelID、操作、输入和输出令牌数量和提示

Log Insights最近还推出了由机器学习支持的模式查询命令,该命令使客户能够更轻松地识别日志中的趋势和模式。模式命令使用 亚马逊云科技 Machine Learning 算法自动识别日志数据中的模式,聚合相关日志,并将数千行日志汇总成几个易于可视化的分组。

在下面的示例中,我们在模型调用日志的提示字段上使用这个新模式命令来识别 Bedrock 提示中的模式。

Log Insights query over a 1 hour period using the pattern command to summarize log events

图 6:使用模式命令汇总提示文本,在 1 小时内进行 Log Insights 查询

CloudWatch 日志的机器学习数据保护

CloudWatch 还具有一组利用模式匹配和机器学习 (ML) 来检测和保护传输中的敏感数据的功能。首先,您需要在日志组上启用数据保护策略。创建策略时,您需要指定要保护的数据。然后,您可以从 100 多个托管标识符中进行选择。

Configuration of a Data protection log group policy

图 7:配置数据保护日志组策略

在上面的示例中,我配置了数据保护策略以在我的日志组中查找 IP 地址。当我问 Bedrock “192.168.0.1 是什么” 时,它掩盖了在模型输入和输出日志事件中发现的 IP 地址。

Log event for a single model invocation in JSON with the IP Address masked in the prompt field

图 8:以 JSON 格式记录单模型调用的事件,在提示字段中屏蔽 IP 地址

基岩运行时指标

Bedrock 还向 CloudWatch 发送近乎实时的指标,这些指标可用于设置警报,监视特定阈值,然后在值超过这些阈值时发送通知或采取行动。您还可以 对指标启用 CloudWatch 异常检测 ,该指标应用统计和机器学习算法,以最少的用户干预持续分析指标、确定正常基线和表面异常。

Visualization showing the number of invocations over a 15-minute period with a stacked area chart with Anthropic Claude v1 and Anthropic Claude v2 metrics in CloudWatch.

图 9:可视化显示 15 分钟内调用次数,其中包含了 CloudWatch 中的 Anthropic Claude v1 和 Anthropic Claude v2 指标。

Bedrock 提供的运行时指标如下所示,也可以在 此处找到:

Metric Name Unit Description
Invocations SampleCount Number of requests to the InvokeModel or InvokeModelWithResponseStream API operations.
InvocationLatency MilliSeconds Latency of the invocations.
InvocationClientErrors SampleCount Number of invocations that result in client-side errors.
InvocationServerErrors SampleCount Number of invocations that result in 亚马逊云科技 server-side errors.
InvocationThrottles SampleCount Number of invocations that the system throttled.
InputTokenCount SampleCount Number of tokens of text input.
OutputTokenCount SampleCount Number of tokens of text output.
ContentFilteredCount SampleCount Number of times the text output content was filtered.
OutputImageCount SampleCount Number of output images.

这些指标可用于各种用例,包括:

  • 使用具有 ModelID 维度的调用延迟指标比较不同模型之间的延迟
  • 通过分析 inputTokenCount 和 outputTokenCount 来测量代币数量(输入和输出)以帮助购买预置吞吐量
  • 使用具有 InvocationThrottles 指标的 CloudWatch 警报检测节流情况并发出警报

为简单起见,Bedrock 发送到 CloudWatch 的日志和指标可以使用 CloudWatch 控制面板以单一视图的形式呈现。如果您有多个 亚马逊云科技 账户,则可以设置 CloudWatch 跨账户可观察性,然后在监控账户中创建丰富的跨账户控制面板。

CloudWatch Dashboard showing the number of invocations over time by model, invocation latency by model, token count by input & output, and latest prompts from model invocation logs.

图 10:CloudWatch 控制面板,显示一段时间内按模型划分的调用次数、按模型显示的调用延迟、按输入和输出显示的令牌数量以及来自模型调用日志的最新提示。

在上面的仪表板中,我们显示了以下信息:

  • 一段时间内各型号的调用次数
  • 按型号划分的调用延迟
  • 按输入和输出令牌计算代币数量
  • 调用日志中的最新提示,显示模型、操作、输入和输出令牌数。

结论

在这篇文章中,我们展示了如何使用 CloudWatch 监控 Bedrock 并深入了解您对基础模型和生成式 AI 应用程序的使用情况。Bedrock 是一项完全托管的服务,可使用领先的人工智能提供商的基础模型轻松开发和扩展生成式 AI 应用程序。它与 CloudWatch 集成,通过指标和日志提供近乎实时的监控、审计和使用情况分析功能。Bedrock 简化了大规模生成式 AI 应用程序的构建,同时通过与 CloudWatch 的集成提供透明度和控制力。

Greg Eppel

Greg Eppel 是 亚马逊云科技 云运营领域的全球技术负责人。他负责为一个由数百名 亚马逊云科技 专家组成的内部社区的全球指导,该社区专注于 亚马逊云科技 的运营能力。在 2016 年加入 亚马逊云科技 之前,他曾是一家为体育、媒体和娱乐行业提供解决方案的 SaaS 公司的首席技术官。

Mihir Patel

Mihir 是 亚马逊云科技 日志和可观测性服务的总监兼总经理。他的团队的使命是帮助客户轻松地在 亚马逊云科技 Cloud 上构建和运营其应用程序和服务。他拥有卡内基梅隆大学的电气和计算机工程硕士学位。他于 2010 年加入 亚马逊云科技,并在早期担任过多个角色,帮助构建和扩展亚马逊 EC2、Auto Scaling、CloudWatch 和 SQS。在亚马逊云科技任职期间,他还帮助开发了几项新的亚马逊云科技服务,例如EventBridge、Lambda Insights、容器洞察、贡献者见解、CloudWatch 日志和CloudWatch Logs Insights

Denis V. Batalov

Denis 在亚马逊工作了 18 年,拥有机器学习博士学位,曾参与过 Search Inside the Book、亚马逊移动应用程序和 Kindle Direct Publishing 等激动人心的项目。自 2013 年以来,他以解决方案架构师的身份帮助 亚马逊云科技 客户采用 AI/ML 技术。目前,Denis 是 AI/ML 领域的全球技术负责人,负责 亚马逊云科技 ML 专家解决方案架构师在全球的运作。丹尼斯经常公开演讲,你可以在 Twitter 上关注他 @dbatalov。