开发者-导航 猿导航

Ollama 常问问题

发布时间:

目录

如何升级 Ollama? #

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

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

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

我如何查看日志? #

有关使用日志的更多信息,请参阅故障排除文档。

我的 GPU 与 Ollama 兼容吗? #

请参阅GPU 文档

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

默认情况下,Ollama 使用 2048 个标记的上下文窗口大小。

要在使用时更改此设置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列将显示模型被加载到哪个内存中:

如何配置 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. 通过调用 来编辑 systemd 服务systemctl edit ollama.service。这将打开一个编辑器。
  2. Environment对于每个环境变量,在部分下添加一行[Service]
    [Service]
    Environment="OLLAMA_HOST=0.0.0.0:11434"
  3. 保存并退出。
  4. 重新加载systemd并重新启动 Ollama:
    systemctl daemon-reload
    systemctl restart ollama

在 Windows 上设置环境变量 #

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

  1. 首先通过单击任务栏中的 Ollama 来退出它。
  2. 启动设置(Windows 11)或控制面板(Windows 10)应用程序并搜索环境变量
  3. 单击*“编辑您账户的环境变量”*。
  4. 编辑或创建一个适合您的用户帐户的新变量OLLAMA_HOST,例如OLLAMA_MODELS,等。
  5. 单击“确定/应用”保存。
  6. 从 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 守护程序配置为使用代理。有关macOSWindowsLinux上的 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"

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

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

请参阅上面的部分以了解如何在您的平台上设置环境变量。

模型存储在哪里? #

我如何将它们设置到不同的位置? #

如果需要使用不同的目录,请将环境变量设置OLLAMA_MODELS为所选目录。

注意:在使用标准安装程序的 Linux 上,ollama用户需要对指定目录具有读写权限。要将目录分配给ollama用户,请运行sudo chown -R ollama:ollama <directory>

请参阅上面的部分以了解如何在您的平台上设置环境变量。

如何在 Visual Studio Code 中使用 Ollama? #

目前,VSCode 以及其他利用 Ollama 的编辑器已经拥有大量可用的插件。请参阅主存储库自述文件底部的扩展和插件列表。

如何在 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/chatAPI 端点。
要使用生成端点预加载 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参数可以设置为:

例如,要预加载模型并将其保留在内存中使用:

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变量使用与上面提到的参数类型相同的参数类型。请参阅说明如何配置 Ollama 服务器keep_alive以正确设置环境变量的部分。

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

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

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

Ollama 如何处理并发请求? #

Ollama 支持两种级别的并发处理。如果您的系统有足够的可用内存(使用 CPU 推理时为系统内存,使用 GPU 推理时为 VRAM),则可以同时加载多个模型。对于给定的模型,如果加载模型时有足够的可用内存,则配置为允许并行请求处理。

如果在已加载一个或多个模型的情况下,可用内存不足以加载新模型请求,则所有新请求将排队,直到可以加载新模型为止。当先前的模型空闲时,将卸载一个或多个模型以腾出空间给新模型。排队的请求将按顺序处理。使用 GPU 推理时,新模型必须能够完全适合 VRAM,以允许并发模型加载。

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

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

注意:由于 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 一起使用,您可以设置以下环境变量:

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

目前可用的K/V缓存量化类型有:

缓存量化对模型响应质量的影响程度取决于模型和任务。GQA 数量较高的模型(例如 Qwen2)可能比 GQA 数量较低的模型受到量化对精度的影响更大。

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