收起左侧

【教程】7840HS / 780M 在飞牛 OS 上使用 Ollama + Vulkan 推理

2
回复
39
查看
[ 复制链接 ]

1

主题

4

回帖

0

牛值

江湖小虾

适用人群:

  • AMD 7840HS / 7940HS 等 Phoenix APU(780M iGPU)
  • 飞牛 OS / 类 Debian NAS 系统
  • 想在 不折腾 ROCm 的情况下,让 iGPU 参与 Ollama 推理

一、背景与结论先行

  • ROCm 不支持 gfx1103(780M),即使强行 hack 也不稳定
  • Vulkan + Mesa RADV 是目前唯一可维护方案
  • Ollama 0.13.x 已支持 Vulkan backend(实验性,但可用)

最终效果:

  • Ollama 明确使用 library=Vulkan
  • 780M iGPU 参与推理
  • 不回退 CPU
  • 可长期后台运行(AppCenter)

二、系统与环境要求

  • 飞牛 OS(基于 Debian 12 / Bookworm)
  • Linux 内核 ≥ 6.x(自带 amdgpu 驱动)
  • 确认 iGPU 已被识别:
lspci | grep -E "VGA|Display" lsmod | grep amdgpu

应看到 Phoenix / amdgpu


三、安装 Vulkan 运行环境(Mesa)

apt update apt install -y mesa-vulkan-drivers vulkan-tools libvulkan1

验证 Vulkan:

vulkaninfo | grep -E "deviceName|driverName"

正确输出应包含:

deviceName = AMD Radeon Graphics (RADV GFX1103_R1) driverName = radv

(忽略 llvmpipe)


四、为 Vulkan 固定 RADV(避免 llvmpipe)

export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json export VK_DRIVER_FILES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json export AMD_VULKAN_ICD=RADV

再次确认:

vulkaninfo | grep deviceName

五、飞牛 AppCenter Ollama 的关键问题

飞牛 OS 的 Ollama AppCenter 版本结构为:

/vol2/@appcenter/ai_installer/ollama/ **── bin/ ** **── ollama **── lib/

没有 start.sh / stop.sh
AppCenter 是 直接 exec 二进制,不会加载系统环境变量。

👉 必须使用“二进制包装器(wrapper)”方案


六、创建 Ollama Vulkan 启动包装器(核心步骤)

1️⃣ 重命名原始二进制

mv /vol2/@appcenter/ai_installer/ollama/bin/ollama \ /vol2/@appcenter/ai_installer/ollama/bin/ollama.real

2️⃣ 创建新的 ollama 启动脚本

nano /vol2/@appcenter/ai_installer/ollama/bin/ollama

写入以下内容:

#!/bin/bash # Ollama Vulkan wrapper for AMD 780M export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json export VK_DRIVER_FILES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json export AMD_VULKAN_ICD=RADV export OLLAMA_LLM_LIBRARY=vulkan export OLLAMA_VULKAN=1 export OLLAMA_NO_CUDA=1 export OLLAMA_NO_ROCM=1 export OLLAMA_CONTEXT_LENGTH=4096 export OLLAMA_NUM_PARALLEL=1 export OLLAMA_MAX_LOADED_MODELS=1 exec /vol2/@appcenter/ai_installer/ollama/bin/ollama.real "$@"

保存退出。


3️⃣ 添加执行权限(非常重要)

chmod +x /vol2/@appcenter/ai_installer/ollama/bin/ollama

七、启动并验证 Vulkan 是否生效

手动启动一次验证

/vol2/@appcenter/ai_installer/ollama/bin/ollama serve

必须看到以下关键日志:

library=Vulkan description="AMD Radeon Graphics (RADV GFX1103_R1)"

这表示:

  • Vulkan backend 初始化成功
  • 使用的是 780M(gfx1103)
  • 未回退 CPU

八、关于 GPU 利用率显示的说明(重要)

APU + RADV + Vulkan 场景下:

cat /sys/class/drm/card0/device/gpu_busy_percent

长期显示 0 是正常的。

原因:

  • 该接口对 Vulkan com** 不可靠
  • UMA 架构无法准确统计 GPU busy
  • RADV 官方也不保证此数值

👉 不能用它判断 Vulkan 是否生效


九、如何确认不是 CPU fallback(推荐方法)

方法 1:看 Ollama 日志

是否明确显示:

library=Vulkan

方法 2:对比 CPU-only 运行

OLLAMA_LLM_LIBRARY=cpu ollama run qwen2.5:1.5b

再用 Vulkan 跑一次对比。

Vulkan 特征:

  • 首 token 较慢
  • 输出更平稳
  • CPU 占用低于纯 CPU(但不会很低)

十、模型选择建议(7840HS / 780M)

模型规模 建议
1.5B / 3B 强烈推荐
7B Q4 勉强可用
≥7B Q8 不推荐
≥13B 不现实

推荐模型示例:

ollama pull qwen2.5:1.5b ollama pull qwen2.5:3b ollama pull llama3.2:3b

十一、最终结论

  • 这是目前 Phoenix APU 跑 Ollama 的最优可维护方案
  • 不依赖 ROCm
  • 不需要打内核补丁
  • 不怕系统升级
  • 适合 NAS / 7×24 后台运行

十二、回滚方法(如需恢复原状)

rm /vol2/@appcenter/ai_installer/ollama/bin/ollama mv /vol2/@appcenter/ai_installer/ollama/bin/ollama.real \ /vol2/@appcenter/ai_installer/ollama/bin/ollama

收藏
送赞
分享

1

主题

4

回帖

0

牛值

江湖小虾

昨天 21:26 楼主 显示全部楼层

纯AI整理,我这么做的,目前没感觉特别的快,但是稍微快了一点点的感觉,也不知道是不是心理作用。

1

主题

4

回帖

0

牛值

江湖小虾

昨天 21:38 楼主 显示全部楼层

也希望哪位大神能知道,ollama的环境变量在哪里,就不用改文件名套壳来做了。这么做总感觉不完美。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则