当前位置:首页 > 文章列表 > 科技周边 > 人工智能 > AI 推理服务延迟抖动时怎么区分排队和模型计算

AI 推理服务延迟抖动时怎么区分排队和模型计算

来源:17golang原创 2026-09-08 12:49:45 0浏览 收藏
所属专题:Kubernetes v1.37 原生直方图与 Prometheus 兼容工程专题 - 从 NativeHistograms Beta 到 PromQL、remote_write 与回滚验证

AI 推理服务的 p95、p99 延迟突然升高时,先别急着换模型或提高 GPU 配额。最可靠的判断是把一次请求拆成服务端的排队、输入处理、模型计算、输出处理和端点开销,再观察它们是否与并发、吞吐一起变化。排队时通常是 queue_duration_us 和 pending_request_count 先涨,模型变慢时则是 compute_infer_duration_us 自身变长。

判断口诀是:并发升高后队列指标明显放大、吞吐接近平台上限,多半是排队;队列稳定而 compute_infer 变长,才优先怀疑模型计算。只看总延迟或 GPU 利用率,无法完成这两类归因。
要点速览
  • 用 request、queue、compute_input、compute_infer、compute_output 对齐一次请求的时间边界。
  • 用 p95/p99、pending request、throughput 和 GPU 利用率做关联判断,不把相关性当成单一证据。
  • 排队问题先调实例并发、批策略和流量整形;计算问题先查输入输出、模型执行和硬件饱和。

先把一次请求拆成排队、计算与端点开销

以 Triton 这类推理服务为例,服务端请求延迟不是一个不可解释的黑盒。nv_inference_request_duration_us 表示请求处理总时间,nv_inference_queue_duration_us 表示在调度队列中等待的时间,nv_inference_compute_input_duration_us、nv_inference_compute_infer_duration_us 和 nv_inference_compute_output_duration_us 分别对应输入准备、模型执行和输出处理。端点协议、序列化和网络等待还可能形成额外的 overhead。

AI 推理服务中客户端请求、调度队列、模型计算和 Prometheus 指标的静态边界关系
图1:把客户端请求、调度队列、模型计算和 Prometheus 指标放在同一张边界图中,避免用总延迟猜根因。

这里有一个容易忽略的边界:请求在前置网关、协议适配层中花费的时间,未必会被 Triton 的 pending request count 记录。也就是说,客户端总延迟变高而服务端 queue 不变时,应把 HTTP/gRPC 端点和前置层作为独立观察对象。

用指标和压测结果判断抖动来自哪里

先固定同一个模型、输入形状和请求速率,再比较低并发与高并发两个窗口。若并发从 1 提高到 4 后,pending_request_count、queue 时长和 p99 同步上升,而 compute_infer_duration_us 基本稳定,瓶颈更像调度容量不足。若 queue 仍接近原水平,但 compute_infer 的 p95/p99 变长,才应检查模型执行、输入尺寸、动态批处理等待或 GPU 资源竞争。

AI 推理服务中 p95 p99、排队时长、模型计算、待处理请求与吞吐的观测关系
图2:把延迟分位数、队列时长、模型计算时长、待处理请求和吞吐放在同一观测矩阵里,按关联变化判断瓶颈。
现象优先观察判断倾向
并发升高,queue 和 pending 一起升高queue_duration_us、pending_request_count、throughput调度排队
queue 稳定,compute_infer 的高分位变长compute_infer_duration_us、GPU 利用率模型计算
服务端分段稳定,客户端延迟变长HTTP/gRPC 端点、网关和网络服务外开销

Perf Analyzer 的输出可以作为对照实验:它会报告吞吐、客户端延迟以及服务端的 queue、compute 和 overhead。不要只比较平均值,至少同时记录 p50、p95、p99;平均值不变而 p99 抖动,常见于少量请求进入长队列或遇到批次边界。

把排查判断写成最小监控配方

Triton 默认指标端点通常是 http://localhost:8002/metrics。先确认目标模型的指标确实存在,再在 Prometheus 中对同一组 model、version 标签求增量速率。计数器不能直接当作单请求时长;用 rate(nv_inference_queue_duration_us[5m]) 与 rate(nv_inference_request_duration_us[5m]) 做窗口比较,才不会把服务启动以来的累计值误读成当前延迟。

# 中文注释:确认服务端已暴露请求、排队和模型计算指标
curl -s http://localhost:8002/metrics | grep -E 'nv_inference_(request|queue|compute_infer)_duration_us'

# 中文注释:只保留目标模型,避免多模型累计值混在一起
curl -s http://localhost:8002/metrics | grep 'model="text_encoder"'

实际看板可以增加一个“排队占比”表达式:以 queue 的窗口增量除以 request 的窗口增量,作为趋势指标而不是绝对真值。占比上升且 pending 同步增加,处理方向偏向实例数、最大并发、请求速率和批等待;占比平稳而 compute_infer 上升,则应回到模型执行和输入输出阶段。

两类抖动分别怎么处理

排队抖动先做容量实验:逐步提高模型实例并发或调整动态批策略,观察吞吐是否继续增长、p99 是否出现拐点。如果吞吐已基本不变而 queue 继续增加,继续堆请求只会扩大尾延迟,可以在网关做限流、背压或按优先级分流。改变配置后要重新记录同一组分位数,避免用不同输入形状的结果比较。

计算抖动则从输入大小、compute_input、compute_infer 和 compute_output 分开查。输入张量变大、输出 token 变多或 GPU 与其他任务争用,都可能让模型执行时间上升;这时单纯增加服务实例还可能带来显存压力。先用固定输入做基线,再逐项放开长度和并发,才能知道是模型本身、数据搬运还是资源竞争。

AI 推理延迟排查常见问题

GPU 利用率不高,能否直接判断不是模型计算?

不能。短请求、动态批处理、内存搬运和采样阶段都可能让 GPU 利用率不高,但 compute_infer 仍然变长。GPU 指标只能作为关联证据,要和分段延迟一起看。

pending request count 很高就一定是队列故障吗?

它说明有请求等待后端执行,但不等于服务异常。高并发或刻意的批处理等待也会产生 pending。需要同时观察 queue 时长、吞吐和错误率,确认是否已经影响服务目标。

为什么客户端延迟比服务端 request duration 高很多?

客户端还包含请求发送、响应读取、序列化和网络等待;前置网关也可能在 Triton 收到请求前消耗时间。此时应把端点 overhead 与服务外链路单独打点。

应该优先看平均延迟还是 p99?

定位抖动优先看 p95 和 p99,平均值用来做总量趋势。若只有少量请求变慢,平均值可能几乎不动,但 p99 已经暴露队列或计算的尾部问题。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go DNS 查询超时时为什么 context 已取消仍有延迟Go DNS 查询超时时为什么 context 已取消仍有延迟
上一篇
Go DNS 查询超时时为什么 context 已取消仍有延迟
Go 扫描未知列数结果时怎么动态分配接收变量
下一篇
Go 扫描未知列数结果时怎么动态分配接收变量
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    645次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    675次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    720次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    680次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    513次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码