使用 AMD Radeon 6600 XT 运行 ollama

URL Source: https://major.io/p/ollama-with-amd-radeon-6600xt/

我现在在工作中分饰两角,其中一个角色专注于大语言模型 。和你们中的许多人一样,我也时不时地尝试用 ChatGPT 提问。我还在 Visual Studio Code 中使用了 GitHub Copilot。

它们都很棒,但我真的很希望能在我的家用电脑上本地运行一些东西。

然后,我在 All Things Open 上偶然发现了一篇很棒的文章,题为“使用 IBM Granite Code、Ollama 和 Continue 构建本地 AI 副驾驶 ”,这让我开始接触 ollama 。ollama 项目让你可以轻松启动一个本地大语言模型,并使其易于为其他应用程序提供服务。

**它太慢了 🐌 **#

当我第一次将 vscode 连接到 ollama 时,我注意到响应速度非常慢。用 btop 快速检查后,我发现我的 CPU 利用率达到了 100%,而我的 GPU 完全闲置。这可不妙。

我的第一个想法是用 sudo journalctl --boot -u ollama 检查系统日志。这会让我看到自从上次启动机器以来 ollama 的所有消息。

source=images.go:781 msg="total blobs: 0"
source=images.go:788 msg="total unused blobs removed: 0"
source=routes.go:1155 msg="Listening on 127.0.0.1:11434 (version 0.3.4)"
source=payload.go:30 msg="extracting embedded files" dir=/tmp/ollama1586759388/runners
source=payload.go:44 msg="Dynamic LLM libraries [cpu_avx cpu_avx2 cuda_v11 rocm_v60102 cpu]"
source=gpu.go:204 msg="looking for compatible GPUs"
source=amd_linux.go:59 msg="ollama recommends running the https://www.amd.com/en/support/linux-drivers" error="amdgpu version file missing: /sys/module/amdgpu/version stat /sys/module/amdgpu/version: no such file or directory"
source=amd_linux.go:340 msg="amdgpu is not supported" gpu=0 gpu_type=gfx1032 library=/usr/lib64 supported_types="[gfx1030 gfx1100 gfx1101 gfx1102]"
source=amd_linux.go:342 msg="See https://github.com/ollama/ollama/blob/main/docs/gpu.md#overrides for HSA_OVERRIDE_GFX_VERSION usage"
source=amd_linux.go:360 msg="no compatible amdgpu devices detected"

输出中有几件事引起了我的注意:

  • stat /sys/module/amdgpu/version: no such file or directory
  • msg="amdgpu is not supported" gpu=0 gpu_type=gfx1032 library=/usr/lib64 supported_types="[gfx1030 gfx1100 gfx1101 gfx1102]"
  • "See https://github.com/ollama/ollama/blob/main/docs/gpu.md#overrides for HSA_OVERRIDE_GFX_VERSION usage"

果然,版本文件缺失了:

> stat /sys/module/amdgpu/version
stat: cannot statx '/sys/module/amdgpu/version': No such file or directory

而我的 AMD GPU 确实是 AMD Navi 23 芯片组 (gfx1032):

> lspci | grep -i VGA
0f:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 23 [Radeon RX 6600/6600 XT/6600M] (rev c7)

我去了链接的覆盖文档 以了解 HSA_OVERRIDE_GFX_VERSION 的含义:

Ollama 利用了 AMD ROCm 库,该库并不支持所有 AMD GPU。在某些情况下,你可以强制系统尝试使用一个接近的 LLVM 目标。例如,Radeon RX 5400 是 gfx1034(也称为 10.3.4),但 ROCm 目前不支持此目标。最接近的支持是 gfx1030。你可以使用环境变量 HSA_OVERRIDE_GFX_VERSION,并使用 x.y.z 语法。因此,例如,要强制系统在 RX 5400 上运行,你可以将 HSA_OVERRIDE_GFX_VERSION=“10.3.0” 设置为服务器的环境变量。如果你有一个不受支持的 AMD GPU,你可以使用下面列出的支持类型进行实验。

**修复 **#

文档建议设置 HSA_OVERRIDE_GFX_VERSION="10.3.0" 来查看我的显卡是否能工作。让我们编辑 ollama 的 systemd 单元文件,以添加一些额外的配置:

> sudo systemctl edit ollama.service

编辑器中出现了一些文本:

### Editing /etc/systemd/system/ollama.service.d/override.conf
### Anything between here and the comment below will become the contents of the drop-in file

### Edits below this comment will be discarded

所以我添加了建议的覆盖,以及我的 AMD ROCm 目录的路径:

### Editing /etc/systemd/system/ollama.service.d/override.conf
### Anything between here and the comment below will become the contents of the drop-in file

[Service]
Environment="HSA_OVERRIDE_GFX_VERSION=10.3.0"
Environment="ROCM_PATH=/opt/rocm"

### Edits below this comment will be discarded

然后我可以告诉 systemd 重新加载单元并重启 ollama:

> sudo systemctl daemon-reload
> sudo systemctl stop ollama
> sudo systemctl start ollama

回到系统日志再看一眼:

source=amd_linux.go:348 msg="skipping rocm gfx compatibility check" HSA_OVERRIDE_GFX_VERSION=10.3.0
source=types.go:105 msg="inference compute" id=0 library=rocm compute=gfx1032 driver=0.0 name=1002:73ff total="8.0 GiB" available="5.9 GiB"

成功!🎉

**再试一次 **#

我回到 vscode 并尝试了一些代码补全,但它们只比使用 CPU 时稍微快了一点。每次我等待补全时,我都会观察 btop,GPU 会突然飙升,然后是 CPU,接着 GPU 再次飙升,如此反复。

在与一位同事交谈后,我发现我的 Radeon 6600 XT 虽然适合游戏,但它缺乏将模型加载到 GPU 所需的内存。😭 根据我所读到的内容,建议的最低内存是 24GB,而这是大多数 GeForce/Radeon 消费级显卡中最大的内存容量。

使用 AMD Radeon 6600 XT 运行 ollama