作者:菜菜ING | 来源:互联网 | 2023-08-10 18:23
GPU资源池的虚拟化路径-GPU小常识:GPU(GraphicsProcessingUnit),中文名:图形处理器,曾用名:显卡。1999年,Nvidia(英伟达)公司“ZAO”了
GPU小常识:
GPU(Graphics Processing Unit),中文名:图形处理器,曾用名:显卡。
1999年,Nvidia(英伟达)公司“ZAO”了GPU,这玩意除了极大的推动了基于PC的游戏市场发展,还彻底改变了并行计算。
没想到二十年后,Nvidia摇身一变成了高大上的AI计算公司,还用GPU绑架了整个人工智能圈子。
我有个客户,几年前新建了一个数据中心,通过P2V技术淘汰了大量X86物理服务器,直接在IT基础设施上成功完成了服务器虚拟化转型,之后就马不停蹄的向云计算转型,而当下,又开始了人工智能转型。
随着智能商业时代的到来,一些大公司对于AI技术的关注和使用也快速增加,这些企业都非常注重自身科技能力的构建。其中,搭建自有AI平台,赋能业务成了这些有实力企业的首选。我这个客户自然也不能免俗,采购了大量的GPU服务器进行部署。
在落地AI场景的同时,客户也希望对建立GPU资源池做一个评估。针对客户需求,做了一些功课。对于AI,我依然只是知道一点皮毛,要说什么算法和模型,我是没戏的,但是可以把交流的学习心得分享一下。
GPU当前主要应用于计算、图形和人工智能领域。从GPU资源的虚拟化实现路径看,主要有三种技术方案。
VSGA(Virtual Shared Graphics Acceleration),把物理GPU分享给多个桌面用户,每个VDI通过SVGA驱动调用虚拟化的GPU驱动程序,再来调用GPU的运算能力,这个属于典型的桌面虚拟化场景。
VDGA(Virtual Dedicated Graphics Acceleration),把物理GPU分配给一个指定的VM,资源专用,这种模式也称为直通(Pass Through)模式,该方案具有比较高的性能优势,但成本相对较高。
vGPU(Virtualized GPU),把一块物理GPU虚拟成多块vGPU卡,每个VM都独占一块vGPU,每个vGPU直接跟物理GPU对接。
现实世界的应用状况又是怎样的呢?
通过技术交流,发现传统行业大多数的GPU资源池案例都是VDI的桌面虚拟化应用场景,针对后台服务器虚拟化的案例几乎没有。在互联网行业,像百度这样在AI领域比较强的,用的都是自研的GPU服务器和资源调度平台。
真正的商业案例中,大量客户使用的还是基于X86物理服务器搭配GPU卡的方式来部署AI应用。
之后,对这个客户也做了相应的调研。客户现状:针对AI技术部署了独立的语音分析、OCR和人脸识别等多个平台,支撑整个公司对于AI场景的需求。(目前有GPU服务器:50台+,GPU卡:180+,后续还有200+的GPU卡扩容计划)。针对调研情况,也做个简要分析。
应用场景:
目前AI技术主要为两种场景,训练(Training)和推理(Inference),从我这个客户的使用情况看,几乎都是推理场景,相对训练而言,对于GPU的算力的要求不是很高,这一点从用户的性能数据上也有体现。客户模型训练都是在供应商端进行的。
技术方案:
GPU资源池只是一种概念,对于资源的形态来说,GPU是物理的还是虚拟的不是最重要的。从资源管理角度看,主要是考虑利用效率、访问性能、安全隔离等因素。
如果是物理服务器方案,上层最佳的部署形式的直接基于容器,但是现实情况是大多数用户的应用部署还是基于PM和VM的。另外,也可以考虑基于服务器虚拟化+多GPU卡的方案,一个VM对应一个GPU卡的直通模式,但是应用密度显然受制于GPU卡的数量,如果这时再追加使用vGPU技术,似乎方案在VM技术平台上就更完美了,当然容器嵌套VM的方案也是一种好的形式。
商务成本:
成熟的商业虚拟化软件是有软件许可费的,而Nvidia的vGPU技术也需要支付相应的软件许可费,这样每个GPU卡可以根据显存的不同配置,被切分为固定数量的vGPU,在相同数据物理GPU卡配置情况下,提升VM的部署密度。
其他因素:
当然,目前的“AI芯片”也不是只有Nvidia一家,国内的寒武纪和华为也都用相应的产品支撑AI应用,对于主流的TensorFlow,Cafee框架可能还可以,但对于其他框架和模型在支持上略显不足,还需要加强生态建设。毕竟连英伟达都声称自己是一家软件研发公司。在这个Software Define Anything的时代,软实力才是真正贴近用户的硬实力。
关于建立后台支撑AI算力的GPU资源池这件事,技术本身并不存在限制,是个具有规模效应的事情。如果规模大了,也许百度的“孔明”平台就是一个需要达到的高度。至于其他公有云服务商,现在也都提供了相应的GPU服务,等有机会再去调研一下。
啥叫Deep Learning?就是这种不断学习更新,还要用输出倒逼输入的方式!