用旧显卡搭本地大模型:Ollama + Open WebUI 折腾手记

抽屉里躺着一张 GTX 1660 Super、一块 RTX 2060,扔了可惜,卖又不值几个钱。与其让它吃灰,不如拿来跑本地大模型——数据不出门、断网能用、零 API 成本。这篇文章记录我用旧显卡 + Ollama + Open WebUI 从零搭建的完整过程,包括选型思路、安装步骤和踩过的坑。


一、动手前先想清楚:旧显卡还能打吗?

本地跑大模型,显存(VRAM)比算力更关键。模型参数量决定了显存下限,可以参考下面的粗略对照:

量化后模型大小建议显存典型模型
3B(约 2GB)4GB 起步Qwen2.5-3B、Phi-3
7B/8B(约 4-5GB)6-8GBQwen2.5-7B、Llama3.1-8B
14B(约 9GB)10-12GBQwen2.5-14B
32B 及以上24GB+需要两张卡或量化极致压缩

几点经验总结:

  • NVIDIA 卡优先。Ollama 基于 llama.cpp,对 CUDA 支持最成熟;AMD 卡需要 ROCm,旧卡支持列表很挑剔。
  • 显存 ≥ 6GB 是比较舒服的门槛,能流畅跑 7B 级别量化模型。
  • 4GB 显存也不是没救,可以跑 3B 模型,或者让模型部分层卸载到 CPU,只是速度会明显下降。
  • 纯 CPU 也能跑 Ollama,只是每秒 token 数会跌到个位数,体验较差。

我手上这块 1660S(6GB 显存)实测跑 Qwen2.5-7B Q4 量化,生成速度约 20-25 token/s,日常问答完全够用。


二、第一步:安装 Ollama

Ollama 是本地大模型的运行时底座,负责模型下载、量化推理和 API 服务。安装极其简单。

2.1 安装步骤

Linux / macOS(一行命令):

curl -fsSL https://ollama.com/install.sh | sh

Windows: 官网下载安装包,双击下一步即可,无需手动配 CUDA 环境。

Docker 方式(推荐服务器部署):

docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
注意:Docker 方式跑 GPU,需要提前安装好 NVIDIA Container Toolkit,否则容器内看不到显卡。

2.2 验证 GPU 是否被识别

ollama ps
# 或直接看日志
journalctl -u ollama -f

日志里看到 inference compute 后面跟着你的显卡名称和显存,就说明 GPU 加速已生效。

2.3 拉取并运行第一个模型

ollama run qwen2.5:7b

首次运行会自动下载(约 4.7GB),下载完直接进入对话。命令行里就能聊,但体验还差口气——接下来上 WebUI。


三、第二步:选对模型,别让显存爆掉

这是整个折腾过程中最容易翻车的环节。Ollama 默认拉取的就是 Q4_K_M 量化版本,显存占用已经比较友好,但仍要注意:

  • 模型显存占用 ≈ 模型文件大小 + KV Cache。上下文越长,KV Cache 吃显存越多。6GB 卡跑 7B 模型时,上下文建议控制在 4K-8K。
  • 同一模型有多个量化档位。以 Qwen2.5 为例:
ollama run qwen2.5:7b-instruct-q4_K_M   # 4.7GB,推荐,速度与质量平衡
ollama run qwen2.5:7b-instruct-q8_0     # 8.1GB,6GB 卡跑不动
ollama run qwen2.5:3b-instruct-q4_K_M   # 1.9GB,低配救命稻草

选型建议:

  • 6-8GB 显存:qwen2.5:7b 或 llama3.1:8b,中文场景首选 Qwen
  • 4-6GB 显存:qwen2.5:3b 或 gemma2:2b,轻量但可用
  • 12GB 显存:可以上 qwen2.5:14b,效果提升明显

四、第三步:部署 Open WebUI

Open WebUI 提供了类 ChatGPT 的界面:多轮对话、历史记录、多模型切换、文档上传问答,一应俱全。

4.1 Docker 安装(推荐)

docker run -d -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui --restart always \
  ghcr.io/open-webui/open-webui:main

启动后浏览器访问 http://localhost:3000,注册一个本地管理员账号即可(数据只存在本地)。

4.2 Pip 安装(不想折腾 Docker)

pip install open-webui
open-webui serve

默认跑在 8080 端口。前提是本机已装 Python 3.11。

关键配置:Open WebUI 会自动探测 localhost:11434 的 Ollama 服务。如果两者不在同一台机器或同一容器网络,需要在 管理面板 → 设置 → Ollama API 中手动填入地址。

4.3 两个必改的默认设置

  • 上下文长度:Ollama 默认上下文只有 2048,对话稍长就"失忆"。在 WebUI 的模型参数里把 num_ctx 调到 4096 或 8192(量显存而行)。
  • temperature 与系统提示词:针对不同用途建立不同"模型预设",比如写作场景 temperature 调高到 0.8,代码场景降到 0.2。

五、踩坑记录

折腾一晚上,这几个坑最有代表性:

  1. GPU 没被调用,推理全在 CPU 上。多数情况是驱动问题。Linux 下先确认 nvidia-smi 正常,再重装 Ollama;Windows 下升级到较新的显卡驱动即可。
  2. 显存不够,Ollama 静默回退到 CPU。表现是速度骤降。用 ollama ps 查看 PROCESSOR 列,若显示百分比分割说明部分层跑在 CPU 上。解决办法:换小一号的模型或更低量化档位。
  3. 多模型同时加载导致显存溢出。Ollama 默认会缓存已加载的模型,6GB 卡同时挂两个 7B 必炸。设置环境变量 OLLAMA_MAX_LOADED_MODELS=1,或调短 OLLAMA_KEEP_ALIVE(如 5m)让模型自动卸载。
  4. WebUI 里长文回答中途截断。大概率是 num_ctx 还是默认的 2048,上下文被截掉了,调大即可。

六、进阶小技巧

  • API 复用:Ollama 本身就是 OpenAI 兼容的 API 服务(http://localhost:11434/v1),可以把各类第三方客户端、插件直接指向它。
  • Modelfile 定制模型:写一个 Modelfile 固化系统提示词和参数,一键创建专属模型,免得每次在 WebUI 里手动调。
  • 混合调度:大任务走云端 API,隐私敏感任务走本地模型。Open WebUI 支持同时挂 Ollama 和 OpenAI 端点,切换只在一个下拉框之间。

七、总结

这套方案的性价比极高:一张 6GB 显存的旧显卡 + 半小时部署时间,就能换来一个完全离线、响应 20+ token/s 的私人 AI 助手。它当然打不过 GPT-4 级别的云端模型,但在日常问答、文本润色、代码补全、本地文档整理这些场景里已经足够好用。

旧硬件的价值不在于跑出多惊艳的分数,而在于让你零成本地真正"用上"大模型。如果你的抽屉里也有这样一块卡,不妨翻出来试试——折腾的过程本身就是乐趣的一部分。