千问3.5-2B部署教程:GPU利用率监控脚本(nvidia-smi + prometheus exporter)

张开发
2026/4/18 3:26:36 15 分钟阅读

分享文章

千问3.5-2B部署教程:GPU利用率监控脚本(nvidia-smi + prometheus exporter)
千问3.5-2B部署教程GPU利用率监控脚本nvidia-smi prometheus exporter1. 引言在部署和使用千问3.5-2B这类视觉语言模型时GPU资源的高效利用至关重要。本教程将手把手教你如何搭建一个轻量级的GPU监控系统实时跟踪模型运行时的显存占用、GPU利用率等关键指标。通过这套监控方案你可以直观了解模型推理时的资源消耗情况及时发现性能瓶颈和异常情况为后续的优化和扩容提供数据支持2. 环境准备2.1 基础环境要求确保你的系统满足以下条件已安装NVIDIA显卡驱动建议版本470已安装nvidia-smi工具通常随驱动一起安装Python 3.6环境基本的Linux命令行操作能力2.2 安装依赖包pip install prometheus-client psutil3. 监控脚本实现3.1 创建exporter脚本新建一个名为gpu_monitor.py的文件内容如下import subprocess import re from prometheus_client import start_http_server, Gauge import time # 创建Prometheus指标 GPU_UTIL Gauge(gpu_utilization, GPU utilization percentage, [gpu_id]) GPU_MEMORY_USED Gauge(gpu_memory_used, GPU memory used in MB, [gpu_id]) GPU_MEMORY_TOTAL Gauge(gpu_memory_total, GPU total memory in MB, [gpu_id]) GPU_TEMPERATURE Gauge(gpu_temperature, GPU temperature in Celsius, [gpu_id]) def parse_nvidia_smi(): try: output subprocess.check_output([nvidia-smi, --query-gpuutilization.gpu,memory.used,memory.total,temperature.gpu, --formatcsv,noheader,nounits]) lines output.decode(utf-8).strip().split(\n) for i, line in enumerate(lines): values [x.strip() for x in line.split(,)] gpu_id str(i) GPU_UTIL.labels(gpu_idgpu_id).set(float(values[0])) GPU_MEMORY_USED.labels(gpu_idgpu_id).set(float(values[1])) GPU_MEMORY_TOTAL.labels(gpu_idgpu_id).set(float(values[2])) GPU_TEMPERATURE.labels(gpu_idgpu_id).set(float(values[3])) except Exception as e: print(fError parsing nvidia-smi output: {e}) if __name__ __main__: # 启动Prometheus metrics服务器 start_http_server(8000) print(GPU metrics exporter started on port 8000) while True: parse_nvidia_smi() time.sleep(5) # 每5秒采集一次数据3.2 脚本功能说明这个脚本实现了以下功能通过nvidia-smi命令获取GPU的关键指标将这些指标暴露为Prometheus格式的metrics提供HTTP接口供Prometheus服务器抓取数据默认每5秒更新一次数据4. 部署与运行4.1 启动监控服务python gpu_monitor.py服务启动后可以通过以下命令验证是否正常工作curl http://localhost:8000/metrics你应该能看到类似如下的输出# HELP gpu_utilization GPU utilization percentage # TYPE gpu_utilization gauge gpu_utilization{gpu_id0} 45.0 # HELP gpu_memory_used GPU memory used in MB # TYPE gpu_memory_used gauge gpu_memory_used{gpu_id0} 5632.0 # HELP gpu_memory_total GPU total memory in MB # TYPE gpu_memory_total gauge gpu_memory_total{gpu_id0} 24576.0 # HELP gpu_temperature GPU temperature in Celsius # TYPE gpu_temperature gauge gpu_temperature{gpu_id0} 68.04.2 配置Prometheus抓取如果你已经部署了Prometheus监控系统可以在prometheus.yml配置文件中添加以下内容scrape_configs: - job_name: gpu_metrics static_configs: - targets: [your_server_ip:8000]5. 监控指标解读5.1 关键指标说明指标名称含义正常范围gpu_utilizationGPU计算单元使用率0-100%gpu_memory_used已使用的显存(MB)根据模型大小变化gpu_memory_total总显存(MB)固定值gpu_temperatureGPU温度(℃)85℃为佳5.2 千问3.5-2B典型指标根据我们的测试千问3.5-2B在RTX 4090上的典型指标为GPU利用率30-70%取决于输入复杂度显存占用约4.6GB温度60-75℃取决于散热条件6. 进阶配置6.1 调整采集频率修改脚本中的time.sleep(5)可以调整数据采集频率更频繁的采集如1秒可以提供更精细的数据但会增加系统负载较长的间隔如30秒适合长期监控场景6.2 添加进程级监控如果需要监控特定进程如千问3.5-2B服务的资源使用情况可以修改脚本添加以下功能def get_process_gpu_usage(pid): try: output subprocess.check_output([nvidia-smi, pmon, -c, 1]) for line in output.decode(utf-8).split(\n): if str(pid) in line: parts re.split(r\s, line.strip()) return { sm: float(parts[3]), mem: float(parts[4]) } except: return None7. 总结通过本教程你已经成功部署了一套轻量级的GPU监控系统可以实时跟踪千问3.5-2B模型运行时的资源使用情况。这套方案具有以下优势轻量高效基于nvidia-smi和Prometheus资源消耗极低易于集成标准的Prometheus格式可与现有监控系统无缝对接灵活可扩展可以根据需要添加更多监控指标建议将这套监控系统与千问3.5-2B的部署结合使用特别是在以下场景长期运行的服务环境需要优化性能的场合多用户共享GPU资源的场景获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章