在 Ollama 中,模型默认的驻留时间(Keep Alive)是 5 分钟。要让特定模型(如 qwen3:32b)一直驻留在显存中不被卸载,有几种方法可以实现。

根据你的需求(只让特定模型不卸载),建议使用方法一

方法一:通过 API 发送一次性“永久驻留”指令(推荐)

你可以向 Ollama 发送一个特殊的请求,通过设置 keep_alive 参数为 -1,告诉它无限期保留该模型。

打开终端,执行以下命令:

curl http://localhost:11434/api/generate -d '{
  "model": "qwen3:32b",
  "keep_alive": -1
}'
  • 原理:这个请求会加载模型并将其过期时间设为“永不过期”。
  • 优点:不需要重启服务,只针对这一个模型生效。
  • 注意:如果你之后手动加载了其他巨大的模型,导致显存不足,系统可能会报错或由于 OOM(内存溢出)导致意外情况。

方法二:修改环境变量(全局生效)

如果你希望 Ollama 运行的所有模型都默认不卸载,可以修改 Ubuntu 的 systemd 服务配置。

  1. 编辑 Ollama 服务文件:

    sudo systemctl edit ollama.service
    
  2. 在打开的编辑界面中(通常在中间的空白处),添加以下两行:

    [Service]
    Environment="OLLAMA_KEEP_ALIVE=-1"
    
  3. 保存并退出(如果是 nano,按 Ctrl+O, Enter, Ctrl+X)。

  4. 重新加载配置并重启服务:

    sudo systemctl daemon-reload
    sudo systemctl restart ollama
    
  • 效果:从现在起,任何你运行的模型都会一直留在显存里,直到你手动停止 Ollama 或重启电脑。

方法三:在请求代码中控制

如果你是通过 Python 脚本或 Web UI(如 Open WebUI)调用 Ollama,可以在请求的参数中加入 keep_alive

Python 示例 (使用 requests 库):

import requests

payload = {
    "model": "qwen3:32b",
    "prompt": "你好",
    "keep_alive": -1  # 设置为 -1 表示永不卸载
}
response = requests.post("http://localhost:11434/api/generate", json=payload)

常见疑问解答

  1. 怎么验证模型是否还在内存里?
    你可以使用以下命令查看当前已加载的模型及其剩余生存时间:

    ollama ps
    

    如果 UNTIL 列显示的是 Forever 或者一个非常长的时间,说明设置成功了。

  2. 我想手动卸载它怎么办?
    即使设置了永久驻留,你也可以通过发送 0 来立即释放它:

    curl http://localhost:11434/api/generate -d '{
      "model": "qwen3:32b",
      "keep_alive": 0
    }'
    

总结建议: 先尝试方法一,因为它的影响最小,且能精确满足你“只针对 qwen3:32b”的需求。