一句话定义:GPU 直通(GPU Passthrough)是把一块物理显卡几乎原封不动地"交给"某台虚拟机或容器独占使用,让里面的程序跑出接近裸机的性能。
为什么需要它
一台服务器插了 8 块 GPU,如果直接装一个操作系统,那这 8 块卡就归这一个系统用了。但现实中我们常想干别的事:一边跑训练任务,一边给另一个团队开一台隔离的开发机,还要保证互不干扰。虚拟化能解决"切分"的问题,可传统的虚拟化对 GPU 很不友好——显卡驱动被宿主机(Host)攥着,虚拟机(VM)里只能看到一个被模拟出来的、性能惨不忍睹的"假显卡"。
打个比方:普通虚拟化像是把厨房租给你,但刀具全锁在房东柜子里,你只能用塑料刀切菜;GPU 直通则是房东直接把整套专业厨具搬进你的独立厨房,钥匙只给你一个人,你怎么用都行,效率几乎不打折。
原理上的关键点
要做到这一点,需要三样东西配合:
1. 硬件支持:CPU 和主板要支持 IOMMU(Input-Output Memory Management Unit,输入输出内存管理单元)。它给每个设备划定独立的地址空间,让显卡的 DMA 访问不会越界踩到别的内存——这是安全和稳定性的地基。Intel 平台常叫 VT-d,AMD 平台常叫 AMD-Vi,具体名称以厂商官方页面为准。
2. 设备隔离:一块卡必须落在自己独立的 IOMMU 分组里,才能被单独摘出来分配。多卡机器常需要调整插槽或开启 ACS 相关设置。
3. Hypervisor 配合:KVM、VMware ESXi、Proxmox 这类虚拟化层负责在启动时把设备从宿主机驱动手里"解绑",再挂到虚拟机上。容器侧则是另一条路,靠 NVIDIA Container Toolkit 之类的方案把设备和驱动暴露进容器。
需要区分两个容易混的概念:
| 方式 | 怎么做的 | 性能 | 典型场景 |
|---|---|---|---|
| GPU 直通 | 整块卡独占给一个 VM/容器 | 接近裸机 | 多租户隔离、云游戏、推理服务 |
| GPU 虚拟化(vGPU/SR-IOV) | 硬件或驱动把一块卡切成多份 | 有损耗,可超分 | 多人共享、桌面云 |
| API 转发 | 应用通过网络调用远端的卡 | 有网络开销 | 训练集群调度 |
直通是"整块给一个人",虚拟化是"切成几份给多个人"。前者简单、性能好,但一块卡只能服务一个使用者;后者灵活,但配置复杂、单份算力受限。
对从业者的实际意义
对做 AI 基础设施的人,GPU 直通是"隔离"和"性能"之间最省事的那个折中:把卡直通给虚拟机,就天然获得了内存隔离、故障隔离和权限边界,比在宿主机上跑一堆进程互相打架要干净得多,用完了整机回收也方便。
对普通职场人,它的直接体现可能是:公司给你的云端开发机里,nvidia-smi 能看到一块完整的卡,跑模型不卡;或者云厂商卖的"GPU 云主机",底层很可能就是直通。你不需要关心细节,但知道这个词,就能理解为什么有些云主机的 GPU 性能好、有些是共享的虚卡。
需要注意,直通后宿主机通常就不能再用这块卡了,热插拔和迁移也比普通虚拟机麻烦,规划时要提前想清楚谁用哪块卡。
