Phi-3-mini-128k-instruct部署教程:Prometheus+Grafana监控vLLM GPU利用率
Phi-3-mini-128k-instruct部署教程:Prometheus+Grafana监控vLLM GPU利用率
你是不是已经用vLLM成功部署了Phi-3-mini-128k-instruct模型,并且用Chainlit搭建了一个漂亮的前端界面?模型跑起来了,对话也正常了,但心里总有点不踏实——服务器上的GPU到底用了多少?内存压力大不大?服务稳不稳定?
别担心,今天我们就来解决这个问题。我将带你一步步搭建一套专业的监控系统,用Prometheus收集数据,用Grafana展示漂亮的图表,让你对模型的运行状态了如指掌。整个过程就像给模型装上了“仪表盘”,哪里有问题一眼就能看出来。
1. 为什么需要监控GPU利用率?
在深入操作之前,我们先聊聊为什么这件事很重要。你可能会想:“模型能正常回答问题不就行了吗?” 但实际情况要复杂得多。
看不见的问题才是真问题。想象一下这些场景:
- 用户反馈响应变慢了,但你不知道是GPU满了还是网络卡了
- 服务突然崩溃,你只能重启,却找不到根本原因
- 想优化性能,但不知道瓶颈到底在哪里
- 担心资源浪费,却不知道GPU实际用了多少
有了监控系统,这些问题就迎刃而解了。你可以:
- 实时查看GPU使用率、显存占用、温度等关键指标
- 设置告警,在问题发生前就收到通知
- 分析趋势,了解服务的负载模式和资源需求
- 优化配置,基于数据做出更明智的决策
特别是对于Phi-3-mini-128k-instruct这样的模型,虽然参数不多(38亿),但在处理128K长上下文时,对显存和计算资源的要求依然不低。好的监控能帮你用得更省心、更高效。
2. 监控方案整体架构
我们的监控系统由三个核心组件组成,它们各司其职,协同工作:
用户访问
↓
Chainlit前端界面
↓
vLLM服务(运行Phi-3-mini-128k-instruct)
↓
NVIDIA GPU ←→ NVIDIA DCGM Exporter(采集指标)
↓
Prometheus(收集和存储指标)
↓
Grafana(可视化展示)
各组件的作用:
- NVIDIA DCGM Exporter:这是NVIDIA官方提供的工具,专门用来采集GPU的各种指标数据
- Prometheus:负责定时从Exporter拉取数据,并存储起来,相当于监控系统的“数据库”
- Grafana:从Prometheus读取数据,用漂亮的图表展示出来,是我们的“仪表盘”
听起来有点复杂?别担心,我会带你一步步完成,每个步骤都有详细的命令和说明。
3. 环境准备与依赖安装
在开始之前,请确保你已经按照之前的教程,用vLLM成功部署了Phi-3-mini-128k-instruct模型,并且Chainlit前端可以正常访问。如果还没完成,建议先完成基础部署。
3.1 检查当前环境
首先,我们确认一下基础环境是否就绪:
# 检查Python和pip版本
python3 --version
pip3 --version
# 检查vLLM服务是否在运行
ps aux | grep vllm
# 检查GPU状态(确保有NVIDIA GPU)
nvidia-smi
如果nvidia-smi命令能正常显示GPU信息,说明GPU驱动已经安装好了。这是后续步骤的基础。
3.2 安装Docker和Docker Compose
我们的监控组件将通过Docker容器来运行,这样最方便也最干净。如果你的系统还没有安装Docker,可以按以下步骤安装:
# 更新系统包列表
sudo apt-get update
# 安装必要的依赖
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加Docker仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker引擎
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker --version
docker-compose --version
安装完成后,建议将当前用户添加到docker组,这样就不需要每次都加sudo了:
sudo usermod -aG docker $USER
# 需要重新登录才能生效
4. 部署NVIDIA DCGM Exporter
DCGM Exporter是监控系统的“眼睛”,它负责采集GPU的各种指标。我们将用Docker来运行它。
4.1 创建配置文件
首先,创建一个目录来存放我们的监控配置:
mkdir -p ~/gpu-monitoring
cd ~/gpu-monitoring
然后创建DCGM Exporter的Docker Compose配置文件:
# 创建文件:dcgm-exporter/docker-compose.yml
cat > dcgm-exporter/docker-compose.yml << 'EOF'
version: '3.8'
services:
dcgm-exporter:
image: nvcr.io/nvidia/k8s/dcgm-exporter:3.3.4-3.1.5-ubuntu22.04
container_name: dcgm-exporter
restart: unless-stopped
ports:
- "9400:9400"
volumes:
- /proc:/proc
- /sys:/sys
environment:
- DCGM_EXPORTER_INTERVAL=2000 # 采集间隔2秒
- DCGM_EXPORTER_KUBERNETES=false
privileged: true
devices:
- /dev/nvidiactl
- /dev/nvidia-uvm
- /dev/nvidia-uvm-tools
- /dev/nvidia0 # 如果有多个GPU,需要全部列出
command: ["-f", "/etc/dcgm-exporter/dcp-metrics-included.csv"]
EOF
配置文件说明:
ports: "9400:9400":DCGM Exporter会在9400端口提供指标数据DCGM_EXPORTER_INTERVAL=2000:每2秒采集一次数据,这个频率比较合适privileged: true和devices:让容器有权限访问GPU设备- 最后的
command指定了要采集的指标列表
4.2 启动DCGM Exporter
现在启动DCGM Exporter服务:
cd dcgm-exporter
docker-compose up -d
检查服务是否正常运行:
# 查看容器状态
docker ps | grep dcgm-exporter
# 测试指标接口
curl http://localhost:9400/metrics
如果一切正常,你会看到一大堆以DCGM_FI_开头的指标数据。这些就是GPU的各种状态信息。
5. 部署Prometheus
Prometheus是我们的监控“大脑”,负责收集和存储所有指标数据。
5.1 创建Prometheus配置文件
在监控目录下创建Prometheus的配置:
cd ~/gpu-monitoring
mkdir prometheus
创建Prometheus的主配置文件:
# 创建文件:prometheus/prometheus.yml
cat > prometheus/prometheus.yml << 'EOF'
global:
scrape_interval: 15s # 每15秒采集一次数据
evaluation_interval: 15s # 每15秒评估一次告警规则
# 告警规则配置(可选,后续可以添加)
rule_files:
# - "alert.rules"
# 采集目标配置
scrape_configs:
# 监控Prometheus自身
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
# 监控DCGM Exporter(GPU指标)
- job_name: 'dcgm-exporter'
static_configs:
- targets: ['host.docker.internal:9400']
scrape_interval: 5s # GPU指标采集可以更频繁一些
metrics_path: /metrics
# 监控vLLM服务(如果你暴露了指标端口)
- job_name: 'vllm'
static_configs:
- targets: ['host.docker.internal:8000'] # vLLM默认端口
scrape_interval: 10s
EOF
重要提示:上面的配置中使用了host.docker.internal,这是Docker的一个特殊域名,指向宿主机。如果你的Prometheus和DCGM Exporter都在同一台机器的Docker中运行,这样配置是没问题的。
5.2 创建Prometheus的Docker Compose配置
# 创建文件:prometheus/docker-compose.yml
cat > prometheus/docker-compose.yml << 'EOF'
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention.time=30d' # 保留30天数据
- '--web.enable-lifecycle'
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
prometheus_data:
EOF
5.3 启动Prometheus
cd prometheus
docker-compose up -d
检查Prometheus是否正常运行:
# 查看容器状态
docker ps | grep prometheus
# 访问Prometheus Web界面(如果服务器有公网IP,记得配置安全组)
# 浏览器访问:http://你的服务器IP:9090
在Prometheus的Web界面中,点击菜单栏的"Status" -> "Targets",你应该能看到dcgm-exporter的状态是"UP"。如果状态是"DOWN",可能是网络配置有问题。
6. 部署Grafana
Grafana是我们的“仪表盘”,用来可视化展示监控数据。
6.1 创建Grafana的Docker Compose配置
# 创建文件:grafana/docker-compose.yml
cat > grafana/docker-compose.yml << 'EOF'
version: '3.8'
services:
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin123 # 初始密码,第一次登录后请修改
- GF_INSTALL_PLUGINS=grafana-piechart-panel
volumes:
- grafana_data:/var/lib/grafana
- ./dashboards:/etc/grafana/provisioning/dashboards
- ./datasources:/etc/grafana/provisioning/datasources
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
grafana_data:
EOF
6.2 配置Grafana数据源
Grafana需要知道从哪里获取数据,所以我们要配置Prometheus作为数据源:
mkdir -p grafana/datasources
创建数据源配置文件:
# 创建文件:grafana/datasources/prometheus.yml
cat > grafana/datasources/prometheus.yml << 'EOF'
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://host.docker.internal:9090
isDefault: true
editable: true
EOF
6.3 导入GPU监控仪表盘
Grafana社区有很多现成的仪表盘模板,我们可以直接导入一个专门为NVIDIA GPU监控设计的仪表盘。
首先创建仪表盘配置目录:
mkdir -p grafana/dashboards
创建仪表盘配置文件:
# 创建文件:grafana/dashboards/dashboards.yml
cat > grafana/dashboards/dashboards.yml << 'EOF'
apiVersion: 1
providers:
- name: 'default'
orgId: 1
folder: ''
type: file
disableDeletion: false
updateIntervalSeconds: 10
allowUiUpdates: true
options:
path: /etc/grafana/provisioning/dashboards
EOF
6.4 启动Grafana
cd grafana
docker-compose up -d
等待几秒钟,然后检查服务状态:
docker ps | grep grafana
6.5 登录并配置Grafana
- 打开浏览器,访问:
http://你的服务器IP:3000 - 使用默认账号登录:
- 用户名:
admin - 密码:
admin123(就是我们刚才在配置里设置的)
- 用户名:
- 首次登录会要求修改密码,建议设置一个强密码
登录后,Grafana应该已经自动配置好了Prometheus数据源。你可以点击左侧菜单的"Configuration" -> "Data Sources"确认一下。
7. 配置GPU监控仪表盘
现在我们来创建一个专门监控vLLM GPU使用情况的仪表盘。
7.1 导入社区仪表盘
最简单的方法是使用社区已有的模板。在Grafana中:
- 点击左侧"+"号 -> "Import"
- 在"Import via grafana.com"输入框中输入:
12239(这是一个很受欢迎的NVIDIA DCGM Exporter仪表盘) - 点击"Load"
- 选择"Prometheus"作为数据源
- 点击"Import"
现在你就有了一个完整的GPU监控仪表盘,包含了GPU利用率、显存使用、温度、功耗等各种图表。
7.2 创建自定义vLLM监控面板
虽然社区模板很好,但我们可能还需要一些针对vLLM的特定监控。让我们创建几个专门的面板:
面板1:GPU利用率实时监控
在Grafana中:
- 点击"Dashboard" -> "New Dashboard" -> "Add new panel"
- 在查询框中输入:
DCGM_FI_DEV_GPU_UTIL{instance="host.docker.internal:9400"} - 设置面板标题:"GPU利用率 (%)"
- 选择可视化类型:"Time series"
- 在"Standard options"中,设置单位:"Percent (0-100)"
- 点击"Apply"
面板2:显存使用情况
添加另一个面板:
- 查询语句:
DCGM_FI_DEV_FB_USED{instance="host.docker.internal:9400"} - 为了更直观,我们可以同时显示已用显存和总显存:
# 已用显存 DCGM_FI_DEV_FB_USED{instance="host.docker.internal:9400"} # 总显存 DCGM_FI_DEV_FB_TOTAL{instance="host.docker.internal:9400"} - 设置标题:"显存使用 (MB)"
- 设置单位:"Data (bytes)" -> "megabytes"
- 点击"Apply"
面板3:GPU温度监控
温度过高会影响GPU寿命和稳定性:
- 查询语句:
DCGM_FI_DEV_GPU_TEMP{instance="host.docker.internal:9400"} - 设置标题:"GPU温度 (°C)"
- 设置单位:"Temperature" -> "celsius"
- 可以设置告警阈值(比如超过80°C告警)
面板4:vLLM请求监控(如果暴露了指标)
如果vLLM服务暴露了Prometheus指标,我们还可以监控请求情况。首先需要确保vLLM开启了指标收集:
# 在启动vLLM时添加--metrics-interval参数
# vllm serve phi-3-mini-128k-instruct --metrics-interval 10
然后在Grafana中添加查询:
# 请求速率
rate(vllm:requests:count[1m])
# 平均响应时间
vllm:request:latency:avg
7.3 整理仪表盘布局
把相关面板放在一起,让仪表盘更清晰:
- 第一行:GPU核心指标(利用率、温度、功耗)
- 第二行:显存相关(已用、空闲、碎片)
- 第三行:vLLM服务指标(请求数、延迟、错误率)
- 第四行:系统指标(CPU、内存、磁盘IO)
点击右上角的"Save dashboard"保存你的配置。
8. 设置告警规则
监控不仅要能看,还要能在出问题时及时通知我们。Grafana提供了强大的告警功能。
8.1 创建GPU利用率过高告警
- 在GPU利用率面板,点击标题 -> "Edit"
- 切换到"Alert"标签页
- 点击"Create alert rule from this panel"
- 配置告警条件:
- 当
last()ofquery(A, 1m, now)IS ABOVE80(当GPU利用率持续1分钟高于80%)
- 当
- 配置告警详情:
- 告警名称:"GPU利用率过高"
- 评估频率:"1m"
- 配置通知渠道(需要先设置通知渠道,如邮件、Slack、钉钉等)
- 点击"Save rule and exit"
8.2 创建显存不足告警
同样方法创建显存告警:
- 条件:
DCGM_FI_DEV_FB_USED / DCGM_FI_DEV_FB_TOTAL * 100 > 90 - 说明:当显存使用率超过90%时告警
8.3 创建温度告警
- 条件:
DCGM_FI_DEV_GPU_TEMP > 85 - 说明:当GPU温度超过85°C时告警
9. 监控系统优化与维护
部署完成后,还有一些优化工作可以让监控系统更稳定、更好用。
9.1 调整数据保留策略
默认情况下,Prometheus会保存所有监控数据。时间长了会占用大量磁盘空间。我们可以调整保留时间:
修改prometheus/prometheus.yml,在Prometheus的启动命令中添加:
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=30d' # 只保留30天数据
- '--storage.tsdb.retention.size=50GB' # 或限制总大小
然后重启Prometheus:
cd prometheus
docker-compose restart
9.2 配置数据持久化
为了防止容器重启后数据丢失,我们已经使用了Docker卷来持久化数据。你可以检查卷的使用情况:
# 查看所有Docker卷
docker volume ls
# 查看特定卷的详细信息
docker volume inspect gpu-monitoring_prometheus_data
9.3 设置开机自启
确保监控服务在服务器重启后能自动启动:
# 在每个服务的docker-compose.yml所在目录,重启策略已经是unless-stopped
# 但为了更可靠,可以创建systemd服务
# 创建全局的Docker Compose服务
sudo nano /etc/systemd/system/gpu-monitoring.service
添加以下内容:
[Unit]
Description=GPU Monitoring Stack
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/home/你的用户名/gpu-monitoring
ExecStart=/usr/local/bin/docker-compose -f dcgm-exporter/docker-compose.yml up -d
ExecStart=/usr/local/bin/docker-compose -f prometheus/docker-compose.yml up -d
ExecStart=/usr/local/bin/docker-compose -f grafana/docker-compose.yml up -d
ExecStop=/usr/local/bin/docker-compose -f dcgm-exporter/docker-compose.yml down
ExecStop=/usr/local/bin/docker-compose -f prometheus/docker-compose.yml down
ExecStop=/usr/local/bin/docker-compose -f grafana/docker-compose.yml down
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reload
sudo systemctl enable gpu-monitoring.service
sudo systemctl start gpu-monitoring.service
10. 实际监控效果演示
现在让我们看看监控系统在实际使用中的表现。我会模拟一些典型的vLLM使用场景,并观察监控数据的变化。
10.1 正常负载下的监控
当Phi-3-mini-128k-instruct处理一般长度的文本时(比如几百个token):
- GPU利用率:通常在20%-40%之间波动
- 显存使用:模型加载后基础占用约4-6GB,处理请求时会有小幅波动
- 温度:保持在60-70°C的合理范围
- 请求延迟:根据输入长度,在100-500毫秒之间
10.2 高负载压力测试
通过Chainlit前端发送一个长文本请求(比如50K token的上下文):
# 模拟长上下文请求
long_text = "A" * 50000 # 5万个字符的文本
# 通过Chainlit或直接调用vLLM API发送请求
观察监控数据的变化:
- GPU利用率:瞬间飙升到80%-90%,然后逐渐回落
- 显存使用:明显增加,可能达到8-10GB
- 温度:可能上升到75-80°C
- 请求延迟:显著增加,可能达到2-3秒
10.3 并发请求测试
同时发送多个请求:
# 使用ab(Apache Benchmark)进行并发测试
ab -n 100 -c 10 http://localhost:8000/v1/completions
观察效果:
- GPU利用率:持续保持在高位
- 请求队列:如果vLLM配置了限流,可能会看到排队现象
- 错误率:监控是否有请求失败
10.4 监控数据解读技巧
看到监控图表后,如何解读这些数据?这里有一些实用技巧:
- 看趋势比看单点更重要:偶尔的峰值是正常的,持续的高位才需要关注
- 关联分析:GPU利用率高的时候,温度是否也高?显存使用是否接近上限?
- 建立基线:记录服务正常时的指标范围,异常时更容易发现
- 关注变化率:指标突然的剧烈变化往往意味着有问题
11. 常见问题与解决方案
在部署和使用过程中,你可能会遇到一些问题。这里列出一些常见问题及解决方法:
11.1 DCGM Exporter无法采集数据
症状:Prometheus中dcgm-exporter target状态为DOWN,或者/metrics端点返回空数据。
可能原因和解决:
-
权限问题:确保容器以privileged模式运行,并且挂载了正确的设备
# 检查容器权限 docker inspect dcgm-exporter | grep -A5 Privileged # 检查设备挂载 docker inspect dcgm-exporter | grep -A10 Devices -
NVIDIA驱动问题:确保宿主机安装了正确的NVIDIA驱动
# 检查驱动版本 nvidia-smi # 安装或更新驱动 sudo apt-get install nvidia-driver-535 # 根据你的GPU型号选择版本 -
NVIDIA Container Toolkit:确保安装了NVIDIA Container Toolkit
# 安装NVIDIA Container Toolkit distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker
11.2 Prometheus无法连接DCGM Exporter
症状:Prometheus targets页面显示dcgm-exporter为DOWN。
解决:
-
检查网络连通性:
# 从Prometheus容器内部测试连接 docker exec prometheus curl -v http://host.docker.internal:9400/metrics -
修改Prometheus配置:如果使用
host.docker.internal不行,可以尝试直接用宿主机IP# 在prometheus.yml中 - targets: ['宿主机IP:9400'] -
检查防火墙:
# 确保9400端口开放 sudo ufw allow 9400 sudo ufw allow 9090 # Prometheus端口 sudo ufw allow 3000 # Grafana端口
11.3 Grafana无法显示数据
症状:Grafana面板显示"No data"。
解决:
- 检查数据源:确保Prometheus数据源配置正确且状态为"Healthy"
- 检查查询语句:在Grafana中点击"Explore",手动输入查询语句测试
- 检查时间范围:确保选择的时间范围内有数据
- 检查指标名称:在Prometheus的Graph页面查看可用的指标
11.4 监控数据延迟或丢失
症状:监控图表有断点,或者数据更新不及时。
解决:
- 调整采集间隔:在Prometheus配置中减少scrape_interval
scrape_interval: 5s # 改为5秒采集一次 - 检查资源占用:监控服务本身也会消耗资源
# 查看容器资源使用 docker stats - 优化Prometheus配置:如果数据量很大,可以调整存储设置
command: - '--storage.tsdb.retention.time=7d' # 缩短保留时间 - '--storage.tsdb.max-block-duration=2h' # 调整块大小
11.5 磁盘空间不足
症状:Prometheus容器频繁重启,或者日志显示磁盘错误。
解决:
-
清理旧数据:
# 进入Prometheus容器 docker exec -it prometheus sh # 查看数据目录大小 du -sh /prometheus/* # 使用Prometheus的API清理数据(谨慎操作) # curl -X POST http://localhost:9090/api/v1/admin/tsdb/clean_tombstones -
调整保留策略:如前所述,减少数据保留时间
-
增加磁盘空间:或者将数据目录挂载到更大的磁盘
12. 监控系统的高级用法
基础监控搭建完成后,你还可以进一步优化和扩展监控系统。
12.1 监控vLLM特定指标
vLLM本身也提供了一些监控指标,我们可以将其集成到Prometheus中。
首先,确保vLLM以正确的方式启动:
# 启动vLLM时开启指标端点
vllm serve phi-3-mini-128k-instruct \
--host 0.0.0.0 \
--port 8000 \
--metrics-interval 10 # 每10秒收集一次指标
然后在Prometheus配置中添加新的job:
# 在prometheus.yml的scrape_configs中添加
- job_name: 'vllm-metrics'
static_configs:
- targets: ['host.docker.internal:8000']
scrape_interval: 10s
metrics_path: /metrics
vLLM提供的一些有用指标:
vllm:requests:count:请求总数vllm:request:latency:avg:平均请求延迟vllm:generation:throughput:avg:生成吞吐量vllm:gpu:utilization:vLLM报告的GPU利用率
12.2 集成系统级监控
除了GPU,我们还可以监控整个系统的状态:
# 安装node-exporter监控主机指标
# 创建node-exporter的docker-compose.yml
cat > node-exporter/docker-compose.yml << 'EOF'
version: '3.8'
services:
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: unless-stopped
ports:
- "9100:9100"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
EOF
在Prometheus中添加配置:
- job_name: 'node-exporter'
static_configs:
- targets: ['host.docker.internal:9100']
12.3 设置自动化告警
除了在Grafana中设置告警,我们还可以使用Alertmanager实现更复杂的告警逻辑:
-
部署Alertmanager:
# alertmanager/docker-compose.yml version: '3.8' services: alertmanager: image: prom/alertmanager:latest container_name: alertmanager restart: unless-stopped ports: - "9093:9093" volumes: - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml -
配置告警规则:
# prometheus/alert.rules.yml groups: - name: gpu_alerts rules: - alert: HighGPUUsage expr: DCGM_FI_DEV_GPU_UTIL > 80 for: 5m labels: severity: warning annotations: summary: "GPU利用率过高" description: "GPU利用率持续5分钟超过80%,当前值 {{ $value }}%" -
配置通知渠道:支持邮件、Slack、钉钉、企业微信等
12.4 创建自定义监控仪表盘
根据你的具体需求,可以创建更专业的监控视图:
视图1:服务健康状态概览
- 所有GPU的实时状态
- 服务运行时间
- 最近24小时错误数
- 当前并发请求数
视图2:性能分析视图
- 请求延迟分布(P50、P90、P99)
- Token生成速度
- 缓存命中率
- 批处理效率
视图3:成本优化视图
- GPU利用率时间分布
- 高峰时段识别
- 资源使用建议
- 成本估算
13. 总结
通过本教程,我们完成了一个完整的Phi-3-mini-128k-instruct模型GPU监控系统的搭建。让我们回顾一下关键步骤和收获:
13.1 核心成果
-
完整的监控栈:从数据采集(DCGM Exporter)到存储(Prometheus)再到展示(Grafana),我们建立了一个专业级的监控系统。
-
实时可视化:现在你可以通过Grafana仪表盘实时查看:
- GPU利用率、显存使用、温度等硬件指标
- vLLM服务的请求量、延迟、吞吐量等应用指标
- 系统级的CPU、内存、磁盘使用情况
-
智能告警:设置了关键指标的告警规则,可以在问题发生前及时通知。
-
历史数据分析:所有监控数据都被保存下来,可以用于分析趋势、优化配置、排查问题。
13.2 实际价值
这个监控系统不仅仅是一个"仪表盘",它为你带来了实实在在的价值:
对开发者:
- 快速定位性能瓶颈
- 优化模型部署配置
- 验证优化措施的效果
- 提供数据支持的技术决策
对运维人员:
- 实时掌握服务状态
- 提前发现潜在问题
- 自动化故障处理
- 容量规划和资源管理
对业务方:
- 确保服务稳定性
- 优化用户体验
- 控制运营成本
- 数据驱动的业务决策
13.3 后续优化建议
监控系统搭建完成后,你还可以考虑以下优化方向:
- 监控更多指标:添加业务指标、用户行为指标、成本指标等
- 设置SLO/SLI:定义服务的可观测性目标,如延迟SLA、可用性要求等
- 自动化运维:基于监控数据实现自动扩缩容、自动故障转移等
- 成本优化:分析资源使用模式,优化实例规格和数量
- 安全加固:为监控系统添加认证、授权、加密等安全措施
13.4 最后的建议
监控系统的价值在于持续使用和不断优化。建议你:
- 定期查看:养成每天查看监控仪表盘的习惯
- 设置周报:每周分析监控数据,发现趋势和模式
- 持续优化:根据监控数据调整告警阈值、优化资源配置
- 团队共享:将重要的监控视图分享给团队成员
- 文档化:记录监控系统的配置、告警规则、处理流程
记住,好的监控系统不是一蹴而就的,而是在使用中不断演进和完善的。现在你已经有了一个强大的起点,可以根据实际需求不断调整和扩展。
希望这个教程能帮助你更好地管理和优化Phi-3-mini-128k-instruct模型的部署。如果你在实施过程中遇到任何问题,或者有更好的建议,欢迎分享你的经验。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐




所有评论(0)