GPU卡虚拟化技术的优劣势对比
号 | 方案类型 | 代表产品 | 方案概述 | 优势 | 劣势 |
1 | Mdev框架 | vGPU | 属于时分的共享产品。它通过vfio-mdev提供了一个隔离性非常高的的硬件环境,主要面向的是虚拟机产品。其共享模块在Nvidia driver之下 |
来自NVIDIA官方,可靠性和安全性高 | 不支持容器,虚拟机在使用上不灵活;无法动态调整资源比例;有一定的共享损耗;无法定制化开发需要购买license授权 |
2 | CUDA聚合 | MPS | MPS是Nvidia官方推出的GPU共享组件,属于空分。它通过将多个任务合并成一个context共享GPU算力,所有任务共同使用显存。它位于Cuda driver API和Nvidia Driver之间。 |
性能最优在多任务共享的场景下,当任务使用的资源可同时被满足,JCT基本没有影响 | 错误互相影响,如果一个任务退出(包括被使用者停止和任务本身出错等),如果该任务正在执行kernel,那么和该任务共同share IPC和UVM的任务也会一同出错退出,无法在开发训练场景上大规模使用;没有显存隔离,只能粗略限制资源无法定制化开发 |
3 | MIG | MIG | 硬件级虚拟化,对物理卡上能用的物理资源进行切分,这些资源包括:系统通道、控制总线、算力单元(TPC)、全局显存、L2 cache、数据总线等;然后将分块后的资源重新组合,让每个切分后的子GPU 能够做到数据保护、故障隔离独立、服务稳定。 | 1)k8s高版本原生支持 2)故障隔离稳定 |
1)仅A100等高端卡型支持 2)SM片不能被完全平均分配,存在算力损耗(以A100为例,A100 卡总共有108 SMs,最大可以为7个MIG实例,则每个MIG实例只有14个SM 14*7 = 98 SMs,有10个SM将无法使用) |
4 | CUDA劫持 | rCUDA/vCUDA | CUDA劫持是较多方案选择的共享方法,属于时分。它通过劫持对Cuda driver API的调用来做到资源隔离。共享模块一般位于在Cuda driver API之上。 |
1)支持GPU远程调用 2)API开源,是非NVIDIA官方技术人员能够较容易实现的共享技术 |
1)远程调用存在带宽性能的损耗 2)CUDA库升级活跃,当CUDA库升级时,劫持方案也需要不断适配,损耗人力; 3)难以覆盖所有场景,隔离不一定准确; 4)安全性低,用户可以绕过限制; 5)对用户有少量影响,需要适配; 6)无法提供算力精准限制的能力 |
5 | 内核劫持 | mGPU | 属于时分,通过新的内核驱动模块,为容器提供了虚拟的GPU设备,劫持了对Nvidia driver的调用。它可以严格限制显存,通过时间片的方式限制算力。它位于Cuda driver API和Nvidia Driver之间。 | 安全性高共享损耗小NVIDIA Driver的更新更少,适配需求小 | OS有一定依赖;研发困难,对开发要求高资源碎片化 |
阅读剩余
本站代码模板仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END