本地用 Ollama 的人多半遇到过这种情况:第一次问话等半天,隔几分钟再问又要重等;或者跑完一个模型,另一个模型就得排队,显存迟迟不释放。这篇不讲模型好坏,只给一套可执行的做法——先分清是加载慢还是被卸载,再按开关、参数、硬件三条线依次排查,判断哪种场景下常驻反而不划算。
本地用 Ollama 的人多半遇到过这种别扭情况:第一次问话等半天,隔几分钟再问又要重等;或者跑完一个模型,想换另一个,前一个的显存迟迟不放,后一个只能排队。这里不讲模型谁强谁弱,只给一套能照着做的处理办法——先分清到底是加载慢,还是已经被卸载了,再按开关、参数、硬件三条线依次排查。
核心思路很简单:让模型在显存里待久一点,别一问一答就被踢出去。但常驻不是无脑开就好,显存装不下、机器还要干别的活时,硬留反而更卡。所以下面每一节都带上「什么情况下不适用」的判断,你按自己的机器情况对号入座就行。
先判断:模型到底是被卸载了,还是本来就没常驻
排查前先别急着改配置,第一步是确认现象。同一个模型连续问两次,看第二次的响应:秒回,说明模型还在显存里;又要重新等一段冷启动时间,说明它已经被释放掉了。这两种情况对应的解法完全不同,改错方向只会白折腾。
- 对比连续两次同模型提问的响应延迟:第二次秒回=还在显存,重新等待=已被卸载
- 用服务自带的模型列表接口看当前驻留状态,比凭感觉猜准得多;接口用法可到 /models/deploy 对照排查
- 区分三种慢:首次加载慢、被卸载后重载慢、根本没进显存只能走 CPU——三者的解法互不通用
让它待在显存里:常驻时间与并发相关开关
确认是被卸载之后,最直接的抓手就是常驻时长。这个参数控制模型空闲多久后释放,设得足够长,间隔几分钟的提问就不会触发重载。具体参数名和默认值以你本机版本的官方文档为准,术语没对齐的话可以先到 /ai-dict/category/tech 查一遍。
| 你要做的事 | 怎么改 | 什么时候别这么干 |
|---|---|---|
| 同一模型反复问 | 把常驻时长设长一些 | 机器显存本来就紧张时 |
| 两个模型来回切 | 显存够就都设长,不够就只留一个 | 两个模型加起来超过显存容量时 |
| 脚本或批处理调用 | 在请求里带常驻意图,不改全局配置 | 多个程序共用同一份配置时 |
- 改一个变量只动常驻时长这一项,其他保持原样,方便对比
- 重启服务让新配置生效,确认没有别的地方把配置覆盖回去
- 再测两次用同一个问题连续问两次,看第二次还等不等
- 记下结果能回退的配置留一份,改坏了随时恢复
装不装得下:按模型和量化算一遍显存账
常驻保不住的常见原因不是开关没开,而是显存根本不够。显存占用不只看权重本身,还要留出上下文缓存和运行时开销,模型越大、上下文越长,这部分越可观。参数规模、量化档位与显存的大致对应关系,可以到 /models/deploy 用测算页按你的实际情况过一遍,别凭印象估。
- 先算权重,再加上下文缓存和运行时开销,最后和显存总量比,留一点余量
- 量化档位越低越容易常驻,但质量和吞吐有取舍,取舍标准可参考 /ai-dict/category/hardware 里的词条
- 显存刚好卡在临界值时,常驻会让浏览器、编辑器、另一个模型一起变卡,这时优先降一档量化而不是硬留
常驻的目标是让第二次提问变快,不是让显存长期被一个模型锁死;装不下就换更省的做法,别硬扛。
什么情况下不该追求常驻
常驻有代价,下面这几种场景硬留模型反而更亏。判断标准就一条:常驻省下的加载时间,和它占着显存带来的麻烦,哪个更大。省下的时间你感知不到、麻烦却天天出现,那就别常驻。
| 你的使用场景 | 建议 | 原因 |
|---|---|---|
| 调用间隔很长,一次只跑一个模型 | 不常驻,用完就放 | 占着显存对别的任务没好处 |
| 机器还要渲染、剪辑、训练 | 不常驻 | 显存长期被锁,冲突比省下的加载时间更麻烦 |
| 多模型轮换且显存装不下全部 | 固定一个主力,其余走接口或放别处 | 硬塞会导致频繁换入换出,比加载还慢 |
排查顺序:按这个顺序走,一次只改一处
前面几节是判断依据,这一节是可执行顺序。关键原则是「一次只改一处」,否则出了问题你根本不知道是哪一步生效、哪一步捣乱。改完都要重启服务再测,测完把结果记下来,方便回退。
- 确认现象看是延迟问题还是显存不足报错,两种现象记下不同的日志关键词
- 只改常驻时长重启服务后测两次同模型提问,对比第二次延迟有没有变化
- 再看显存余量仍被卸载就去测算页核一遍模型加开销是否超了显存
- 最后换档位或模型前面都不行,再考虑更小的量化或换模型,每次改完保留可回退配置
- 每步只改一个变量,改完立刻测,别一次动三处
- 测的时候用同一个问题、同一段上下文,变量才可控
- 配置留版本,比如复制一份旧的再改,出问题直接换回来
- 日志里同时看加载时间与显存告警,两个信号互相印证
常见问题
设了常驻,为什么问第二遍还是慢?
常见原因是显存不够,服务先加载后又被迫把部分层放到内存或直接卸载,表面看是配置生效了,实际没留住。先按测算页核对模型权重加运行时开销有没有超过可用显存,再确认是不是同一块卡上有其他程序在抢;如果显存刚好卡线,降一档量化往往比继续改参数有用。
常驻会不会把显卡占死,影响别的程序?
会。常驻的本质就是不让出显存,所以只要它挂着,别的推理、渲染、训练任务能拿到的显存就少一块。判断标准很简单:这台机器是不是专供推理。如果还要兼做别的事,建议按任务时段切分,而不是全天常驻;或者在脚本里按需带上常驻参数,用完主动释放。
多个模型想同时待命,可行吗?
取决于显存总量,不是配置能绕过去的。把所有要用的模型权重加运行时开销加在一起,明显小于可用显存,才可以考虑同时常驻;否则会出现反复换入换出,比单模型来回切换更慢。装不下时的替代做法是留一个主力模型常驻,其余模型临时加载或换成接口调用。