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
诺言博客