ollama gpu设置
默认的ollama调用的各种大模型,如deepseek 70b模型,每个模型实例只绑定一张 GPU,如果是多卡,其它卡会一直闲置,造成一定浪费。
本文档介绍如何通过 systemd 配置文件为 Ollama 服务添加 GPU 和调度相关的环境变量,从而实现多 GPU 的高效利用与负载均衡。
Ollama 默认每个模型实例只绑定一张 GPU,并不具备自动负载均衡的能力。
为实现模型多卡部署与更高的吞吐量,我们可以通过设置环境变量来调整 Ollama 的调度行为。
因此我们需要相应的环境设置,设置也很简单。
修改 systemd 服务配置
1. 配置文件路径
Ollama 的 systemd 服务配置文件路径如下:
/etc/systemd/system/ollama.service
2. 编辑服务文件
sudo vim /etc/systemd/system/ollama.service
默认的整体配置如下:
[Unit] Description=Ollama Service After=network-online.target [Service] ExecStart=/usr/local/bin/ollama serve User=ollama Group=ollama Restart=always RestartSec=3 Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin" Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="OLLAMA_ORIGINS=*" [Install] WantedBy=default.target
按下 i 进入插入模式,找到 [Service] 段,我们需要在[Service]的下面添加几个环境变量设置,如下:
Environment="CUDA_VISIBLE_DEVICES=0,1,2,3" Environment="OLLAMA_SCHED_SPREAD=1" Environment="OLLAMA_KEEP_ALIVE=-1"
参数说明:
Environment=“CUDA_VISIBLE_DEVICES=0,1,2,3” 代表让ollama能识别到第几张显卡,因为4张显卡,从0开始编号,所以为0,1,2,3。根据你的显卡数量进行设置。 Environment=“OLLAMA_SCHED_SPREAD=1” 这几张卡均衡使用 Environment=“OLLAMA_KEEP_ALIVE=-1” 模型一直加载, 不自动卸载,这个设置会一直占用显存不释放,相应会快一些。如果不经常使用模型,可以把这个去掉,啥时候通过Open Webui访问,然后啥时候加载模型,第一次加载一般会慢一些。
添加之后的完整配置:
[Unit] Description=Ollama Service After=network-online.target [Service] ExecStart=/usr/local/bin/ollama serve User=ollama Group=ollama Restart=always RestartSec=3 Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin" Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="OLLAMA_ORIGINS=*" ### 添加如下配置,下面三个是新增的 Environment="CUDA_VISIBLE_DEVICES=0,1,2,3" Environment="OLLAMA_SCHED_SPREAD=1" Environment="OLLAMA_KEEP_ALIVE=-1" [Install] WantedBy=default.target
按下 Esc,然后输入 :wq 保存并退出。
2. 重新加载配置并重启服务
使用如下命令:
sudo systemctl daemon-reload sudo systemctl restart ollama
注意:若出现 Failed 信息,仅为非关键错误,通常不影响实际运行。
sudo systemctl daemon-reload命令解释:
重新加载 systemd 管理器的配置文件。当你修改了服务的配置文件(比如 /etc/systemd/system/ollama.service)后,systemd 并不会自动发现这些改动,你需要显式告诉它:“配置文件变了,请重新读取”。
sudo systemctl restart ollama命令解释:
停止再重新启动 ollama 服务,使其立即应用你新修改的配置。
3. 验证配置是否成功
查看服务状态:
systemctl status ollama
检查环境变量是否注入成功:
sudo systemctl show ollama | grep Environment
你应当看到如下输出:
Environment=CUDA_VISIBLE_DEVICES=0,1,2,3 Environment=OLLAMA_SCHED_SPREAD=1 Environment=OLLAMA_KEEP_ALIVE=-1
参数说明
参数 含义 CUDA_VISIBLE_DEVICES=0,1,2,3 指定可用的 GPU 编号(0 到 3),表示总共使用 4 张显卡 OLLAMA_SCHED_SPREAD=1 启用多 GPU 均衡调度,让模型推理在多卡之间分摊负载 OLLAMA_KEEP_ALIVE=-1 模型常驻内存,保持加载状态,防止自动卸载,提高响应速度
显存监控
watch -n 0.5 nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv
正常情况:双卡显存占用应均衡。