腾显存 / 恢复清单
生成于 2026-08-18,为 minimax-h3 部署腾显存前的现场快照。 用户已授权「部署 H3 时其他占显存的模型都可以停」,但恢复方式必须先记全再动手。
现场(停机前)
| PID/容器 | 服务 | 端口 | 显存 | 恢复方式 |
|---|---|---|---|---|
容器 llm38 |
Qwen3.8-27B llama.cpp | 8000 | 57.3 GB | docker start |
容器 whisper |
语音转写 | 8002 | 3.2 GB | docker start |
PM2 app m3e |
m3e embedding gunicorn | 7590 | 668 MiB | pm2 start m3e |
PM2 app sd-forge |
SD WebUI Forge | 7860(仅本机) | 174 MiB | pm2 start sd-forge |
用户 2026-08-18 明确指示:需要显存时四个全停。 这是测试机,不是生产环境。 合计腾出 61.4 GB,四卡各回到约 21.5 GB 空闲。
★ 后两个是 PM2 托管的,不是手工拉起 ★
2026-08-18 实测更正:本文件早期版本写它们「无 systemd 单元、手工拉起、是恢复环节的主要风险点」——错了。
它们由 PM2 God Daemon(PID 1467, v5.3.1) 托管,pm2 list 里叫 m3e 和 sd-forge。
后果很实际:kill <pid> 是没用的,PM2 会在几秒内把它们拉回来(实测 kill 后 60 秒内自动重启,显存又被占回去)。必须用 pm2 stop。
好消息是恢复也因此变简单——一条 pm2 start 即可,不需要手抄启动命令。
pm2 二进制在 /usr/local/node/bin/pm2(不在默认 PATH 里,SSH 非交互 shell 下要写全路径)。
PM2 还托管着 5 条 frpc 隧道(frpc-ssh / frpc-qwen-client / frpc-m3e-client / frpc-sd-client / frpc-comfyui-client)和几个 stopped 的条目(qwen / deepseek / deepseek-14b)。隧道不占显存,不要停。
一键全停
docker stop llm38 whisper
/usr/local/node/bin/pm2 stop m3e sd-forge # ← 必须用 pm2,kill 会被自动拉回
sleep 6
nvidia-smi --query-compute-apps=pid,used_memory --format=csv,noheader # 应为空
nvidia-smi --query-gpu=index,memory.free --format=csv,noheader # 实测四卡各 22002 MiB
实测结果(2026-08-18 18:58):四卡各 22002 MiB 空闲,合计 88 GB,计算进程为零。
⚠️ 别用
pgrep -f "gunicorn.*7590"找 PID——它会匹配到你自己那条 SSH 命令行,照着 kill 会误杀。 用nvidia-smi --query-compute-apps=pid报出来的 PID 反查才可靠。
恢复命令
llm38(docker,首选)
docker start llm38
# 验证(约 15 秒)
curl -sf http://127.0.0.1:8000/health
docker logs llm38 2>&1 | grep n_ctx_slot | tail -1 # 应为 n_ctx_slot = 262144
docker inspect llm38 --format '{{.State.Health.Status}}' # healthy
起不来时的兜底:/home/admin/qwen38-deploy/ctx256k.sh(自带失败回滚),
或旧配置容器 llm38_prev:docker rm -f llm38 && docker rename llm38_prev llm38 && docker start llm38
whisper(docker)
docker start whisper
ss -tln | grep 8002
m3e embedding + SD WebUI Forge(PM2)
/usr/local/node/bin/pm2 start m3e sd-forge
/usr/local/node/bin/pm2 list # 两者应为 online
ss -tln | grep -E '7590|7860' # 7590 全网 / 7860 仅 127.0.0.1
手工拉起的命令留档备查(正常情况下用不到,PM2 里有配置):
- m3e:cwd
/home/admin/llm/embedding,/home/admin/.cache/pypoetry/virtualenvs/embedding-LbDC8KEi-py3.10/bin/python .../bin/gunicorn -w 1 -b 0.0.0.0:7590 --timeout 300 embedding.app:app --log-level info- sd-forge:cwd
/data/models/stable-diffusion-webui-forge,bash webui.sh --api
收工检查
nvidia-smi --query-compute-apps=pid,used_memory --format=csv,noheader
ss -tln | grep -E '7590|7860|8000|8002' # 四个端口都要在
curl -sf http://127.0.0.1:8000/health && echo OK