PVE 配置显卡直通指南:本地部署 AI 大模型基础环境
本文将详细介绍如何在虚拟化平台 Proxmox Virtual Environment(PVE)中配置显卡直通,将宿主机上的物理显卡直接分配给 AI 虚拟机使用。通过此方案,可以充分利用 GPU 算力运行本地大语言模型(LLM),避免云端调用的延迟与成本。
1. 环境介绍
1.1 硬件环境
- 服务器主板/芯片组:支持 VT-x/VT-d 虚拟化扩展的 Intel 或 AMD 平台
- 内存:建议 32GB 及以上,确保宿主机与虚拟机均有充足资源
- 显卡:NVIDIA P104-100(或其他支持 CUDA 的 NVIDIA 显卡)
- BIOS 设置:必须开启
Intel VT-x、Intel VT-d(或 AMD-Vi) 以及Above 4G Decoding
注意:本文以 NVIDIA P104-100 为例,配置逻辑适用于大多数消费级及专业级 NVIDIA 显卡。AMD 显卡直通原理类似,但驱动配置有所不同。
1.2 软件环境
- 虚拟化平台:Proxmox VE 8.0.x 系列
- 客户机系统:Ubuntu 22.04 LTS(推荐用于 AI 开发环境)
- 内核版本:PVE 默认内核通常已包含 VFIO 支持,无需额外编译
2. 配置 PVE 宿主机开启显卡直通
在 PVE 宿主机上完成底层配置是直通成功的关键,主要涉及 IOMMU 开启、VFIO 模块加载及驱动屏蔽。
2.1 开启 IOMMU 功能
IOMMU(Input-Output Memory Management Unit)允许操作系统管理设备的 DMA 访问,是实现设备隔离和直通的基础。
-
编辑 Grub 配置文件 使用 root 权限编辑
/etc/default/grub:vi /etc/default/grub -
修改启动参数 找到
GRUB_CMDLINE_LINUX_DEFAULT行,添加以下参数:GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream"参数说明:
intel_iommu=on:启用 Intel IOMMU 支持。iommu=pt:Performance mode,提高性能并防止 Linux 错误地直通不支持的设备。initcall_blacklist=sysfb_init:禁用系统帧缓冲初始化,避免冲突(替代旧版的video=efifb:off,vesafb:off)。pcie_acs_override=downstream:强制覆盖 PCIe ACS 能力,便于拆分 IOMMU 组,使更多设备可被单独直通。
*注:若使用 AMD CPU,请将
intel_iommu=on替换为amd_iommu=on。 -
更新 GRUB 配置
update-grub执行后应显示生成 grub 配置文件成功。
-
加载 VFIO 内核模块 确保 VFIO 相关模块在启动时自动加载:
echo vfio >> /etc/modules echo vfio_pci >> /etc/modules echo vfio_iommu_type1 >> /etc/modules # PVE 8.0+ 通常不需要手动添加 vfio_virqfd -
重启系统
reboot -
验证 IOMMU 状态 重启后检查日志确认 IOMMU 已启用:
dmesg | grep -E "DMAR|IOMMU"预期输出包含
DMAR: IOMMU enabled。 -
验证 VFIO 模块
dmesg | grep -i vfio预期输出包含
VFIO - User Level meta-driver version: 0.3。 -
验证中断重映射
dmesg | grep 'remapping'若看到
Enabled IRQ remapping则说明中断重映射正常。部分老旧主板即使 BIOS 开启 X2APIC 也可能报错,此时需参考 2.3 节配置。
2.2 屏蔽宿主机默认驱动
为了防止宿主机占用显卡,必须在直通前屏蔽其默认驱动。
-
创建黑名单文件
vi /etc/modprobe.d/blacklist.conf -
添加屏蔽规则 根据显卡品牌选择对应内容:
# NVIDIA 显卡屏蔽 blacklist nouveau blacklist nvidia blacklist nvidiafb blacklist nvidia_drm # AMD 显卡屏蔽(如需) # blacklist amdgpu # blacklist radeon保存后执行
update-initramfs -k all -u更新镜像。
2.3 其他关键配置
允许不安全的中断
某些硬件环境下,IOMMU 可能无法完美处理所有中断请求,导致直通失败。可添加以下配置允许不安全中断:
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
NVIDIA 稳定性优化
为防止虚拟机异常导致宿主机崩溃,可调整 KVM 参数:
echo "options kvm ignore_msrs=1 report_ignored_msrs=0" > /etc/modprobe.d/kvm.conf
ignore_msrs:忽略未处理的 MSR 写入。report_ignored_msrs:不报告此类异常。
2.4 更新内核引导文件并重启
update-initramfs -k all -u
reboot
3. 创建虚拟机并配置硬件
-
创建 Ubuntu 虚拟机 在 PVE 界面新建 VM,分配足够的 CPU 核心和内存(建议至少 4 核 8G)。
-
添加 PCI 设备
- 选中虚拟机 -> 硬件 -> 添加 -> PCI 设备。
- 点击 扫描 PCI 设备,找到对应的 NVIDIA 显卡(Vendor ID 通常为 10de)。
- 勾选 All Functions(所有功能),确保声卡等附属设备也被直通。
- 勾选 Primary GPU(可选,视需求而定)。
- 点击 添加 并启动虚拟机。
4. 虚拟机内部驱动安装与验证
虚拟机启动后,需要安装 NVIDIA 专有驱动才能识别显卡。
4.1 准备环境
进入 Ubuntu 虚拟机终端,更新源并安装必要工具:
sudo apt update
sudo apt install build-essential dkms linux-headers-$(uname -r)
4.2 安装 NVIDIA 驱动
推荐使用官方 .run 文件或 PPA 源。以下以官方驱动为例:
-
下载驱动 前往 NVIDIA 官网下载对应版本的 Linux 驱动包(如 550.xx 版本)。
-
停止图形界面服务
sudo systemctl stop gdm3 # 或使用 lightdm -
安装驱动
chmod +x NVIDIA-Linux-x86_64-550.54.15.run sudo ./NVIDIA-Linux-x86_64-550.54.15.run --no-opengl-files注意:安装过程中若提示保留当前配置,选择 No;若询问是否注册内核模块,选择 Yes。
-
重启虚拟机
sudo reboot
4.3 验证显卡状态
驱动安装完成后,执行以下命令检查:
nvidia-smi
若能看到显卡型号(如 P104-100)、显存大小及驱动版本,说明直通成功。
示例输出:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15 Driver Version: 550.54.15 CUDA Version: 12.4 |
|-------------------------------+----------------------+----------------------+
| 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 P104-100 On | 00000000:00:10.0 Off | N/A |
| 72% 35C P8 6W / 180W | 2MiB / 8192MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
4.4 AI 框架测试
若需运行 LLM,建议进一步测试 PyTorch 是否识别到 GPU:
import torch
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))
若输出 True 及显卡名称,则环境配置完全就绪。
5. 常见问题排查
5.1 无法找到 PCI 设备
- 检查 BIOS 中 VT-d/IOMMU 是否开启。
- 检查
dmesg是否有vfio-pci绑定成功的日志。 - 尝试调整
pcie_acs_override参数为downstream,multifunction。
5.2 虚拟机启动黑屏
- 可能是显卡被宿主机占用,检查
/etc/modprobe.d/blacklist.conf是否正确生效。 - 尝试移除虚拟机的 VGA 显示设备,仅保留直通显卡。
5.3 驱动安装失败
- 确保虚拟机内核头文件版本与运行内核一致。
- 检查是否启用了 Secure Boot,如有请关闭或在驱动签名中导入密钥。
6. 总结
通过上述步骤,我们成功在 PVE 平台上实现了 NVIDIA 显卡的直通,为本地 AI 大模型推理提供了硬件加速基础。该方案不仅降低了算力成本,还保证了数据隐私安全。后续可根据实际需求进一步优化网络配置、存储挂载及容器化部署(如 Docker + Kubernetes),构建更完善的私有化 AI 基础设施。


