启动监控页面监控vllm,大模型,显存的占用情况

做成一套“Prometheus + Grafana”的可视化监控页,把 vLLM 自带指标、GPU(VRAM) 指标、容器/主机 CPU&内存 全收集到同一个看板里。

方案总览

数据源(exporters)
1. vLLM 自带 /metrics(Prometheus 格式,含运行中/排队请求数、KV-Cache/GPU 显存占用等)。
2. NVIDIA 显卡:DCGM Exporter 暴露 VRAM/利用率/温度/功耗 等到 /metrics。
• 如果是华为 Ascend,可用 npu-smi 做巡检;Prometheus 侧常用 node_exporter 的 textfile collector 或脚本导出器把 npu-smi 结果转成指标(工程做法)。
3. 容器/宿主机:cAdvisor(容器 CPU/内存/网络/重启次数等)。

采集与展示
• Prometheus 抓取所有 /metrics;Grafana 做“单页看板”。
• 云上也可以直接用 Google Cloud Managed Prometheus + 现成 vLLM Dashboard。
• 如需看“每个请求的阶段耗时/链路”,加 OpenTelemetry + Jaeger(vLLM 已提供 OTel 示例)。

一键部署(Docker Compose 示例)

把下面两个文件放到同一目录:

  1. docker-compose.yml
version: "3.8"
services:
  # 你的 vLLM(也可以是外部已有实例;这里仅示例)
  vllm:
    image: <your_vllm_image>
    command: ["python3","-m","vllm.entrypoints.openai.api_server","--model","/models/qwen3"]
    ports: ["8000:8000"]
    # 如果跑在别处,把 job 里 targets 指到实际地址即可

  # Prometheus(抓取 vLLM /metrics、DCGM、cAdvisor)
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
    ports: ["9090:9090"]

  # Grafana(做监控页面)
  grafana:
    image: grafana/grafana
    ports: ["3000:3000"]
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin

  # NVIDIA GPU 指标(DCGM Exporter)
  dcgm:
    image: nvidia/dcgm-exporter:latest
    runtime: nvidia
    privileged: true
    ports: ["9400:9400"]   # /metrics

  # 容器指标(cAdvisor)
  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    privileged: true
    ports: ["8080:8080"]
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
  1. prometheus.yml
global:
  scrape_interval: 2s
scrape_configs:
  - job_name: 'vllm'
    metrics_path: /metrics
    static_configs:
      - targets: ['vllm:8000']      # 改成你的 vLLM 地址:端口

  - job_name: 'dcgm'
    static_configs:
      - targets: ['dcgm:9400']      # NVIDIA GPU 指标

  - job_name: 'cadvisor'
    static_configs:
      - targets: ['cadvisor:8080']  # 容器/系统指标

启动:

docker compose up -d
# 访问 Grafana: http://localhost:3000  (admin / admin)
# 访问 Prometheus: http://localhost:9090

DCGM Exporter 会暴露诸如 DCGM_FI_DEV_FB_USED(显存已用 MiB)、DCGM_FI_DEV_GPU_UTIL(GPU 利用率 %)等指标;Prometheus 会自动抓取。

Grafana 看板怎么做(关键图表 + PromQL)

注:vLLM 指标在不同打包里命名略有差异(上游常见 vllm_running_requests / vllm_waiting_requests;有的发行版写成 vllm_num_requests_running / vllm_num_requests_waiting)。下面给出两套写法,有哪个用哪个。 

A. vLLM 负载 & 排队
• 正在运行请求数(Gauge)
• max(vllm_running_requests) 或 max(vllm_num_requests_running)
• 排队等待请求数(Gauge)
• max(vllm_waiting_requests) 或 max(vllm_num_requests_waiting)

B. vLLM 显存 / KV-Cache(若你的版本暴露了该指标)
• GPU 显存使用(字节 → GiB)
• max(vllm_gpu_memory_usage_bytes) / 1024 / 1024 / 1024 (可做单值 + 阈值配色)

C. GPU(NVIDIA / DCGM)
• 显存使用(MiB)
• DCGM_FI_DEV_FB_USED
• GPU 利用率(%)
• DCGM_FI_DEV_GPU_UTIL
• 温度/功耗(可选)
• DCGM_FI_DEV_GPU_TEMP、DCGM_FI_DEV_POWER_USAGE 等(视驱动/机型)。 

D. 容器/主机(cAdvisor)
• vLLM 容器内存使用
• container_memory_working_set_bytes{container=“vllm”}
• vLLM 容器 CPU 使用率(近 1m)
• rate(container_cpu_usage_seconds_total{container=“vllm”}[1m])

现成模板
• 你也可以直接导入 cAdvisor/Grafana 官方 Docker 容器看板,再加上 vLLM 图表:ID 19908 / 15798(Grafana.com 导入)。 
• 在 GKE 上可直接启用 vLLM 托管看板(Managed Prometheus 提供)。 

告警(Prometheus rules 示例)

新建 alerts.yml 并在 prometheus.yml 里 rule_files: [“alerts.yml”] 引用:

groups:
- name: vllm-alerts
  rules:
  - alert: VLLMWaitingQueueHigh
    expr: (max(vllm_waiting_requests) OR max(vllm_num_requests_waiting)) > 5
    for: 2m
    labels: {severity: warning}
    annotations:
      summary: "vLLM 等待队列偏高"
      description: "等待请求数持续 > 5,可能需要扩批/加副本或限流。"

  - alert: GPUMemoryHigh
    expr: DCGM_FI_DEV_FB_USED / (DCGM_FI_DEV_FB_USED + DCGM_FI_DEV_FB_FREE) > 0.90
    for: 5m
    labels: {severity: warning}
    annotations:
      summary: "GPU 显存使用 > 90%"
      description: "显存紧张,可能影响并发与稳定性。"

  - alert: VLLMNoRequestsButHighMem
    expr: (max(vllm_running_requests) OR max(vllm_num_requests_running)) == 0
          and DCGM_FI_DEV_FB_USED > 2000
    for: 10m
    labels: {severity: info}
    annotations:
      summary: "无请求但显存占用较高"
      description: "检查是否有残留 KV-Cache 或进程泄漏。"

进阶:分布式追踪(可选)

如果你想在页面里看到“一次调用从进入到首 Token/解码完成”的时间线:
• 给 vLLM 开 OpenTelemetry,跑个 Jaeger 或接你已有 OTel Collector;Grafana 也可接 Trace 数据源。vLLM 官方有 OTel 示例与生产栈教程。 

小结(你将获得的“单页监控”)
• vLLM 引擎健康度:运行/等待请求数、(可选)TTFT/吞吐趋势
• 模型资源:KV-Cache/GPU 显存使用(vLLM 暴露) + GPU 真实 VRAM/利用率/温度/功耗(DCGM)
• 容器/系统资源:CPU、内存、网络、重启
• 告警:排队过高、显存吃紧、异常空跑
• (可选)调用链:OTel + Jaeger

上述组件与指标均来自 vLLM 官方/文档与主流 GPU 监控方案(DCGM、cAdvisor),生产上已被广泛采用。

### vLLM 实际运行时的显存占用分析 vLLM 是一种高效的大型语言模型推理框架,其核心技术创新之一是 PagedAttention 技术。这项技术显著提升了 GPU 显存的利用效率,尤其是在处理动态长度输入序列时能够有效减少显存碎片化问题[^1]。 #### 1. 显存分配机制 在传统的 Transformer 推理过程中,KV Cache 的管理通常采用静态分配方式,这可能导致显存浪费或碎片化现象严重。而 vLLM 利用了分页缓存策略(Paged KV Cache),将 KV 缓存划分为固定大小的小页面,并按需加载到显存中。这种设计使得即使显卡物理显存有限,也可以通过交换机制将不常用的页面移至 CPU 内存或其他存储设备上,从而实现更高的显存利用率[^1]。 #### 2. 显存优化效果 实验表明,在相同硬件条件下,相比其他主流推理引擎(如 Hugging Face Transformers 或 FasterTransformer),vLLM 能够支持更大规模的语言模型或者更高吞吐量的服务请求。具体来说,得益于 PagedAttention 的引入,vLLM 可以让显存的实际使用率增加约 2 至 3 倍[^1]。 #### 3. 查看当前运行状态下的显存消耗 如果希望监控某个特定实例下 vLLM显存的具体占用状况,可以通过以下方法获取相关信息: - **系统命令查询** 使用 `nvidia-smi` 工具可以实时观察 NVIDIA GPU 上各个进程所使用的显存量。例如执行下面这条指令即可获得详细的资源分布图谱: ```bash nvidia-smi --query-compute-apps=pid,used_memory --format=csv,noheader ``` - **结合 PS 查询指定进程详情** 若要进一步确认哪些具体的 vLLM 子任务占用了多少显存,则可先定位该应用对应的 PID 并解析关联数据流路径。比如借助 Linux 自带工具链完成初步筛选操作: ```bash ps aux | grep vllm ``` 结果列表里除了展示目标程序启动脚本外还会附带上部分初始化阶段设定好的超参选项,便于后续调试追踪[^3]。 综上所述,通过对 vLLM 构建原理的理解以及实践中的监测手段介绍,我们可以较为全面地掌握它在整个生命周期内的显存行为特征。 ```python import torch from vllm import LLM model = LLM(model="example_model", tensor_parallel_size=torch.cuda.device_count()) print(f"Model loaded with {torch.cuda.memory_allocated() / (1024 * 1024)} MB of VRAM used.") ``` 以上代码片段展示了如何基于 PyTorch 库计算单次调用后即时产生的显存开销数值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值