Monitor and debug generative AI inference with SageMaker detailed metrics and Insights dashboard on CloudWatch

TL;DR · AI 摘要
AWS 推出 SageMaker Insights 仪表板,提供 100 多个详细指标,用于监控和调试生成式 AI 推理端点。
核心要点
- SageMaker Insights 仪表板支持 100 多个详细推理指标,包括 GPU 健康、KV 缓存压力和冷启动诊断。
- IC 端点是生成式 AI 工作负载的推荐架构,支持多模型共享 GPU 基础设施。
- SageMaker Insights 仪表板可自动显示 IC 端点特定面板,无需自定义 Grafana 或 Prometheus 配置。
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- SageMaker Insights 仪表板
- 生成式 AI 推理监控
- 100+ 详细指标
- GPU 健康监控
- KV 缓存压力分析
- 冷启动诊断
- 端点架构
- 单模型端点 (SME)
- 推理组件端点 (IC)
金句 / Highlights
值得收藏与分享的关键句。
SageMaker Insights 仪表板提供 100 多个详细推理指标,包括 GPU 健康、KV 缓存压力和冷启动诊断。
IC 端点是生成式 AI 工作负载的推荐架构,支持多模型共享 GPU 基础设施。
SageMaker Insights 仪表板可自动显示 IC 端点特定面板,无需自定义 Grafana 或 Prometheus 配置。
使用 SageMaker 详细指标和 CloudWatch 上的 Insights 仪表板监控和调试生成式 AI 推理 | 人工智能
使用 SageMaker 详细指标和 CloudWatch 上的 Insights 仪表板监控和调试生成式 AI 推理
在大规模运行生成式 AI 推理端点时,监控和排查问题是一项挑战。当您的大型语言模型(LLM)端点的 P99 延迟出现峰值时,您必须在几分钟内确定根本原因是否是 GPU 内存压力、饱和的 KV 缓存、跨可用区的流量不平衡,或者自动扩展策略未被触发。从训练到服务的转变正在改变团队在生产环境中部署 LLM 和其他生成式 AI 模型的方式。机器学习(ML)平台工程师、MLOps 团队和站点可靠性工程师(SREs)必须确保推理端点保持健康、响应迅速且成本高效,通常需要跨数十个模型和数百个 GPU 实例进行管理。
Amazon SageMaker AI 提供了完全托管的实时推理托管服务,用于机器学习模型。您将模型部署到由一个或多个计算实例支持的 SageMaker 端点,SageMaker 负责资源的分配和扩展。SageMaker 支持多种端点架构。本文重点介绍与生成式 AI 工作负载相关性最大的两种架构,它们具有详细的可观测性:
- 单模型端点(SME)——每个端点在专用实例上托管一个模型。SME 设置和推理过程简单明了,但每个模型都需要自己的 GPU 实例舰队。
- 推理组件(IC)端点——多个模型通过推理组件共享同一组实例。每个推理组件定义了一个模型、其资源需求(CPU、GPU、内存)及其扩展策略。IC 端点是生产环境生成式 AI 工作负载的推荐架构,因为它们支持在共享 GPU 基础设施上进行多模型托管、按模型独立扩展以及通过跨可用区复制实现高可用性(HA)。
SageMaker 端点会将调用次数、模型延迟和开销延迟等指标发送到 Amazon CloudWatch。这些聚合指标有助于了解端点整体健康状况。由于团队在 GPU 队列上扩展到多模型部署,他们需要更深入的信号。Amazon SageMaker AI 现在发送超过 100 个详细的推理指标。这些指标涵盖 GPU 健康状况、令牌级延迟、KV 缓存压力、跨可用区的流量分布、推理组件的放置以及冷启动诊断。这些指标流向 Amazon CloudWatch 中内置的 SageMaker Insights 仪表板,这是一个完全托管的可观测性解决方案,消除了对自定义 Grafana 仪表板和 Prometheus 配置的需求。SageMaker Insights 仪表板支持两种端点类型,并在检测到推理组件时自动显示特定于 IC 的面板。
有关 SageMaker 推理的更多详细信息,请参阅 部署模型进行实时推理。
在本文中,您将学习如何:
- 在新的和现有的 SageMaker 推理端点上启用详细的可观测性指标。
- 在 SageMaker Insights 仪表板中导航,以跨性能、容量和可靠性视图监控舰队健康状况。
- 通过兼容 PromQL 的端点将指标连接到您自己的可观测性工具(如 Grafana、Datadog)。
SageMaker 推理端点会将原生的 OpenTelemetry 指标发送到 CloudWatch。SageMaker Insights 仪表板位于 CloudWatch 控制台的 Infrastructure Monitoring → SageMaker Insights 下。它使用 PromQL 查询这些指标,并在三个标签页中以舰队、端点和推理组件级别呈现可视化:性能、容量和可靠性。
- 性能 – 舰队健康状况、令牌延迟、吞吐量、错误、引擎压力。
- 容量 – 舰队的 GPU、CPU 和内存使用情况。
- 可靠性 – 可用区分布、扩展事件、冷启动分析以及容量不足错误。
关键服务
- Amazon SageMaker AI – 通过端点和推理组件进行托管推理。
- Amazon CloudWatch – 通过 SageMaker Insights 提供对 OpenTelemetry 指标和 PromQL 查询的原生支持。
有关 CloudWatch 中 OpenTelemetry 和 PromQL 支持的背景信息,请参阅 Introducing OpenTelemetry PromQL support in Amazon CloudWatch。
先决条件
要跟随本文,您必须具备以下条件:
- 一个至少包含一个 SageMaker 实时推理端点的 AWS 账户。
- AWS 身份和访问管理 (IAM) 权限:sagemaker:CreateEndpointConfig、sagemaker:UpdateEndpoint 和 cloudwatch:GetMetricData。
- vLLM 或 SGLang 容器框架(用于令牌级别的指标,如 TTFT 和 ITL)。
GPU 实例除了所有实例类型都可用的 CPU 和内存指标外,还会接收每个加速器的利用率指标。有关完整的设置指南,请参阅 Getting started with detailed observability。
在您的端点上激活详细指标
新端点:自动(默认开启)
对于您创建的任何新端点配置,详细指标默认是开启的。您的端点配置中的 EnableDetailedObservability 参数默认为 true,无需额外代码。
import boto3
sm = boto3.client("sagemaker")
# 创建端点配置 —— 默认开启可观测性
response = sm.create_endpoint_config(
EndpointConfigName="my-llm-config",
ProductionVariants=[{
"VariantName": "primary",
"InstanceType": "ml.g6.4xlarge",
"InitialInstanceCount": 2,
"ManagedInstanceScaling": {
"Status": "ENABLED",
"MinInstanceCount": 2,
"MaxInstanceCount": 8
}
}],
ExecutionRoleArn="arn:aws:iam::123456789012:role/SageMakerExecutionRole"
)您的端点配置中的 EnableDetailedObservability 标志默认为 true,因此不需要额外配置。您也可以通过 MetricsConfig 中的 MetricsPublishFrequencyInSeconds 显式设置发布频率。默认为 60 秒。对于需要近实时监控的工作负载,您可以将其设置为小于一分钟。
# 创建端点
sm.create_endpoint(
EndpointName="my-llm-endpoint",
EndpointConfigName="my-llm-config"
)端点达到 InService 状态后大约 2 分钟内,OpenTelemetry 格式的指标开始流入 CloudWatch。
现有端点:需要手动启用
现有端点需要显式启用。创建一个带有 MetricsConfig 标志的新端点配置,然后更新您的端点。这遵循与任何端点配置更改相同的模式。
# 第一步:创建启用详细可观测性的新配置
sm.create_endpoint_config(
EndpointConfigName="my-existing-config-v2",
ProductionVariants=[{
"VariantName": "primary",
"ModelName": "my-existing-model",
"InstanceType": "ml.g6.4xlarge",
"InitialInstanceCount": 2
}],
MetricsConfig={"EnableDetailedObservability": True},
ExecutionRoleArn="arn:aws:iam::123456789012:role/SageMakerExecutionRole"
)
# 第二步:更新端点
sm.update_endpoint(
EndpointName="my-existing-endpoint",
EndpointConfigName="my-existing-config-v2"
)在 SageMaker 控制台中,选择“启用详细可观测性”后,还会提供一个三步向导:了解指标、启用 OTel 丰富功能,并选择要加入的端点。
为经典 CloudWatch 指标启用 OTel 丰富功能
启用后,原生的 OpenTelemetry 指标会自动流向 CloudWatch。然而,现有的经典指标(调用次数、模型延迟、开销延迟)需要 OTel 丰富功能才能在 SageMaker Insights 仪表板中显示,并通过 PromQL 进行查询。
导航到 CloudWatch 控制台,然后进入设置,启用 OTel 指标丰富功能和遥测资源标签。这是一个一次性设置,适用于账户级别和 AWS 区域级别。
从 SageMaker 控制台导航到 SageMaker Insights 仪表板
可以通过 SageMaker 控制台或 CloudWatch 控制台访问 SageMaker Insights 仪表板。在 SageMaker 中,有三个入口点,每个入口点都预过滤到其上下文:
#
入口点
应用的过滤
使用场景
1
端点列表页面 → “打开 SageMaker Insights”
舰队级别(所有端点)
“给我一个整体的概览”
2
端点详情页面 → “在 SageMaker Insights 中查看”
过滤到该端点
“深入分析这个特定端点”
3
IC 标签 → 每个 IC 的“指标”链接
过滤到端点 + IC
“调试这个推理组件”
每条路径都带有预应用的深度链接,因此你不会在空白仪表板上搜索资源。
性能标签:监控舰队健康状况和调试延迟
大多数客户在“性能”标签页上花费大量时间。它回答诸如“一切运行正常吗?”和“如果不是,哪个组件出了问题?”等问题。“性能”标签页包含多个时间序列面板,这些面板协同工作以定位延迟问题。
性能健康状况和实例性能表
彩色六边形可视化了舰队中的每个资源。可以在实例、IC 副本和端点视图之间切换。六边形的颜色表示状态:
- 绿色表示正常。
- 白色表示未检测到警报。
- 红色表示处于警报状态。
将鼠标悬停在任意六边形上,可以查看实例类型、TTFT、输出 TPS、并发请求数、KV 缓存利用率和 CloudWatch 警报状态。选择“按此实例筛选”以深入分析。页面上的每个面板都会更新,仅显示该实例的数据。
该表显示了每个实例的性能指标并列。使用此表可以发现 TTFT、输出 TPS 和并发请求数的异常值。TTFT、输出 TPS、并发请求和 KV 缓存列仅显示由 vLLM 和 SGLang 框架发出的数据。
令牌流面板通过 P50/P99 切换功能,绘制随时间变化的首次令牌时间(TTFT)和令牌间延迟(ITL)。TTFT 衡量用户在看到第一个响应字符之前需要等待的时间。ITL 衡量连续令牌之间的时间间隔,这直接影响流式传输的流畅性。你可以通过端点、推理组件名称或模型进行筛选,以确定哪个组件导致了延迟。
当你识别到 TTFT 的峰值时,延迟分解面板可以帮助你进行归因。该面板将总延迟分为模型延迟(模型处理所花费的时间)和开销延迟(平台进行路由和调度所花费的时间)。一个“调用”标签显示完整的请求路径,而“流式传输”标签则显示首次数据块的时间。如果模型延迟和开销延迟都正常,但 TTFT 仍然较高,这可能表明模型的推理引擎在其内部队列中持有请求,例如等待 KV 缓存插槽。请检查引擎和请求压力面板以确认。
流量分布面板显示每个实例或每个推理组件的请求流量,并支持可用性区域过滤。切换 AZ 下拉菜单,可以按区域隔离流量。如果一个 AZ 显示零流量,而其他 AZ 负载较高,这表明存在路由或部署问题。你可以使用实例/IC 切换,切换查看“哪些机器处理流量?”和“哪些模型处理流量?”的视图。
最后,令牌吞吐量面板测量每秒实际处理的令牌数,按输入/输出、百分位数或实例进行分类。这直接测量推理效率。例如,如果你的 ml.g6.4xlarge 每秒输出 150 个令牌,而模型基准显示为 500,这表明存在资源限制、配置问题或 KV 缓存压力。多框架图例(SGLang、vLLM、DJL)允许多模型端点在不同推理引擎之间比较吞吐量。
引擎和请求压力
引擎和请求压力面板是防止故障的早期预警系统。
时间序列视图显示按框架分类的详细信息,工具提示显示任意时间戳的确切值。如果你在工作时间看到 KV 缓存反复上升到 40–50%,请在客户感受到影响之前,配置自动扩展以在阈值时触发。
容量标签:规划部署和资源管理
容量标签回答诸如“我有足够的资源吗?”、“哪里有余量?”和“能否再部署一个模型?”等问题。
容量健康状况
此处再次出现性能部分的蜂窝可视化,悬停卡片中显示资源利用率百分比:GPU、GPU 内存、CPU、CPU 内存和磁盘。
在部署新模型或扩展副本之前,悬停查看目标端点中的实例。如果 GPU 内存达到 89%,则为额外模型权重的 VRAM 余量有限。
随时间变化的舰队利用率
此面板显示资源消耗趋势,可切换实例、IC 副本和端点聚合。关键信号包括以下内容:
- GPU 内存在数天内持续上升,表明你正接近容量限制。在利用率达到限制之前添加实例。
- GPU 内存突然下降表明模型崩溃或被卸载。请进行调查。
- 周期性重复的磁盘峰值与冷启动期间的模型下载相关。
“可靠性”选项卡回答诸如“如果一个可用区(AZ)发生故障,我的推理舰队是否能够存活?”、“扩展事件是否正常工作?”以及“为什么冷启动会很慢?”等问题。
可用区分布
一个条形图显示每个可用区中的实例和IC副本数量。此视图展示了您的高可用性状态。
| 分布 | 风险 | 操作 | |------|------|------| | 跨多个AZ(超过3个) | 低 | 无需操作 | | 集中在1-2个AZ中 | 中 | 重新平衡 | | 任何AZ中没有实例 | 高 | 单个AZ故障会导致您离线 |
切换“实例”和“IC副本”视图。实例可能已平衡,但IC副本可能集中在少数几台机器上。
冷启动分析
每个IC配置事件以水平堆叠条形图的形式显示,包含四个阶段:
| 阶段 | 颜色 | 测量内容 | 优化建议 | |------|------|----------|----------| | 模型下载 | 蓝色 | 从Amazon Simple Storage Service(Amazon S3)拉取模型权重 | 压缩工件,使用Amazon Elastic File System(Amazon EFS)缓存 | | GPU负载 | 紫色 | 将权重加载到GPU | 更小的量化,预热 | | 容器启动 | 橙色 | 容器初始化 | 减少依赖项 |
在截图中,gma-ic-vllm耗时237.6秒,其中模型下载占主导地位,而gma-rblk-ic-tiny仅耗时41.4秒,因为它是一个较小的模型。此视图告诉您应优化哪个阶段以加快扩展响应时间。
ICE诊断
ICE诊断视图跟踪容量不足错误(ICE),这些错误发生在SageMaker无法提供请求的实例时。表格显示以下信息:
- 故障发生的时间。
- 受影响的端点(深度链接到控制台)。
- 哪种实例类型不可用。
- 哪个可用区没有容量。
在上图中,所有12个ICE事件都是针对p5.48xlarge实例类型,分布在所有四个可用区中,表明该实例类型在该区域完全耗尽。现在您知道应切换到其他实例类型作为后备方案。
连接到您自己的可观测性工具
对于已有Grafana或其他PromQL兼容工具的团队,您可以直接从自己的平台查询SageMaker Insights指标,而无需切换到CloudWatch控制台。以下操作指南演示了使用Grafana进行设置的步骤。相同的步骤适用于自托管的Grafana或其他兼容工具,但配置略有不同。
步骤1:获取PromQL端点URL
导航到SageMaker控制台,然后选择“端点”。从那里选择您的端点,然后选择“连接到您的可观测性工具”。复制显示的端点URL。它遵循SageMaker控制台中显示的格式。
步骤2:配置Grafana数据源
在Amazon托管Grafana(Classic CloudWatch 2.4+)或自托管Grafana(带有Amazon托管Prometheus插件v3.0.0+)中:
- 导航到“配置”、“数据源”,然后“添加数据源”。选择“Amazon托管Prometheus服务”,并将URL设置为步骤1中的PromQL端点URL。
- 在“服务提供商”下,输入“monitoring”。
- 使用具有cloudwatch:GetMetricData和cloudwatch:ListMetrics权限的IAM角色配置SigV4身份验证。
- 选择“保存并测试”。您应该看到“数据源正在工作”。
步骤3:导入预构建的仪表板模板
从 SageMaker 控制台中“连接到您的可观测性工具”页面下载仪表板模板 JSON。将下载的 JSON 模板导入 Grafana(仪表板 → 导入),选择在步骤 2 中配置的 Prometheus 数据源,即可获得与 SageMaker Insights 布局匹配的性能、容量和可靠性面板。
步骤 4:使用 PromQL 查询指标
连接数据源后,您可以编写自定义的 PromQL 查询。例如:
KV 缓存
vllm:kv_cache_usage_perc{"aws.sagemaker.endpoint.name"="ep-prsn-ic","aws.sagemaker.inference_component.name"="ic-qwen3-4b"}
# 活动请求
vllm:num_requests_running{"aws.sagemaker.endpoint.name"="ep-prsn-ic","aws.sagemaker.inference_component.name"="ic-qwen3-4b"}
# TTFT P99
histogram_quantile(0.99, rate(vllm:time_to_first_token_seconds{"aws.sagemaker.endpoint.name"="ep-prsn-ic","aws.sagemaker.inference_component.name"="ic-qwen3-4b"}[5m]))定价
SageMaker 不会对发出的详细可观测性指标单独收费。这些指标以 OpenTelemetry 数据格式发布到 Amazon CloudWatch,并适用标准的 CloudWatch OpenTelemetry 数据摄入定价。被摄入到 CloudWatch 的 OpenTelemetry 指标按每 GB 摄入收费 0.50 美元。如果您启用 OTel 提供的指标丰富功能(查看 Insights 仪表板中的经典 CloudWatch 指标如调用次数和模型延迟所需),丰富后的指标也按每 GB 0.50 美元收费。有关详细定价示例和成本计算器,请参阅 Amazon CloudWatch 定价页面上的 OpenTelemetry 指标部分。
清理
为了避免持续收费,请按以下顺序删除测试资源:
# 首先删除推理组件(如果是 IC 端点)
aws sagemaker delete-inference-component --inference-component-name my-ic
# 删除端点
aws sagemaker delete-endpoint --endpoint-name my-endpoint
# 等待删除完成,然后删除配置
aws sagemaker delete-endpoint-config --endpoint-config-name my-config当端点处于 InService 状态时,GPU 实例按秒计费。测试完成后请立即删除。
结论
在本文中,您启用了 SageMaker 推理端点的详细指标,并使用内置的 SageMaker Insights 仪表板监控舰队健康状况,通过令牌级指标调试延迟,验证高可用性,并为新部署规划容量。
要开始使用,请查看以下资源:
- 在您的端点上启用详细可观测性。按照逐步指南创建一个带有详细指标的端点配置,并验证数据是否流向 CloudWatch。
- 导航 SageMaker Insights 仪表板。学习如何使用性能、容量和可靠性标签监控舰队健康状况,并深入查看实例级别的数据。
- 通过 PromQL 端点连接您的 Grafana 工作区。将 CloudWatch PromQL 端点作为 Prometheus 数据源添加,并导入预构建的仪表板模板。
致谢
SageMaker Insights 仪表板和详细可观测性指标是 Amazon SageMaker AI 团队和 Amazon CloudWatch 团队紧密合作的成果。我们感谢工程、产品和解决方案架构团队的辛勤工作,使此次发布成为可能。
我们还感谢以下人员对本文的审阅和建议:
- Felipe Lopez – AWS 首席生成 AI/ML 架构师
- Sandeep Raveesh-Babu – AWS 全球生成 AI 高级专家解决方案架构师
- Johna Liu – 高级软件开发工程师,Amazon SageMaker
- Raviprakash Darbha – 高级软件开发工程师,Amazon SageMaker
- Prajwal Kammardi – 软件开发工程师,Amazon SageMaker
- Jiaxi Xu – 软件开发工程师,Amazon SageMaker
- Orcun Berkem – 首席工程师,可观测性,Amazon CloudWatch
- Steve McCurry – 首席产品经理,Amazon CloudWatch
关于作者
'{"