在集群上实现推理可观测性 HyperPod - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在集群上实现推理可观测性 HyperPod

Amazon SageMaker HyperPod 提供全面的推理可观测性功能,使数据科学家和机器学习工程师能够监控和优化其部署的模型。该解决方案通过 O SageMaker HyperPod bservability 启用,可自动收集推理工作负载的性能指标,通过集成的 Prometheus 和 Grafana 仪表板提供生产就绪监控。

默认启用指标后,该平台可以捕获基本的模型性能数据,包括调用延迟、并发请求、错误率和令牌级指标,同时为喜欢实施自定义可观测性解决方案的客户提供标准的 Prometheus 端点。

注意

本主题深入探讨如何在集群上实现推理可观测性。 HyperPod 有关更一般的参考,请参阅集群和任务的可观察性

本指南提供了在集群上实现和使用推理可观测性的 step-by-step说明。 HyperPod 您将学习如何在部署 YAML 文件中配置指标,如何根据您的角色(管理员、数据科学家或机器学习工程师)访问监控仪表板,如何使用 Prometheus 端点与自定义可观测性解决方案集成,以及如何解决常见的监控问题。

支持的推理指标

调用指标

这些指标捕获模型推理请求和响应数据,无论您的模型类型或服务框架如何,都能提供普遍的可见性。启用推理指标后,将在调用时计算这些指标并导出到您的监控基础架构。

  • model_invocations_total-对模型的调用请求总数

  • model_errors_total-模型调用期间的错误总数

  • model_concurrent_requests-有效的并发模型请求

  • model_latency_milliseconds-模型调用延迟(以毫秒为单位)

  • model_ttfb_milliseconds-建模到第一个字节的延迟时间(以毫秒为单位)

对容器指标进行建模

这些指标可以深入了解模型容器的内部操作,包括令牌处理、队列管理和特定于框架的性能指标。可用的指标取决于您的模型服务框架:

指标维度

所有推理指标都包含全面的标签,可以对您的部署进行详细的筛选和分析:

  • 集群身份:

    • cluster_id-集 HyperPod群的唯一 ID

    • cluster_name-集 HyperPod群的名称

  • 资源标识:

    • resource_name-部署名称(例如,jumpstart-model-deployment“”)

    • resource_type-部署类型(快速启动、推理端点)

    • namespace-适用于多租户的 Kubernetes 命名空间

  • 型号特点:

    • model_name-特定型号标识符(例如,“llama-2-7b-chat”)

    • model_version-用于 A/B 测试和回滚的模型版本

    • model_container_type-服务框架(TGI、LMI、-)

  • 基础架构背景:

    • pod_name-用于调试的单个 pod 标识符

    • node_name-用于资源关联的 Kubernetes 节点

    • instance_type-用于成本分析的 EC2 实例类型

  • 运营背景:

    • metric_source-收集点(反向代理、模型容器)

    • task_type-工作负载分类(推断)

在部署 YAML 中配置指标

默认情况下,Amazon 为所有模型部署 SageMaker HyperPod 启用推理指标,无需额外配置即可立即提供可观察性。您可以根据自己的特定要求修改部署 YAML 配置来启用或禁用指标收集,从而自定义指标行为。

从中部署模型 JumpStart

使用以下 YAML 配置部署启用指标的 JuJumpStartmpStart 模型:

apiVersion: inference.sagemaker.aws.amazon.com/v1alpha1 kind: JumpStartModel metadata: name:mistral-model namespace: ns-team-a spec: model: modelId: "huggingface-llm-mistral-7b-instruct" modelVersion: "3.19.0" metrics: enabled:true # Default: true (can be set to false to disable) replicas: 2 sageMakerEndpoint: name: "mistral-model-sm-endpoint" server: instanceType: "ml.g5.12xlarge" executionRole: "arn:aws:iam::123456789:role/SagemakerRole" tlsConfig: tlsCertificateOutputS3Uri: s3://hyperpod/mistral-model/certs/

从 Amazon S3 或亚马逊部署经过微调的自定义模型 FSx

使用以下 YAML 配置带有详细指标设置的自定义推理端点:

apiVersion: inference.sagemaker.aws.amazon.com/v1alpha1 kind: JumpStartModel metadata: name:mistral-model namespace: ns-team-a spec: model: modelId: "huggingface-llm-mistral-7b-instruct" modelVersion: "3.19.0" metrics: enabled:true # Default: true (can be set to false to disable) replicas: 2 sageMakerEndpoint: name: "mistral-model-sm-endpoint" server: instanceType: "ml.g5.12xlarge" executionRole: "arn:aws:iam::123456789:role/SagemakerRole" tlsConfig: tlsCertificateOutputS3Uri: s3://hyperpod/mistral-model/certs/ Deploy a custom inference endpoint Configure custom inference endpoints with detailed metrics settings using the following YAML: apiVersion: inference.sagemaker.aws.amazon.com/v1alpha1 kind: InferenceEndpointConfig metadata: name: inferenceendpoint-deepseeks namespace: ns-team-a spec: modelName: deepseeks modelVersion: 1.0.1 metrics: enabled: true # Default: true (can be set to false to disable) metricsScrapeIntervalSeconds: 30 # Optional: if overriding the default 15s modelMetricsConfig: port: 8000 # Optional: if overriding, it defaults to the WorkerConfig.ModelInvocationPort.ContainerPort within the InferenceEndpointConfig spec 8080 path: "/custom-metrics" # Optional: if overriding the default "/metrics" endpointName: deepseek-sm-endpoint instanceType: ml.g5.12xlarge modelSourceConfig: modelSourceType: s3 s3Storage: bucketName: model-weights region: us-west-2 modelLocation: deepseek prefetchEnabled: true invocationEndpoint: invocations worker: resources: limits: nvidia.com/gpu: 1 requests: nvidia.com/gpu: 1 cpu: 25600m memory: 102Gi image: 763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:0.32.0-lmi14.0.0-cu124 modelInvocationPort: containerPort: 8080 name: http modelVolumeMount: name: model-weights mountPath: /opt/ml/model environmentVariables: ... tlsConfig: tlsCertificateOutputS3Uri: s3://hyperpod/inferenceendpoint-deepseeks4/certs/
注意

要禁用特定部署的指标,请在您的 YAML 配置metrics.enabled: false中进行设置。

按角色监控推理工作负载并对其进行故障排除

Amazon SageMaker HyperPod 提供全面的可观察性功能,支持不同的用户工作流程,从初始集群设置到高级性能故障排除。根据您的角色和监控要求使用以下指南。

HyperPod 管理员

您的责任:启用可观测性基础设施并确保整个集群的系统运行状况。

你需要知道的:

  • 集群范围的可观测性为所有工作负载提供了基础架构指标

  • 一键设置使用预先配置的仪表板部署监控堆栈

  • 基础设施指标与特定模型的推理指标是分开的

你需要做什么:

  1. 导航到 HyperPod 控制台。

  2. 选择您的集群。

  3. 转到您刚刚创建的 HyperPod 集群详细信息页面。您将看到一个用于安装可 HyperPod 观测性插件的新选项。

  4. 单击 “快速安装” 选项。1-2 分钟后,所有步骤都将完成,您将看到 Grafana 控制面板和 Prometheus 工作空间详情。

此单个操作可自动部署 EKS 插件,配置可观察性运算符,并在 Grafana 中配置预先构建的仪表板。

数据科学家

您的责任:高效部署模型并监控其基本性能。

你需要知道的:

  • 部署模型时会自动启用指标

  • Grafana 仪表板提供对模型性能的即时可见性

  • 您可以筛选仪表板以专注于您的特定部署

你需要做什么:

  1. 使用您的首选方法部署模型:

    1. 亚马逊 SageMaker 工作室用户界面

    2. HyperPod CLI 命令

    3. 笔记本中的 Python 软件开发工具包

    4. 带有 YAML 配置的 kubectl

  2. 访问您的模型指标:

    1. 打开亚马逊 SageMaker Studio

    2. 导航到 HyperPod 集群并打开 Grafana 控制面板

    3. 选择推理控制面板

    4. 应用筛选器来查看您的特定模型部署

  3. 监控关键绩效指标:

    1. 跟踪模型延迟和吞吐量

    2. 监控错误率和可用性

    3. 查看资源利用率趋势

完成此操作后,您无需进行额外配置即可立即查看模型的性能,从而可以快速识别部署问题或性能变化。

机器学习工程师 (MLE)

您的责任:维护生产模型的性能并解决复杂的性能问题。

你需要知道的:

  • 高级指标包括模型容器详细信息,例如队列深度和令牌指标

  • 跨多个指标类型的关联分析揭示了根本原因

  • 在流量高峰期间,自动扩展配置会直接影响性能

假设情景:客户的聊天模式会出现间歇性的缓慢响应。用户抱怨延迟 5-10 秒。MLE 可以利用推理可观察性进行系统的性能调查。

你需要做什么:

  1. 检查 Grafana 控制面板,了解性能问题的范围和严重性:

    1. 高延迟警报自 09:30 起处于活动状态

    2. P99 延迟:8.2 秒(正常:2.1 秒)

    3. 受影响的时间窗口:09:30-10:15(45 分钟)

  2. 关联多个指标以了解事件期间的系统行为:

    1. 并发请求:激增至 45(正常:15-20)

    2. 吊舱缩放:KEDA 在事故期间缩放了 2→5 个吊舱

    3. GPU 利用率:保持正常(85-90%)

    4. 内存使用情况:正常 (24GB/32GB)

  3. 检查分布式系统的行为,因为基础架构指标显示正常:

    1. 节点级视图:所有 Pod 都集中在同一个节点上(分布不佳)

    2. 模型容器指标:TGI 队列深度显示 127 个请求(正常:5-10)

    Available in Grafana dashboard under "Model Container Metrics" panel Metric: tgi_queue_size{resource_name="customer-chat-llama"} Current value: 127 requests queued (indicates backlog)
  4. 确定相互关联的配置问题:

    1. KEDA 扩展策略:太慢(轮询间隔 30 秒)

    2. 扩展时间表:扩展响应落后于流量峰值 45 秒以上

  5. 根据分析实施有针对性的修复:

    1. 更新了 KEDA 轮询间隔:30 秒 → 15 秒

    2. 在扩展配置中增加了 MaxReplicas

    3. 调整了扩展阈值以更早地扩展(15 个并发请求与 20 个并发请求)

您可以使用全面的指标系统地诊断复杂的性能问题,实施有针对性的修复,并制定预防措施以保持稳定的生产模型性能。

实现您自己的可观测性集成

Amazon 通过行业标准的 Prometheus 终端节点 SageMaker HyperPod 公开推理指标,从而实现与您现有的可观测性基础设施的集成。如果您更喜欢实现自定义监控解决方案或与第三方可观测性平台集成,而不是使用内置的 Grafana 和 Prometheus 堆栈,请使用这种方法。

访问推理指标端点

你需要知道的:

  • 推理指标会自动显示在标准化的 Prometheus 端点上

  • 无论您的模型类型或服务框架如何,指标都可用

  • 标准的 Prometheus 抓取做法适用于数据收集

推理指标端点配置:

  • 端口:9113

  • 路径:/metr ics

  • 完整端点:http://pod-ip:9113/metrics

可用的推理指标:

  • model_invocations_total-对模型的调用请求总数

  • model_errors_total-模型调用期间的错误总数

  • model_concurrent_requests-每个型号的活动并发请求数

  • model_latency_milliseconds-模型调用延迟(以毫秒为单位)

  • model_ttfb_milliseconds-建模到第一个字节的延迟时间(以毫秒为单位)

访问模型容器指标

你需要知道的:

  • 模型容器公开了特定于其服务框架的其他指标

  • 这些指标提供了内部容器见解,例如令牌处理和队列深度

  • 端点配置因模型容器类型而异

对于使用文本生成推理 (TGI) 容器的 JumpStart 模型部署:

对于使用大型 JumpStart 模型推理 (LMI) 容器的模型部署:

对于自定义推理终端节点 (BYOD):

  • 端口:客户配置(默认为 8080)默认为。 WorkerConfig ModelInvocationPort。 ContainerPort 在 InferenceEndpointConfig 规格范围内。)

  • 路径:客户配置(默认 /metrics)

实现自定义可观测性集成

使用自定义可观测性集成,您负责:

  1. 指标抓取:从上面的端点实现与 Prometheus 兼容的抓取

  2. 数据导出:配置导出到您选择的可观测性平台

  3. 警报:根据您的操作要求设置警报规则

  4. 仪表板:根据您的监控需求创建可视化仪表板

对推理可观测性问题进行故障排除

仪表板不显示任何数据

如果 Grafana 控制面板为空且所有面板都显示 “无数据”,请执行以下步骤进行调查:

  1. 验证管理员是否安装了推理可观察性:

    1. 导航到 HyperPod 控制台 > 选择集群 > 检查 “可观察性” 状态是否显示为 “已启用”

    2. 验证是否可以从集群概述中访问 Grafana 工作空间链接

    3. 确认已配置亚马逊托管 Prometheus 工作空间并正在接收数据

  2. 验证是否 HyperPod 启用了可观察性:

    hyp observability view
  3. 验证模型指标是否已启用:

    kubectl get jumpstartmodel -n <namespace> customer-chat-llama -o jsonpath='{.status.metricsStatus}' # Expected: enabled: true, state:Enabled
    kubectl get jumpstartmodel -n <namespace> customer-chat-llama -o jsonpath='{.status.metricsStatus}' # Expected: enabled: true, state:Enabled
  4. 检查指标端点:

    kubectl port-forward pod/customer-chat-llama-xxx 9113:9113 curl localhost:9113/metrics | grep model_invocations_total# Expected: model_invocations_total{...} metrics
  5. 查看日志:

    # Model Container kubectl logs customer-chat-llama-xxx -c customer-chat-llama# Look for: OOM errors, CUDA errors, model loading failures # Proxy/SideCar kubectl logs customer-chat-llama-xxx -c sidecar-reverse-proxy# Look for: DNS resolution issues, upstream connection failures # Metrics Exporter Sidecar kubectl logs customer-chat-llama-xxx -c otel-collector# Look for: Metrics collection issues, export failures

其他常见问题

事务 解决方案 操作

未安装推理可观测性

通过控制台安装推理可观察性

控制台中的 “启用可观察性” HyperPod

模型中已禁用指标

更新模型配置

metrics: {enabled: true}添加到型号规格中

AMP 工作空间未配置

修复数据源连接

验证 Grafana 数据源中的 AMP 工作空间 ID

网络连接

检查安全组/ NACLs

确保 Pod 可以到达 AMP 端点