跳到主要内容

常见问题

如何升级 Ollama?

macOS 和 Windows 版本的 Ollama 会自动下载更新。点击任务栏或菜单栏项目,然后点击"重启以更新"来应用更新。也可以通过手动下载最新版本来安装更新。

在 Linux 系统上,重新运行安装脚本:

curl -fsSL https://ollama.com/install.sh | sh

如何查看日志?

查看故障排除文档了解更多关于使用日志的信息。

我的显卡是否与 Ollama 兼容?

请参考显卡文档

如何指定上下文窗口大小?

默认情况下,Ollama 使用 4096 个 token 的上下文窗口大小。

可以通过 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
}
}'

如何检查模型是否已加载到显卡上?

使用 ollama ps 命令查看当前加载到内存中的模型。

ollama ps

输出示例

NAME      	ID          	SIZE 	PROCESSOR	UNTIL
llama3:70b bcfb190ca3a7 42 GB 100% GPU 4 minutes from now

Processor 列会显示模型加载到哪种内存中:

  • 100% GPU 表示模型完全加载到显卡内存中
  • 100% CPU 表示模型完全加载到系统内存中
  • 48%/52% CPU/GPU 表示模型部分加载到显卡和系统内存中

如何配置 Ollama 服务器?

Ollama 服务器可以通过环境变量进行配置。

在 Mac 上设置环境变量

如果 Ollama 作为 macOS 应用程序运行,应使用 launchctl 设置环境变量:

  1. 对于每个环境变量,调用 launchctl setenv

    launchctl setenv OLLAMA_HOST "0.0.0.0:11434"
  2. 重启 Ollama 应用程序。

在 Linux 上设置环境变量

如果 Ollama 作为 systemd 服务运行,应使用 systemctl 设置环境变量:

  1. 通过调用 systemctl edit ollama.service 编辑 systemd 服务。这将打开一个编辑器。

  2. 对于每个环境变量,在 [Service] 部分下添加一行 Environment

    [Service]
    Environment="OLLAMA_HOST=0.0.0.0:11434"
  3. 保存并退出。

  4. 重新加载 systemd 并重启 Ollama:

    systemctl daemon-reload
    systemctl restart ollama

在 Windows 上设置环境变量

在 Windows 上,Ollama 继承您的用户和系统环境变量。

  1. 首先通过点击任务栏中的 Ollama 图标退出 Ollama。

  2. 启动设置应用程序(Windows 11)或控制面板(Windows 10)并搜索"环境变量"。

  3. 点击"编辑用户账户的环境变量"。

  4. 为您的用户账户编辑或创建新的变量,如 OLLAMA_HOSTOLLAMA_MODELS 等。

  5. 点击"确定/应用"保存。

  6. 从 Windows 开始菜单启动 Ollama 应用程序。

如何在代理服务器后使用 Ollama?

Ollama 从互联网拉取模型,可能需要代理服务器来访问模型。使用 HTTPS_PROXY 将出站请求重定向通过代理。确保代理证书作为系统证书安装。关于如何在您的平台上使用环境变量,请参考上面的部分。

注意: 避免设置 HTTP_PROXY。Ollama 不使用 HTTP 拉取模型,仅使用 HTTPS。设置 HTTP_PROXY 可能会中断客户端与服务器的连接。

如何在 Docker 中的代理服务器后使用 Ollama?

Ollama Docker 容器镜像可以通过在启动容器时传递 -e HTTPS_PROXY=https://proxy.example.com 来配置使用代理。

或者,可以配置 Docker 守护进程使用代理。针对 Docker Desktop 在 macOSWindowsLinux 上的说明,以及使用 systemd 的 Docker 守护进程 的说明都可以找到。

使用 HTTPS 时,确保证书作为系统证书安装。使用自签名证书时,这可能需要新的 Docker 镜像。

FROM ollama/ollama
COPY my-ca.pem /usr/local/share/ca-certificates/my-ca.crt
RUN update-ca-certificates
构建并运行此镜像:

```shell
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; # 替换为您的域名或 IP
location / {
proxy_pass http://localhost:11434;
proxy_set_header Host localhost:11434;
}
}

如何通过 ngrok 使用 Ollama?

Ollama 可以通过各种隧道工具访问。例如使用 Ngrok:

ngrok http 11434 --host-header="localhost:11434"

如何通过 Cloudflare Tunnel 使用 Ollama?

要通过 Cloudflare Tunnel 使用 Ollama,使用 --url--http-host-header 标志:

cloudflared tunnel --url http://localhost:11434 --http-host-header="localhost:11434"

如何允许其他网络来源访问 Ollama?

Ollama 默认允许来自 127.0.0.10.0.0.0 的跨域请求。可以使用 OLLAMA_ORIGINS 配置其他来源。

对于浏览器扩展,您需要明确允许扩展的来源模式。设置 OLLAMA_ORIGINS 包含 chrome-extension://*moz-extension://*safari-web-extension://*,如果您希望允许所有浏览器扩展访问,或者根据需要指定特定扩展:

允许所有 Chrome、Firefox 和 Safari 扩展

OLLAMA_ORIGINS=chrome-extension://,moz-extension://,safari-web-extension://* ollama serve 关于如何在您的平台上设置环境变量,请参考上面的部分

模型存储在哪里?

  • 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>

关于如何在您的平台上设置环境变量,请参考上面的部分

如何在 Visual Studio Code 中使用 Ollama?

VSCode 以及其他编辑器已经有大量利用 Ollama 的插件可用。查看主仓库自述文件底部的扩展和插件列表。

如何在 Docker 中使用 Ollama 的显卡加速?

Ollama Docker 容器可以在 Linux 或 Windows(使用 WSL2)中配置显卡加速。这需要 nvidia-container-toolkit。详情请参考 ollama/ollama

由于缺乏显卡直通和仿真,macOS 上的 Docker Desktop 不支持显卡加速。

为什么 Windows 10 上的 WSL2 网络速度慢?

这可能会影响 Ollama 的安装以及模型的下载。

打开"控制面板 > 网络和 Internet > 查看网络状态和任务",点击左侧面板的"更改适配器设置"。找到 vEthernel (WSL) 适配器,右键选择"属性"。 点击"配置"并打开"高级"选项卡。搜索每个属性,直到找到 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,在 /api/generate/api/chat 端点中使用 keep_alive 参数来设置模型在内存中停留的时间。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 服务器的部分来正确设置环境变量。

/api/generate/api/chat API 端点的 keep_alive API 参数将覆盖 OLLAMA_KEEP_ALIVE 设置。

如何管理 Ollama 服务器可以排队的最大请求数?

如果向服务器发送过多请求,它将响应 503 错误,表示服务器过载。您可以通过设置 OLLAMA_MAX_QUEUE 来调整可以排队的请求数量。

Ollama 如何处理并发请求?

Ollama 支持两级并发处理。如果您的系统有足够的可用内存(使用 CPU 推理时的系统内存,或使用显卡推理时的显存),那么可以同时加载多个模型。对于给定的模型,如果在加载模型时有足够的可用内存,它会被配置为允许并行请求处理。

如果在已经加载一个或多个模型时,没有足够的可用内存来加载新的模型请求,所有新请求将被排队,直到新模型可以被加载。当先前的模型变为空闲时,一个或多个模型将被卸载以为新模型腾出空间。排队的请求将按顺序处理。使用显卡推理时,新模型必须能够完全装入显存才能允许并发模型加载。

给定模型的并行请求处理会根据并行请求的数量增加上下文大小。例如,具有 4 个并行请求的 2K 上下文将导致 8K 上下文和额外的内存分配。

以下服务器设置可用于调整 Ollama 在大多数平台上如何处理并发请求:

  • OLLAMA_MAX_LOADED_MODELS - 在可用内存允许的情况下,可以同时加载的模型最大数量。默认值为 GPU 数量的 3 倍,或 CPU 推理时为 3。
  • OLLAMA_NUM_PARALLEL - 每个模型同时处理的并行请求最大数量。默认值会根据可用内存自动选择 4 或 1。
  • OLLAMA_MAX_QUEUE - 当 Ollama 繁忙时,在拒绝额外请求之前可以排队的最大请求数量。默认值为 512。

注意: 由于 ROCm v5.7 在可用显存报告方面的限制,配备 Radeon GPU 的 Windows 系统目前默认最多只能加载 1 个模型。一旦 ROCm v6.2 可用,Windows Radeon 将遵循上述默认值。您可以在 Windows 的 Radeon 上启用并发模型加载,但请确保不要加载超过 GPU 显存容量的模型。

Ollama 如何在多个 GPU 上加载模型?

加载新模型时,Ollama 会评估模型所需的显存与当前可用显存的对比。如果模型能够完全适配任何单个 GPU,Ollama 会将模型加载到该 GPU 上。这通常能提供最佳性能,因为它减少了推理过程中通过 PCI 总线传输的数据量。如果模型无法完全适配一个 GPU,则会分散到所有可用的 GPU 上。

如何启用 Flash Attention(闪存注意力)?

Flash Attention 是大多数现代模型的一项功能,可以在上下文大小增长时显著减少内存使用量。要启用 Flash Attention,请在启动 Ollama 服务器时将 OLLAMA_FLASH_ATTENTION 环境变量设置为 1

如何设置 K/V 缓存的量化类型?

当启用 Flash Attention 时,K/V 上下文缓存可以被量化以显著减少内存使用量。

要在 Ollama 中使用量化的 K/V 缓存,您可以设置以下环境变量:

  • OLLAMA_KV_CACHE_TYPE - K/V 缓存的量化类型。默认值为 f16

注意: 目前这是一个全局选项,意味着所有模型都将使用指定的量化类型运行。

当前可用的 K/V 缓存量化类型包括:

  • f16 - 高精度和高内存使用量(默认)。
  • q8_0 - 8 位量化,使用约 f16 一半的内存,精度损失极小,通常对模型质量没有明显影响(如果不使用 f16,推荐使用此选项)。
  • q4_0 - 4 位量化,使用约 f16 四分之一的内存,精度损失为小到中等程度,在较高上下文大小时可能更加明显。

缓存量化对模型响应质量的影响程度取决于模型和任务。具有高 GQA(分组查询注意力)计数的模型(例如 Qwen2)可能比 GQA 计数较低的模型在量化时受到更大的精度影响。

您可能需要尝试不同的量化类型,以找到内存使用量和质量之间的最佳平衡。

优云智算