GPU资源利用率提升6倍,云原生助力AI业务降本增效
在万物皆云原生的背景下,GPU(图形处理器)和云原生技术的结合能为AI业务带来哪些惊喜与挑战?
日前,同盾科技云原生团队进行了一次关于GPU虚拟化的内部技术主题分享。今天小盾决定借花献佛,围绕这次分享发个“技术贴”。
前方高能,内含大量专业术语和符号,颇为烧脑,慎入!
AI业务踏上云原生征程
数据、算法和算力是人工智能发展的三大支柱,而支柱的背后还有支柱,以算力而言,它是需要物质来承载和实现的,那个物质可以是算盘,也可以是CPU,还可以是GPU。
事实上,不同于一般的印象,从图像、语音、文字识别,再到更加复杂的人工智能场景,都离不开GPU,这是为什么呢?
同盾科技云原生技术负责人侯诗军介绍,GPU最初是为图形应用而开发的专用硬件组件,在图形渲染中需要进行大量的浮点运算,这些可以并行执行,并且不涉及CPU通常遇到的复杂的分支运算。GPU具有多达几千的计算核心以及很高的内存带宽,能够应对拥有高度并行的场景,虽然时钟速度和分支处理运算能力都比CPU弱很多,但是这些在训练网络的时候,都是无关紧要的。CPU是一种通用计算芯片,它的核心数低于GPU两个数量级,不仅可以进行浮点计算,也可以进行逻辑运算,适应更通用的场景。AI场景训练和推理通常不涉及大量的分支运算与复杂的控制指令,更适合在GPU上进行。
如同把一头大象装进一间冰箱一样,让一个AI应用跑在GPU服务器上,环境搭建起来通常是非常复杂的,需要提前安装好GPU驱动,CUDA运行框架,以及应用运行框架所需要的依赖包。这要求算法人员不仅要熟悉算法框架,还要对操作系统非常熟悉。
“而通过容器化的方式,能够降低算法人员的负担,同时能够保证应用运行环境的一致性。容器化是目前主流的一种资源虚拟化技术,将应用运行环境打包成镜像,分发到任意一台装有Docker的主机上就能够快速运行”,侯诗军说。
Docker利用Linux的cgroup和namespace实现了资源的隔离,使得每个容器能够具有独立的运行环境和资源。通过容器化后,同一主机上能够支持不同CUDA版本,应用只需关注自身应用的框架。部署更加方便,应用需要进行升级时,只需重新打包成一个新的镜像,然后部署到Docker就完成了升级的过程。整个开发迭代流程非常丝滑。
“虽然容器化有各种好处,但是对容器编排、服务治理、网络管理等是一个非常复杂的过程。针对容器化后带来的问题,Kubernetes应运而生。”
Kubernetes是自动化的容器编排调度管理基建,被誉为云原生时代的操作系统,它通过自身的调度组件完成容器的编排能力,能够快速弹性伸缩和自修复。Kubernetes自身的架构设计具有松耦合和高扩展的特点,通过CNI、CSI、CRI标准的制定能够实现网络、存储和容器运行时的扩展。Kubernetes对外暴露设备插件接口,能够支持GPU和FPGA等异构设备调度和管理。因此,同盾基于Kubernetes来管理自身的AI业务,实现了应用的快速部署、高可用。通过云原生化,AI业务可以做到随时随地快速扩容,并能够在各种云上进行快速部署。
GPU容器虚拟化
AI应用云原生化后,同盾迎来了新的挑战,那就是业务GPU的资源利用率较低,每个容器都需要独占一个GPU,而日常GPU使用率通常占不满一个卡,所以需要将GPU进行细粒度切分,也就是GPU虚拟化。
GPU虚拟化发展已经具有较长的历史:
从2008年开始,vmware发布面向桌面虚拟化场景的VSGA (虚拟共享图形加速Virtual Shared Graphics Acceleration)技术开始,开启了GPU虚拟化新纪元。2012年,随着kernel VFIO (Virtual Function I/O)模块的引入和直通设备的普及,GPU的虚拟化之路得以开启,随后Nvidia发布了GRID K1的产品。其后,AMD开始研究基于SRIOV(Single Root I/O Virtualization)的GPU虚拟化方案,并在2016年发布第一款SRIOV显卡。2014年,论文「A Full GPU Virtualization Solution with Mediated Pass-Through」中提出了一种分片虚拟化技术,随后Nvidia基于该论文发布了GRID vGPU实现方案产品。2016年,AMD、NVIDIA、Intel公布的GPU虚拟化方案都日趋成熟。但是,目前针对容器化场景的GPU虚拟化方案仍然处于探索阶段。
说了这么多,到底GPU容器虚拟化后有什么优势呢?
从同盾自身的实践来看,效果令人颇为乐观。
侯诗军表示,我们通过测试发现部分AI框架使用的OpenMap库存在线程数配置不合理的情况,这会导致服务奇高的CPU使用率和GPU严重浪费。通过参数优化调整,我们在测试数据上观察到TPS四倍以上的提升,在实际客户测试集上我们观察到40%以上的TPS提升,同时服务的的RT比更低更稳定。
通过GPU容器虚拟化,同盾最终将GPU利用率最高提升了六倍,平均提升了三倍,CPU利用率也有40%的提升。另外,通过对AI应用容器性能分析和调参数优化,应用在容器化后的QPS提升了一倍以上,并且针对某客户场景下的总体性能提升了38%。
侯诗军表示,GPU容器虚拟化仅仅是开始,未来同盾还计划对GPU的虚拟配额进行智能分配、降低过度依赖算法人员的经验值,使GPU的分配更具有针对性。此外,同盾还将会把GPU资源池化,让AI应用不止局限于本地GPU资源,实现GPU的远程调用,从而使资源的使用更加灵活。同时,为了应对突发的大规模流量场景,同盾还计划实现GPU容器自动的弹性伸缩,不止在自建机房内,还要利用公有云的优势,实现混合云的弹性伸缩能力,最大限度的提高资源利用率。
“我们坚信云原生浪潮将会对整个技术产业带来深远影响。未来,同盾科技会借助云原生、人工智能等技术,给客户提供更加优质的产品和服务”。