当前位置: 首页 > java >正文

FastDeploy2.0:Prometheus3.5.0通过直接采集,进行性能指标分析

Prometheus的安装部署详见《大模型性能指标的监控系统(prometheus3.5.0)和可视化工具(grafana12.1.0)基础篇》

一、概述

下图就是FastDeploy2.0的几个核心指标显示效果,后面详细介绍如何操作。

二、Prometheus的两种采集方式

直接采集和间接采集

直接采集就是埋点式的,比如你自己的应用程序用 Prometheus 客户端的代码自己去埋点。比如FastDeploy就是直接采集,它已经将埋点埋好了,把 metrics 断点暴露出来了。
间接采集:虽然TensorRT-LLM也把metrics 断点暴露出来了,但格式不满足要求,我们就需要利用第三方工具(json_exporter)转换成Prometheus识别的指标。

可以使用的第三方Exporter,详见《第三方的Exporter列表》。

三、修改prometheus.yml

2.1进入容器里面:

docker exec -it prometheus /bin/sh

2.2增加数据来源

#vi  /etc/prometheus/prometheus.yml

  - job_name: "llm_job"

    static_configs:

      - targets: ["192.168.1.154:9401"]

2.3手动启动

使用 promtool 工具

promtool check config /etc/prometheus/prometheus.yml

使用 Prometheus 的 Web 接口发送一个 HTTP POST 请求到 /targets/-/reload 来重新加载配置

curl -X POST http://172.26.142.154:9090/-/reload

2.4查看抓取状态

Endpoint:端点,可以抓取的指标来源。

Target:目标,包含了端点地址,端口的状态等信息。

四、Grafana添加数据源Prometheus

五、FastDeploy2.0性能指标说明

http://192.168.1.154:9401/metrics可以看到下面的具体指标。

5.1首次token时间(time_to_first_token_seconds

fastdeploy:time_to_first_token_seconds_count 30.0

fastdeploy:time_to_first_token_seconds_sum 174.25801753997803

总请求数(count):30 个

总首 token 延迟时间(sum):约 174.26 秒

平均首 token 延迟(mean):174.26/30≈5.81 秒

首 token 延迟主要由 Prefill 阶段耗时 决定,因为:

Prefill = 输入编码 + KV Cache 构建

    • 模型需要处理整个输入 prompt
    • 并为每个 token 计算并缓存 Key/Value 向量
    • 复杂度为 O(n²),n 是输入长度

5.2生成每个输出 token 所需的时间(time_per_output_token_seconds)


fastdeploy:time_per_output_token_seconds_count 6925.0
fastdeploy:time_per_output_token_seconds_sum 828.3923425674438

用 sum / count 得到 平均每个 token 的生成时间:

衡量大语言模型(LLM)在流式输出(streaming)过程中,生成每一个输出 token 的延迟性能。它反映了模型的“首 token 延迟之后的流畅度”,也就是常说的“吐字速度”。

5.3模型“持续输出”阶段的耗时request_decode_time_seconds(from first token to last token)
 

fastdeploy:request_decode_time_seconds_count 1.0
fastdeploy:request_decode_time_seconds_sum 4.071532964706421

在大模型推理中,整个过程可以分为两个主要阶段:

阶段

说明

1. Prefill / Encoding

处理输入 prompt,计算 KV Cache,生成 第一个输出 token(首 token)

2. Decode / Generation

基于已生成的 token,逐个预测下一个 token,直到结束(EOS)

request_decode_time_seconds 就是 第 2 阶段的耗时

5.4模型推理时间request_inference_time_seconds


fastdeploy:request_inference_time_seconds_count 30.0
fastdeploy:request_inference_time_seconds_sum 1002.6503601074219

fastdeploy:request_inference_time_seconds指从 “模型推理开始” 到 “生成最后一个 token”

5.5端到端完整延迟request_latency_seconds

fastdeploy:e2e_request_latency_seconds_count 1.0
fastdeploy:e2e_request_latency_seconds_sum 5.990736722946167

e2e_request_latency_seconds 指从请求到达系统到最终响应返回(端到端完整延迟).

类比:

  • request_inference_time ≈ 厨师炒菜的时间
  • e2e_request_latency  ≈ 顾客从点餐到上菜的总时间(含等位、下单、传菜)

注:e2e_request_latency ≥ request_inference_time

5.6请求在系统中排队等待处理的时间request_queue_time_seconds


含义:请求在 预处理完成后,到 推理开始前 所等待的时间。
也就是 排队时间(Queue Time),反映了系统调度能力和当前负载情况。
这段时间内,请求已经准备好(prompt 已解析、tokenized),但因资源不足或调度策略未能立即执行。

这个指标直接体现了系统的 资源紧张程度调度效率

queue_time 值可能原因
✅ 接近 0s系统空闲,资源充足,请求立即处理
⚠️ 几秒 ~ 十几秒系统负载较高,有少量排队
❌ 数十秒或更高

系统过载,资源不足,可能出现雪崩

可以理解为 “我在排队,等系统有资源来处理我”。

5.7 GPU 缓存使用率gpu_cache_usage_perc 

fastdeploy:gpu_cache_usage_perc 0.14959652389819988

当前 GPU 上用于存储 KV Cache(Key-Value Cache)的显存占用百分比。
(一)在大语言模型的 自回归生成(autoregressive decoding) 过程中:
1.每次生成一个 token,都需要依赖之前所有 token 的注意力(attention)计算。
2.为了避免重复计算历史 token 的 Key 和 Value 向量,系统会将它们缓存在 GPU 显存中,这就是 KV Cache。
(二)KV Cache 的作用:
避免重复计算,大幅提升生成速度(降低延迟)
支持流式输出(streaming)
是实现高效批处理(batching)和连续批处理(continuous batching)的基础

5.8生成的输出 token 数(request_generation_tokens)

fastdeploy:request_generation_tokens_count 1.0
fastdeploy:request_generation_tokens_sum 56.0

含义:每个请求实际生成的输出 token 数量(即 max_new_tokens 或 stream 结束前生成的 token 数)
这是衡量 响应长度 和 decode 负载 的关键指标。

作用:

用途说明
🔢 吞吐量计算结合时间指标可计算 tokens per second (TPS)
💰 成本计量输出 token 是 LLM 计费的主要依据(如 OpenAI)
📊 性能归因分析长输出是否导致延迟升高
🚫 防滥用

检测是否有异常长输出(如无限生成)

5.9用户在请求中设置的 max_tokens 参数值request_params_max_tokens


fastdeploy:request_params_max_tokens_count 1.0
fastdeploy:request_params_max_tokens_sum 110.0

作用:

用途说明
📏 资源预估系统可根据此值预分配 KV Cache 显存
⏱️ 延迟预测可预估最大生成时间(结合 TPOT)
🔒 安全控制防止用户请求过长输出导致服务过载
🆚 利用率分析对比 generation_tokens 看实际使用率

5.10输入 prompt 的长度(token 数)request_prompt_tokens


fastdeploy:request_prompt_tokens_count 1.0
fastdeploy:request_prompt_tokens_sum 9.0

作用:

用途说明
⏱️ 首 token 延迟分析prompt 越长,time_to_first_token 通常越长
💾 显存占用评估长 prompt 占用更多 KV Cache(prefill 阶段)
📈 上下文利用率对比 max_model_len 看是否支持长文本
🤖 RAG/Agent 场景监控检测是否传入了过长的知识库内容

5.11request_prefill_time

指标全是0,不知道为什么,有清楚的朋友,麻烦告知我。

http://www.xdnf.cn/news/17988.html

相关文章:

  • 嵌入式硬件篇---电平转换电路
  • 【JavaEE】(13) Spring Web MVC 入门
  • 大模型——使用dify搭建SOP检索问答Agent
  • 外出业务员手机自动添加报价单​——仙盟创梦IDE
  • 链表。。。
  • 【C#补全计划】Lambda表达式
  • java 面试八股集锦
  • 企业级Java项目金融应用领域——银行系统(补充)
  • 力扣hot100 | 矩阵 | 73. 矩阵置零、54. 螺旋矩阵、48. 旋转图像、240. 搜索二维矩阵 II
  • PMP-项目管理-十大知识领域:整合管理-协调各知识领域,确保项目目标一致
  • webpack
  • 架构调整决策
  • 基础数据结构
  • 027 动静态库 —— 静态库
  • 马拉松|基于SSM的马拉松报名系统微信小程序的系统设计与实现(源码+数据库+文档)
  • uniapp:微信小程序使用Canvas 和Canvas 2D绘制图形
  • 给纯小白的Python操作Word笔记
  • 使用npm/pnpm自身安装指定版本的pnpm
  • 【论文笔记】Multi-Agent Based Character Simulation for Story Writing
  • Vue3从入门到精通:5.2 Vue3构建工具与性能优化深度解析
  • 同创物流学习记录2·电车光电
  • 【八股】计网-计算机网络-秋招
  • Windows MCP.Net:革命性的 .NET Windows 桌面自动化 MCP 服务器
  • 分享一个大数据的源码实现 基于Hadoop的二手车市场数据分析与可视化 基于Spark的懂车帝二手车交易数据可视化分析系统
  • ABB焊接机器人弧焊省气
  • ubuntu远程桌面很卡怎么解决?
  • 深入剖析跳表:高效搜索的动态数据结构
  • JavaScript 逻辑运算符与实战案例:从原理到落地
  • 杂记 02
  • Docker安装——配置国内docker镜像源