很多人第一次用 Ollama 跑本地模型,装完能说话就以为完事了,一上多人同时提问、一换量化档位、一加长上下文,速度立刻塌下来,甚至直接爆显存。这篇不重复怎么安装怎么拉模型,只讲限制在哪里、怎么提前测出来,以及一套从选型到上线的检查顺序,帮你在给团队用之前就把坑踩完。
很多人第一次用 Ollama 跑本地模型,装完能说话就以为完事了。一上多人同时提问、一换量化档位、一加长上下文,速度立刻塌下来,甚至直接爆显存。这篇不重复怎么安装怎么拉模型,只讲限制在哪里、怎么提前测出来,以及一套从选型到上线的检查顺序。
核心就一句话:Ollama 是给单人桌面用的,它的默认行为全是按「一个人慢慢用」来设计的。给团队用之前,先把并发、量化、显存这三块的天花板摸清楚,比事后救火划算得多。
并发:它是给单人桌面的,不是给团队服务的
默认的模型服务方式在多人同时请求时会一个等一个:第二个请求的等待时间几乎等于第一个的生成时间。五个人同时问,最后进来的那位要等前面几个全部生成完,体验直接崩。这不是 bug,是默认设计如此。
判定标准很简单:把「预期同时在线人数 × 单次生成时长」算出来,和你能接受的等待上限比。超了,就说明这套不适合直接当团队服务,要么加服务层排队,要么换方案。
- 先数清楚峰值同时在线人数,别拿平均数算
- 量一次真实业务输入下单次生成要多久,不是用「你好」测
- 两个数相乘,和你承诺给同事的等待上限对比
- 超过上限就别硬扛,考虑加队列或换专门的服务框架
- 不适用的情况:单人本地问答、离线批处理、偶尔几个人的知识库 Demo,这类没必要为了并发折腾
量化与显存:省下来的显存要从别处还回去
量化档位越低,权重占显存越少,但同一个模型的上下文缓存和中间激活不会等比例缩小。结果就是短对话跑得挺欢,一进长对话先崩的往往不是权重,而是缓存。所以别只看模型能不能加载起来,要看它能不能撑住你最长的输入。
| 你保哪个 | 代价 | 适用判断 |
|---|---|---|
| 保质量 | 用较高量化档位,显存吃紧 | 业务答案准确性要求高,对话不长 |
| 保上下文 | 降量化档位,质量略降 | 要贴长文档、做长对话摘要 |
| 保参数量 | 显存需求最大,可能要卸载到 CPU | 需要更强推理能力且机器扛得住 |
| 都想要 | 多半会崩或极慢 | 先砍一个,再压测验证 |
验证方法:用你真实最长的输入去测,而不是用一句「你好」去试。短输入跑得飞快不代表实际业务跑得动,这一点在选型阶段最容易漏。
绕不开的几个开关:层数卸载、常驻与监听
- 层数卸载
- 显存不够时部分层被丢到 CPU,速度断崖式下降,要先查是不是卸载层数被调低或自动降了
- 模型常驻
- 模型闲置会被从显存踢出,下次请求要重新加载,给人用的感觉是第一句话特别慢
- 监听地址
- 默认只本机能连,对外服务前先确认监听地址和端口范围,否则接前端工具会一直连不上
这三个开关不涉及调优技巧,全是「不知道就会踩」的坑。排查顺序建议是先看监听能不能通、再看模型是不是每次都在重载、最后才怀疑是不是卸载层数导致变慢,从外到内一层层排除。
从选型到落地的四步流程
- 第一步定场景分清单机自用、小团队内网、对外接口三种,限制容忍度完全不同;对外接口对排队和稳定性要求最高。
- 第二步定模型和档位按目标机器的显存倒推参数量与量化档位,别反过来先选模型再凑机器;倒推完到 核对当时的模型资料。
- 第三步压测单人、3 人、预期峰值各跑一轮,记录首字延迟和生成速度;一轮不够就换真实最长输入再跑。
- 第四步验收把压测数字写进使用说明,告诉同事什么情况下会慢,避免被当成故障来报修。
这四步里最容易被跳过的是第四步。写使用说明不是形式主义,它决定了后面同事遇到慢的时候是来找你修 bug,还是知道「哦,这是并发满了」。
什么情况下该换工具而不是继续调 Ollama
判断办法看压测瓶颈在哪:如果瓶颈是排队,也就是单次生成速度其实正常、但人多就等很久,说明问题在服务层,不在模型和显存,继续调参意义不大。反过来,如果单人也慢,那才是模型和硬件的事。
- 需要稳定支撑多人并发、要求请求排队公平和吞吐指标时,专门的服务框架更合适
- 需要多卡切分跑超大模型时,也该换
- 需要细粒度批处理调度时,同样不建议硬调
- 机器本身够用、只是偶尔两三个人用,那继续用 Ollama 没问题,别过度设计
选型阶段想横向对比不同本地部署方案的成本和工作量,可以到 看已有的部署类指南,再结合自己机器的实际情况判断,不要只照搬别人的配置清单。
下一步先按上面的四步压测把你的真实数字跑出来,再到站内价格追踪页核对不同方案的长期成本,决定是继续调还是换方案。→常见问题
Ollama 能同时处理多个请求吗?
能接受请求,但默认是排队式的,不会像专业推理服务那样把多个请求合成一批一起算。人数一多,后到的请求就要等前面生成完。单人或者两三个人轮流问基本感觉不到,十个以上同时提问就会明显卡,这种情况要先压测再决定要不要换服务框架。
量化到低档位是不是一定更快?
不一定。低档位省显存,能让更大的模型塞进同一张卡,但解码速度受内存带宽和卸载策略影响,有时反而更慢。而且上下文一长,缓存占用的显存不会跟着缩。建议用真实长度的输入分别测几个档位,看首字延迟和每秒出字,别只看模型能不能加载成功。
模型加载后过一会儿再问就变慢,是坏了吗?
大概率是模型被从显存里释放了,下次请求要重新加载权重,所以第一句话特别慢。这是常驻时长的设置问题,不是模型坏了。给人用的服务建议调长常驻时间,同时留意别让它长期占着显存影响其他任务。