侧边栏壁纸
博主头像
龍騰博客 博主等级

行动起来,活在当下

  • 累计撰写 169 篇文章
  • 累计创建 31 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

fnOS安装Ollama教程(780M GPU加速版)

管理员
2026-06-14 / 0 评论 / 0 点赞 / 3 阅读 / 0 字

fnOS安装Ollama教程(780M GPU加速,Vulkan版)


重要说明:为什么是Vulkan,不是ROCm

最初按ROCm方案部署(ollama/ollama:rocm镜像),表面上看起来能跑——第一次提问能正常回复,但第二次提问就报错unexpected EOF,容器日志显示:

HW Exception by GPU node-1 (Agent handle: 0x1df7f390) reason :GPU Hang

这是780M(RDNA3 iGPU)在ROCm上的已知问题——ROCm在集成显卡上调度容易触发GPU Hang,社区案例里反复出现,不是配置错误,是780M+ROCm这条路线本身不稳定。

解决方法是换成Vulkan后端,改用标准镜像ollama/ollama:latest,加上OLLAMA_VULKAN=1。Vulkan在780M上识别正常、连续多轮对话稳定,没有再出现Hang。


第一步:创建目录

mkdir -p /vol3/1000/docker/ollama/models
mkdir -p /vol3/1000/docker/ollama/webui

第二步:在Docker应用创建Compose项目

  1. 打开Docker应用 → 左侧项目新建项目

  2. 项目名称:ollama

  3. 路径:/vol3/1000/docker/ollama


第三步:Compose内容

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - /vol3/1000/docker/ollama/models:/root/.ollama
    devices:
      - /dev/dri
    environment:
      - OLLAMA_VULKAN=1
      - OLLAMA_IGPU_ENABLE=1
    group_add:
      - "44"
      - "105"

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    ports:
      - "8081:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      #- HF_ENDPOINT=https://hf-mirror.com
    volumes:
      - /vol3/1000/docker/ollama/webui:/app/backend/data
    depends_on:
      - ollama

关键参数说明:

参数

作用

image: ollama/ollama:latest

标准镜像自带Vulkan支持,不要用:rocm镜像

devices: /dev/dri

挂载780M的渲染设备,Vulkan只需要这一个,不需要/dev/kfd

OLLAMA_VULKAN=1

启用Vulkan后端

OLLAMA_IGPU_ENABLE=1

必须加,否则Ollama会主动丢弃集成显卡(日志会显示dropping integrated GPU

group_add: 44/105

video组(44)和render组(105)的GID,让容器有权限访问/dev/dri

HF_ENDPOINT=https://hf-mirror.com

Open WebUI首次启动要下载embedding模型,国内直连HuggingFace会卡死在unhealthy状态,必须配镜像源

8081:8080

8080端口被CompreFace占用了,换成8081


第四步:部署

cd /vol3/1000/docker/ollama
docker compose up -d

第五步:验证GPU是否被识别

docker logs ollama 2>&1 | grep -i -E "vulkan|gpu" | tail -5

正常输出应该包含:

msg="inference compute" id=0 ... library=Vulkan ... description="AMD Radeon 780M Graphics (RADV PHOENIX)" ... type=iGPU total="27.5 GiB" available="27.1 GiB"

如果看到的是dropping integrated GPU; to enable, set OLLAMA_IGPU_ENABLE=1,说明环境变量没生效——常见原因是Compose编辑后只是"重启"了容器,没有"重新创建"。解决方法:

docker compose down
docker compose up -d

第六步:拉取模型并测试

docker exec -it ollama ollama pull qwen2.5:14b

浏览器访问 http://192.168.0.188:8081,首次访问创建管理员账号(名称/邮箱随便填,本地服务不联网验证)。

进去后选择qwen2.5:14b模型,连续问几轮问题(重点是连续,第一轮正常不代表稳定),确认不会出现unexpected EOF


第七步:验证显存占用

ls /sys/class/drm/ | grep card

确认显卡设备名(注意:BIOS调整显存设置后重启,设备编号可能从card1变成card0,每次重启后建议重新确认)。

提问时实时监控:

watch -n 1 cat /sys/class/drm/card0/device/mem_info_vram_used

14B模型加载后,这个数值应在7~8GB左右,说明模型确实跑在GPU上。


避坑汇总

问题

原因

解决

ROCm镜像第二次提问报错unexpected EOF / GPU Hang

780M在ROCm上已知不稳定

ollama/ollama:latest + Vulkan

日志显示dropping integrated GPU

Ollama默认丢弃iGPU

OLLAMA_IGPU_ENABLE=1

rocm-smi命令not found

ROCm镜像本身不带这个工具

不影响功能,看日志关键字确认GPU即可

open-webui容器unhealthy,8081打不开

启动时下载HF embedding模型卡住

HF_ENDPOINT=https://hf-mirror.com

8080端口冲突

CompreFace已占用8080

open-webui改成8081

Compose改了环境变量但日志没变化

只是重启了容器,没重建

docker compose down && docker compose up -d

/dev/dri设备名变了(card1→card0)

BIOS调显存重启后驱动重新编号

每次重启后用ls /sys/class/drm/重新确认

mem_info_vram_total显示8GB,BIOS调的16GB似乎没生效

Vulkan模式下显存=BIOS分配+共享内存动态计算,不完全依赖BIOS的UMA设置

不影响使用,available显示27GB已足够14B模型


最终验证结果

  • Vulkan识别780M:total="27.5 GiB" available="27.1 GiB"

  • qwen2.5:14b模型加载后显存占用:约7.5GB

  • 连续多轮对话无报错,回复连贯流畅

另外:其他模型可以直接拉取测试:


bashdocker exec -it ollama ollama pull gemma4:12b
docker exec -it ollama ollama pull qwen3:14b
docker exec -it ollama ollama pull deepseek-r1:14b
docker exec -it ollama ollama pull llama3.1:8b

删除指定模型:

查看已安装的模型列表:

docker exec -it ollama ollama list

删除指定模型:

docker exec -it ollama ollama rm 模型名:版本

比如:

docker exec -it ollama ollama rm gemma4:12b
docker exec -it ollama ollama rm qwen3:14b

删除后模型文件会从/vol3/1000/docker/ollama/models目录中移除,释放对应空间。

检查释放后的空间:

df -h /vol3

也可以在Open WebUI界面里操作——左下角设置里有模型管理界面,能直接点删除,不用命令行。

0

评论区