现场是这样的。机器有 RTX 3060 12G,但 ollama run 之后 nvidia-smi 显示显存几乎没变化,推理速度只有 3 token/s,明显在跑 CPU。
中间走过弯路,把「模型太大,服务端自动退回到纯 CPU」当成主因,改完现象没变。
真正麻烦的地方在于,几个原因的现象几乎一样。量化版本或驱动不匹配,服务端识别不到显卡;Modelfile 里 num_gpu 设成了 0;容器启动时没有加 –gpus all,看不到设备。
上来先确认服务端是否真的看得到显卡
nvidia-smi
然后在自定义 Modelfile 里指定卸载层数
PARAMETER num_gpu 99
创建并运行带参数的新模型
ollama create qwen-gpu -f Modelfile
运行时观察显存占用是否上升
nvidia-smi --query-gpu=memory.used --format=csv
中途换过一次思路,把范围缩到最小的那一层,反而快了。
别只看报错消失,验证要多做一步。推理速度提升到 30 token/s 以上,nvidia-smi 里显存占用明显上涨,ollama ps 的处理器一栏显示为 GPU。
提醒一点。层数不是越多越好,显存不够时设满会直接加载失败,可以按 10 层一档往上试,找到能稳住的速度拐点。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。