发布时间:
目录
- 如何升级 Ollama?
- 我如何查看日志?
- 我的 GPU 与 Ollama 兼容吗?
- 如何指定上下文窗口大小?
- 我如何知道我的模型是否已加载到 GPU 上?
- 如何配置 Ollama 服务器?
- 如何在代理后面使用 Ollama?
- Ollama 会将我的提示和答案发送回 ollama.com 吗?
- 如何在我的网络上公开 Ollama?
- 如何使用带有代理服务器的 Ollama?
- 如何将 Ollama 与 ngrok 一起使用?
- 如何将 Ollama 与 Cloudflare Tunnel 一起使用?
- 如何允许其他 Web 来源访问 Ollama?
- 模型存储在哪里?
- 如何在 Visual Studio Code 中使用 Ollama?
- 如何在 Docker 中使用带有 GPU 加速的 Ollama?
- 为什么 Windows 10 上的 WSL2 网络很慢?
- 如何将模型预加载到 Ollama 以获得更快的响应时间?
- 如何让模型保持在内存中加载或立即卸载?
- 如何管理 Ollama 服务器可以排队的最大请求数?
- Ollama 如何处理并发请求?
- Ollama 如何在多个 GPU 上加载模型?
- 如何启用 Flash Attention?
- 如何设置 K/V 缓存的量化类型?
如何升级 Ollama? #
macOS 和 Windows 上的 Ollama 将自动下载更新。点击任务栏或菜单栏上的更新,然后点击“重新启动以更新”即可应用更新。您也可以通过手动下载最新版本来安装更新。
在 Linux 上,重新运行安装脚本:
curl -fsSL https://ollama.com/install.sh | sh
我如何查看日志? #
有关使用日志的更多信息,请参阅故障排除文档。
我的 GPU 与 Ollama 兼容吗? #
请参阅GPU 文档。
如何指定上下文窗口大小? #
默认情况下,Ollama 使用 4096 个标记的上下文窗口大小。
这可以通过OLLAMA_CONTEXT_LENGTH
环境变量覆盖。例如,要将默认上下文窗口设置为 8K,请使用:
OLLAMA_CONTEXT_LENGTH=8192 ollama serve
要在使用时更改此设置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
}
}'
我如何知道我的模型是否已加载到 GPU 上? #
使用ollama ps
命令查看当前加载到内存中的模型。
ollama ps
输出:
NAME ID SIZE PROCESSOR UNTIL llama3:70b bcfb190ca3a7 42 GB 100% GPU 4 minutes from now
该Processor
列将显示模型被加载到哪个内存中:
100% GPU
表示模型已完全加载到 GPU 中100% CPU
表示模型已完全加载到系统内存中48%/52% CPU/GPU
意味着模型已部分加载到 GPU 和系统内存中
如何配置 Ollama 服务器? #
Ollama 服务器可以配置环境变量。
在 Mac 上设置环境变量 #
如果 Ollama 作为 macOS 应用程序运行,则应使用以下命令设置环境变量launchctl
:
-
对于每个环境变量,调用
launchctl setenv
。launchctl setenv OLLAMA_HOST "0.0.0.0:11434"
-
重新启动 Ollama 应用程序。
在 Linux 上设置环境变量 #
如果 Ollama 作为 systemd 服务运行,则应使用以下命令设置环境变量systemctl
:
-
通过调用 来编辑 systemd 服务
systemctl edit ollama.service
。这将打开一个编辑器。 -
Environment
对于每个环境变量,在 section 下添加一行[Service]
:[Service] Environment="OLLAMA_HOST=0.0.0.0:11434"
-
保存并退出。
-
重新加载
systemd
并重新启动 Ollama:systemctl daemon-reload systemctl restart ollama
在 Windows 上设置环境变量 #
在 Windows 上,Ollama 继承您的用户和系统环境变量。
- 首先通过单击任务栏上的 Ollama 来退出它。
- 启动设置(Windows 11)或控制面板(Windows 10)应用程序并搜索环境变量。
- 单击*“编辑您帐户的环境变量”*。
- 为您的用户帐户编辑或创建新变量
OLLAMA_HOST
,OLLAMA_MODELS
例如 、 等。 - 单击“确定/应用”保存。
- 从 Windows 开始菜单启动 Ollama 应用程序。
如何在代理后面使用 Ollama? #
Ollama 从互联网拉取模型,可能需要代理服务器才能访问模型。用于HTTPS_PROXY
通过代理重定向出站请求。请确保代理证书已作为系统证书安装。请参阅上文,了解如何在您的平台上使用环境变量。
笔记
避免设置HTTP_PROXY
。Ollama 不使用 HTTP 进行模型拉取,仅使用 HTTPS。此设置HTTP_PROXY
可能会中断客户端与服务器的连接。
如何在 Docker 中的代理后面使用 Ollama? #
-e HTTPS_PROXY=https://proxy.example.com
可以通过在启动容器时传递来配置 Ollama Docker 容器镜像使用代理。
或者,可以将 Docker 守护进程配置为使用代理。 针对macOS、Windows和Linux上的 Docker Desktop以及带有 systemd 的 Docker 守护进程提供了相关说明。
使用 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.com 吗? #
不会。Ollama 在本地运行,对话数据不会离开您的机器。
如何在我的网络上公开 Ollama? #
Ollama 默认绑定 127.0.0.1 端口 11434。请使用环境变量更改绑定地址OLLAMA_HOST
。
请参阅上面的部分以了解如何在您的平台上设置环境变量。
如何使用带有代理服务器的 Ollama? #
Ollama 运行 HTTP 服务器,可以使用 Nginx 等代理服务器进行公开。为此,请配置代理以转发请求,并可选地设置所需的标头(如果不在网络上公开 Ollama)。例如,使用 Nginx:
server {
listen 80;
server_name example.com; # Replace with your domain or IP
location / {
proxy_pass http://localhost:11434;
proxy_set_header Host localhost:11434;
}
}
如何将 Ollama 与 ngrok 一起使用? #
可以使用一系列隧道工具来访问 Ollama。例如使用 Ngrok:
ngrok http 11434 --host-header="localhost:11434"
如何将 Ollama 与 Cloudflare Tunnel 一起使用? #
要将 Ollama 与 Cloudflare Tunnel 一起使用,请使用--url
和--http-host-header
标志:
cloudflared tunnel --url http://localhost:11434 --http-host-header="localhost:11434"
如何允许其他 Web 来源访问 Ollama? #
127.0.0.1
Ollama 默认允许来自和的跨域请求0.0.0.0
。可以使用 来配置其他来源OLLAMA_ORIGINS
。
对于浏览器扩展程序,您需要明确允许其来源模式。如果您希望允许所有浏览器扩展程序访问,或根据需要允许特定扩展程序访问,请设置OLLAMA_ORIGINS
为包含chrome-extension://*
、moz-extension://*
和:safari-web-extension://*
# Allow all Chrome, Firefox, and Safari extensions
OLLAMA_ORIGINS=chrome-extension://*,moz-extension://*,safari-web-extension://* ollama serve
请参阅上面的部分以了解如何在您的平台上设置环境变量。
模型存储在哪里? #
- macOS:
~/.ollama/models
- Linux:
/usr/share/ollama/.ollama/models
- 视窗:
C:\Users\%username%\.ollama\models
我如何将它们设置到不同的位置? #
如果需要使用不同的目录,请将环境变量设置OLLAMA_MODELS
为所选目录。
注意:在使用标准安装程序的 Linux 上,
ollama
用户需要对指定目录具有读写权限。要将目录分配给ollama
用户,请运行sudo chown -R ollama:ollama <directory>
。
请参阅上面的部分以了解如何在您的平台上设置环境变量。
如何在 Visual Studio Code 中使用 Ollama? #
目前,VSCode 以及其他支持 Ollama 的编辑器已经拥有大量可用的插件。请参阅主仓库 readme 文件底部的扩展和插件列表。
如何在 Docker 中使用带有 GPU 加速的 Ollama? #
Ollama Docker 容器可以在 Linux 或 Windows(需要 WSL2)中配置 GPU 加速。这需要nvidia-container-toolkit。更多详情请参阅ollama/ollama 。
由于缺乏 GPU 直通和模拟,macOS 中的 Docker Desktop 无法使用 GPU 加速。
为什么 Windows 10 上的 WSL2 网络很慢? #
这会影响安装 Ollama 以及下载模型。
打开Control Panel > Networking and Internet > View network status and tasks
并点击Change adapter settings
左侧面板上的 。找到vEthernel (WSL)
适配器,右键单击并选择Properties
。点击Configure
并打开Advanced
选项卡。搜索每个属性,直到找到Large Send Offload Version 2 (IPv4)
和Large Send Offload Version 2 (IPv6)
。禁用这两个属性。
如何将模型预加载到 Ollama 以获得更快的响应时间? #
如果您使用 API,可以通过向 Ollama 服务器发送空请求来预加载模型。此功能适用于/api/generate
和/api/chat
API 端点。
要使用生成端点预加载 mistral 模型,请使用:
curl http://localhost:11434/api/generate -d '{"model": "mistral"}'
要使用聊天完成端点,请使用:
curl http://localhost:11434/api/chat -d '{"model": "mistral"}'
要使用 CLI 预加载模型,请使用以下命令:
ollama run llama3.2 ""
如何让模型保持在内存中加载或立即卸载? #
默认情况下,模型会在内存中保存 5 分钟,然后才会卸载。如果您向 LLM 发出大量请求,这可以缩短响应时间。如果您想立即从内存中卸载模型,请使用以下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_KEEP_ALIVE
或者,您可以通过在启动 Ollama 服务器时设置环境变量来更改所有模型加载到内存中的时间。该OLLAMA_KEEP_ALIVE
变量使用的参数类型与keep_alive
上面提到的参数类型相同。请参阅说明如何配置 Ollama 服务器以正确设置环境变量的部分。
keep_alive
带有/api/generate
和API 端点的API参数/api/chat
将覆盖该OLLAMA_KEEP_ALIVE
设置。
如何管理 Ollama 服务器可以排队的最大请求数? #
如果发送到服务器的请求过多,服务器将返回 503 错误,表示服务器已超载。您可以通过设置 来调整排队的请求数量OLLAMA_MAX_QUEUE
。
Ollama 如何处理并发请求? #
Ollama 支持两种级别的并发处理。如果您的系统具有足够的可用内存(使用 CPU 推理时为系统内存,使用 GPU 推理时为 VRAM),则可以同时加载多个模型。对于给定的模型,如果加载时有足够的可用内存,则该模型将配置为允许并行请求处理。
如果已加载一个或多个模型,且可用内存不足以加载新的模型请求,则所有新请求将排队等待,直到新模型加载完成。当之前的模型空闲时,将卸载一个或多个模型,为新模型腾出空间。排队的请求将按顺序处理。使用 GPU 推理时,新模型必须能够完全装入 VRAM,才能允许并发模型加载。
给定模型的并行请求处理会导致上下文大小增加,具体数量取决于并行请求的数量。例如,一个 2K 的上下文,如果处理 4 个并行请求,则会导致上下文大小变为 8K,并额外分配内存。
以下服务器设置可用于调整 Ollama 在大多数平台上处理并发请求的方式:
OLLAMA_MAX_LOADED_MODELS
- 在可用内存允许的范围内,可同时加载的最大模型数量。默认值为 GPU 数量 * 3,或 CPU 推理时为 3。OLLAMA_NUM_PARALLEL
- 每个模型同时处理的最大并行请求数。默认值将根据可用内存自动选择 4 或 1。OLLAMA_MAX_QUEUE
- Ollama 在繁忙时排队的最大请求数,超过该数将拒绝其他请求。默认值为 512
注意:由于 ROCm v5.7 中可用显存 (VRAM) 报告的限制,配备 Radeon GPU 的 Windows 系统目前默认最多可加载 1 个模型。一旦 ROCm v6.2 正式发布,Windows Radeon 系统将遵循上述默认设置。您可以在 Windows 版 Radeon 系统中启用并发模型加载功能,但请确保加载的模型数量不超过 GPU 显存 (VRAM) 的容量。
Ollama 如何在多个 GPU 上加载模型? #
加载新模型时,Ollama 会根据当前可用的 VRAM 来评估模型所需的 VRAM。如果模型完全适合单个 GPU,Ollama 会将模型加载到该 GPU 上。这通常可以提供最佳性能,因为它可以减少推理过程中通过 PCI 总线传输的数据量。如果模型无法完全适合单个 GPU,则会将其分布到所有可用的 GPU 上。
如何启用 Flash Attention? #
Flash Attention 是大多数现代模型都具备的功能,它可以随着上下文规模的增长显著减少内存占用。要启用 Flash Attention,请在启动 Ollama 服务器时将OLLAMA_FLASH_ATTENTION
环境变量设置为。1
如何设置 K/V 缓存的量化类型? #
当启用 Flash Attention 时,可以量化 K/V 上下文缓存以显著减少内存使用量。
要将量化的 K/V 缓存与 Ollama 一起使用,您可以设置以下环境变量:
OLLAMA_KV_CACHE_TYPE
- 键/值缓存的量化类型。默认值为f16
。
注意:目前这是一个全局选项 - 意味着所有模型都将以指定的量化类型运行。
目前可用的K/V缓存量化类型有:
f16
- 高精度和内存使用率(默认)。q8_0
- 8 位量化,使用大约 1/2 的内存f16
,精度损失很小,这通常对模型的质量没有明显的影响(如果不使用 f16 则建议使用)。q4_0
- 4 位量化,使用大约 1/4 的内存,f16
精度有中小损失,在上下文大小较高时可能会更加明显。
缓存量化对模型响应质量的影响程度取决于模型和任务。GQA 数量较多的模型(例如 Qwen2)可能比 GQA 数量较少的模型受到量化对准确率的影响更大。
您可能需要尝试不同的量化类型来找到内存使用和质量之间的最佳平衡。