用矿卡P104-100在PVE 8.0.4上跑Ollama:保姆级显卡直通与驱动安装避坑指南
·
矿卡P104-100在PVE 8.0.4上部署Ollama全流程:从显卡直通到模型推理实战
矿卡的高性价比让它成为许多技术爱好者搭建本地AI环境的首选硬件。NVIDIA P104-100作为一款没有显示输出接口的纯计算卡,在二手市场的价格往往只有同性能游戏显卡的1/3。本文将手把手带你完成从PVE环境配置、显卡直通到Ubuntu虚拟机内驱动安装的全过程,最终实现Ollama大模型的流畅运行。
1. 硬件准备与PVE基础配置
1.1 矿卡特性与兼容性验证
P104-100基于GP104核心,与GTX 1080同代架构,但去掉了显示输出模块。购买时需注意:
- 核心版本 :GP104-200-A1(可通过GPU-Z验证)
- 显存容量 :8GB GDDR5X(大模型运行的关键)
- 散热改造 :多数矿卡采用暴力扇,建议更换为 Arctic Accelero散热器
在PVE宿主机上执行以下命令验证设备识别:
lspci -nn | grep -i nvidia
正常应输出类似:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104 [10de:1b84] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation GP104 High Definition Audio Controller [10de:10f0] (rev a1)
1.2 BIOS关键设置
进入服务器BIOS进行以下调整:
- 虚拟化支持 :启用VT-x/d(Intel)或SVM(AMD)
- Above 4G Decoding :必须开启
- CSM支持 :建议关闭
- PCIe速度 :设置为Gen3(矿卡通常不支持Gen4)
1.3 PVE 8.0.4系统优化
更新源并安装必要工具:
apt update && apt install -y pve-headers-$(uname -r) build-essential dkms
禁用nouveau驱动:
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "options nouveau modeset=0" >> /etc/modprobe.d/blacklist.conf
2. PVE显卡直通详细配置
2.1 IOMMU组分析与隔离
首先检查IOMMU分组情况:
#!/bin/bash
for d in /sys/kernel/iommu_groups/*/devices/*; do
n=${d#*/iommu_groups/*}; n=${n%%/*}
printf 'IOMMU Group %s ' "$n"
lspci -nns "${d##*/}"
done
若显卡与其他设备同组,需在GRUB配置中添加ACS补丁:
# /etc/default/grub修改项
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction"
更新配置后重启:
update-grub && reboot
2.2 VFIO驱动绑定
获取显卡的PCI ID:
lspci -n -s 01:00
输出示例:
01:00.0 0300: 10de:1b84 (rev a1)
01:00.1 0403: 10de:10f0 (rev a1)
将ID添加到VFIO配置:
echo "options vfio-pci ids=10de:1b84,10de:10f0" > /etc/modprobe.d/vfio.conf
echo "softdep nvidia pre: vfio-pci" >> /etc/modprobe.d/vfio.conf
2.3 虚拟机XML配置技巧
创建Ubuntu 22.04虚拟机后,手动编辑配置文件:
<hostpci0>
<rombar>0</rombar>
<pcie>1</pcie>
<x-vga>1</x-vga>
<rom file='/usr/share/kvm/patched.rom'/>
</hostpci0>
注意:矿卡通常需要刷入修改版BIOS才能正常直通,可从TechPowerUp获取兼容版本
3. Ubuntu虚拟机内驱动安装
3.1 无输出接口显卡的特殊处理
由于P104-100没有显示输出,需通过SSH安装驱动。首先修改GRUB配置:
sudo nano /etc/default/grub
修改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
更新后安装驱动:
sudo apt update && sudo apt install -y gcc make
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/550.54.14/NVIDIA-Linux-x86_64-550.54.14.run
sudo bash NVIDIA-Linux-x86_64-550.54.14.run --no-opengl-files --no-x-check
3.2 CUDA Toolkit与性能调优
安装CUDA 12.4:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-4
功率限制调整(防止矿卡因长期高负载故障):
sudo nvidia-smi -pl 150
4. Ollama部署与模型运行
4.1 Ollama环境配置
官方一键安装:
curl -fsSL https://ollama.com/install.sh | sh
为矿卡添加环境变量:
echo 'export OLLAMA_GPU_METAL_DISABLE=1' >> ~/.bashrc
echo 'export OLLAMA_GPU_CUDA_DISABLE=0' >> ~/.bashrc
source ~/.bashrc
4.2 模型运行实战
拉取并运行Llama3 8B模型:
ollama pull llama3:8b
ollama run llama3:8b
性能监控命令:
watch -n 1 nvidia-smi
4.3 常见问题解决方案
问题1 :PCIe BAR 3报错
# 在PVE虚拟机配置中添加:
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=proxmox'
问题2 :VRAM不足 修改Ollama配置:
# /etc/ollama/config.json
{
"num_gpu_layers": 20,
"main_gpu": 0,
"tensor_split": ""
}
问题3 :温度过高 安装lm-sensors监控:
sudo apt install lm-sensors
sudo sensors-detect --auto
watch -n 1 sensors
更多推荐




所有评论(0)