收起左侧

使用Docker 部署 Ollama 、llama.cpp+mtp、Open WebUI 、Qwenpaw等工具

11
回复
3861
查看
[ 复制链接 ]

1

主题

7

回帖

0

牛值

江湖小虾

2026-3-6 11:00:55 显示全部楼层 阅读模式

适用人群:NAS 用户、本地 AI 新手
硬件平台:铭凡 N5(AMD R7 255 8 核 16 线程 + Radeon 780M 核显 + 48GB 内存)
操作系统:飞牛 OS(fnOS)
最后更新:2026 年 5 月 20 日


一、背景说明

2026 年年初购入铭凡 N5 迷你主机,硬件配置如下:

项目 规格
CPU AMD R7 255(8 核心 16 线程)
显卡 Radeon 780M(板载集成,无独立显卡)
内存 升级至 48GB
存储 NAS 大容量硬盘

二、方案对比

方案 推荐度 适用人群 优点 缺点
方案 1:飞牛原生 ollama 套件 ⭐⭐⭐⭐⭐ 新手入门 应用市场一键安装,ollama + openwebui 组合 版本更新没有ollama官方快
方案 2:Docker ollama + 飞牛市场 lobechat ⭐⭐⭐ 轻度用户 lobechat 界面简洁 lobe版本较低,后续维护转向 Windows
方案 3:Docker ollama + openwebui ⭐⭐⭐⭐ 进阶用户 版本最新,功能最全,支持模型管理、多轮对话、知识库 需手动配置 Docker
方案 4:Docker llama.cpp+qwenpaw ⭐⭐⭐⭐ 性能追求者 推理速度更快,模型精度可选范围更广,支持 GGUF 模型直下 部署复杂,单次仅能运行一个模型

三、部署与配置

如果使用docker部署,建议都使用compose,一开始我也是手动配置,但是容器经常有各种各样的问题,或者还会出现更新的问题,使用compose效率要高的多,一次填写可以重复构建。

3.1 Docker 公用配置

# 以下配置适用于所有 Docker 容器
environment:
  - TZ=Asia/Shanghai                    # 设置容器时区为上海
volumes:
  - /etc/localtime:/etc/localtime:ro    # 挂载宿主机时区文件(只读)
  - /etc/timezone:/etc/timezone:ro      # 挂载时区名称(部分软件依赖此文件)

3.2 方案 3:手动配置Ollama + Open WebUI 部署

1. 下载 Docker 镜像

  • ollama:在飞牛 Docker 镜像仓库搜索 ollama,选择官方源 ollama/ollama 下载 latest 版本
  • openwebui:通过本地镜像 → 添加镜像,手动拉取 ghcr.io/open-webui/open-webui:main
  • ROCm 版本(可选):如需 AMD GPU 专用优化版,手动拉取 ollama/ollama:x.xx.xx-rocm

💡 ROCm 与 Vulkan 对比:ROCm 是 AMD 原生 GPU 计算平台,Vulkan 是跨平台方案。Radeon 780M 两种均可使用。。

2. 配置 Ollama 容器

配置项 设置值 说明
开机自动启动 ✅ 勾选 保证长期运行
端口映射 11434 确保未被占用
存储路径 /root/.ollama/(自定义) 建议选大容量磁盘
网络模式 host ollama 需使用 host 模式
环境变量 OLLAMA_ORIGINS=* 允许所有来源访问(必填)
环境变量 OLLAMA_VULKAN=1 启用 Vulkan 后端

⚠️ Vulkan 与 ROCm 二选一:

  • 使用 Vulkan:保留 OLLAMA_VULKAN=1,删除 ROCm 相关变量
  • 使用 ROCm:保留 HSA_OVERRIDE_GFX_VERSION=11.0.0,删除 OLLAMA_VULKAN=1

本教程显卡为 Radeon 780M,经测试 HSA_OVERRIDE_GFX_VERSION=11.0.0 可用。若使用 AMD RX 7900 XT 等桌面显卡,可尝试 11.5.1。

3. 配置 Open WebUI 容器

配置项 设置值 说明
端口映射 3000:8080 宿主机 3000 端口映射到容器 8080
存储路径 /root/open-webui(自定义) 自定义映射路径,不与其他容器共用
网络模式 bridge 标准桥接模式

反复测试下来Vulkan 速度反而略快,推测是780m对rocm支持不完整。

3.3 方案 4:llama.cpp 部署配置

llama.cpp 部署相对复杂,需使用 compose 文件进行编排:

services:
  # ============================================================
  # 服务一:llama(主推理服务)
  # ============================================================
  llama:
    image: ghcr.io/ggml-org/llama.cpp:server-vulkan  # 镜像来源(含 Vulkan 支持的 server 版本)
    container_name: llama                             # 容器名称
    restart: unless-stopped                           # 容器异常退出时自动重启
  
    # --- 端口映射 ---
    ports:
      - 8082:8082/tcp                                 # 映射宿主机 8082 端口到容器 8082
  
    # --- 数据持久化 ---
    volumes:
      - /vol5/1000/Dockers/llama/models:/models       # 模型文件挂载点
  
    # --- 硬件设备直通 ---
    devices:
      - /dev/kfd:/dev/kfd                             # ROCm 内核驱动设备(必需)
      - /dev/dri:/dev/dri                             # 直接渲染设备(Vulkan 必需)
  
    # --- 网络配置 ---
    networks:
      - localNetwork                                  # 使用本地桥接网络,这个名字随便写。
  
    # --- 环境变量配置 ---
    environment:
      # ================= 1. 模型路径切换(二选一)==================
      # 【选项 A】随意更换模型
      #- LLAMA_AR**ODEL=/models/xxxxxxxxxx.gguf
      # 【选项 B】Qwen 3.6 (26B MoE)(当前启用)
      - LLAMA_AR**ODEL=/models/Qwen3.6-35B-A3B-**-MTP-I-Quality.gguf   #这个模型带mtp,就是能够使用投机解码功能。
    
      # --- 模型库配置(按需启用)---
      #- LLAMA_AR**ODELS_DIR=/models                  # 默认扫描模型库,如果不想像上面那样固定一个模型,就可以注释掉上面的模型,使用这个,
      #- LLAMA_AR**ODELS_MAX=1                        # 最大加载模型数量
    
      # ================= 2. 采样参数配置 =================
      # 【Qwen 专属采样策略】(严谨逻辑,防重复)
      - LLAMA_ARG_TEMP=0.8                            # 温度参数(0.8 平衡创造力与准确性)
      - LLAMA_ARG_TOP_P=0.97                          # 核心采样阈值(0.97 保留高质量 token)
      - LLAMA_ARG_TOP_K=40                            # Top-K 采样数(40 个候选 token)
      - LLAMA_ARG_REPEAT_PENALTY=1.1                  # 重复惩罚系数(1.1 轻度惩罚重复)
      - "LLAMA_ARG_CHAT_TEMPLATE_KWARGS={\"preserve_thinking\": true}"  # 保留思考过程标记
    
      # ================= 3. Vulkan 优化配置 =================
      - GGML_VULKAN=1                                 # 强制启用 Vulkan 后端
    
      # --- 缓存优化配置 ---
      #- LLAMA_ARG_CTX_SIZE=131072                     # 上下文大小(128k,按需启用)
      - LLAMA_ARG_BATCH=2048                          # 逻辑批(默认 512/1024,加大支持长文本)
      - LLAMA_ARG_UBATCH=512                          # 物理批(配合逻辑批)
      - LLAMA_ARG_FLASH_ATTN=1                        # 启用 Flash Attention 优化,这个有效。
      - LLAMA_ARG_N_GPU_LAYERS=99                     # 全模型层上 GPU(确保大上下文),如果显存不够就要减少这个数量。
      - LLAMA_ARG_CACHE_TYPE_K=q8_0                   # KV Cache 键缓存量化(q8 节省显存)
      - LLAMA_ARG_CACHE_TYPE_V=q8_0                   # KV Cache 值缓存量化(q8 节省显存)
    
      # --- 线程与并发优化 ---
      - LLAMA_ARG_SLOTS=4                             # 并发槽位数(支持 4 个同时对话)
      - LLAMA_ARG_PARALLEL=2                          # 并行线程数(提升多步思考速度)
    
      # --- 重复惩罚增强 ---
      - LLAMA_ARG_DRY_MULTIPLIER=1                    # DRY 重复惩罚系数
      - LLAMA_ARG_DRY_ALLOWED_LENGTH=4                # 允许重复长度
      - LLAMA_ARG_DRY_PENALTY_LAST_N=4096             # 重复检查上下文长度
    
      # --- 其他优化 ---
      #- LLAMA_ARG_SLEEP_IDLE_SECONDS=21600            # 空闲卸载时间(6 小时,按需启用)
      - LLAMA_ARG_DEFER=2                             # 延迟解码档位(1-4,2 为推荐值)
    
      # --- 投机解码配置(加速推理)---
      - LLAMA_ARG_SPEC_TYPE=draft-mtp                 # 启用 MTP 投机解码
      - LLAMA_ARG_SPEC_DRAFT_N_MAX=3                  # 每次最多预测 3 个 Token(感觉3好一点,5更不稳定)
    
      # --- 服务器配置 ---
      - LLAMA_ARG_PORT=8082                           # 服务端口
      - LLAMA_ARG_HOST=0.0.0.0                        # 监听所有网络接口
  
  # ============================================================
  # 服务二:llama-embedding(向量检索服务)
  # ============================================================
  llama-embedding:
    image: ghcr.io/ggml-org/llama.cpp:server          # 使用 CPU 推理版本(向量检索无需 GPU)
    container_name: llama-embedding
    restart: unless-stopped
  
    volumes:
      - /vol5/1000/Dockers/llama/models:/models       # 挂载模型目录
  
    networks:
      - localNetwork                                  # 使用本地桥接网络
  
    environment:
      # --- 模型配置 ---
      #- LLAMA_AR**ODEL=/models/Qwen3-Embedding-0.6B-Q8_0.gguf #按需启动
      - LLAMA_AR**ODEL=/models/Qwen3-Embedding-4B-Q4_K_M.gguf  # 当前启用(4B 精度量化版)
    
      # --- 向量检索优化 ---
      - LLAMA_ARG_POOLING=cls                         # 使用 CLS 池化(并发优化)
    
      # --- 服务器配置 ---
      - LLAMA_ARG_PORT=8081                           # 服务端口(与主服务区分)
      - LLAMA_ARG_HOST=0.0.0.0                        # 监听所有网络接口
      - OMP_NUM_THREADS=8                             # OpenMP 线程数(等于 CPU 物理核心数)
      - LLAMA_ARG_THREADS=8                           # llama.cpp 线程数(与 OMP 保持一致)

# ============================================================
# 网络配置
# ============================================================
networks:
  localNetwork:
    external: true                                    # 使用外部已创建的网络
    driver: bridge                                    # 桥接网络模式

3.4 Qwenpaw Compose 配置

以下配置用于部署 qwenpaw(AI 助手服务),包含私有版和联网版两个实例:

services:
  # ============================================================
  # 服务一:qwenpaw-solo(私有版,不联网)
  # ============================================================
  qwenpaw-solo:
    container_name: qwenpaw-solo                      # 容器名称
    image: agentscope/qwenpaw:latest                  # 使用最新官方镜像
    restart: always                                   # 始终自动重启
  
    # --- 端口映射 ---
    ports:
      - 8089:8088/tcp                                 # 宿主机 8089 映射到容器 8088
  
    # --- 环境变量 ---
    environment:
      - TZ=Asia/Shanghai                              # 设置上海时区
      - QWENPAW_AUTH_ENABLED=true                     # 启用认证(安全)
  
    # --- 数据持久化 ---
    volumes:
      - /vol5/1000/Dockers/qwenpaw-solo/data:/app/working                    # 工作目录
      - /vol5/1000/Dockers/qwenpaw-solo/secrets:/app/working.secret          # 密钥存储
      - /vol5/1000/Dockers/qwenpaw-solo/backups:/app/working.backups         # 备份目录
      - /etc/localtime:/etc/localtime:ro                                         # 时区文件(只读)
      - /etc/timezone:/etc/timezone:ro                                           # 时区名称(只读)
  
    # --- 网络配置 ---
    networks:
      - localNetwork                                  # 使用本地网络(不暴露公网)
  
  # ============================================================
  # 服务二:qwenpaw(联网版,可访问互联网)
  # ============================================================
  qwenpaw:
    container_name: qwenpaw                           # 容器名称
    image: agentscope/qwenpaw:latest                  # 使用最新官方镜像
    restart: always                                   # 始终自动重启
  
    # --- 端口映射 ---
    ports:
      - 8088:8088/tcp                                 # 宿主机 8088 映射到容器 8088
  
    # --- 环境变量 ---
    environment:
      - TZ=Asia/Shanghai                              # 设置上海时区
      - QWENPAW_AUTH_ENABLED=true                     # 启用认证(安全)
  
    # --- 数据持久化 ---
    volumes:
      - /vol5/1000/Dockers/qwenpaw/data:/app/working                    # 工作目录
      - /vol5/1000/Dockers/qwenpaw/secrets:/app/working.secret          # 密钥存储
      - /vol5/1000/Dockers/qwenpaw/backups:/app/working.backups         # 备份目录
      - /etc/localtime:/etc/localtime:ro                                         # 时区文件(只读)
      - /etc/timezone:/etc/timezone:ro                                           # 时区名称(只读)
  
    # --- 网络配置 ---
    networks:
      - openNetwork                                   # 使用开放网络(可访问互联网)

# ============================================================
# 网络配置
# ============================================================
networks:
  localNetwork:
    external: true                                    # 使用已创建的网络
    driver: bridge                                    # 桥接网络模式
  
  openNetwork:
    external: true                                    # 使用已创建的网络
    driver: bridge                                    # 桥接网络模式

四、模型实测与性能分析

硬件环境:Radeon 780M + 48GB 内存 + Vulkan

4.1 Ollama 模型表现

模型 速度(token/s) 评价
qwen3.5-9b-q4 8-12 够用,智商一般
qwen3.5-27b-q4 3-5 很慢,但智商很好
qwen3.5-35b-a3b-q8 8-12 占用 36GB 内存,智商在线(q4 无法通过部分测试,q8 可以)
glm-4.7-flash-q8 10-12 速度快,但存在逻辑错误(如"4 月有 31 天")
lfm2-24b 20+ 极快,但无思考模式

💡 千问系列模型思考时间较长、输出偏啰嗦;GLM 速度优秀但偶尔出现常识性错误。

4.2 llama.cpp 模型表现

感觉llama.cpp 推理速度优于 ollama,模型精度选择更多,支持魔塔社区 GGUF 模型直下。

模型 速度(token/s) 备注
qwen3.5-27b-q4 4-5 -
qwen3.5-9b-q4 8-12 -
gemma26b-a4b-**-iq 19-20 速度优秀
qwen3.6-35b-a3b-**-iq 20-22 流畅对话
qwen3.6-35b-a3b-**-mtp-iq 23-34 极不稳定,而且输出不线性,但是很快。

20+ token/s 的对话速度已足够流畅,阅读速度跟不上输出速度。


五、使用方法与常见问题

5.1 局域网访问

在浏览器中输入 http://<飞牛 NAS IP>:3000 即可打开 Open WebUI 界面。

5.2 通过 fnconnect 访问

打开飞牛 fnconnect → Docker → 容器列表 → 点击 ollama 容器行右侧的端口下拉框(显示 3000:8080),点击即可打开。

5.3 使用qwenpaw链接llama或者ollama

进去qwenpaw,点击左侧的模型,ollama默认存在,直接输入ollama的docker名称+端口号就行,比如名称就是ollama,那地址就输入http://ollama:11434,就可以了。llama需要在模型页面右上角点击新增。其余一样。

5.4 常见问题

Q:Open WebUI 页面无法打开

A:大概率是模型下载失败导致。找到嵌入模型配置项,删除后半部分文字(不要删除整个字段),即可正常打开界面。


六、总结与建议

优先级 建议 说明
1 新手入门 直接使用飞牛原生 ollama 套件,最简单
2 追求功能 方案 3(ollama + openwebui),持续维护中
3 追求性能 方案 4(llama.cpp + Vulkan),20+ token/s 流畅体验
4 硬件升级 目前 48GB 内存已足够运行 35B 模型。若未来升级,建议关注 16GB 以上显存的独立显卡,但需注意 NAS 平台驱动兼容性
5 使用场景 日常文字编写、文档整理、信息检索、知识库管理、邮件处理等完全够用。编程任务未测试,如有需求建议搭配更高性能硬件

七、参考资料

资源 链接
ollama 官方文档 https://ollama.com
openwebui 官方仓库 https://github.com/open-webui/open-webui
llama.cpp 官方仓库 https://github.com/ggml-org/llama.cpp
AMD ROCm 文档 https://rocm.docs.amd.com
魔塔社区 https://modelscope.cn

免责声明:本文基于个人实际测试经验编写,仅供参考。不同硬件配置可能导致结果差异,请根据自身情况调整配置。

收藏
送赞 3
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
命比咖啡苦

0

主题

1

回帖

0

牛值

江湖小虾

2026-3-26 23:14:00 显示全部楼层
厉害厉害  我的rx580也可以跑起来了  用的Vulkan   运算能到22t
我试了好多遍,我的机器都不完全支持rocm特性,所以只能使用vulkan跑,但效率也可以,比cpu高不少,我看过b站的评测,完全支持rocm的硬件跑起来确实比vulkan快,这个就没办法了。等过段时间我买一块intel B50试试。  详情 回复
2026-3-27 11:10

1

主题

7

回帖

0

牛值

江湖小虾

2026-3-27 11:10:09 楼主 显示全部楼层
zhu3351469 发表于 2026-3-26 23:14
厉害厉害  我的rx580也可以跑起来了  用的Vulkan   运算能到22t

我试了好多遍,我的机器都不完全支持rocm特性,所以只能使用vulkan跑,但效率也可以,比cpu高不少,我看过b站的评测,完全支持rocm的硬件跑起来确实比vulkan快,这个就没办法了。等过段时间我买一块intel B50试试。
命比咖啡苦

0

主题

3

回帖

0

牛值

江湖小虾

2026-4-6 10:43:57 显示全部楼层

楼主最后用的什么模型呢

嗯?使用的qwen35b-a3b,和glm4.7-flash,还有gemma4的那个26a4b,纯稠密运行速度太慢,也就前面三个目前还算能用。  详情 回复
2026-4-6 20:00

1

主题

7

回帖

0

牛值

江湖小虾

2026-4-6 20:00:55 楼主 显示全部楼层
jhs0719 发表于 2026-4-6 10:43
楼主最后用的什么模型呢

嗯?使用的qwen35b-a3b,和glm4.7-flash,还有gemma4的那个26a4b,纯稠密运行速度太慢,也就前面三个目前还算能用。
命比咖啡苦

0

主题

4

回帖

0

牛值

江湖小虾

2026-5-7 18:57:32 显示全部楼层
楼主厉害,请问如果是n5pro 870m核显,环境变量应该怎么设置呢?
pro用的是370吧,我咋记得是890的显卡啊?不过都没差,因为amd官方支持的395+的那个,所以还是调用vulkan可能更好一些。设置上也没有什么区别,不知道你使用的是ollama还是llama或者其他的后端。  详情 回复
2026-5-8 09:40

1

主题

7

回帖

0

牛值

江湖小虾

2026-5-8 09:40:38 楼主 显示全部楼层
zhaosen7328376 发表于 2026-5-7 18:57
楼主厉害,请问如果是n5pro 870m核显,环境变量应该怎么设置呢?

pro用的是370吧,我咋记得是890的显卡啊?不过都没差,因为amd官方支持的395+的那个,所以还是调用vulkan可能更好一些。设置上也没有什么区别,不知道你使用的是ollama还是llama或者其他的后端。
命比咖啡苦

2

主题

23

回帖

0

牛值

江湖小虾

2026-5-24 06:46:24 显示全部楼层
我方案三部署好能用了,但就是联网搜索打开了,聊天也正常的,但聊天窗口总会出现 An error occurred while searching the web。 检测API接口等都正常的。各种设置也偿试了,不知怎回事,求高人指点!
说实话我没有开过openwebui的联网搜索功能,因为这个本来就是要处理隐私数据用的...后来我换成qwenpaw+llama来处理隐私数据。联网的话我使用qwenpaw+deepseekv4的api来处理联网检索数据,我比较偏向于类似龙虾的智能  详情 回复
2026-5-26 09:17

1

主题

7

回帖

0

牛值

江湖小虾

2026-5-26 09:17:39 楼主 显示全部楼层
dmxjfn 发表于 2026-5-24 06:46
我方案三部署好能用了,但就是联网搜索打开了,聊天也正常的,但聊天窗口总会出现 An error occurred while ...

说实话我没有开过openwebui的联网搜索功能,因为这个本来就是要处理隐私数据用的...后来我换成qwenpaw+llama来处理隐私数据。联网的话我使用qwenpaw+deepseekv4的api来处理联网检索数据,我比较偏向于类似龙虾的智能体来开展联网检索。
命比咖啡苦

2

主题

23

回帖

0

牛值

江湖小虾

2026-5-26 09:25:12 显示全部楼层

好的,谢谢你。handshake

0

主题

2

回帖

0

牛值

江湖小虾

哥们 /models/Qwen3.6-35B-A3B-**-MTP-I-Quality.gguf 这个模型完整的是哪个? 现在带**号
哦哦,**的,我都没注意,魔搭社区有,要mtp的,硬件强就用27b的,两种都很吃显存或者内存,但都有速度加成。  详情 回复
半小时前

1

主题

7

回帖

0

牛值

江湖小虾

半小时前 楼主 显示全部楼层
jinghuaishan 发表于 2026-6-16 15:01
哥们 /models/Qwen3.6-35B-A3B-**-MTP-I-Quality.gguf 这个模型完整的是哪个? 现在带**号 ...

哦哦,A P E X的,我都没注意,魔搭社区有,要mtp的,硬件强就用27b的,两种都很吃显存或者内存,但都有速度加成。
命比咖啡苦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则