soarli

告别加载延迟!如何在 Windows 下让 Ollama 模型常驻显存
如果你经常使用 Ollama 在本地运行大模型,你可能遇到过这种情况:聊了几句之后去倒杯水,回来再问一个问题,发现...
扫描右侧二维码阅读全文
10
2026/02

告别加载延迟!如何在 Windows 下让 Ollama 模型常驻显存

如果你经常使用 Ollama 在本地运行大模型,你可能遇到过这种情况:聊了几句之后去倒杯水,回来再问一个问题,发现模型又要重新加载几秒钟甚至更久。

这是因为 Ollama 为了节省显存资源,默认会在模型空闲 5 分钟 后自动将其卸载。

但在很多场景下(比如作为常驻的代码助手、翻译工具),我们希望模型能像服务一样一直在线(Keep Alive),随时秒回。

本文将介绍如何在 Windows 下设置 Ollama 模型常驻,并重点解析一个很多人都会踩的“引号陷阱”

核心参数:OLLAMA_KEEP_ALIVE

Ollama 提供了一个环境变量 OLLAMA_KEEP_ALIVE 来控制模型在内存中的停留时间。

  • 默认值: 5m(5分钟)
  • 常用值: 24h(24小时)、30m(30分钟)
  • 永久常驻: -1

我们要做的,就是把这个变量设置为 -1。但在 Windows 下,在哪里设置决定了要不要加引号


方法一:永久生效(系统环境变量设置)

这是最推荐的方法。设置一次,以后每次开机启动 Ollama 都会自动生效。

操作步骤:

  1. Win 键,搜索 “编辑系统环境变量” 并打开。
  2. 点击右下角的 “环境变量” 按钮。
  3. “用户变量” 区域点击 “新建”
  4. 输入以下内容:
  • 变量名: OLLAMA_KEEP_ALIVE
  • 变量值: -1
  • ⚠️ 注意:这里绝对不要加引号!
  1. 点击确定保存。
  2. 重启 Ollama: 右键点击任务栏右下角的 Ollama 托盘图标 -> Quit,然后重新运行 Ollama。

方法二:临时生效(PowerShell 命令行)

如果你只是想临时测试一下,可以在 PowerShell 中通过命令行启动。

操作步骤:

  1. 退出当前的 Ollama 后台。
  2. 打开 PowerShell,输入:
$env:OLLAMA_KEEP_ALIVE="-1"; ollama serve
  • ⚠️ 注意:这里必须加引号!

💡 深度解析:为什么一个要引号,一个不要?

很多朋友在这里会感到困惑:为什么在命令行里写 "-1" 可以,在系统设置里写 "-1" 就不行?

这是一个关于 “数据类型”“所见即所得” 的区别。

1. 为什么 PowerShell 需要引号 "-1"

PowerShell 是面向对象的命令行环境。

  • 如果你直接写 -1,PowerShell 会把它识别为 数字(整数 Int32)
  • 如果你写 "-1",PowerShell 会把它识别为 字符串(String)

环境变量本质上必须是字符串。为了避免 PowerShell 产生歧义(比如把 - 当作减法运算或参数引导符),我们需要用引号包裹,强制告诉系统:“这是一个字符串文本”。

2. 为什么系统环境变量窗口不能加引号?

Windows 的图形设置界面是“所见即所得”的纯文本输入框。

  • 不具备代码解析能力。
  • 如果你输入 "-1",Windows 会认为那两个引号也是值的一部分
  • 最终传给 Ollama 程序的值就变成了 "-1"(带引号的文本)。Ollama 后台程序(Go语言)在尝试把这个带引号的文本解析成数字时间时,就会报错或失效。

总结口诀:

代码里要语法(加引号),界面里要裸奔(不加引号)。


如何验证设置成功?

设置完成后,你可以通过以下步骤验证:

  1. 运行任意模型:ollama run llama3
  2. Ctrl+D 退出对话。
  3. 在终端输入:
ollama ps

查看 UNTIL 这一列:

  • 如果你看到 5m4m59s,说明设置失败
  • 如果你看到 Forever,恭喜你,设置成功!你的模型已经实现了永久常驻。
NAME      ID            SIZE    PROCESSOR    UNTIL
llama3    a6990ed6v9    4.7 GB  100% GPU     Forever

希望这篇小技巧能帮你解决 Ollama 的“健忘症”!

最后修改:2026 年 02 月 10 日 03 : 38 AM

发表评论