背景
AI落地时,在某些场景下AI模型在训练或者是推理时,其算力要求不需要占用整卡的GPU,比如只需要0.5卡GPU即可满足需求。在这种情况下,可以使用GPU虚拟化技术来解决这个问题,将整卡的GPU虚拟化为两个0.5卡的GPU,这样就可以在一张卡上同时跑两个AI训练或者AI推理应用服务,极大压榨算力资源,降低成本。
基本痛点:容器的GPU利用率不够高,特别是推理任务;
为了提高GPU的利用率、避免算力浪费,需要在单个GPU上运行多个容器;
虚拟化技术对比
目前常见的NVIDIA GPU虚拟化技术方案有:NVIDIA GRID(vGPU),NVIDIA MPS,cGPU和vCUDA。其中,在k8s容器上常用的为vCUDA和cGPU方案:坑呀,我不想用图片的,但是直接markdown转不了知乎的表格,有点奇怪...被迫贴图片
NVIDIA提供的两种方案还有一个缺点就是其算力共享是平均共享的,无法按照一定权重分配共享,比如A应用主要0.1算力而b应用分0.9算力。接下来主要讨论AI落地时最实用的cGPU和vCUDA方案,分别介绍其一些特性
cGPU这里说的cGPU为阿里云异构计算cGPU容器技术架构
创新的基于内核虚拟GPU隔离的GPU共享容器方案,实现了用户无感且轻量的GPU虚拟化技术。使用标准的Docker,可以无缝的兼容Kubernetes,做到AI应用无需做任何修改或重编译,可直接运行。物理GPU的资源可以任务划分,包括显存和算力 (实际使用经验,建议以间隔显存大于1G为