Ollama 用起来简单,但部署细节里藏着不少高频问题:上下文窗口为什么总截断、模型占用的到底是显存还是内存、模型文件能不能挪盘、并发和排队怎么调。这篇按主题把官方 FAQ 的要点过一遍,当排查手册用 [1]。
升级与配置入口
macOS 和 Windows 客户端会自动下载更新,任务栏或菜单栏图标里点 Restart to update 即可生效,也可以手动下载安装包;Linux 重新跑一遍安装脚本就完成升级 [1]:
curl -fsSL https://ollama.com/install.sh | shOllama 服务端的配置全靠环境变量,三个平台的设置路径不同 [1]。macOS 应用用 launchctl 设置后重启应用 [1]:
launchctl setenv OLLAMA_HOST "0.0.0.0:11434"Linux 的 systemd 服务用 systemctl edit ollama.service 打开编辑器,在 [Service] 段加 Environment 行,保存后 daemon-reload 再 restart [1]。Windows 则从系统设置里编辑用户环境变量,重启应用生效 [1]。
上下文窗口
默认上下文窗口只有 4096 token,长对话或长文档被截断多半是它。三种改法:环境变量 OLLAMA_CONTEXT_LENGTH 改全局默认,ollama run 里用 /set parameter num_ctx 改会话,API 调用里在 options 里传 num_ctx 改单次请求 [1]:
OLLAMA_CONTEXT_LENGTH=8192 ollama servecurl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Why is the sky blue?",
"options": {
"num_ctx": 4096
}
}'上下文调大直接推高显存占用——后文的并发参数会按上下文长度成倍放大内存需求,两个旋钮要一起看。
模型加载状态与显存
ollama ps 一条命令看清当前加载了什么、占在哪 [1]:
ollama psProcessor 列的读法:100% GPU 表示整个模型进了显存;100% CPU 表示全部落在内存;48%/52% CPU/GPU 这种混合值表示模型太大、显存装不下,一部分被挪进了内存——这种状态下速度会明显下降,要么换小模型要么换大显存卡 [1]。
想进一步省显存有两个开关。Flash Attention 随上下文增长显著省内存,后端和设备支持时自动启用,OLLAMA_FLASH_ATTENTION=1 或 0 可以强制开关 [1]。开 Flash Attention 的前提下还能给 KV 缓存做量化:OLLAMA_KV_CACHE_TYPE 选 q8_0 约省一半内存、精度损失很小(官方推荐),q4_0 约省四分之三、损失中等且高上下文时更明显;默认 f16 不量化。量化对质量的影响因模型而异,GQA 数量多的模型(如 Qwen2)受影响更大,需要自己实验找平衡 [1]。
模型存哪里、怎么挪
模型文件位置三平台各异:macOS 在 ~/.ollama/models,Linux 在 /usr/share/ollama/.ollama/models,Windows 在用户目录的 .ollama\models。大模型占盘几十上百 GB,挪到大容量盘用 OLLAMA_MODELS 环境变量指定新目录 [1]。Linux 标准安装方式下别忘了权限:新目录要 chown 给 ollama 用户,否则服务写不进去 [1]。
端口与网络
服务默认只绑 127.0.0.1 的 11434 端口;OLLAMA_HOST 改绑定地址即可对局域网开放 [1]。对外暴露有三种常见姿势:Nginx 反代(proxy_pass 转发并带 Host 头)、ngrok 隧道、Cloudflare Tunnel 隧道 [1]。跨域方面默认只允许 127.0.0.1 和 0.0.0.0 的来源,OLLAMA_ORIGINS 加白名单,浏览器扩展要专门放行 chrome-extension://*、moz-extension://*、safari-web-extension://* 这类模式 [1]。
代理和隧道是两回事:模型下载走 HTTPS,受限网络里设 HTTPS_PROXY 指向代理即可,不要设 HTTP_PROXY——下载不走 HTTP,设了反而可能断开客户端连接;代理证书要装成系统证书,Docker 场景用自定义镜像把证书装进去 [1]。
隐私方面官方口径明确:本地运行时提示词和数据不外传;云端模型的请求会被处理但不存储、不记录、不用于训练;收集的只有基础账号信息和有限的使用元数据 [1]。想把云端功能整个关掉(放弃云端模型和网页搜索),在 ~/.ollama/server.json 里写 disable_ollama_cloud 或设 OLLAMA_NO_CLOUD=1,重启后日志会显示 Ollama cloud disabled: true [1]。
内存管理:预载与卸载
响应慢的常见原因是模型刚被卸载,下一个请求要先重新加载。预载模型发一个空请求就行,generate 和 chat 端点都支持;命令行用空提示符同样有效 [1]。默认模型在内存里保留 5 分钟;ollama stop 立即卸载;keep_alive 参数支持四种值——时长字符串(10m、24h)、秒数(3600)、负数(常驻)、0(答完即卸)——OLLAMA_KEEP_ALIVE 环境变量改全局默认,API 参数优先级更高 [1]:
curl http://localhost:11434/api/generate -d '{"model": "llama3.2", "keep_alive": -1}'排满队列时服务返回 503 overloaded,OLLAMA_MAX_QUEUE(默认 512)在服务启动前调大 [1]。
并发的两层结构
Ollama 的并发分两层理解 [1]:第一层是多模型并存——内存够就能同时加载多个模型;第二层是单模型并行——加载时内存有余量才会开并行请求处理。内存不足时新请求排队等旧模型卸载腾位,GPU 推理还要求新模型完整装进显存才允许并发加载 [1]。
三个旋钮配合调:OLLAMA_MAX_LOADED_MODELS 控制同时加载的模型数(默认 3 倍 GPU 数,CPU 推理默认 3);OLLAMA_NUM_PARALLEL 控制单模型并行请求数(默认 1),内存按并行数乘上下文长度放大;OLLAMA_MAX_QUEUE 控排队上限 [1]。特别提醒:并行会成倍放大上下文——2K 上下文开 4 路并行等于 8K 的内存开销,显存紧张时这两个参数不能同时拉满。Windows 的 Radeon 显卡因 ROCm v5.7 的显存上报限制,目前默认只加载 1 个模型 [1]。
多卡加载策略是能装进单卡就装单卡——推理时少跨 PCI 总线传数据,性能最好;装不下才摊到所有可用 GPU 上 [1]。
杂项
其余几条速记:Docker 场景 GPU 加速需要 nvidia-container-toolkit,Linux 和 Windows(WSL2)可用,macOS 的 Docker Desktop 因为没有 GPU 直通不支持 [1]。Windows 10 的 WSL2 网络慢,去网卡属性里把 vEthernet (WSL) 适配器的 Large Send Offload V2(IPv4 和 IPv6)禁用即可 [1]。VS Code 装 Ollama 官方扩展就能在 Chat 里用本地模型 [1]。公钥文件 id_ed25519.pub 用于推送模型、拉私有模型和跑云端模型,三个平台路径不同,ollama signin 或网页粘贴都能绑定 [1]。不想开机自启,Windows 在任务管理器的启动应用里禁用,macOS 在设置的登录项里关掉,卸载前这个设置会一直保留 [1]。
本文改编自 Ollama 官方文档的 Local FAQ 一节[1],原文以 MIT 许可证发布。
来源
- 1Local FAQ | Ollama docsOllama docs (MIT)
引用本页: Ollama 常见问题:模型存放路径、端口、显存. TellWorld, https://www.tellworld.net/zh/practice/practice-ollama-faq. 更新于 2026-11-14