前言
在 Linux 服务器上部署本地大模型,Ollama 凭借其极致的易用性成为了首选方案。但在生产环境或多人共享环境下,默认配置往往不够用:并发数仅为 1,模型加载超时时间较短。
本文将记录一套完整的部署流程:如何安装 Ollama,如何通过 Systemd 优雅地配置高并发 (Parallel) 和保活策略 (Keep-Alive),以及如何使用 gpustat 像黑客一样实时监控显卡状态。
第一步:极速安装 Ollama
对于 Linux 系统(Ubuntu/Debian/CentOS),官方提供了一键安装脚本,自动配置 Systemd 服务及用户权限。
curl -fsSL https://ollama.com/install.sh | sh安装完成后,服务会自动启动。你可以先拉取一个模型测试一下:
ollama pull qwen2.5:7b第二步:核心配置(支持高并发与长超时)
这是最关键的一步。默认情况下,Ollama 同时只能处理一个请求。我们需要修改 Systemd 服务配置。
目标配置:
- 并发数 (
NUM_PARALLEL):设为5,支持 5 人同时对话。 - 模型保活 (
KEEP_ALIVE):设为30s,闲置 30 秒后自动释放显存(适合显存紧张的服务器)。 - 加载超时 (
LOAD_TIMEOUT):设为10m,防止模型太大或硬盘读取慢导致加载失败。
推荐方法:使用 systemctl override(防覆盖)
不要直接修改 /lib/systemd/system/ollama.service,因为软件更新时会被覆盖。我们使用 drop-in 方式覆盖配置。
为了避免使用 nano/vim 编辑器时的格式困扰,建议直接使用以下命令一键写入配置:
# 1. 创建配置目录
sudo mkdir -p /etc/systemd/system/ollama.service.d
# 2. 写入配置文件(直接复制整段运行)
echo '[Service]
Environment="OLLAMA_NUM_PARALLEL=5"
Environment="OLLAMA_KEEP_ALIVE=30s"
Environment="OLLAMA_LOAD_TIMEOUT=10m"' | sudo tee /etc/systemd/system/ollama.service.d/override.conf或在### Edits below... 这行字的上面插入并保存:
sudo systemctl edit ollama.service最终效果应该是这样的:
### Anything between here and the comment below will become the contents of the drop-in file
[Service]
Environment="OLLAMA_NUM_PARALLEL=5"
Environment="OLLAMA_KEEP_ALIVE=30s"
Environment="OLLAMA_LOAD_TIMEOUT=10m"
### Edits below this comment will be discarded
# ... (下面原来的内容不用管)应用配置
配置写入后,必须重启服务才能生效:
# 重载守护进程配置
sudo systemctl daemon-reload
# 重启 Ollama 服务
sudo systemctl restart ollama验证配置是否生效
运行以下命令,检查环境变量是否已经注入进程:
systemctl show ollama.service | grep Environment如果输出中包含你刚才设置的参数,说明配置成功。
第三步:显卡实时监控 (gpustat)
使用默认的 nvidia-smi -l 虽然能看,但不够直观。推荐使用 gpustat,它界面更美观,且能清晰展示显存占用比例和具体进程。
1. 安装 gpustat
需要 Python 环境(通常 Linux 自带):
pip install gpustat
# 或者如果是 Ubuntu/Debian 系统级安装
sudo apt install gpustat2. 启动实时监控
使用 -i 参数开启 watch 模式(默认 1 秒刷新一次):
gpustat -i
或者通过 -cp 参数显示具体的进程名和 PID:
gpustat -cp -i 1
界面解读:
- [0] NVIDIA A100... : 显卡型号。
- 78°C : 温度。
- 12345/80000 MB : 显存使用情况。
- ollama-runner (5000M) : 能够清晰看到 Ollama 占用了多少显存。
第四步:避坑与性能提示
1. 并发与显存的关系
设置 OLLAMA_NUM_PARALLEL=5 并不意味着模型大小乘以 5。
- 模型权重只加载一份。
- 但 KV Cache(上下文缓存) 会随并发数增加。
- 风险提示:如果你的显存很极限(比如 24G 显存跑 70B 模型),开启高并发可能会导致 Out Of Memory (OOM),此时 Ollama 会被迫使用 CPU,速度骤降。请结合
gpustat观察显存余量。
2. Systemd 编辑器的坑
如果你习惯手动编辑 (sudo systemctl edit ollama.service),请务必注意:
- Nano 编辑器中:内容必须写在
### Anything between here...和### Edits below...这两行注释中间。 - 写在
#注释行里是无效的,写在下方会被丢弃。
3. 超时设置
如果在 WebUI 中经常遇到 "Timeout" 错误,除了设置服务器端的 OLLAMA_LOAD_TIMEOUT,还需要检查你的客户端(如 Nginx、Open WebUI)的 Request Timeout 设置,通常默认为 60秒,建议全部同步调整为 600秒以上。
总结
通过以上步骤,你已经拥有了一个生产力级别的 Ollama 服务端:
- 更强:支持 5 路并发。
- 更稳:拥有充足的加载超时宽限。
- 更省:30秒无操作自动释放显存。
- 透明:通过
gpustat掌握硬件底牌。
版权属于:soarli
本文链接:https://blog.soarli.top/archives/780.html
转载时须注明出处及本声明。