Ollama - Arch Linux 中文维基

跳转到内容

# Ollama

来自 Arch Linux 中文维基

相关文章

- 通用图形处理器
- llama.cpp
- Vulkan

翻译状态：

- 本文（或部分内容）译自 Ollama，最近一次同步于 2026-07-29，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

Ollama 可以让用户在离线情况下，使用本地版大语言模型。

## 安装

安装 ollama包 软件包，提供了后台服务、命令行工具以及使用CPU推断的能力。

使用显卡推理:

- 安装 ollama-vulkan包，以使用 Vulkan 推理。
- 安装 ollama-cuda包，以使用 CUDA 推理。
- 安装 ollama-rocm包，以使用 ROCm 推理。

提示：对于搭载来自 RDNA3 的 AMD 显卡，ollama-vulkan包 通常比 ollama-rocm包 可以更快且使用更少的电量，并且可以避免 ROCm 的不支持显卡问题（另见 #ROCm 没有使用我的 AMD 显卡）。集成显卡自动被跳过；设定 `OLLAMA_IGPU_ENABLE=1` 来允许他们。

接下来，启用/启动 `ollama.service` 。然后验证 Ollama 是否成功启动：

    $ ollama --version

如果输出提示 `Warning: could not connect to a running Ollama instance` ，则 Ollama 服务没有成功启动；否则，Ollama 服务启动成功并且进入 Ollama 程序的命令行界面，等待用户输入命令。

然后，验证您可以运行模型。下面的命令将会下载最新的 DeepSeek-R1 蒸馏模型 1.5b 参数版 并返回一个 Ollama 的提示符允许您和这个模型对话。

    $ ollama run deepseek-r1:1.5b

    >>> Send a message (/? for help)

## 使用

Ollama 的可执行程序没有提供一个搜索界面。没有类似 `ollama search` 的命令。需要寻找一个模型，您需要访问他们的 搜索页面。

运行模型：

    $ ollama run model

停止模型：

    $ ollama stop model

拉取模型：

    $ ollama pull model

删除模型：

    $ ollama rm model

查看本地可用模型：

    $ ollama list

## 配置

### 全系统配置

Ollama 通过环境变量来进行配置。设定它们在对应服务的附加配置片段，然后重启 `ollama.service`：

    /etc/systemd/system/ollama.service.d/environment.conf

    [Service]
    Environment="VARIABLE=value"

常用变量：

变量名 | 解释
--- | ---
`OLLAMA_FLASH_ATTENTION=1` | 更快地提示词处理和更小的键值缓存；键值缓存量化条件。
`OLLAMA_KV_CACHE_TYPE` | 键值缓存量化，需要注意: `f16` （默认） `q8_0`（`f16` 的一半 VRAM，轻微的质量下降） `q4_0`（`q8_0` 的一半 VRAM，明显的质量下降）
`OLLAMA_CONTEXT_LENGTH` | 每次请求的默认上下文大小，如：`32000`；如果没有设定，使用可用的 VRAM 修改大小（4k/32k/256k）。模型可以复写它（见下文）。
`OLLAMA_NUM_PARALLEL` | 每个模型的并发请求；每一个可以倍增键值缓存分配。
`OLLAMA_MAX_LOADED_MODELS` | 每个 GPU 保持加载的模型数量。
`OLLAMA_KEEP_ALIVE` | 最后一次请求后模型在内存中存在的时长 （默认：`5m`）；`0` 立即卸载，`-1` 保持它永久加载）。
`GGML_VK_VISIBLE_DEVICES=0` | 在多显卡系统上（如独立显卡 + 集成显卡），固定一个 Vulkan 推理设备（`0` = 第一个出现在启动日志中的设备）。
`OLLAMA_HOST=host:port` | 监听所有接口而不仅仅是 loopback；容器需要此功能（如：Podman/Docker 搜索通过 host.containers.internal）和其他的 LAN 主机。
`OLLAMA_IGPU_ENABLE=true` | 使用集成显卡来推理。默认情况下它们会被忽略。

查看 `ollama serve --help` 和 上游 FAQ 以了解其余变量。

注意：当安装有 ollama包 时，Vulkan 支持默认启用；`OLLAMA_VALKAN=1` 就不需要了。
警告：Ollama API 没有验证措施。若使用 `OLLAMA_HOST=0.0.0.0`，这这个网络上的任何人都可以使用模型————使用防火墙来限制访问如果这个网络不可信。

### 每个模型参数

要运行一个带有自定义设定的模型，需要把它们使用一个 Modelfile 来拷入一个新模型。

    Modelfile

    FROM deepseek-r1:1.5b
    PARAMETER num_gpu 29
    PARAMETER num_ctx 32768

变量名 | 解释
--- | ---
`FROM` | 一个被 `ollama list` 列出的已拉取模型。
`PARAMETER num_gpu` | Number of model layers offloaded to the GPU. Speed rises with each extra layer until VRAM fills. One layer too many spills into GTT (system RAM over PCIe) and speed collapses, even though the model still reports "100% GPU". Benchmark a few values - the optimum is the most layers that fit just under free VRAM. For example, on a 16 GiB RX 9070 XT running `gemma4:26b` (Q4_K_M) at 32k context, 29 of 31 layers hit ~88 tok/s with most of the VRAM available; 30 layers dropped to ~75 tok/s (spill) and the auto-offload default gave ~37. With a browser holding ~5 GiB of VRAM the optimum fell to ~24 layers. On an 8 GiB GPU only ~13 layers of this model fit and generation is mostly CPU-bound - there, prefer a model that fits in VRAM entirely (a 7-9B model at Q4_K_M takes ~4-5 GiB) at 8-16k context.
`PARAMETER num_ctx` | 上下文大小：模型第一次看到的最大 Token 数量（提示词 + 回复）。键值缓存和图层共享 VRAM：上下文越大，拟合层数越小————改完之后需要重新调整`num_gpu`。

之后，使用以下命令创建这个模型：

    $ ollama create deepseek-r1-tuned -f Modelfile

`ollama create` 不会复制本体————这些存储是由内容定位的，所以一个调整过的变种只会增加一个小的 manifest。在 API `option` 字段中，被个请求也可以传入同样的参数。

Ollama 不会保存原 Modelfile；这些参数作为附加层存在模型存储的地方（`/var/lib/ollama`，manifest 在 `manifests/registry.ollama.ai/library/name/tag/`）。要更改一个创建好的模型，重写他的 Modelfile，编辑它并再次执行 `ollama create` 使用相同的名字（仅有小的 manifest 被重写）

    $ ollama show --modelfile deepseek-r1-tuned > Modelfile
    $ ollama create deepseek-r1-tuned -f Modelfile

参见 Modelfile 参考 以了解其余指令和参数。

## 故障和修复

### ROCm 没有使用我的 AMD 显卡

您可能通过类似 amdgpu_top包 去监控您的显卡时在运行 Ollama 服务时，发现显卡根本没有被使用。

在没有配置的情况下，ROCm 忽略不支持的显卡，这导致所有东西都会在CPU下进行。

注意：检验支持显卡通过检查 ROCm 系统要求。

为了解决这个问题，针对 `ollama.service` 创建一个附加配置片段：

    /etc/systemd/system/ollama.service.d/override_gfx_version.conf

    [Service]
    Environment="HSA_OVERRIDE_GFX_VERSION=X.Y.Z"

其中 `X.Y.Z` 由您系统的 GFX 版本所决定。

为了设定使用 GFX 的哪个版本来使用，首先确保 rocminfo包 已安装。它应该被安装在您的系统里作为一个 rocblas包 的非直接的依赖，这由 hipblas包 所需要，这并由 ollama包 所需要。

接下来，查询您系统的真正 GFX 版本：

    $ /opt/rocm/bin/rocminfo | grep amdhsa

您需要记住输出的 `gfx` 后边的数字，因为这是您系统真正的 GFX 版本。这些数字按以下的方式解读：

- 如果数字为4位数，它们可以释作 `XX.Y.Z` ，及前两个数字为 `X` 部分。
- 如果数字为3位数，三位数字可被解释为 `X.Y.Z` 。

然后，查找所有安装的 rocblas包 内核：

    $ find /opt/rocm/lib/rocblas/library -name 'Kernels.so-*'

您需要设定 `X.Y.Z` 为其中一个列出的可用版本。以下是总结好的的规则：

1. 对于 `X` 部分，它必须严格等于实际版本。
2. 对于 `Y` 部分，可以不同，但是它必须不得超过实际版本。
3. 对于 `Z` 部分，可以不同，但是它必须不得超过实际版本。

在设定好正确的 `X.Y.Z` 后，执行 daemon-reload 并 重启 `ollama.service`。

现在，您可以照常地运行您的模型。您可能希望再次通过类似 amdgpu_top包 去监控集成显卡的使用情况。

### 卸载 Ollama 后模型仍存在

您可以手动删掉这些模型文件，这些文件存在于 `/var/lib/ollama/blobs`。

## 另请参阅

- Ollama Blog
- Ollama Docs

分类：​

- 开发
- 图形

Ollama
添加话题