【技术系列】浅谈GPU虚拟化技术(第一章)

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: GPU深度好文系列,阿里云技术专家分享

第一章  GPU虚拟化发展史

GPU的虚拟化发展历程事实上与公有云市场和云计算应用场景的普及息息相关。如果在10年前谈起云计算,大部分人的反应是“不知所云“。但是随着云计算场景的普及,概念的深入人心,慢慢地大家都对云计算有一个较清晰的概念和实例化的理解。自然,随着应用场景从单一依赖CPU的计算单元的应用扩展到多种体系架构,异构计算场景的应用上来后,对GPU,FPGA,TPU等专业计算芯片也提出了虚拟化和上云的强烈要求。尤其是最近几年机器学习、深度学习等领域的快速发展,催生了异构计算场景搬迁上云的高潮。

那么这个异构计算应用场景的市场规模有多大呢?异构计算作为机器学习人工智能的计算载体,先来看看人工智能前景如何?(引用出处:https://bg.qianzhan.com/report/detail/459/180116-3c060b52.html

50d41c78a6ba70fe274b95a55bcc002034ee2e30

图一:2015-2018年全球人工智能市场规模及预测(单位:亿元,%)

d173856f32fca8af3de65346e71666ffe1e89b6e

图二: 2014-2018年中国人工智能产业市场规模及增速(单位:亿元,%)


所以我们不难理解,为什么各大云计算厂商无论大小,都会极力研发异构计算产品,争抢市场的主导地位。

由于GPU是异构计算的主力军,让我们来回顾一下GPU虚拟化的发展历史,并对各个GPU厂商做一个横向比较,大家就不难看出来,哪些厂商处于领导地位,哪些是酱油党 :)

2008年:序言

VMware的GPU全虚拟化VSGA技术是第一次对GPU共享虚拟化的尝试,于2008年底在VMware商业化的Workstation 6.5和Fusion 2.0版本中首度问世,后续又在面向数据中心的产品vSphere中有集成。但这是一个VMware专有的闭源解决方案,在开源社区和VMware之外的产品中没有见到大规模应用,不是本篇关注的重点。

2012年:开始

随着kernel VFIO模块的引入和直通设备的慢慢普及,GPU的虚拟化之路得以开启。而开始大规模运用,则大体是伴随着VFIO模块的成功落地。事实上,在2012年左右,GPU直通技术一直是VFIO模块的一个重要应用场景。

2013年:第一个产品与群雄逐鹿

Nvidia 在2013 发布了GRID K1的产品,则标志着GPU虚拟化的成熟并逐渐开启了异构计算虚拟化的快速发展历程。

而事实上在2013同年,Intel OTC 针对HSW的GVT-d 和GVT-g的GPU虚拟化方案的也已经开发了一年有余。当初硬件基于SNB/HSW,而原型代码是基于Xen Hypervisor。(题外话:回头来看,会发现当初如日中天的Xen,竟然在几年后被后起之秀KVM逐渐取代。而当今公有云市场已鲜有Xen的身影了,替Citrix心疼几秒)。

Intel对GPU行业发展保持着敏锐的技术洞察力,早在2011年便已经开始了GPU虚拟化的提案,然而由于没有引起足够的重视,直到三年后的2014年,才有基于GVT-g的XenClient产品问世。

同年: VFIO 模块的社区维护者在KVM Forum上也正式发布了VGA的assignment。(详见:https://www.linux-kvm.org/images/e/ed/Kvm-forum-2013-VFIO-VGA.pdf)

同年初: AMD 也已经开始基于SRIOV的GPU虚拟化方案(Tonga架构),并开始研发SRIOV PF的GIM驱动和vGPU调度系统。由此推测SRIOV的硬件实现应该提前半年左右已经完成。直到两年后,AMD终于迎来了首款GPU SRIOV的产品:FirePro S7150 (2016年初发布)。

Nvidia作为GPU行业的龙头老大,基本上在GPU虚拟化的研发和产品化是领先了各位对手1-2年以上。而作为竞争对手的AMD在之后奋起直追。而Intel 基本上在那个时期还属于陪跑者。

2014年:vGPU 分片虚拟化诞生

一年后,也就是2014年,随着一篇Usenix ATC的论文的发表:”A Full GPU Virtualization Solution with Mediated Pass-Through“ 默默无闻的GPU虚拟化的一个新技术正式进入了大家的视眼:GPU分片虚拟化(中文暂且这么叫吧,因为mediated passh-through的叫法根本就不能让人明白这个到底是什么)。

该论文由Intel OTC的两位Principal Engineer发表,也代表了Intel在GPU虚拟化领域的技术积累(产品化一直不见起色,说起来都是泪)。

应该说Nvidia作为行业龙头对分片虚拟化在社区的推动起到至关重要的角色,事实上VFIOmdev框架是由Nvidia为了GRID vGPU 产品线而引入。mdev的概念由Nvidia率先提出的,并合并到了Linux 内核4.10。人家玩闭源生态系统也开始拥抱开源。

而AMD 2014 则没有消息,应该是继续研发全球首款基于SRIOV的GPU方案。

2015年:分化

Intel 与Citrix的合作,先后发布了基于GVT-d和分片虚拟化的GVT-g的XenClient 和 XenServer的产品。这些产品代表着当时Xen社区GPU虚拟化业界的标杆。为什么是Xen社区呢? 因为GVT-g当时还没有发布KVM 版本。

Intel 也开始在各大内外会议推送GVT-g的技术,当然是希望自己技术可以产品化并有一个好的市场前景。比如在当年“英特尔开发者大会”(IDF)上率先发布了基于GVT-g的多媒体视频处理云端方案。听的人很多一百多号人,并且感兴趣的也不少。作为一个利用免费GPU来做音视频处理,比单独用E5 Server要划算的多。但是遗憾的是最终没有任何产品落地。究其原因还是内在Intel GPU的定位问题。后续会讲到Intel GVT-g 方案的致命伤和痛点。

而AMD继续研发全球首款SRIOV GPU。

当其他人都在玩技术的时候,Nvidia已经开始了产业布局。同年发布了AWS上和VMware合作的基于GRID的各种方案,比如非常炫酷的Game Streaming。

其实GRID 是大概念。代表了Nvidia的GPU虚拟化的一大摞产品。而其中的GRID vGPU便是基于mdev的分片虚拟化方案。

2016,2017年:回报

2016年AMD带来了全球首款GPU的SRIOV显卡FirePro S7150x2。而这款针对图形渲染应用的产品也成为了之后各大公有云厂商的必推业务。图形渲染虚拟化高性价比只此一款。

Intel继续在各大论坛极力宣传Intel GVT-g技术。并在技术上第一次领先行业龙头Nvidia率先实现了vGPU的热迁移技术,可以说Intel OTC的虚拟化部门在自己力所能及的情况下把GVT-g做到了极致,然而在产品化的道路上却越走越艰难。

Nvidia此时凭借着AI的风口一路狂奔,日益完善GRID技术和分片虚拟化,把对手远远的抛在了后面。此时Nvidia也开始在开源社区抛头露面。并在2016年的KVM Forum的第二天,Nvidia架构师Neo隆重介绍了GRID vGPU技术。而恰巧本人作为GVT-g技术的代表在同一会场做GPU Live Migration的主题介绍。

大家感受一下当时的场景:GRID vGPU听众与GVT-g的听众对比:

cfcf2c050bb9430c1123d8f08d04f83efc092463fed2b17f2e02a316c19b4043d2e555f01e19d295

不得不说,早年Intel作为核显GPU的代表与Nvidia作为独立显卡的代表在GPU研发上有深度合作。而随后与AMD的合作开发CPU+GPU的芯片。以及最近的Intel与AMD合作对抗Nvidia在GPU领域的挤压。

以上三位既是对手又是朋友。

2018年:新领域

Nvidia继续保持着行业第一的身份把持了绝大部分市场份额。谁让人家有远见早早布局早早收割。

AMD 也有后续产品的发布。比如针对老对手Nvidia的对标Deep Learning的MI25的发布等。

随着GPU虚拟化应用的普及,GPU虚拟化的应用场景不再限于云计算市场。各种新兴行业也开始应用GPU虚拟化技术。最直接的便是车载娱乐系统,简称IVI(In-vehicle Information system )。于是三位老朋友又是老对手,都开始在IVI和自动驾驶领域开始竞争。而这也为Intel GVT-g的技术落地带来了转机。于是Intel率先发布了基于物联网的虚拟化方案(ACRN),并夹带着GVT-g的分片虚拟化技术浩浩荡荡地再次出发。

关于作者:

本文作者郑晓,阿里云虚拟化平台高级技术专家,2006年浙江大学毕业后入职Intel亚太研发有限公司从事虚拟化与GPU相关研发工作。2017年底加入阿里云。曾发表多篇论文及国际专利。

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
目录
相关文章
|
4月前
|
人工智能 缓存 调度
技术改变AI发展:RDMA能优化吗?GDR性能提升方案(GPU底层技术系列二)
随着人工智能(AI)的迅速发展,越来越多的应用需要巨大的GPU计算资源。GPUDirect RDMA 是 Kepler 级 GPU 和 CUDA 5.0 中引入的一项技术,可以让使用pcie标准的gpu和第三方设备进行直接的数据交换,而不涉及CPU。
134590 6
|
6月前
|
虚拟化 数据中心 异构计算
GPU 虚拟化技术MIG简介和安装使用教程
使用多实例GPU (MIG/Multi-Instance GPU)可以将强大的显卡分成更小的部分,每个部分都有自己的工作,这样单张显卡可以同时运行不同的任务。本文将对其进行简单介绍并且提供安装和使用的示例。
239 0
|
并行计算 Kubernetes Cloud Native
用尽每一寸GPU,阿里云cGPU容器技术白皮书重磅发布!
云原生已经成为业内云服务的一个趋势。在云原生上支持异构计算有助于提升CPU的利用率。一文分析业内主流GPU共享方案,并告诉你阿里云cGPU牛在哪里!阿里云异构计算推出的cGPU(container GPU)容器技术,创新地提出了一种不同于以往的GPU容器方案,克服了业内主流方案的一些常见的缺陷,在保证性能的前提下,做到了容器之间的GPU显存隔离和任务隔离,为客户充分利用GPU硬件资源进行训练和推理提供的有效保障。
7508 0
用尽每一寸GPU,阿里云cGPU容器技术白皮书重磅发布!
|
监控 Linux 调度
浅谈GPU虚拟化技术(四)- GPU分片虚拟化
作者:郑晓,龙欣,弹性计算异构计算项目组 让各位久等了,阿里小二这就开始上新菜:“GPU分片虚拟化”。 对于“分片”的理解,相信大家已经不陌生了。此处的分片从两个维度上来定义:其一,是对GPU在时间片段上的划分,与CPU的进程调度类似,一个物理GPU的计算engine在几个vGPU之间共享,而调...
19719 1
|
3月前
|
人工智能 弹性计算 安全
【Hello AI】GPU容器共享技术cGPU
GPU容器共享技术cGPU是阿里云基于内核虚拟GPU隔离的容器共享技术。即多个容器共享一张GPU卡,从而实现业务的安全隔离,提高GPU硬件资源的利用率并降低使用成本。
【Hello AI】GPU容器共享技术cGPU
|
4月前
|
人工智能 弹性计算 并行计算
技术改变AI发展:CUDA Graph优化的底层原理分析(GPU底层技术系列一)
随着人工智能(AI)的迅速发展,越来越多的应用需要巨大的GPU计算资源。CUDA是一种并行计算平台和编程模型,由Nvidia推出,可利用GPU的强大处理能力进行加速计算。
102435 1
|
8月前
|
人工智能 Linux 算法框架/工具
便捷、快速、稳定、高性能,以 GPU 实例演示 Alibaba Cloud Linux 3 对 AI 生态的支持龙蜥技术
在多维度的优化加持下,Alibaba Cloud Linux 3 解决了 AI 开发人员的痛点问题,让 AI 开发体验更容易更高效。
|
10月前
|
人工智能 编解码 API
GPU虚拟化技术详解(附讲解视频)
GPU虚拟化技术详解(附讲解视频)
952 0
|
弹性计算 运维 监控
浅谈gpu虚拟化技术转自郑晓
+关注 简介: 注:本系列第一章推送门:阿里云郑晓:浅谈GPU虚拟化技术(第一章) GPU虚拟化发展史 第二章 GPU虚拟化方案之——GPU直通模式 目前流行的商用GPU虚拟化方案可以分为以下几类:GPU 直通模式,GPU SRIO模 注:本系列第一章推送门:阿里云郑晓:浅谈GPU虚拟化技术(第一章) GPU虚拟化发展史
772 0
|
机器学习/深度学习 人工智能 资源调度
用尽每一寸GPU,阿里云cGPU容器技术帮助人工智能提效降本
阿里云推出的cGPU容器技术,可以实现容器的安全隔离,业务之间不会互相干扰,各容器之间的故障不会相互传递,更安全、更稳定;同时对客户环境无侵入,如客户无需修改CUDA运行库等,就能让客户灵活地利用容器调度底层GPU资源。
用尽每一寸GPU,阿里云cGPU容器技术帮助人工智能提效降本

相关产品

  • GPU云服务器