适用场景
- 自建 GPU 机器跑开源模型,夜里经常 OOM 挂掉
- 要给运维一套出了事能自己救回来的脚本
- 大促前需要压测并设定承载上限
PROMPT
运维在一台 80G 显存的机器上部署了开源模型做内部调用,最近半夜常因显存打满导致服务被 OOM 杀掉,需要一套能自动降载的脚本时用这个。 【需求】 写一套显存监控与自动降载方案: 1. 采集:每 10 秒读一次显存占用率与当前并发数,落 Prometheus 的 textfile collector; 2. 三级响应:占用超 80% 时把并发上限从 32 降到 16;超 90% 时拒绝 prompt 超过 8000 token 的新请求并返回明确错误;超 95% 时暂停接新请求 60 秒让队列排空; 3. 恢复:占用连续 3 分钟低于 70% 后逐级恢复,每次只恢复一档,间隔 1 分钟; 4. 告警:任一级触发都发一条到企业微信群,内容含当前占用、并发、被拒请求数。 服务是 vLLM,暴露了 /metrics。 【输出要求】 1. 给一个 Python 脚本,用 requests 抓 /metrics,用标准库写 textfile; 2. 降载与恢复的状态机用文字 + 代码双份说明,避免状态抖来抖去; 3. 给出 systemd timer 或 cron 的挂法; 4. 最后列出 3 个容易踩的坑(采集太频繁、恢复太快、告警风暴)及应对。 ---