Ollama使用NVIDIA GPU运行大模型
安装
安装
ollama
执行程序:
手工本地安装
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
sudo tar -C /usr -xzf ollama-linux-amd64.tgz
安装CUDA驱动( QEMU运行GPU passthrough的虚拟机安装NVIDIA CUDA )
配置
当完成 使用Ollama运行DeepSeek R1 后,我发现默认情况下 Ollama
是使用CPU进行推理的:
CPU跑满了一个core,但是
nvidia-smi
显示GPU "纹丝不动"
简单参考 ollama/docs/gpu.md 就可以看到 Ollama
是通过环境变量 CUDA_VISIBLE_DEVICES
来使用 NVIDIA GPU 的,也就是说需要给 ollama
服务进程传递这个环境变量。
由于 使用Ollama运行DeepSeek R1 使用了 Systemd进程管理器 来运行 ollama
服务,所以需要配置 Systemd环境变量
找出GPU的id,对于 NVIDIA GPU 使用
nvidia-smi
命令:
通过
nvidia-smi
命令获取GPU的idnvidia-smi -L
输出显示:
通过
nvidia-smi
命令获取GPU的idGPU 0: NVIDIA Graphics Device (UUID: GPU-794d1de5-b8c7-9b49-6fe3-f96f8fd98a19)
修订
/etc/systemd/system/ollama.service
添加环境变量:
/etc/systemd/system/ollama.service
设置 ollama
服务运行环境变量[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"
Environment="OLLAMA_MODELS=/huggingface.co/ollama/models"
Environment="CUDA_VISIBLE_DEVICES=GPU-794d1de5-b8c7-9b49-6fe3-f96f8fd98a19"
[Install]
WantedBy=default.target
重新加载
ollama.service
配置以及重启服务:
重启
ollama
服务systemctl daemon-reload
systemctl restart ollama
现在再次使用ollama进行推理的时候,就会看到GPU满负荷运行,证明已经将推理由GPU完成(不过
ollama
的CPU也是满负荷,有点吃惊)
指定GPU之后运行
ollama
推理就可以看到 nvidia-smi
输出显示GPU满负荷工作Every 2.0s: nvidia-smi debian12: Sun Feb 16 17:34:57 2025
Sun Feb 16 17:34:57 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.86.15 Driver Version: 570.86.15 CUDA Version: 12.8 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA Graphics Device On | 00000000:05:00.0 Off | 0 |
| N/A 36C P0 147W / 150W | 21447MiB / 23040MiB | 96% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 6259 C /usr/bin/ollama 21444MiB |
+-----------------------------------------------------------------------------------------+