Ollama 配置常见问题
本文档整理了关于配置 Ollama 服务器的常见问题。
如果 Ollama 作为 macOS 应用程序运行,应使用 launchctl
设置环境变量:
- 对于每个环境变量,调用
launchctl setenv
。
launchctl setenv OLLAMA_HOST "0.0.0.0"
- 重启 Ollama 应用程序。
如果 Ollama 作为 systemd 服务运行,应使用 systemctl
设置环境变量:
- 通过调用
systemctl edit ollama.service
编辑 systemd 服务。这将打开一个编辑器。 - 对于每个环境变量,在
[Service]
部分下添加一行Environment
:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
- 保存并退出。
- 重新加载
systemd
并重启 Ollama:
systemctl daemon-reload
systemctl restart ollama
在 Windows 上,Ollama 会继承你的用户和系统环境变量。
- 首先,通过点击任务栏中的 Ollama 图标来退出 Ollama。
- 启动设置(Windows 11)或控制面板(Windows 10)应用程序,并搜索 环境变量。
- 点击 编辑账户的环境变量。
- 编辑或为你的用户账户创建新的变量,例如
OLLAMA_HOST
、OLLAMA_MODELS
等。 - 点击确定/应用以保存。
- 从 Windows 开始菜单启动 Ollama 应用程序。
Ollama 从互联网拉取模型,可能需要通过代理服务器来访问这些模型。使用 HTTPS_PROXY
将出站请求重定向到代理。确保代理证书已安装为系统证书。有关如何在你的平台上使用环境变量的详细信息,请参阅上面的章节。
避免设置 HTTP_PROXY
。Ollama 不使用 HTTP 拉取模型,只使用 HTTPS。设置 HTTP_PROXY
可能会中断客户端与服务器的连接。
在 Docker 中使用代理
可以通过在启动容器时传递 -e HTTPS_PROXY=https://proxy.example.com
来配置 Ollama Docker 镜像使用代理。
或者,可以配置 Docker 守护程序使用代理。有关配置 Docker Desktop 的说明,请参阅 macOS、Windows 和 Linux 的文档,以及 Docker 守护程序与 systemd 的文档。
使用 HTTPS 时,确保证书已安装为系统证书。如果使用自签名证书,可能需要创建新的 Docker 镜像。
FROM ollama/ollama
COPY my-ca.pem /usr/local/share/ca-certificates/my-ca.crt
RUN update-ca-certificates
构建并运行此镜像:
docker build -t ollama-with-ca .
docker run -d -e HTTPS_PROXY=https://my.proxy.example.com -p 11434:11434 ollama-with-ca
不会。Ollama 在本地运行,对话数据不会离开你的机器。
Ollama 默认绑定 127.0.0.1 端口 11434。你可以通过设置 OLLAMA_HOST
环境变量来更改绑定地址。请参阅上方的如何配置 Ollama 服务器部分,了解如何在你的平台上设置环境变量。
默认模型存储位置:
- macOS:
~/.ollama/models
- Linux:
/usr/share/ollama/.ollama/models
- Windows:
C:\Users\%username%\.ollama\models
更改位置:
如果需要使用不同的目录,可以将环境变量 OLLAMA_MODELS
设置为你选择的目录。
在 Linux 上使用标准安装程序时,ollama
用户需要对指定目录有读写权限。要将目录分配给 ollama
用户,请运行 sudo chown -R ollama:ollama <directory>
。
请参考上面的部分了解如何在你的平台上设置环境变量。
默认情况下,Ollama 使用 2048 个 token 的上下文窗口大小。
使用 ollama run
时:
可以通过 /set parameter
来更改此设置:
/set parameter num_ctx 4096
使用 API 时:
指定 num_ctx
参数:
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Why is the sky blue?",
"options": {
"num_ctx": 4096
}
}'
默认情况下,模型会在内存中保留 5 分钟后才被卸载。
立即卸载:
使用 ollama stop
命令:
ollama stop llama3.2
通过 API 控制:
使用 keep_alive
参数与 /api/generate
和 /api/chat
端点来设置模型在内存中保持的时间。keep_alive
参数可以设置为:
- 一个持续时间字符串 (例如 “10m”, “24h”)
- 以秒为单位的数字 (例如 3600)
- 任何负数,这将使模型保持在内存中 (例如 -1, “-1m”)
- ‘0’,这将在生成响应后立即卸载模型
示例 (保持加载):
curl http://localhost:11434/api/generate -d '{"model": "llama3.2", "keep_alive": -1}'
示例 (立即卸载):
curl http://localhost:11434/api/generate -d '{"model": "llama3.2", "keep_alive": 0}'
通过环境变量控制:
你可以在启动 Ollama 服务器时通过设置 OLLAMA_KEEP_ALIVE
环境变量来更改所有模型加载到内存中的时间。OLLAMA_KEEP_ALIVE
变量使用与上述 keep_alive
参数类型相同的参数类型。请参阅如何配置 Ollama 服务器部分以正确设置环境变量。
keep_alive
API 参数将覆盖 OLLAMA_KEEP_ALIVE
设置。
如果发送到服务器的请求数过多,服务器将返回 503 错误,表示服务器过载。你可以通过设置 OLLAMA_MAX_QUEUE
来调整可以排队的请求数。默认值为 512。
Ollama 支持两个级别的并发处理:
- 多模型并发:如果系统有足够的内存(系统内存用于 CPU,VRAM 用于 GPU),可以同时加载多个模型。
- 单模型并行:对于给定的模型,如果在加载时有足够的可用内存,它将被配置为允许并行请求处理。
内存不足时的处理: 如果在加载新模型时内存不足,新请求将被排队,直到有足够空间。先前的空闲模型将被卸载以腾出空间。
服务器设置:
OLLAMA_MAX_LOADED_MODELS
: 可以同时加载的最大模型数量。默认值为 GPU 数量的 3 倍 (GPU) 或 3 (CPU)。OLLAMA_NUM_PARALLEL
: 每个模型同时处理的最大并行请求数。默认值根据可用内存自动选择 4 或 1。OLLAMA_MAX_QUEUE
: 在拒绝额外请求之前可以排队的最大请求数。默认值为 512。
Windows 上使用 Radeon GPU 当前默认为最大 1 个模型,由于 ROCm v5.7 的限制。可以在 Windows 上启用 Radeon 的并发模型加载,但需确保加载的模型数量不超过 GPU 的 VRAM 容量。
当加载新模型时,Ollama 会评估所需 VRAM:
- 单 GPU 足够: 如果模型可以完全适应任何一个 GPU,Ollama 将在该 GPU 上加载模型以获得最佳性能。
- 单 GPU 不足: 如果模型不能完全适应一个 GPU,它将分布在所有可用的 GPU 上。