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

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.lryc.cn/news/622810.html

相关文章:

  • 利用DeepSeek编写使用libcsv解析csv文件并用libxlsxwriter写入xlsx文件的C程序
  • FP16(半精度)和FP32(单精度)
  • Javar如何用RabbitMQ订单超时处理
  • pidgen!DecodeProdKey函数分析之iDecodedBytesMax
  • 【自用】JavaSE--特殊文件Properties与XML、日志技术
  • 驱动开发系列63 - 配置 nvidia 的 open-gpu-kernel-modules 调试环境
  • 智能二维码刷卡人脸识别梯控控制器硬件规格书​
  • USB PD 简介
  • 各种读取csv文件的工具性能比较
  • C语言(11)—— 数组(超绝详细总结)
  • 【DP】单词的划分
  • 机器学习的特征工程(特征构造、特征选择、特征转换和特征提取)详解
  • MATLAB R2010b系统环境(二)MATLAB环境的准备
  • React手撕组件和Hooks总结
  • 自动化测试的下一站:AI缺陷检测工具如何实现“bug提前预警”?
  • illustrator插件大全 免费插件介绍 Ai设计插件集合 (3)
  • 知识点汇总linuxC高级 -2系统命令压缩与链接
  • 机器学习相关算法:回溯算法 贪心算法 回归算法(线性回归) 算法超参数 多项式时间 朴素贝叶斯分类算法
  • 022 基础 IO —— 文件
  • [系统架构设计师]系统质量属性与架构评估(八)
  • 【完整源码+数据集+部署教程】太阳能面板污垢检测系统源码和数据集:改进yolo11-RVB-EMA
  • Golang Seata 分布式事务方案详解
  • 正点原子【第四期】Linux之驱动开发篇学习笔记-1.1 Linux驱动开发与裸机开发的区别
  • MySQL 从入门到精通 9:视图
  • 【lucene】SegmentInfos
  • 并查集理论基础, 107. 寻找存在的路径
  • 零改造迁移实录:2000+存储过程从SQL Server滑入KingbaseES V9R4C12的72小时
  • 生产环境Redis缓存穿透与雪崩防护性能优化实战指南
  • CSV 生成 Gantt 甘特图
  • 解锁JavaScript性能优化:从理论到实战