GPU虚拟化现状及新技术方案XPU
AI行业现状
随着我国“新基建”的启动,AI(Artificial Intelligence,人工智能)和5G、大数据中心、工业互联网等一起构成了新基建的7大核心突破领域。AI将渗透到各个行业,变得越来越“基础设施化”。
德勤在2020上半年发布的《全球人工智能发展白皮书》预测数据表明:2025年世界人工智能市场将超过6万亿美元;中国人工智能核心产业规模到2020年将增长至1600亿元,带动相关产业规模超过一万亿元。
作为AI市场中的重要组成,以GPU、FPGA等为主的AI加速器市场发展也随之水涨船高。2020年5月11日IDC发布的《人工智能基础架构市场(2019下半年)跟踪》报告表明,到2024年中国GPU服务器市场规模将达到64亿美元。
GPU虚拟化背景
目前来看,绝大多数公司使用的是英伟达(NVIDIA)的公司的计算卡,所以下面主要介绍基于NVIDIA的技术现状。
从用户角度,GPU虚拟化实现可以分为2种类型:
硬件层面
主要是NVIDIA本身的虚拟化方案:NVIDIA GRID以及NVIDIA MPS。
NVIDIA GRID这个技术目前来看主要针对的是虚拟机平台,在技术特性方面也有明确写出某些功能不支持,其次NVIDIA GRID技术需要购买NVIDIA公司的软件授权才能使用,这个授权费相当昂贵。
NVIDIA MPS技术是NVIDIA对GPU共享的最早的一种支持模式,通过MPS server和MPS client就可以让多个GPU任务共享GPU的计算能力。对于容器平台,这种共享GPU的方式是一种可行性的选择。不过,这种指令代理技术有一个弊端,就是如果MPS Server挂掉或者其他MPS client端造成的非正常性退出,会导致处于同一个MPS server下的所有MPS client都受到影响,这种影响对于提供共享服务的平台来说是灾难性的,所以在生产环境几乎没有使用该方案。
NVIDIA以上2种的共享方式都不支持根据用户申请的请求对GPU计算能力的时间分片特性,GPU的使用是抢占式使用,无法做到资源的隔离。
软件层面
该层面实现GPU虚拟化,又分为两种主要实现方式:
1. 实现在NVIDIA CUDA Library API之上,它通过劫持对CUDA API的调用来做到GPU的虚拟化,此类方案缺点是兼容性依赖于厂商,每个版本需要对齐,同时需要重新编译AI应用,对于用户来说使用成本较高。
2. 实现在内核NVIDIA Driver之上。采用零侵入式的设计,使用上对用户可以做到无感知,对于CUDA的版本依赖较小。但该方案整体实现难度较大,需要对Linux内核和GPU架构的原理和实现有深入理解。
XPU方案
XPU是优优工场(YOYOWORKS)推出的容器GPU虚拟化产品。XPU正是采用前文所述的第二种实现方式,核心思想是将GPU在内核层进行切分,向上模拟出统一的XPU设备供容器使用,即多个容器共享一张GPU卡。XPU实现了一套框架能够很好的屏蔽异构GPU和应用(TensorFlow,PyTorch等)之间的耦合,对GPU进行故障隔离,显存隔离,算力隔离,从而实现业务的安全隔离,提高GPU硬件资源的利用率并降低使用成本。
XPU特点
XPU采用零侵入式架构设计,通过kernel module,services及container runtime为容器提供虚拟的GPU设备,在保证性能的前提下隔离显存和算力,为充分利用GPU硬件资源进行训练和推理提供有效保障。
- 高性能
- 采用本地使用GPU计算资源的架构,有天然的性能优势,相比于物理GPU,性能损耗几乎为零。
- 支持将GPU切片为任意大小的XPU,从而允许多AI负载并行运行,提高物理GPU利用率。
- 提高GPU综合利用率多达3-10倍,1张卡相当于起到N张卡的效果,真正做到昂贵算力平民化。
- 安全性
- 完美支持GPU单卡和多卡的算力隔离,显存隔离及故障隔离。
- 兼容性
- 零侵入设计: 最大的限度保证向后和向前兼容。用户零开销在 XPU 平台上运营现有AI应用,无缝兼容已有NGC等容器镜像。
- 硬件兼容性: 完美支持包括NVIDIA Pascal及以后架构的系列 GPU(GeForce,Quadro/RTX,Tesla);支持裸金属和虚拟环境,支持物理GPU和vGPU。
- 架构兼容性:依托实现在内核模块层的通用接口能力,XPU 完美支持CUDA8.0 及以后所有版本的框架和应用。
- 生态兼容性:兼容业界标准的Kubernetes和NVIDIA Docker产品和方案。
软件架构
一个典型的XPU部署架构,主要包含两大部分: 系统相关部分及容器相关部分功能组件。XPU通过将物理GPU等设备进行划分和隔离,向上提供切分后的算力,有效提高异构计算资源的利用率。其逻辑结构图如下所示:
系统相关部分包括:XPU toolkit,XPU services & XPU driver module,其中XPU driver module为内核驱动,给容器提供虚拟的GPU设备,提供有QoS保证的显存和算力。
容器相关部分为XPU container runtime,作为Docker container的对应工具,主要实现将XPU设备映射给容器,让容器内的能够识别经过虚拟化的GPU设备,从而实现在容器内运行GPU相关负载。
部署形态
XPU的各个组件,支持直接部署在裸金属服务器上,即安装操作系统后,直接以Binary形式部署,也支持虚拟化部署。XPU具备适配多种Linux操作系统和云平台的能力,因此,XPU具有多样化的部署形式。
XPU支持CentOS、Ubuntu等主流Linux发行版本,同时支持基于KVM的虚拟机云平台和基于Docker的容器云平台。尤其是支持原生容器,并实现了和Kubernetes的平滑对接。
XPU与容器的集成
XPU采用0侵入部署方式,支持原生容器,即可运行AI应用,大大简化了客户算法工程师运维、管理AI基础架构的工作。在NVIDIA Docker的基础上,通过实现一套XPU container runtime,完成XPU在容器内的创建,删除以及监控等功能。
用户通过设置Docker环境变量的方式,用于为容器申请不同规格的XPU设备,XPU container runtime将虚拟出来的XPU,通过Docker暴露给容器内的程序使用。在K8S集群中,该组件用于接收K8S调度Pod设置的环境变量来负责创建相应规格的XPU容器。
XPU与Kubernetes集成
利用K8S的device plugin及extended resources机制,将XPU集成到K8S集群中。
K8S device plugin机制如下图所示:
XPU为Kubernetes提供两个插件,实现与K8S的集成对接。集成后,系统管理员只需要在K8S中,即可完成对GPU资源的集中配置和调度管理。并且,允许系统管理员通过单一接口调度全部数据中心资源,实现SDDC(Software Defined Data Center,软件定义的数据中心),这样就简化了运维工作。
XPU为Kubernetes提供的两个插件是:
- XPU Kubernetes Device Plugin
- 通过和XPU driver module 及XPU Services通讯,获取XPU资源池信息。
- 通过Kubernetes定义的Device Plugin标准向Kubernetes注册名字为yoyoworks.com/xpu-shares的资源。
- XPU Kubernetes Scheduler Extender
- 提供基于HTTP API通讯的松耦合调度扩展功能。
通过配置文件向Kubernetes注册名字为yoyoworks.com/xpu-shares的资源关键字,使其指向XPU Kubernetes Scheduler Extender的HTTP服务地址。
兼容性列表
NVIDIA GPU
完全支持 NVIDIA Pascal 及以后架构,包括GeForce/Quadro/RTX/Tesla 全系列GPU 卡;
- 支持裸金属环境下使用物理 NVIDIA GPU
- 支持虚拟化环境下使用穿透的 NVIDIA GPU
- 支持虚拟化环境下使用 NVIDIA GRID vGPU
- 支持虚拟化环境下使用穿透的 NVIDIA GPU
典型 NVIDIA GPU
Telsa |
A100/A10/A16/A30/A40 T4 V100 P100/P40/P6/P4 |
RTX |
A6000/A5000/A4000 |
Quadro |
RTX8000/RTX6000/RTX5000/RTX4000 P6000/P5000/P4000 |
GeForce |
3090/3080Ti 等30XX 系列 2080Ti/2080 等20XX 系列 1080Ti/1080 等10XX 系列 |
注:上述列出的只是 NVIDIA GPU 典型型号,通常XPU 兼容Pascal 及之后所有 NVIDIA GPU。
操作系统
CentOS 7.9/8.4, RHEL 7.9/8.4(64位)
Ubuntu Server 18.04/20.04 LTS(64位)
NVIDIA CUDA
完全支持 CUDA 8.x, CUDA 9.x, CUDA 10.x, CUDA 11.x 容器以及 CUDA 应用
注:只支持 64 位 CUDA 容器和 CUDA 应用
云平台
容器环境:Docker 19.03 及以后版本
Kubernetes环境:Kubernetes 1.18及以后版本
来源:优优工场(YOYOWORKS)
GPU虚拟化现状及新技术方案XPU相关推荐
- 【技术系列】浅谈GPU虚拟化技术(第一章)
摘要: GPU深度好文系列,阿里云技术专家分享 第一章 GPU虚拟化发展史 GPU的虚拟化发展历程事实上与公有云市场和云计算应用场景的普及息息相关.如果在10年前谈起云计算,大部分人的反应是" ...
- 第一章 GPU虚拟化发展史
第一章 GPU虚拟化发展史 GPU的虚拟化发展历程事实上与公有云市场和云计算应用场景的普及息息相关.如果在10年前谈起云计算,大部分人的反应是"不知所云".但是随着云计算场景的普 ...
- GPU虚拟化桌面云方案介绍-概述、场景及优势
GPU虚拟化桌面云是面向计算资源高要求行业提供的高性能云桌面方案.. 方案采用自主研发的显卡虚拟化(vGPU)技术,将服务器端显卡资源共享给所有虚拟机使用,每个虚拟机都可以获得独立的 GPU 资源,实 ...
- 第二章 GPU虚拟化方案之——GPU直通模式
第二章 GPU虚拟化方案之--GPU直通模式 目前流行的商用GPU虚拟化方案可以分为以下几类:GPU 直通模式,GPU SRIOV 模式,GPU 半虚拟化(mediated passthrough:包 ...
- linux内核 gpu,科学网—Intel GPU虚拟化方案 KVMGT 正式进入Linux 内核 4.10 - 戚正伟的博文...
Linus Torvalds 在内核邮件列表上宣布释出 Linux 4.10.Linux 4.10 的主要特性包括:加入了 GPU虚拟化方案 Intel GVT-g for KVM (a.k.a. K ...
- 揭秘GPU虚拟化,算力隔离,和最新技术突破qGPU
原文:https://www.toutiao.com/i6969464502689595935/ 〇.本文写作背景 大约 2 年前,在腾讯内网,笔者和很多同事讨论了 GPU 虚拟化的现状和问题.从那以 ...
- GPU虚拟化,算力隔离,和qGPU
作者:jikesong,腾讯 CSIG 腾讯云异构计算研发副总监 〇.本文写作背景 大约 2 年前,在腾讯内网,笔者和很多同事讨论了 GPU 虚拟化的现状和问题.从那以后,出现了一些新的研究方向,并且 ...
- GPU — 物理 GPU 虚拟化技术
目录 文章目录 目录 物理 GPU 虚拟化技术 SR-IOV Passthrough vGPU API Forwarding vGPU Mediated Passthrough vGPU NIVDIA ...
- GPU虚拟化时代的到来(vGPU)!CitrixNVIDIA联合研发虚拟化共享GPU技术预览
GPU虚拟化共享(VGPU)技术 针对当前的桌面虚拟化方案,NVIDIA GRID技术提供了基于硬件加速的图像显卡.他可以提供给以下两种用户以更好的性能: 通过GPUPass-through方式提供给 ...
最新文章
- 快速创建Angular组件并定义传参、绑定自定义事件的方法
- 华为正式发布5G商用芯片、5G终端!
- getcontentpane java_java – 为什么getcontentpane()未定义?
- 【深度学习】你心目中 idea 最惊艳的深度学习领域论文是哪篇?
- dotnet cli 5.0 新特性——dotnet tool search
- Python:递归输出斐波那契数列
- sorted_一个函数秒杀冒泡排序算法和选择排序
- (数论)51NOD 1136 欧拉函数
- Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序
- ass字幕导入Premiere的另一种思路 用ffmpeg把ass转换成颜色通道和透明度通道两个视频
- 怎么语音转文字?快来看看这些方法
- 马斯克在推特说特斯拉股价太高导致大跌 会被罚吗
- Python实战项目:代码秒抢红包详解
- 使用canvas绘制一个三角形
- (数据结构基础)Among the following threaded binary trees (the threads are represented by dotted curves),……
- 报表服务器的配置不正确的是,用友T3财务报表打开提示不能登录到服务器,请检查服务器配置?...
- 学计算机学费一万多吗,计算机专业的学费是多少
- vue项目,报错This is probably not a problem with npm,there is likely additional logging output above
- 【笨木头Unity】入门之旅003:HelloWorld
- GC算法与GC收集器
热门文章
- Android后台播放音乐保活,安卓后台保活黑科技 播放无声音乐
- 【Photoshop_CC_2018】msvcr120.dll丢失及应用程序无法正常启动0xc000007b修复dll问题解决
- Android处理图片OOM的若干方法小结
- MYSQL数据库命令+操作----最详细的操作教程(测试木头人)
- 使用YOLOV7训练BDD100K数据集(数据格式转化+训练全流程)
- 生成1-30的随机数,生成-30到30的随机数
- 深度剖析E680G开发五.移植OPIE操作系统(下)-编译和运行OPIE
- Android知识点 006.02 —— Android Studio 3.6.1 导出apk
- 情暖童心,共筑未来;周匠人珠宝关爱在行动
- SmartPhone手机上查看QQ天气预报