GPU虚拟化技术探索

文摘   科技   2024-08-30 17:00   北京  

编者荐语:



随着人工智能、大数据分析和高性能计算技术的快速发展,GPU资源的高效利用成为企业关注的焦点。GPU虚拟化技术作为一项关键技术,能够显著提高资源利用率,降低硬件成本,并提供灵活的资源调度能力。本文分析了多种GPU虚拟化方式,期望为研究者和工程师们提供有价值的参考,助力其在相关领域的技术探索与应用。


GPU虚拟化技术探索
亚信科技(中国)有限公司
摘要本文深入探讨了GPU虚拟化技术在容器环境中的应用与管理,详细介绍了GPU虚拟化的背景与需求、主要目标、实现方式以及在云计算、深度学习、数据分析等领域的应用场景。此外,本文还对现有的GPU虚拟化技术进行了比较,探讨了各自的优缺点及适用场景,旨在为相关领域的研究和应用提供技术指导和借鉴。

前言
随着人工智能(AI)、大数据分析、深度学习和高性能计算等新兴技术的发展,计算密集型任务和数据处理需求迅速增加。传统的以CPU为主的计算架构在面对这些需求时逐渐显得力不从心。GPU(图形处理单元)凭借其强大的并行计算能力,在大规模数据处理和复杂计算任务中表现出色。然而,由于GPU设备的高成本和管理复杂性,企业在利用GPU资源时面临诸多挑战。特别是在云计算环境中,如何高效地分配和管理GPU资源,确保资源利用率最大化,同时满足不同用户和应用的需求,成为一个亟待解决的问题。GPU虚拟化技术应运而生,通过将物理GPU资源虚拟化为多个逻辑GPU资源,使得多个应用可以共享同一物理GPU,从而提高资源利用率,降低硬件成本,并提供灵活的资源调度能力。GPU虚拟化的主要目标是通过软件技术,将物理GPU资源虚拟化为多个逻辑GPU资源,使得多个虚拟机或容器可以共享同一个物理GPU设备。这不仅可以提高GPU资源的利用率,降低企业的硬件投资和运维成本,还可以实现资源的按需分配和动态调整,支持多种应用场景和业务需求。在安全性方面,GPU虚拟化技术能够提供资源隔离,确保不同租户之间的互不干扰,满足多租户环境中的安全需求。同时,通过GPU虚拟化,可以简化资源管理,提高系统的灵活性和扩展性,为企业在云计算、深度学习、数据分析等领域的应用提供有力支持。

GPU虚拟化技术概述
(一)GPU虚拟化的基本概念


GPU虚拟化是指通过软件技术,将物理GPU资源虚拟化为多个逻辑GPU资源,以便多个虚拟机或容器能够共享同一个物理GPU设备。这种虚拟化技术包括以下几种主要方式:


•  直通(Pass through):将整个物理GPU设备直接分配给一个虚拟机或容器,适用于对GPU性能要求较高的应用,但缺乏灵活性和资源共享能力。


 共享(Sharing):将物理GPU设备划分为多个逻辑单元,多个虚拟机或容器可以共享同一个GPU资源,实现了资源的共享和隔离,提高了资源利用率,适用于并发较高但对性能要求不高的应用,但在性能和隔离性方面存在一定的限制。


•  全虚拟化(Full Virtualization):通过软件模拟GPU硬件,使得虚拟机或容器可以独立运行,适用于对资源隔离和安全性要求较高的应用,但由于性能损耗较大,主要应用于对安全性要求较高的场景。


•  GPU池化(GPU Pooling):将多个物理GPU资源统一管理和调度,实现了资源的按需分配和动态调整,提供了更高的资源利用率和调度灵活性。


(二)GPU虚拟化的发展历程


GPU虚拟化技术经历了从简单虚拟化到任意虚拟化,再到远程调用和资源池化的发展历程。每一步的发展都带来了更高的资源利用率和更强的灵活性。


图1:GPU虚拟化技术发展四阶段


•  简单虚拟化:物理GPU固定切分,按2的N次方切分为多个vGPU。


•  任意虚拟化:将物理GPU从算力和显存两个维度按百分比切分为多个vGPU。


•  远程调用:AI应用与物理GPU服务器分离部署,允许通过高性能网络点对点远程调用GPU资源。

•  资源池化:统一的GPU资源调度管理平台;vGPU资源动态伸缩灵活调度;统一API接口,对接SDDC


(三)GPU虚拟化的应用场景


GPU虚拟化技术广泛应用于以下领域:


•  云计算:在云计算环境中,通过GPU虚拟化技术,可以为用户提供灵活、高效的计算资源,支持复杂的AI训练和推理任务。


•  深度学习:在深度学习模型训练和推理中,GPU虚拟化技术可以提高计算效率,缩短训练时间,支持大规模数据处理和复杂模型的训练。


•  数据分析:在大数据分析领域,通过GPU虚拟化技术,可以加速数据处理和分析,提高数据处理的效率和精度。


•  图形渲染:在图形渲染和虚拟现实等应用中,GPU虚拟化技术可以提供高性能的图形处理能力,支持复杂的图形渲染和实时交互。

GPU虚拟化关键技术

虚拟化技术实现体现三个层次,即用户层、内核层和硬件层。然后在根据技术的应用场景分为隔离场景(容器和虚机)和硬件场景(虚拟桌面、渲染和AI计算)两个维度,不同的技术可能仅适用它对应的场景。


图2:GPU虚拟化技术实现


在不同软硬件层技术实现可分类为:


•  用户层:API 拦截和 API forwarding。
•  内核层:GPU 驱动拦截;GPU 驱动半虚拟化:Para Virtualization。
•  硬件层:
硬件虚拟化:Virtualization;
SRIOVSingle Root I/O Virtualization;
Nvidia MIGMulti-Instance GPU。


(一)GPU 用户层虚拟化技术


用户层虚拟化技术包含本地 API 拦截和 API forwarding、远程 API forwarding、半虚拟化 API forwarding三种。


技术1:本地 API 拦截和 API forwarding


图3:本地 API 拦截和 API forwarding


通过在用户态创建一个中间库,拦截应用程序对底层 GPU 库的调用,并在中间库中处理和转发这些调用,从而实现对 GPU 资源的虚拟化管理。


调用步骤:

1.应用调用 libwrapper:应用程序(APP)调用 libwrapper 中的函数。

2.拦截和解析:libwrapper拦截应用的函数调用,解析参数。

3.调用底层库:使用解析后的参数,通过 dlopen 动态打开底层库,调用相同名称的函数。

4.返回结果: 调用完成后,libwrapper 将结果返回给应用程序。


关键点:

•  静态链接变动态链接:应用程序和底层库的静态链接需要变为动态链接。

•  动态库加载:libwrapper需要使用 dlopen 动态加载底层库。


我们可以通过GPU 用户层的 API 拦截与转发技术实现在用户态对底层库的 API 调用进行控制和管理。


技术2:远程 API forwarding


图4:远程 API forwarding


远程 API 转发技术允许 GPU 资源在不同的物理机器之间共享。通过将 GPU 调用转发到远程机器上的底层库,系统可以实现 GPU 资源池化,从而使不具备 GPU 的机器也能够利用 GPU 进行计算。


技术说明:

1.网络调用底层库:libwrapper 通过网络调用位于不同机器上的底层库。

2.库分为两部分:客户端(client):负责转发请求;服务器端(server):负责接收请求并调用底层库。

3.GPU 池化: 可以将多个 GPU 组成调用池,允许多个客户端调用这些 GPU,从而实现让不具备 GPU 的机器也能使用 GPU 的功能。


关键点:

•  类似 RPC 的函数调用:调用函数需要进行参数的序列化和反序列化。

•  性能优化:对于本机来说,远程数据传输的性能对函数调用的延迟影响很大。通常可以通过 RDMA(远程直接内存访问)进行网络加速。


该技术可以实现远程 GPU 的 API 转发,优化 GPU 资源的利用,增强系统的计算能力。


技术3:半虚拟化 API forwarding


图5:virgl+virtio-gpu实现


半虚拟化API 转发技术通过虚拟化和半虚拟化的方式,实现虚拟机中的应用程序对宿主机GPU资源的调用,从而在虚拟化环境中高效地利用GPU资源。


实现方案:
1. 虚拟机中的运行环境:应用程序(APP)和libwrapper在虚拟机中运行。

2. 半虚拟化通讯:libwrapper通过半虚拟化方式(virtio)进行通讯,调用宿主机的底层库。

3. virtio实现:

•  虚拟机内核实现virtio frontend。

•  宿主机的hypervisor实现virtio backend。
4. 底层库调用:宿主机负责完成底层库的调用。


关键点:

•  共享内存:virtio通过共享内存的方式在虚拟机和宿主机之间共享数据,减少了数据拷贝。


通过半虚拟化API转发技术,可以实现虚拟机环境下的GPU半虚拟化API转发,有效利用宿主机的GPU资源。


(二)GPU内核层虚拟化


内核层虚拟化技术包含内核层GPU驱动拦截和内核层GPU驱动半虚拟化两种。


技术1:内核层GPU驱动拦截

图6:内核层GPU驱动拦截


内核层GPU驱动拦截技术通过在内核中创建一个模块来拦截对GPU驱动的访问,从而实现对GPU资源的虚拟化管理。此方法适用于容器化应用。


实现原理:
1. 设备文件拦截:底层库通常通过设备文件(如 /dev/realgpu)访问GPU驱动的功能。

2. 内核模块创建模拟设备文件:实现一个内核模块,输出模拟的设备文件/dev/fakegpu给用户空间。

3. 伪装设备文件:将模拟的设备文件通过bind mount的方式挂载到容器中,伪装成真正的设备文件/dev/realgpu。
4. 容器内运行环境:应用程序(APP)和底层库都在容器内运行。底层库访问伪装的设备文件/dev/realgpu,此时所有访问都被内核模块拦截。

实现关键:

•  理解系统调用:需要了解底层库调用GPU驱动的系统调用的具体含义。

•  拦截必要调用:内核拦截模块只需要拦截必要的系统调用。

这项技术使得GPU资源可以在容器化环境中被有效地虚拟化和管理。

技术2:内核层GPU驱动半虚拟化

用户进程通过系统虚拟化层(hypervisor)提供的虚拟化接口,访问(真实的)虚拟化接口。


图7:GPU驱动半虚拟化


内核层GPU驱动半虚拟化技术通过在虚拟机环境中实现对GPU资源的虚拟化管理,适用于虚拟机应用。


实现原理:
1. 虚拟机内的运行环境:应用程序(APP)和底层库都在虚拟机中运行。

2. 半虚拟化接口:虚拟机的GPU驱动实现半虚拟化接口,通过类似hypercall的方式调用宿主机实际的GPU驱动。

3. hypercall机制:hypercall切换虚拟机(guest)到虚拟机管理程序(hypervisor),由hypervisor通过内核中的驱动代理来访问实际的GPU驱动。

实现关键:

•  适用范围:适用于虚拟机应用。


通过该技术,可以在虚拟机环境中高效地虚拟化和管理GPU资源。


(三)GPU硬件层虚拟化


硬件层虚拟化需要软件和硬件结合才能实现,其中需要硬件的支持的部分包括:

•  支持CPU和内存的硬件虚拟化。相关技术包括:Intel VT-XAMD AMD-VARM 8.3 VHERISC-V Hypervisor Extension等。

•  支持IOMMU。DMA remappingInterrupt remapping;硬件隔离和页表机制;相关技术包括:IntelVT-DAMD IOMMUARM SMMU等。

下面主要介绍全虚拟化/透传GPU技术及NVIDIA显卡相关的4项GPU虚拟化技术。

技术1:全虚拟化/透传GPU

图8:透传GPU


全虚拟化,也称为透传GPU,是一种将GPU直接分配给虚拟机的方法,使虚拟机能够以最小的性能损耗访问真实的硬件资源。

实现原理:

1. 虚拟机GPU驱动:虚机的GPU驱动无需做任何修改,能够直接访问真实的硬件资源。

2. GPU透传:整个GPU透传给虚拟机,确保性能损耗最小。


实现关键:

•  适用范围:适用于虚拟机应用和云GPU服务器。

•  资源共享限制:由于无法实现GPU资源共享,一般认为这不属于严格意义上的GPU虚拟化。

这项技术在需要高性能GPU访问的虚拟化环境中非常有效。


技术2:NVIDIA vGPU

图9:NVIDIA vGPU方案


NVIDIA vGPU NVIDIA特有的虚拟化技术,旨在支持虚拟机环境中的GPU资源分配和管理。

实现原理:

1. 特定驱动安装:虚拟机内核需要安装特定的GPU虚拟化驱动,即GRID驱动,与物理机安装的驱动不同。

2. 显存分配:显存按照固定切分,直接分配给虚拟机。

3. 算力调度:采用时分方案,按时间片将GPU算力分配给虚拟机。


实现关键:

•  适用范围:适合云GPU服务器。

•  收费模式:该软件需要付费使用。


NVIDIA vGPU提供了一种高效的方式来管理虚拟机中的GPU资源,适用于需要高性能图形和计算能力的场景。


技术3:NVIDIA MIG

NVIDIA多实例GPUMulti-Instance GPU,简称 MIG)是 NVIDIA 在 H100A100A30 系列 GPU 卡上推出的一项新特性, 旨在将一块物理 GPU 分割为多个 GPU 实例,以提供更细粒度的资源共享和隔离。MIG 最多可将一块 GPU 划分成七个 GPU 实例, 使得一个 物理 GPU 卡可为多个用户提供单独的 GPU 资源,以实现最佳 GPU 利用率。

这个功能使得多个应用程序或用户可以同时共享GPU资源,提高了计算资源的利用率,并增加了系统的可扩展性。

通过 MIG,每个 GPU 实例的处理器在整个内存系统中具有独立且隔离的路径——芯片上的交叉开关端口、L2 高速缓存组、内存控制器和 DRAM 地址总线都唯一分配给单个实例。

图10:NVIDIA硬件切分方案


NVIDIA MIG方案适合容器化部署,云原生场景。


技术4:NVIDIA MIG vGPU

图11:NVIDIA MIG vGPU


NVIDIA MIG vGPU 是将多实例 GPUMIG)和虚拟 GPUvGPU)相结合的一种技术,旨在优化虚拟机中的 GPU 资源分配。

实现原理:

1. 资源切分: 显存和算力按照 MIG 硬件的切分方式,直接分配给虚拟机。

2. 性能优势: 相较于传统的 vGPUMIG vGPU 在算力损耗方面更小。


实现关键:

•  适用范围:适合虚拟机应用和云 GPU 服务器。


通过 MIG vGPU,用户可以更高效地利用 GPU 资源,提升虚拟化环境中的性能表现。


(四)GPU虚拟化技术对比


在用户层、内核层、硬件层的GPU虚拟化技术对比如下:

表1:GPU虚拟化技术对比


(五)业界GPU虚拟化方案对比


当前业界主要的GPU虚拟化方案对比如下:

表2:业界GPU虚拟化方案对比


GPU虚拟化技术初探

本章节主要探索容器环境下GPU资源管理的技术,首先介绍Kubernetes管理 GPU 资源的插件机制,然后尝试在Kubernetes环境下对NVIDIA GPU资源整卡模式及vGPU模式使用进行探索。


(一)GPU虚拟化在容器中的实现


由于近几年 AI 技术愈发成熟,落地场景越来越多,对 GPU的需求呈井喷趋势。而在资源管理调度平台上,Kubernetes 已成为事实上的标准。所以很多客户选择在 Kubernetes 中使用 GPU 运行 AI 计算任务。Kubernetes 本身是通过插件扩展的机制来管理 GPU 资源的。

通过DevicePlugin实现GPU资源的管理和分配。DevicePlugin通过gRPCkubelet通信,汇报节点上的GPU资源,并在容器创建时进行资源分配。

•  DevicePlugin机制Kubernetes通过DevicePlugin机制,实现对GPU等硬件资源的管理。DevicePlugin通过gRPCkubelet通信,汇报节点上的GPU资源,并在容器创建时进行资源分配。

•  资源汇报DevicePlugin定期向kubelet汇报节点上的GPU资源,如设备列表和可用数量。kubelet在接收到资源汇报后,将资源信息更新到APIServer中,供调度器使用。

•  资源分配:在容器创建时,kubelet根据调度器的调度决策,向DevicePlugin发起资源分配请求,分配GPU资源并将资源信息传递给容器。

下图展示的是Device Plugin 与 Kubelet 交互过程:

图12:Device Plugin 与 Kubelet 交互过程


对于每一种硬件设备,都需要有它所对应的 Device Plugin 进行管理,这些 Device Plugin,都通过 gRPC 的方式同 kubelet 连接起来。以 NVIDIA GPU 为例,它对应的插件叫作NVIDIA GPU device plugin。DevicePlugin 注册一个socket 文件到 /var/lib/kubelet/device-plugins/ 目录下,Kubelet 通过这个目录下的socket 文件向对应的 DevicePlugin 发送gRPC 请求。


Device Plugin 会通过一个叫作 ListAndWatch 的 API,定期向 kubelet 汇报该 Node 上 GPU 的列表。比如,一共有三个 GPU(GPU0、GPU1 和 GPU2)。这样,kubelet 在拿到这个列表之后,就可以直接在它向 APIServer 发送的心跳里,以 Extended Resource 的方式,加上这些 GPU 的数量,比如nvidia.com/gpu=3。


当 kubelet 发现这个 Pod 的容器请求一个 GPU 的时候,kubelet 就会从自己持有的 GPU 列表里,为这个容器分配一个 GPU。此时,kubelet 就会向本机的 Device Plugin 发起一个 Allocate() 请求。这个请求携带的参数,正是即将分配给该容器的设备 ID 列表。


当 Device Plugin 收到 Allocate 请求之后,它就会根据 kubelet 传递过来的设备 ID,从 Device Plugin 里找到这些设备对应的设备路径和驱动目录。比如,在 NVIDIA Device Plugin 的实现里,它会定期访问 nvidia-docker 插件,从而获取到本机的 GPU 信息。而被分配 GPU 对应的设备路径和驱动目录信息被返回给 kubelet 之后,kubelet 就完成了为一个容器分配 GPU 的操作。接下来,kubelet 会把这些信息追加在创建该容器所对应的 CRI 请求当中。这样,当这个 CRI 请求发给 Docker 之后,Docker 为你创建出来的容器里,就会出现这个 GPU 设备,并把它所需要的驱动目录挂载进去。


(二)Kubernetes上对NVIDIA GPU资源管理探索


同普通计算机硬件一样,NVIDIA GPU 卡作为物理硬件,必须安装 NVIDIA GPU 驱动后才能使用。为了降低用户在kubernetes上使用 GPU 的成本,NVIDIA 官方提供了 NVIDIA GPU Operator 组件来管理使用 NVIDIA GPU 所依赖的各种组件。这些组件包括 NVIDIA 驱动程序(用于启用 CUDA)、NVIDIA 容器运行时、GPU 节点标记、基于 DCGM 的监控等。 理论上来说用户只需要将 GPU 卡插在已经被kubernetes所纳管的计算设备上,然后通过 GPU Operator 就能使用 NVIDIA GPU 的所有能力了。

NVIDIA 在 GPU 的使用方式上提供了如下3种解决方案:


•  整卡(Full GPU)

整卡是指将整个 NVIDIA GPU 分配给单个用户或应用程序。在这种配置下,应用可以完全占用 GPU 的所有资源, 并获得最大的计算性能。整卡适用于需要大量计算资源和内存的工作负载,如深度学习训练、科学计算等。


•  vGPU(Virtual GPU)

vGPU 是一种虚拟化技术,允许将一个物理 GPU 划分为多个虚拟 GPU,每个虚拟 GPU 分配给不同的虚拟机或用户。 vGPU 使多个用户可以共享同一台物理 GPU,并在各自的虚拟环境中独立使用 GPU 资源。 每个虚拟 GPU 可以获得一定的计算能力和显存容量。vGPU 适用于虚拟化环境和云计算场景,可以提供更高的资源利用率和灵活性。


•  MIG(Multi-Instance GPU)

MIG 是 NVIDIA Ampere 架构引入的一项功能,它允许将一个物理 GPU 划分为多个物理 GPU 实例,每个实例可以独立分配给不同的用户或工作负载。 每个 MIG 实例具有自己的计算资源、显存和 PCIe 带宽,就像一个独立的虚拟 GPU。 MIG 提供了更细粒度的 GPU 资源分配和管理,可以根据需求动态调整实例的数量和大小。 MIG 适用于多租户环境、容器化应用程序和批处理作业等场景。

在测试K8S中管理NVIDIA GPU需要先安装配置NVIDIA  GPU Operator 。在测试环境 CentOS 7.9,安装内核为 3.10.0-1160 的 GPU Operator包。安装时指定插件安装的命名空间等,并配置Operator 参数配置、Driver 参数配置。当前仅尝试使用整卡模式和vGPU模式。


1. NVIDIA GPU 整卡模式


前置条件:当前集群已安装 GPU Operator 并已启用 NVIDIA DevicePlugin 当前集群内 GPU 卡未进行任何虚拟化操作或被其它应用占用。

创建工作负载申请 GPU 资源,在资源申请和限制配置中增加 nvidia.com/gpu: 1 参数配置应用使用物理卡的数量,输入值必须为整数且小于等于宿主机上的卡数量。


Demo使用 YAML 配置:


2. NVIDIA vGPU 模式


1安装vGPU插件参数配置说明:

•  deviceCoreScaling NVIDIA 装置算力使用比例,预设值是 1。可以大于 1(启用虚拟算力,实验功能)。如果我们配置 devicePlugin.deviceCoreScaling 参数为 S,在部署了我们装置插件的 Kubernetes 集群中,这张 GPU 分出的 vGPU 将总共包含 S * 100% 算力。

•  deviceMemoryScaling NVIDIA 装置显存使用比例,预设值是 1。可以大于 1(启用虚拟显存,实验功能)。 对于有 显存大小的 NVIDIA GPU,如果我们配置 devicePlugin.deviceMemoryScaling 参数为 S, 在部署了我们装置插件的 Kubernetes 集群中,这张 GPU 分出的 vGPU 将总共包含 S * M 显存。

•  deviceSplitCount :整数类型,预设值是 10GPU 的分割数,每一张 GPU 都不能分配超过其配置数目的任务。 若其配置为 的话,每个 GPU 上最多可以同时存在 个任务。

•  Resources :就是对应 vgpu-device-plugin 和 vgpu-schedule pod 的资源使用量。

•  ServiceMonitor :默认不开启,开启后可前往可观测性模块查看 vGPU 相关监控。如需开启,请确保 insight-agent 已安装并处于运行状态,否则将导致 NVIDIA vGPU Addon 安装失败。

2安装成功之后会在指定 Namespace 下出现如下两个类型的 Pod,即表示 NVIDIA vGPU 插件已安装成功:


3测试vGPU


前置条件:
•  集群节点上具有对应型号的 GPU 

•  已成功安装 vGPU Addon

•  已安装 GPU Operator,并已关闭 Nvidia.DevicePlugin 能力。


工作负载配置以下相关参数:
•  物理卡数量(nvidia.com/vgpu):表示当前 Pod 需要挂载几张物理卡,输入值必须为整数且 小于等于 宿主机上的卡数量。

•  GPU 算力(nvidia.com/gpucores): 表示每张卡占用的 GPU 算力,值范围为 0-100; 如果配置为 0, 则认为不强制隔离;配置为100,则认为独占整张卡。

•  GPU 显存(nvidia.com/gpumem): 表示每张卡占用的 GPU 显存,值单位为 MB,最小值为 1,最大值为整卡的显存值。


Demo使用 YAML 配置:


挑战与展望

本文介绍了GPU虚拟化技术基本概念及相关技术,尝试了在容器环境下对NVIDIA GPU资源管理的探索。GPU虚拟化技术在亚信科技智能计算引擎产品(AISWare ACE)中也得到了应用,提供GPU资源管理模块,支持NVIDIA CUDA多版本管理,为模型训练提供整卡、vGPU等能力。但当前也存在一些技术挑战。


当前面临的技术挑战


GPU虚拟化在实际应用中仍然面临一些技术挑战,如不同厂商GPU设备之间的兼容性问题、资源分配和调度的复杂性、资源隔离的安全性等。这些问题需要进一步的研究和解决。


•  兼容性问题:不同厂商的GPU设备在驱动程序、API接口和硬件架构上存在差异,如何实现对多种GPU设备的统一管理和调度,是一个亟待解决的问题。


•  资源分配和调度:在多租户环境中,如何实现资源的按需分配和动态调度,同时保证资源利用率和系统性能,是一个重要的技术挑战。


•  资源隔离和安全性:在多租户环境中,确保不同应用之间的资源隔离和安全性,防止资源争用和数据泄露,是一个关键问题。


(二)未来的发展方向与研究热点


未来,GPU虚拟化技术将进一步向着更高效、更灵活、更安全的方向发展。特别是在异构计算资源的统一管理、多租户环境下的资源隔离与共享、以及GPU池化等方面,将成为研究的热点和发展方向。


•  异构计算资源的统一管理:通过开发兼容多种计算设备的统一管理平台,实现对CPU、GPU、FPGA等异构计算资源的统一管理和调度,提高资源利用率和管理效率。


•  多租户环境下的资源隔离与共享:通过改进虚拟化技术,实现更高效的资源隔离和共享,确保不同租户之间的资源安全和性能稳定。


•  GPU池化技术的发展:通过GPU池化技术,实现对多个物理GPU资源的统一管理和调度,提供更高的资源利用率和调度灵活性。


通过对GPU虚拟化技术的研究和探索,可以为企业提供更加高效、灵活和安全的计算资源,支持其在AI、大数据等新兴领域的快速发展。为企业的数字化转型和业务创新提供有力支持。
参考资料

[1]https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/

[2] https://github.com/NVIDIA/k8s-device-plugin

[3] GPU虚拟化白皮书 – Imagination

亚信科技新技术探索
亚信科技的ICT前沿技术观点与行业洞见。展现亚信新技术与产品行业实践成果。
 最新文章