1 概述

浪潮信息KOS是浪潮信息基于Linux Kernel、OpenAnolis等开源技术自主研发的一款服务器操作系统,支持x86、ARM等主流架构处理器,性能和稳定性居于行业领先地位,具备成熟的 CentOS 迁移和替换能力,可满足云计算、大数据、分布式存储、人工智能、边缘计算等应用场景需求。详细介绍见官网链接https://www.ieisystem.com/kos/product-kos-xq.thtml?id=12126

vLLM是一种用于大规模语言模型(LLM)推理的框架,旨在提高模型的吞吐量和降低延迟。vLLM通过优化内存管理和调度策略,显著提升了模型在高并发场景下的性能。vLLM利用了一种名为PagedAttention的注意力机制,该机制借鉴了虚拟内存和分页技术,以减少缓存内存(KV Cache)的浪费,并允许在请求之间灵活共享KV缓存。这种设计使得vLLM在保持与现有系统相同延迟水平的情况下,能够将吞吐量提高2到4倍。官方网址:https://www.vllm.ai

vLLM提供了丰富的推理服务监控指标,便于推理服务运维人员快速了解推理服务系统性能表现、运行状态及瓶颈所在。

系统状态相关指标vllm:num_requests_running :当前在 GPU 上运行的请求数量。vllm:num_requests_waiting :等待处理的请求数量。vllm:lora_requests_info :LoRA 请求的相关统计信息,包括正在运行的 LoRA 适配器数量、最大 LoRA 数量和等待中的 LoRA 适配器数量。vllm:num_requests_swapped :被交换到 CPU 的请求数量。vllm:gpu_cache_usage_perc :GPU KV 缓存的使用率(1 表示 100% 使用)。vllm:cpu_cache_usage_perc :CPU KV 缓存的使用率(1 表示 100% 使用)。vllm:cpu_prefix_cache_hit_rate :CPU 前缀缓存的命中率。vllm:gpu_prefix_cache_hit_rate :GPU 前缀缓存的命中率。迭代统计相关指标vllm:iter_block_max :迭代时块的最大值。vllm:iter_block_total :迭代时块的总数。vllm:iter_block_avg :迭代时块的平均值。vllm:iter_block_stddev :迭代时块的标准差。请求统计相关指标延迟相关 :如 Time To First Token(TTFT,用户等待首个字符出现的时间),Time Per Output Token(TPOT,后续字符的生成速度),平均 / 最大延迟,分位数延迟(如 P99)等。模型执行时间 :模型执行的具体时间。Token 处理 :与 Token 处理相关的指标。请求参数 :如请求的大小、输入输出的 Token 数量等。

2 环境准备

操作系统版本:KOS 5.8 sp2u1(5.10.134-17.2.2.kos5.x86_64)

测试架构:x86_64,96核1TB物理机

显卡:NVIDIA GeForce RTX 4090 D * 1

Docker镜像: vllm/vllm-openai:latest

模型:DeepSeek-R1-Distill-Llama:8B

3 vLLM监控指标可视化呈现

0、启动vllm推理容器服务(vllm推理服务默认开启了metrics指标,无需增加任何参数)

1、docker pull http://swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/prometheus

2、docker pull http://swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/grafana/grafana

3、编写Prometheus配置文件

# 全局配置项,适用于所有 jobglobal: # 设置 Prometheus 抓取目标指标的时间间隔 scrape_interval: 15s # 每 15 秒抓取一次数据(默认是 1 分钟) # 设置评估告警规则的时间间隔 evaluation_interval: 15s # 每 15 秒检查一次告警规则(默认是 1 分钟) # 设置每次抓取目标的最大超时时间 scrape_timeout: 10s # 默认也是 10 秒# 抓取目标配置scrape_configs: # 第一个 job:监控 vllm 推理服务 - job_name: 'vllm' # job 名称,Prometheus 中标签为 job="vllm" static_configs: - targets: - '10.129.131.18:8000' # vllm 服务的地址和端口

4、docker run -d --name prometheus -p 9090:9090 -v /data/ssdmodels/wubx/:/data http://swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/prometheus

5、进入 prometheus : docker exec -it prometheus bash

6、替换Prometheus.yml: cp /data/prometheus.yml /opt/bitnami/prometheus/conf/prometheus.yml

7、重启Prometheus容器服务 docker stop prometheus; docker start prometheus

8、确认Prometheus获取数据正常(浏览器访问http://10.129.131.18:9090 在 Status > Targets)

9、docker run -d --name grafana -p 3000:3000 http://swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/grafana/grafana

12、下载vllm.json(项目文件预览 - vllm:A high-throughput and memory-efficient inference and serving engine for LLMs - GitCode

10、在浏览器访问grafana:http://10.129.131.18:3000 ,默认用户名密码 admin/admin,需要改密码,18环境为123456

11、添加Prometheus为数据源

配置Prometheus访问链接

Save & test测试是否成功

13、import vllm.json到grafana(方法与之前的dcgm一致)

14、执行推理任务

curl http://localhost:8000/v1/completions \

-H "Content-Type: application/json" \

-d '{

"model": "DeepSeek-R1-Distill-Llama-8B",

"prompt": "介绍下浪潮信息",

"max_tokens": 100,

"temperature": 0

}'

15、结果如下(监控数据需要有推理请求才能监控到)

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐