4GB 显卡跑本地模型:一句“OK”为什么等了 96 秒

4GB 显卡跑本地模型:一句「OK」为什么等了 96 秒 — 封面

我单位的笔记本上跑着一个本地模型:Ollama 加 qwen3.5 4B,显卡是 RTX 3050 Laptop,4GB 显存,32GB 内存。平时工作台的项目顾问通过 API 调它,一次短 JSON 调用 0.6 到 1.4 秒,一直很顺。

有一天我想在命令行里确认一下模型还活着,敲了一句 ollama run qwen3.5:4b "回复OK" --verbose,结果等了一分半钟,才收到一句“好的,OK!”。同一个模型、同一块卡,为什么差这么多?顺着这次排查,正好把小显卡跑本地模型的三个常见坑都碰了一遍。

一、思考模式:1357 个 token 换一句“OK”

第一次的统计是这样的:

指标数值
总耗时1 分 36 秒
加载耗时约 5 毫秒(模型已在内存里)
生成 token 数1357
生成速度14.18 token/秒

答案只有几个字,却生成了 1357 个 token。翻回输出才看到,模型先“想”了一大段:用户是不是在测试我、只回 OK 会不会太生硬、要不要加“好的”……反复推敲了十几轮,最后才落笔。

这是带思考能力的模型在命令行里的默认行为:先输出推理过程,再给答案。对复杂问题它有用,对“回复 OK”这种指令完全是浪费。关掉再测:

ollama run qwen3.5:4b "回复OK" --think=false --verbose

OK
total duration:  7.41s
load duration:   7.07s
eval count:      2 token(s)
eval duration:   57ms
eval rate:       34.91 tokens/s

真正生成只用了 57 毫秒。程序里调用时同理:Ollama 的 /api/chat 请求里带上 "think": false,再用 "format": "json" 限定输出,就是我的顾问平时只要一秒左右的原因。命令行测得慢,不代表程序里慢,先确认两边是不是同一种调用方式。

二、冷启动:7 秒花在加载上

第二次的 7.4 秒里,7.07 秒是加载模型。Ollama 默认在模型闲置 5 分钟后把它从显存里卸掉,下一次调用就要重新加载。

  • 每天跑一次的批处理(比如我的顾问和日报):多等 7 秒无所谓,反而应该让它卸载,把显存还给别的程序。
  • 需要即时响应的场景(比如以后想接到界面上做报警解释):第一次调用多等 7 秒是不能接受的。可以在请求里带 "keep_alive": "30m",或者设置环境变量 OLLAMA_KEEP_ALIVE,让模型常驻;也可以在程序启动时先发一个空请求预热。

三、显存放不下:一半在 CPU 上跑

14 token/秒对一个 4B 模型来说偏慢。ollama ps 给出了原因:

NAME         SIZE    PROCESSOR          CONTEXT
qwen3.5:4b   3.7 GB  50%/50% CPU/GPU    4096

模型文件 3.4GB,加上 4096 上下文的 KV 缓存,运行时要 3.7GB。显卡标称 4GB,但 Windows 桌面、浏览器和其他程序也要占一部分显存,剩下的放不下整个模型,Ollama 就把一半的层放到 CPU 上算。只要有层在 CPU 上,整体速度就由慢的那一半决定。

能做的事情按代价从低到高排:

  1. 先看谁占着显存:nvidia-smi 列出占用显存的进程,浏览器的硬件加速经常是大户。
  2. 缩小上下文:短 JSON 任务用不到 4096,请求里把 num_ctx 调到 2048,KV 缓存跟着变小。
  3. 打开 Flash Attention 并量化 KV 缓存:环境变量 OLLAMA_FLASH_ATTENTION=1、OLLAMA_KV_CACHE_TYPE=q8_0,重启 Ollama 生效。
  4. 换更小的量化版本:精度会下降,要先用自己的评测集确认效果没变差。

前三项我还没在这块卡上逐一实测,改完以后看 ollama ps 的 PROCESSOR 列有没有变成 100% GPU 就知道效果。第四项要谨慎:我在同一块卡上测过 2B 模型,项目顾问的漏报率高达 70%,小不等于能用。

四、一分钟自检清单

以后觉得本地模型“慢”,我按这个顺序看:

  • eval count 是不是远大于答案长度?是,就是思考模式或输出没约束,关掉思考、限定格式。
  • load duration 是不是占了大头?是,就是冷启动,按场景决定要不要常驻。
  • ollama ps 是不是 100% GPU?不是,就是显存不够,先清显存、缩上下文。
  • 都正常还是慢?再考虑换硬件或换模型。

小结

4GB 显卡能跑 4B 模型,但只适合“事件触发、短输出”的用法:关掉思考、限定格式、控制上下文,一次调用一秒左右,足够做提醒、摘要、报警解释这类辅助工作;想要并发或长文本生成,就该考虑专门的模型机了。关于在这块卡上怎么把小模型调到稳定可用,可以看《规则定底线,模型来措辞》。


上一篇
下一篇