ERNIE-4.5-0.3B-PT模型监控方案PrometheusGrafana看板搭建1. 引言当你部署了ERNIE-4.5-0.3B-PT模型服务后有没有遇到过这样的困惑模型运行得好不好GPU资源用足了没有推理速度怎么样有没有异常请求如果只是靠肉眼观察日志这些问题很难得到准确的答案。今天我就来分享一套完整的监控方案用Prometheus和Grafana为你的ERNIE模型服务装上眼睛让你能够实时掌握模型服务的运行状态。这套方案不仅部署简单而且效果立竿见影几分钟内就能看到漂亮的监控仪表盘。2. 环境准备与组件介绍在开始之前我们先简单了解一下要用到的两个核心组件Prometheus是一个开源的监控系统专门负责收集和存储各种指标数据。它就像是个数据收集员会定期从各个服务那里拉取监控数据。Grafana则是个数据可视化平台能把Prometheus收集到的数据变成直观的图表和仪表盘。它就像是个数据分析师把原始数据变成容易理解的视觉信息。这两个工具配合使用就能为你的ERNIE模型服务提供全方位的监控能力。2.1 安装Docker如果你的系统还没有安装Docker可以用以下命令快速安装# 更新软件包列表 sudo apt-get update # 安装必要的依赖包 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common # 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 添加Docker仓库 sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable # 再次更新并安装Docker sudo apt-get update sudo apt-get install docker-ce # 验证安装是否成功 sudo docker run hello-world3. 部署Prometheus监控系统3.1 创建Prometheus配置文件首先创建一个配置文件告诉Prometheus要监控什么# 创建配置目录 mkdir -p prometheus/config # 创建配置文件 cat prometheus/config/prometheus.yml EOF global: scrape_interval: 15s # 每15秒收集一次数据 scrape_configs: - job_name: prometheus static_configs: - targets: [localhost:9090] - job_name: ernie-model static_configs: - targets: [host.docker.internal:8000] # 假设ERNIE服务运行在8000端口 metrics_path: /metrics # 监控数据端点 - job_name: node-exporter static_configs: - targets: [host.docker.internal:9100] # 节点监控 EOF3.2 启动Prometheus容器用Docker一键启动Prometheusdocker run -d \ --nameprometheus \ -p 9090:9090 \ -v $(pwd)/prometheus/config:/etc/prometheus \ prom/prometheus启动成功后在浏览器访问http://你的服务器IP:9090就能看到Prometheus的界面了。4. 部署Grafana可视化平台4.1 启动Grafana容器Grafana的部署同样简单docker run -d \ --namegrafana \ -p 3000:3000 \ grafana/grafana-oss等容器启动后访问http://你的服务器IP:3000就能看到Grafana的登录界面。默认用户名和密码都是admin首次登录后会要求修改密码。4.2 配置数据源登录Grafana后需要先添加Prometheus作为数据源点击左侧菜单的Configuration小齿轮图标选择Data Sources点击Add data source选择Prometheus在URL字段填写http://你的服务器IP:9090点击Save Test看到绿色提示就表示连接成功了5. 为ERNIE服务添加监控指标要让Prometheus能够监控ERNIE模型服务我们需要在服务中暴露监控指标。这里以Python的FastAPI服务为例5.1 安装监控依赖pip install prometheus-client fastapi uvicorn5.2 在ERNIE服务中添加监控在你的ERNIE服务代码中添加以下监控相关代码from prometheus_client import Counter, Gauge, Histogram, generate_latest from fastapi import Response import time # 定义监控指标 REQUEST_COUNT Counter( ernie_requests_total, Total number of requests, [model, status] ) REQUEST_LATENCY Histogram( ernie_request_latency_seconds, Request latency in seconds, [model] ) GPU_MEMORY Gauge( ernie_gpu_memory_usage_bytes, GPU memory usage in bytes, [device_id] ) GPU_UTILIZATION Gauge( ernie_gpu_utilization_percent, GPU utilization percentage, [device_id] ) # 在FastAPI应用中添加监控端点 app.get(/metrics) async def metrics(): return Response(generate_latest(), media_typetext/plain) # 在推理函数中添加监控 app.post(/generate) async def generate_text(request: TextRequest): start_time time.time() try: # 这里是你的推理逻辑 result await run_inference(request.text) # 记录成功的请求 REQUEST_COUNT.labels(modelernie-4.5-0.3b-pt, statussuccess).inc() # 记录延迟 latency time.time() - start_time REQUEST_LATENCY.labels(modelernie-4.5-0.3b-pt).observe(latency) return result except Exception as e: # 记录失败的请求 REQUEST_COUNT.labels(modelernie-4.5-0.3b-pt, statuserror).inc() raise e # 定期更新GPU指标需要安装pynvml def update_gpu_metrics(): try: import pynvml pynvml.nvmlInit() device_count pynvml.nvmlDeviceGetCount() for i in range(device_count): handle pynvml.nvmlDeviceGetHandleByIndex(i) mem_info pynvml.nvmlDeviceGetMemoryInfo(handle) utilization pynvml.nvmlDeviceGetUtilizationRates(handle) GPU_MEMORY.labels(device_idstr(i)).set(mem_info.used) GPU_UTILIZATION.labels(device_idstr(i)).set(utilization.gpu) except ImportError: print(pynvml not installed, GPU monitoring disabled)6. 创建Grafana监控看板现在我们来创建一个功能完整的监控看板。6.1 创建新的Dashboard在Grafana左侧菜单点击 → Dashboard点击Add new panel6.2 添加关键监控图表GPU使用率面板查询语句ernie_gpu_utilization_percent可视化类型Stat标题GPU使用率内存使用面板查询语句ernie_gpu_memory_usage_bytes / 1024 / 1024 / 1024转换为GB可视化类型Gauge标题GPU内存使用 (GB)请求延迟面板查询语句rate(ernie_request_latency_seconds_sum[5m]) / rate(ernie_request_latency_seconds_count[5m])可视化类型Time series标题平均请求延迟请求量面板查询语句rate(ernie_requests_total[5m])可视化类型Time series标题请求速率6.3 导入预配置的Dashboard如果你不想手动配置也可以直接导入现成的Dashboard。点击Grafana侧边栏的 → Import输入Dashboard ID18674这是一个常用的Node Exporter Dashboard然后选择你的数据源。7. 实际效果与使用建议部署完成后你的监控看板大概会长这样最上面一排显示整体状态当前GPU使用率、内存占用、请求速率和错误率。中间是趋势图表可以看到GPU使用率随时间的变化、请求延迟的趋势、以及请求量的波动。下面是详细数据包括最近的成功/失败请求统计、各时间段的性能指标等。使用建议设置告警阈值当GPU使用率持续低于30%时告警说明资源浪费当请求延迟超过500ms时告警说明性能有问题当错误率超过1%时告警需要立即检查定期查看历史趋势了解业务高峰期和低峰期8. 总结通过这套PrometheusGrafana的监控方案你现在可以实时掌握ERNIE-4.5-0.3B-PT模型的运行状态了。不仅能看到的资源使用情况还能监控服务性能和业务指标。实际使用下来部署过程比想象中简单效果却非常明显。特别是那个GPU使用率的图表能清楚地看到模型推理时资源的使用 pattern。建议你也动手试试先从基本的监控开始然后根据实际需求慢慢添加更多的监控指标。监控系统搭建好后你会发现自己对服务的了解程度大大提升 troubleshooting也更有针对性了。下次遇到性能问题就不用再盲目猜测直接看数据说话就行。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。