前面我们从单机到集群,从Win到Linux都已经涉及,但是没涉及到单机多卡,本篇文章就来说说这个单机多卡遇到的问题。
本次环境是4张卡Tesla V100卡。
1.只能用1张卡
ollama是使用官方脚本安装的,ollama是以systemctl方式启动,下载的是deepseek-r1:32b模型,启动以后发现只使用了22G显存,实际上只用了1张卡,其他卡未使用。
如果要使用4张卡则需要按照下面的方式调整配置,或者跑更大的模型,如果超过单张卡GPU显存限制,则会自动分配到所有显卡上面,不需要做任何特殊配置。
vi /etc/systemd/system/ollama.service
#增加下面2个参数
Environment="CUDA_VISIBLE_DEVICES=0,1,2,3"
Environment="OLLAMA_SCHED_SPREAD=1"
#重新加载ollama
systemctl daemon-reload
systemctl restart ollama
#然后重启模型
ollama run deepseek-r1:32b
2.模型自动退出
模型启动以后,如果自动退出(默认时间是5分钟),但是你提问的时候他会自动拉起(中途需要反应时间),这样会降低响应速度。
#日志里面大概会有类似的日志
"new model will fit in available VRAM, loading" model=/usr/share/ollama/.ollama/models/blobs/sha256-4cd576d9aa16961244012223abf01445567b061f1814b57dfef699e4cf8df339 library=cuda parallel=4 required="49.9 GiB"
#设置-1则永不退出,也可以设置其他具体时间,比如1h。
#再参考刚才 重启服务即可常驻
Environment="OLLAMA_KEEP_ALIVE=-1"
3.单机运行多模型
机器下载了多个模型,运行其中一个模型以后,再开启另外一个模型。
root@localhost:~# ollama ls
NAME ID SIZE MODIFIED
deepseek-r1:32b 38056bbcbb2d 19 GB 3 hours ago
deepseek-r1:32b-qwen-distill-fp16 141ef25faf00 65 GB 19 hours ago
deepseek-r1:70b 0c1615a8ca32 42 GB 20 hours ago
4.Open WebUI 提问拉起模型
部署ollama以后,他会自动开机启动;再部署好容器化的Open WebUI(也配置了开机自启动)。这个时候我们把这个机器重启(模型未启动),我们可以通过Open WebUI访问到模型并进行提问,这个时候模型就会自动启动,然后等待模型启动以后,他就会自动回答我的问题(需要等待模型启动的时间)。