跳到主要内容

Ollama

在 Unraid 环境下通过 Docker 部署 Ollama 并利用 NVIDIA 显卡(如 RTX 3060)进行推理加速,核心在于打通宿主机到容器的硬件直通。

关键点

  1. 宿主机驱动准备
    • 必须先在 Unraid 应用市场安装 NVIDIA Driver 插件。
    • 安装后进入 Settings -> Nvidia Driver 确认驱动加载状态,并复制 RTX 3060 的 UUID 备用(也可直接使用 all)。
  2. Docker 容器核心配置
    • 在模板配置的 Extra Parameters(高级视图) 中添加:--runtime=nvidia 以启用 NVIDIA 运行时。
    • 新增 Environment Variables(环境变量)
      • NVIDIA_VISIBLE_DEVICES=all(或填入具体的 GPU UUID)
      • NVIDIA_DRIVER_CAPABILITIES=all
  3. 数据持久化
    • 将宿主机路径(如 /mnt/user/appdata/ollama)映射到容器内的 /root/.ollama,防止重启或更新后已下载的模型数据丢失。

附:等效的 Docker CLI 创建命令

如果不使用 Unraid 界面模板,也可直接通过命令行快速创建容器:

docker run -d \
--name ollama \
--runtime=nvidia \
-e NVIDIA_VISIBLE_DEVICES=all \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-v /mnt/user/appdata/ollama:/root/.ollama \
-p 11434:11434 \
--restart unless-stopped \
ollama/ollama:latest

常用操作示例

容器启动后,可以直接通过 docker exec 自动拉取并进入模型交互(以 huihui_ai/qwen3.5-abliterated:9b 为例)。9B 的参数量对于 RTX 3060 的 12GB 显存来说运行效率相对平衡:

docker exec -it ollama ollama run huihui_ai/qwen3.5-abliterated:9b

适用边界与注意事项

  • 与虚拟机直通的致命冲突(无法分时复用):在 Unraid 中,同一块物理显卡极难在 Docker 加速和虚拟机直通之间“交替(分时)使用”
    • 崩溃原理:哪怕您确保同一时间只启动了 Docker 或只启动了虚拟机,当关闭挂载显卡的虚拟机时,虚拟机会对显卡执行硬件重置(PCIe Reset)以释放资源。但消费级显卡(如 RTX 3060)普遍存在重置缺陷,此时若宿主机的 NVIDIA 驱动(插件)仍驻留底层,硬件重置往往会失败或状态异常,直接导致宿主机 PCIe 总线锁死,引发 Unraid 系统彻底无响应。
    • 解决方案:显卡生态必须“二选一”:
      1. 虚拟机优先:在 System Devices 中将显卡绑定到 vfio-pci 以便彻底隔离给直通使用,代价是 Docker 完全无法使用该显卡。
      2. Docker 优先:取消虚拟机所有的直通配置,显卡完全交由宿主机的 NVIDIA 插件支配。
      3. 极客折腾路线(脆弱且不推荐):社区中存在使用 User Scripts 在开启 VM 前强制停止所有 Docker 并 modprobe -r nvidia 卸载驱动,VM 关机后再重新加载驱动的脚本方案。但这非常挑主板 IOMMU 分组,且容错率极低,稍有不慎依然会死机。
  • 显存瓶颈(VRAM):RTX 3060 通常配备 12GB 显存(部分为 8GB)。当运行参数量较大的 LLM 时,若模型体积超出显存容量,Ollama 会自动将多余部分卸载到系统 RAM 并交由 CPU 计算,这会导致推理速度出现断崖式下跌。建议优先运行 7B~8B 级别的量化模型(如 llama3, qwen2 等)。
  • 验证加速状态:部署完成后,通过终端进入 Ollama 容器,执行 nvidia-smi 确认能否正确读取显卡信息。运行模型时,也可通过 watch -n 1 nvidia-smi 观察 GPU 利用率和显存占用。

后续思路方向

  • 交互界面接入:可以额外部署 Open WebUI 或 Lobe Chat,通过 API 连接该 Ollama 容器,获得更完善的图形化多轮对话体验。
  • 自定义与量化模型:对于特定上下文需求,可自行通过 Modelfile 构建模型,或寻找高压缩比的 GGUF 格式模型来适配 12GB 显存上限。

评论

如果内容有勘误、补充或不同看法,可以直接写在这里。

正在加载留言板…