【AIGC实用案例分析2】:打造本地大模型地基,PVE 配置显卡直通

本文将详细介绍如何在虚拟化平台 Proxmox Virtual Environment(PVE)配置显卡直通,将宿主机上的物理显卡直接分配给 AI 虚拟机使用。

1. 环境介绍

1.1 硬件环境

  • 服务器: 科脑 X99-D4、2*32G DDR4 内存、Intel E5-2683 v4
  • 显卡:NVIDIA P104-100
  • BIOS:开启 VT-x/VT-d 类似的虚拟化扩展

本文选择纯矿卡 NVIDIA P104-100 作为演示,配置方法同样适用于其他型号显卡。

1.2 软件环境

  • 虚拟化平台:Proxmox Virtual Environment 8.0.4
  • AI 虚拟机: ubuntu 22.04

本文选择 ubuntu 22.04 作为演示,配置方法同样适用于其他操作系统。

2. 配置 PVE 开启显卡直通

2.1 开启 IOMMU 功能

  • 配置 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" ​ #注意:pve 7.2 以前版本使用 GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off,vesafb:off pcie_acs_override=downstream"

说明:

  • intel_iommu=on 开启IOMMU
  • iommu=pt 让内核驱动设备性能更高,并且防止Linux将不能直通的设备直通
  • initcall_blacklist=sysfb_init 替代老版本中的 video=efifb:off,vesafb:off
  • pcie_acs_override=downstream 用于将iommu groups拆分,方便一些板载设备的直通。
  • 更新 GRUB

update-grub ​ # 正确的结果如下 root@pve9:~# update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-6.2.16-8-pve Found initrd image: /boot/initrd.img-6.2.16-8-pve Found linux image: /boot/vmlinuz-6.2.16-3-pve Found initrd image: /boot/initrd.img-6.2.16-3-pve Found memtest86+x64 image: /boot/memtest86+x64.bin done

  • 加载对应的内核模块

echo vfio >> /etc/modules echo vfio_pci >> /etc/modules echo vfio_iommu_type1 >> /etc/modules # echo vfio_virqfd >> /etc/modules # pve8 不需要配置

  • 重启 PVE 系统

reboot

  • 验证是否成功 启用IOMMU

dmesg | grep -E "DMAR|IOMMU" ​ # 正确的关键结果如下 root@pve9:~# dmesg | grep -E "DMAR|IOMMU" [    0.000000] Warning: PCIe ACS overrides enabled; This may allow non-IOMMU protected peer-to-peer DMA [    0.142816] DMAR: IOMMU enabled [    1.036519] DMAR: Intel(R) Virtualization Technology for Directed I/O

  • 验证 VFIO 模块

dmesg | grep -i vfio ​ # 正确的结果如下 root@pve9:~# dmesg | grep -i vfio [    3.759097] VFIO - User Level meta-driver version: 0.3

  • 验证是否支持 中断重映射

dmesg | grep 'remapping' ​ # 正确的结果如下 # intel [    0.175675] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping. [    0.177198] DMAR-IR: Enabled IRQ remapping in x2apic mode ​ # 但是我的环境比较特殊,即使 BIOS 里开启了 X2APIC,也会报错,所以启用了 2.3 小节的 允许不安全的中断设置。不影响显卡的直通使用。 root@pve9:~# dmesg | grep 'remapping' [    0.390774] DMAR-IR: Enabled IRQ remapping in xapic mode [    0.390775] x2apic: IRQ remapping doesn't support X2APIC mode

2.2 开启显卡直通

  • 屏蔽默认驱动

# 直通 NVIDIA 显卡,请使用下面命令 echo "# NVIDIA" >> /etc/modprobe.d/blacklist.conf echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf echo "blacklist nvidiafb" >> /etc/modprobe.d/blacklist.conf echo "blacklist nvidia_drm" >> /etc/modprobe.d/blacklist.conf echo "" >> /etc/modprobe.d/blacklist.conf ​ # 直通 AMD 显卡,请使用下面命令 echo "# AMD" >> /etc/modprobe.d/blacklist.conf echo "blacklist amdgpu" >> /etc/modprobe.d/blacklist.conf echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf ​ # 本文服务器 NVIDIA 和 AMD 显卡各有一块,因此都执行

2.3 其他有用的配置

  • 允许不安全的中断

## 其他参数配置 # 允许不安全的中断 echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf

  • 为 NVIDIA 卡添加稳定性修复和优化

echo "options kvm ignore_msrs=1 report_ignored_msrs=0" > /etc/modprobe.d/kvm.conf # 忽略异常,防止虚拟机异常导致宿主机崩溃 #   ignore_msrs             :   忽略异常 #   report_ignored_msrs     :   是否报告异常

2.4 更新内核引导文件

  • 更新内核引导文件

update-initramfs -k all -u ​ # 正确的执行结果如下 root@pve9:~# update-initramfs -k all -u update-initramfs: Generating /boot/initrd.img-6.2.16-8-pve Running hook script 'zz-proxmox-boot'.. Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace.. No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync. update-initramfs: Generating /boot/initrd.img-6.2.16-3-pve Running hook script 'zz-proxmox-boot'.. Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace.. No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.

  • 重启系统

reboot

3. 创建虚拟机验证测试

3.1 创建虚拟机并添加显卡

在 PVE 系统中创建 ubuntu 虚拟机,过程略。

添加 NVIDIA P104-100 显卡到虚拟机。

  • 选择要添加显卡的虚拟机
  • 「硬件」->「添加」,选择 PCI 设备

  • 选择对应的显卡设备,并勾选所有功能

配置完成后,点击「添加」按钮,最后启动虚拟机。

3.2 虚拟机内部验证

虚拟机启动后需要安装显卡驱动,本文仅为了演示 PVE 开启显卡直通功能。至于如何在虚拟机里安装显卡驱动,后续会有专文介绍。

显卡驱动安装完成后,执行 NVIDIA 自带的管理命令,查看显卡信息。

ubuntu@ubuntu:~$ nvidia-smi Sat May  4 09:42:36 2024       +-----------------------------------------------------------------------------------------+ | 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 | |                                         |                       |                 N/A | +-----------------------------------------+------------------------+----------------------+                                                                                         +-----------------------------------------------------------------------------------------+ | Processes:                                                                             | | GPU   GI   CI       PID   Type   Process name                             GPU Memory | |       ID   ID                                                               Usage     | |=========================================================================================| | No running processes found                                                             | +-----------------------------------------------------------------------------------------+

以上,就是今天分享的内容,后续我会分享更多关于大模型、Ollama 的内容。请持续关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青少年编程作品集

你的赞赏将带来极佳的运气和才气

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值