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