rechen2020
作者rechen20202022-05-05 11:16
系统架构师, 某大型银行

如何在容器云环境建设和优化GPU资源池加速AI工作负载交流难点总结

字数 15024阅读 788评论 0赞 4

导读:

随着金融科技的发展,大数据、AI人工智能等技术在银行智能风控、精准营销、信用风险定价、数据运营等应用场景的落地,金融企业IT基础设施需要为这些AI应用提供大量的算力资源。如果采用独占式使用模式的烟囱式的竖井结构,如一个AI应用场景提供一套硬件资源、每块GPU卡上只启动一个AI应用进程,每块GPU的卡算力和显存都没有得到有效利用。而随着AI应用的部署规模越大, 就越会出现算力资源使用和管理上的交付速度慢、业务伸缩能力弱、综合利用率低等问题。

GPU资源池化是对硬件资源实现统一管理,把GPU资源从硬件定义变成软件定义,能实现算力资源的共享与灵活调度。通过GPU资源池化技术将多个独立的GPU设备组建成共享资源池,可以高效稳定地动态切分、灵活调度和弹性使用GPU资源,从而提高GPU资源的利用率,提升基于可控性、可扩展性、安全性上的GPU资源配置和监控管理水平,有效地降低碎片化和算力整体建设成本。

当前GPU资源池的管理平台选型主流是选择基于Kubernetes技术的容器云平台,通过容器云平台实现分配与管理GPU算力资源,提供“GPU服务器硬件 + 软件定义GPU算力资源 +AI/机器学习平台”的一站式能力。容器云平台与GPU资源池化技术二者紧密结合,实现了GPU资源的统一分配和监控,对构建统一的AI业务平台起到了重要的基础设施支撑作用,同时也加快开发人员构建AI应用和高性能分析的速度,支持大型、复杂的训练和机器学习工作负载。

在容器云环境建设和优化GPU资源池的过程中,有以下三个核心难点和挑战:
1.缺少企业级服务支持模式的统一交付能力
平台为开发人员提供自服务模式的申请GPU算力资源能力,开发人员只需专注于研发更有价值的AI应用,不用在意底层技术。

2.平台的兼容性和可靠性
平台对硬件、基础系统软件、AI框架、AI应用、预训练模型和软件开发工具包提供兼容性和适配性保障。平台为各租户的资源保障强隔离的安全性和稳定运行的可靠性。

3.平台的可管理和可扩展性
平台需要提供全局统一的GPU资源配置、弹性伸缩、全局调度、性能监控、故障定位排障等运维能力,持续优化平台以实现对GPU资源池的降本增效和可持续发展的目标。
参与用户包括来自中国银行、人行软开、招商银行、兴业银行、江苏农信、阳光保险等XX家企业的一线技术精英参与到本次交流,针对容器云环境下GPU资源池建设过程中的实践经验与难点挑战,参会用户积极发表了自己的见解与看法。最终在热烈的氛围中交流研讨活动就GPU虚拟化技术选型达成了一致共识,挑战的痛难点也得到了一致的解答。本期重点从:GPU虚拟化技术路线选择、GPU资源池的规划建设和优化这二个方面细为22个交流主题进行总结,希望给大家在容器环境下建设GPU资源池提供一定的参考和帮助。

一、   GPU虚拟化技术路线选择

为了提高GPU的利用率、避免算力浪费,需要在单个GPU上运行多个容器。譬如AI工作负载落地时,在某些场景下AI模型在训练或者是推理时,其算力要求不需要占用整卡的GPU,比如只需要0.5卡GPU即可满足需求。在这种情况下,可以使用GPU虚拟化技术来解决这个问题,将整卡的GPU虚拟化为两个0.5卡的GPU,这样就可以在一张卡上同时跑两个以上的AI训练或者AI推理应用服务,极大压榨算力资源,降低成本。因此需要根据需求对GPU虚拟化技术路线进行匹配,选择合适的技术线路。下面的交流重点也是围绕容器云环境下,GPU虚拟化技术路线上应该怎么去选以及如何评估,给与大家一些参考帮助。

1、GPU、CPU优化利用?

如何通过GPU 计算节点与 CPU 指令集的配置,高效完成机器学习、深度学习、图像识别等 AI 计算任务,高性能地承载企业大规模并行计算需求,能否通过滚动升级方式,在主机不停机、应用不停服的状态下完成升级,有效保障企业业务的连续性?

嘉宾:Sam_Zhu Solution Architect , 红帽企业级开源解决方案中心
NGC应用市场有大量可用的GPU加速的AI模型镜像,数据科学家可以开箱即用,将关注点放在业务目标。同时容器和K8S编排技术的引入,正是让业务连续性有了很大程度的提升。红帽的企业级容器平台产品,可以将CPU 内存 GPU 磁盘等计算资源统一池化。一个集群的管理节点统一调度工作节点,容器化的应用可以根据负载分配策略分布在相应的节点。无论计划内升级停机还是故障宕机情况下,受影响的应用Pod可以迅速漂移到其他可用节点。因此,从用户服务的角度看是完全满足高可用和稳定性要求的。

嘉宾:Monica Wang NVIDIA AI Enterprise 产品经理 , NVIDIA英伟达

  1. NVAIE可以支持只有CPU的服务器完成机器学习任务。例如Triton Inference Server 用于多推理模型部署可以支持仅有CPU的服务器。

    1. NVAIE中GPU Operator,基础架构团队也可以将 CPU 映像与 GPU 工作节点一起使用。

2、 不同gpu共享方案区别及gpu隔离技术?

在使用GPU计算资源时通常会面临如下几个问题:
GPU资源管理困难。
GPU资源使用效率低。
GPU资源快速申请、回收困难。
为了彻底解决上述问题,业界提出了不同GPU共享方案。包括CUDA劫持、CUDA聚合、内核劫持、Mdev框架、Nvidia MIG等,请问这些方案具体有什么优势和劣势以及他们各自适用于哪些应用场景,在使用时是否需要特别指定。除此之外,如何将多个任务同时运行在同一张GPU卡上,同时对共享资源进行严格的隔离,行业现在有什么优秀的解决方案?

嘉宾:Cui Xiaonan DevRel , NVIDIA英伟达
关于GPU高效共享的解决方案,行业有很多的技术实现,大致分成Remote CUDA,CUDA原生实现,GPU硬件实现。

  1. R-CUDA的方案,也叫远程CUDA和CUDA劫持,是一种基于驱动或CUDA句柄的拦截和转发机制,英伟达官方并不支持这样的做法,尤其在跨服务器请求转发方面,其性能和效果对于网络和处理延时依赖较大,对于实时性的业务场景效果并不理想,同时随着GPU驱动的升级,对于其支持的周期风险很大。
  2. CUDA原生实现,主要指英伟达的vGPU全切分方案,通过定制的GPU驱动,实现GPU的时分切分,基于时间片轮训机制,实现GPU显存最小粒度的切分,该方案是英伟达的原生技术实现,需要相应的License和技术支持服务。
  3. GPU硬件切分技术,只要在A100和A30的GPU上提供,未来的H100也会支持,实现机制是通过GPU内部相应计算单元和显存单元的动态划分,实现硬件的空间切片,彼此的隔离性达到最佳,对于上层系统相对透明,且提供灵活的配置,该技术仅在A100和A30 GPU支持,不需要软件License。
    建议关注NVIDIA AI Enterprise软件套件,包含GPU切分和管理的全部软件功能,并且提供企业级的支持服务。

嘉宾:rechen 云计算架构师 , 招商银行
(1)GPU资源池管理平台的解决方案,当前有2种方向:一种是CUDA劫持、CUDA聚合、内核劫持模式,物理机部署K8S集群,使用K8S上的GPU共享隔离技术: vCUDA和cGPU 。另一种是用 GPU硬件切分、驱动定制模式,然后由虚拟化平台使用GPU直通模式到虚拟机,在虚拟机或者容器实例提供GPU能力,譬如 NVIDIA AI Enterprise软件套件。
(2)GPU管理平台通常只能使用某一种GPU共享和隔离技术,此技术对应用是透明。因此,应用部署到GPU管理平台,使用GPU资源时不需要特别指定哪种GPU共享隔离技术。
(3)商用的优秀方案有 NVIDIA AI Enterprise软件套件 、 国内创业公司趋动科技的GPU虚拟化产品, 腾讯TKESTACK平台、北京优优工场科技的XPU技术等。

不同GPU 共享方案的对比如下所示:

一. CUDA劫持是属于时间复用方式的GPU虚拟化技术,通过劫持对Cuda driver API的调用来做到资源隔离。共享模块一般位于在Cuda driver API之上。

  • 优势:API开源,是非Nvidia官方技术人员能够较容易实现的共享技术。
  • 劣势:1.CUDA库升级活跃,而当CUDA库升级时,劫持方案也需要不断适配,损耗人力。2.难以涵盖所有场景,隔离不一定准确;3.安全性低,用户可以绕过限制。4.对用户有少量影响,需要一定适配。

二. CUDA聚合:NVIDIA MPS是 属于空间复用方式的GPU共享技术,通过将多个任务合并成一个上下文的方式共享GPU算力,所有任务共同使用显存。位于Cuda driver API和Nvidia Driver之间。

  • 优势:性能是所有技术中最好的。在多任务共享的场景下,当任务使用的资源可以同时被满足,其JCT(任务完成时间)基本没有影响。
  • 劣势:1.错误会互相影响,如果一个任务退出(包括被使用者停止和任务本身出错等),如果该任务正在执行kernel,那么和该任务共同share IPC和UVM的任务也会一同出错退出。2.没有显存隔离,可以粗略地限制计算资源。

三. 内核劫持: 阿里云 cGPU是属于时间复用方式的GPU容器共享方案,通过新的内核驱动模块,为容器提供了虚拟的GPU设备,劫持了对Nvidia driver的调用。可以严格限制显存,通过时间片的方式限制算力。位于Cuda driver API和Nvidia Driver之间。

  • 优势:1.安全性高;2.共享损耗小;3.Nvidia Driver的更新更少,改动量很小。
  • 劣势:1.cGPU对OS设置有一定依赖;2.因为是内核模块,因此更新换代较困难;3.研发困难,对开发要求高。4.出于算力时间片的设计,对于某些模型,具有一定的性能损失。

四. 虚拟机:Nvidia官方的vGPU属于时间复用方式的共享产品,通过vfio-mdev提供了一个隔离性非常高的的硬件环境,主要面向的是虚拟机产品。其共享模块在Nvidia driver及之下。

  • 优势:来自Nvidia官方,可靠性高,安全性高。
  • 劣势:1.不支持容器,虚拟机在使用上不灵活;2.无法动态调整资源比例。3.有一定的共享损耗。4.无法定制化开发。

3、 GPU共享技术是否已经成熟,如何选型?

基于GPU共享的技术大多产品还处于实验期,好多大厂的相关产品尚未开源,如何选型,如何不被供应商绑定?

嘉宾:Cui Xiaonan DevRel , NVIDIA英伟达
关于GPU高效共享的解决方案,行业有很多的技术实现,大致分成Remote CUDA,CUDA原生实现,GPU硬件实现。 1. R-CUDA的方案,也叫远程CUDA和CUDA劫持,是一种基于驱动或CUDA句柄的拦截和转发机制,英伟达官方并不支持这样的做法,尤其在跨服务器请求转发方面,其性能和效果对于网络和处理延时依赖较大,对于实时性的业务场景效果并不理想,同时随着GPU驱动的升级,对于其支持的周期风险很大。 2. CUDA原生实现,主要指英伟达的vGPU全切分方案,通过定制的GPU驱动,实现GPU的时分切分,基于时间片轮训机制,实现GPU显存最小粒度的切分,该方案是英伟达的原生技术实现,需要相应的License和技术支持服务。 3. GPU硬件切分技术-MIG方案,只要在A100和A30的GPU上提供,未来的H100也会支持,实现机制是通过GPU内部相应计算单元和显存单元的动态划分,实现硬件的空间切片,彼此的隔离性达到最佳,对于上层系统相对透明,且提供灵活的配置,该技术仅在A100和A30 GPU支持,不需要软件License。

关于选择,也很简单,应为英伟达会最了解底层GPU的设计和使用,跟着英伟达的技术路线是最稳妥的方式,建议优先考虑MIG或vGPU方案

建议关注NVIDIA AI Enterprise软件套件,包含GPU切分和管理的全部软件功能,并且提供企业级的支持服务。

嘉宾:rechen 云计算架构师 , 招商银行

GPU共享(即GPU虚拟化)技术实现可以分为2种类型:

硬件层面

主要是NVIDIA本身的虚拟化方案:NVIDIA GRID以及NVIDIA MPS。

软件层面,可细分为两种主要实现方式:

A. 实现在NVIDIA CUDA Library API之上,通过劫持对CUDA API的调用来做到GPU的虚拟化,此类方案缺点是兼容性依赖于厂商,每个版本需要对齐,同时需要重新编译AI应用,对于用户来说使用成本较高。

B. 实现在内核NVIDIA Driver之上。采用零侵入式的设计,使用上对用户可以做到无感知,对于CUDA的版本依赖较小。但该方案整体实现难度较大,需要对Linux内核和GPU架构的原理和实现有深入理解。

GPU共享技术已经成熟,在生产环境有较多的投产案例。譬如 NVIDIA 虚拟Grid GPU (vGPU) 技术,国内创业公司趋动科技的GPU虚拟化技术, 北京优优工场科技的XPU技术。

大厂的GPU共享技术也有开源的,譬如 Intel自家GPU卡的GVT-g 。腾讯的vGPU开源项目、 阿里的cGPU开源项目。

4、如何融合cpu,gpu各自的硬件优势?

在部署硬件资源时应该充分考虑硬件特点,融合不同硬件的优势,请问专家 CPU和GPU各自适用的场景有哪些,怎样可以实现CPU和GPU的高效率配合。

嘉宾:rechen 云计算架构师 , 招商银行
1、 GPU:控制器少,计算单元多 , 采用的是流式并行计算模式 并发算力方面远远胜于CPU。例如黑客们破解密码时,需要大量的尝试性计算,首选必是GPU。

2、 CPU:控制器很大,计算单元则很少,适合于线性处理较多,譬如数据的可能依赖上一条数据的结果,同时还需要控制器参与取指令,指出下一条指令在内存中的位置。所以, 在分布、有序、控制力上,CPU要胜过GPU。
3、CPU适用于应用型服务,GPU适用于AI人工智能、机器学习、深度学习等工作负载。
4、通常是建设一个K8S容器平台,纳管GPU、CPU的硬件物理机资源池,通过资源类型、资源标签和调度策略来部署工作负载。

5、 基于容器的共享CPU和透传CPU性能的差异有多大?

基于容器的共享CPU和透传CPU两个方式的性能差异如何,在GPU要求较高的进程中如何选型,如何在容器平台同时使用这种方案,满足容器的自动调度能力?

嘉宾:rechen 云计算架构师 , 招商银行

在容器云环境共享GPU,如果是物理机部署K8S集群的模式,则可以直接使用K8S的GPU虚拟化技术: vCUDA或者cGPU,就可以实现了在容器POD实例中高效稳定运行GPU显示。

容器环境中GPU资源池中是不可以同时使用多种切分方式的。每种GPU虚拟化的实现方式不同,且对GPU卡资源的排斥性管理的。 当前GPU虚拟化技术的效果能够做到一虚十,即粒度到0.1GPU。

GPU透传(或称直通模式,GPU Passthrough )则是指将GPU在虚拟化平台透传到客户虚拟机的技术。

嘉宾:Cui Xiaonan DevRel , NVIDIA英伟达
首先透传和共享都是基于虚拟化层实现的一种技术手段,相比来说透传会比共享性能更优异,但是利用率会比较低,尤其是较大规模的平台,如果是在较大规模的容器平台,在裸金属的环境下,可以参考GPU Operator的方式调度和管理GPU,同时支持MIG空分和vGPU时分的方式,可以理解同时支持直通和共享的模式,GPU Operator是一个容器平台的插件,包含在NVIDIA AI Enterprise软件套件中。

6、GPU资源池化技术对比传统虚拟化技术,计算加速比提升效果如何呢?

嘉宾:rechen 云计算架构师 , 招商银行
1、传统虚拟化技术是指使用的是CPU算力吧,不过,GPU算力处理和CPU算力处理模式是不同的。
2、 GPU:控制器少,计算单元多 , 采用的是流式并行计算模式 并发算力方面远远胜于CPU。例如黑客们破解密码时,需要大量的尝试性计算,首选必是GPU。
3、 CPU:控制器很大,计算单元则很少,适合于线性处理较多,譬如数据的可能依赖上一条数据的结果,同时还需要控制器参与取指令,指出下一条指令在内存中的位置。所以, 在分布、有序、控制力上,CPU要胜过GPU。

综合看,对AI人工智能、深度学习、机器学习这类工作负载,GPU资源池化技术对比传统虚拟化技术
,GPU的计算加速比提升1个数量级以上。

嘉宾:Monica Wang NVIDIA AI Enterprise 产品经理 , NVIDIA英伟达

NVIDIA AI Enterprise软件套件在VMware Vsphere 上做了认证和测试,在A100 GPU裸金属环境下运行 BERT-Large或者SSD-Resnet34模型,和在VMware Vsphere 运行的速度是非常接近的。如果客户已经有了VMware的虚拟环境,建议采用NVIDIA AI Enterprise软件套件,可以确保GPU的加速性能。

7、容器云怎么做显卡切分?

背景
容器云中的显卡切分使用
场景
使用显卡切分功能后,一块显卡如何加载到不同容器中使用。

嘉宾:rechen 云计算架构师 , 招商银行
一. 通过GPU虚拟化技术对GPU显卡进行切分,粒度可以细化到0.1卡。譬如 NVIDIA MPS或虚拟 GPU (vGPU) 技术,腾讯的vGPU开源项目、国内创业公司趋动科技的GPU虚拟化技术。

二. 建设基于K8S的一个GPU管理平台,通过平台的调度能力和配置策略来实现将一块GPU显卡分别加载到不同容器中使用。主要步骤如下:

环境准备: (A) GPU节点安装好NVIDIA驱动和 nvidia-docker套件。 (B)docker daemon运行时配置启动 nvidia runtime运行时。 (C)在 Kubernetes 安装nvidia的k8s-device-plugin开启vGPU支持,

在创建POD时,YAML中容器请求带上资源类型 nvidia.com/gpu, 可以将POD调度到GPU节点上 。 apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: containers:

name: cuda-container image: nvidia/cuda:10.0-base resources: limits: nvidia.com/gpu: 1

嘉宾:Cui Xiaonan DevRel , NVIDIA英伟达

关于GPU切分及高效共享的解决方案,行业有很多的技术实现,大致分成Remote CUDA,CUDA原生实现,GPU硬件实现。

R-CUDA的方案,也叫远程CUDA和CUDA劫持,是一种基于驱动或CUDA句柄的拦截和转发机制,英伟达官方并不支持这样的做法,尤其在跨服务器请求转发方面,其性能和效果对于网络和处理延时依赖较大,对于实时性的业务场景效果并不理想,同时随着GPU驱动的升级,对于其支持的周期风险很大。

CUDA原生实现,主要指英伟达的vGPU全切分方案,通过定制的GPU驱动,实现GPU的时分切分,基于时间片轮训机制,实现GPU显存最小粒度的切分,该方案是英伟达的原生技术实现,需要相应的License和技术支持服务。

GPU硬件切分技术,只要在A100和A30的GPU上提供,未来的H100也会支持,实现机制是通过GPU内部相应计算单元和显存单元的动态划分,实现硬件的空间切片,彼此的隔离性达到最佳,对于上层系统相对透明,且提供灵活的配置,该技术仅在A100和A30 GPU支持,不需要软件License。

建议关注NVIDIA AI Enterprise软件套件,包含GPU切分和管理的全部软件功能,并且提供企业级的支持服务。

二、   GPU资源池规划建设和优化

容器云平台与GPU资源池化技术二者紧密结合,实现了GPU资源的统一分配和监控,对构建统一的AI业务平台起到了重要的基础设施支撑作用,同时也加快开发人员构建AI应用和高性能分析的速度,支持大型、复杂的训练和机器学习工作负载。下面的交流重点也是围绕容器云环境下,如何规划GPU资源池,以及如何优化,给与大家一些参考帮助。

1、在容器云环境建设和优化GPU资源池的过程?

在容器云环境建设和优化GPU资源池的过程,对于不同的行业,尤其是金融证券类公司,可管理性和可靠性是必须的,还有就是可持续性,这一点对于公司来讲,无论从使用和运维来讲,是不可缺失的。

嘉宾:rechen 云计算架构师 , 招商银行
针对单位的应用负载特性,首先做好容器云环境建设和优化GPU资源池的架构规划设计,譬如K8S网络设计、容器存储的设计、和单位现有运维体系的工具对接、和研发体系的工具对接。

容器云的GPU管理平台的产品选型,包括GPU虚拟化技术的选型,尽量选择成熟稳定的商用软件,譬如 NVIDIA AI Enterprise 。

如果只是新增纳管GPU资源而对现有的容器云环境进行扩容的话,则可以选择国内初创公司趋动科技的商用软件:猎户座 OrionX GPU 资源调度器产品。如果单位有容器云的研发团队,也可以选择开源的GPU虚拟化项目来实现 新增纳管GPU资源 ,譬如使用腾讯开源的vGPU项目。

嘉宾:Cui Xiaonan DevRel , NVIDIA英伟达

可管理性,可靠性和可持续性都是在容器平台比较挑战的问题。

可管理性涉及GPU资源的优化与高效的调度,建议参考NVAIE,即英伟达AI企业套件,包括了对于GPU资源池的管理和调度方式,同时对于目前主流的第三方和社区版本K8S都有很好的支持。

可靠性除了平台底层能力以为,对于上次应用环境也很重要,建议客户可以打通和更多参考使用ngc.nvidia.com提供的经过英伟达优化的软件镜像仓库,对于开发和应用的开发环境均具备很高的可靠性

可持续性体现在与社区的技术路线的跟进,NV很多软件都是开源给开发者去使用的,包括我们的Operator插件除了增加更多GPU的特性,也会与社区K8S一起发展。

2、 容器环境中GPU资源池中可以多种切分方式并用吗?效果如何?

容器环境中GPU资源池中可以多种切分方式并用吗?效果如何?

嘉宾:Cui Xiaonan DevRel , NVIDIA英伟达

关于GPU高效共享的解决方案,行业有很多的技术实现,大致分成Remote CUDA,CUDA原生实现,GPU硬件实现。 1. R-CUDA的方案,也叫远程CUDA和CUDA劫持,是一种基于驱动或CUDA句柄的拦截和转发机制,英伟达官方并不支持这样的做法,尤其在跨服务器请求转发方面,其性能和效果对于网络和处理延时依赖较大,对于实时性的业务场景效果并不理想,同时随着GPU驱动的升级,对于其支持的周期风险很大。 2. CUDA原生实现,主要指英伟达的vGPU全切分方案,通过定制的GPU驱动,实现GPU的时分切分,基于时间片轮训机制,实现GPU显存最小粒度的切分,该方案是英伟达的原生技术实现,需要相应的License和技术支持服务。 3. GPU硬件切分技术,只要在A100和A30的GPU上提供,未来的H100也会支持,实现机制是通过GPU内部相应计算单元和显存单元的动态划分,实现硬件的空间切片,彼此的隔离性达到最佳,对于上层系统相对透明,且提供灵活的配置,该技术仅在A100和A30 GPU支持,不需要软件License。

效果,GPU空间切分-MIG技术相对隔离性较好,几乎没有额外性能损耗,vGPU时分切片技术,相对灵活性更好,硬件的限制较小,但是需要额外的软件许可。

建议关注NVIDIA AI Enterprise软件套件,包含GPU切分和管理的全部软件功能,并且提供企业级的支持服务。

嘉宾:rechen 云计算架构师 , 招商银行

容器环境中GPU资源池中是不可以同时使用多种切分方式的。每种GPU虚拟化的实现方式不同,且对GPU卡资源的排斥性管理的。 效果能够做到一虚十,即粒度到0.1GPU

下面是各种GPU切分(即GPU虚拟化)技术的对比

一. CUDA劫持是属于时间复用方式的GPU虚拟化技术,通过劫持对Cuda driver API的调用来做到资源隔离。共享模块一般位于在Cuda driver API之上。

优势:API开源,是非Nvidia官方技术人员能够较容易实现的共享技术。

劣势:1.CUDA库升级活跃,而当CUDA库升级时,劫持方案也需要不断适配,损耗人力。2.难以涵盖所有场景,隔离不一定准确;3.安全性低,用户可以绕过限制。4.对用户有少量影响,需要一定适配。

二. CUDA聚合:NVIDIA MPS是 属于空间复用方式的GPU共享技术,通过将多个任务合并成一个上下文的方式共享GPU算力,所有任务共同使用显存。位于Cuda driver API和Nvidia Driver之间。

优势:性能是所有技术中最好的。在多任务共享的场景下,当任务使用的资源可以同时被满足,其JCT(任务完成时间)基本没有影响。

劣势:1.错误会互相影响,如果一个任务退出(包括被使用者停止和任务本身出错等),如果该任务正在执行kernel,那么和该任务共同share IPC和UVM的任务也会一同出错退出。2.没有显存隔离,可以粗略地限制计算资源。

三. 内核劫持: 阿里云 cGPU是属于时间复用方式的GPU容器共享方案,通过新的内核驱动模块,为容器提供了虚拟的GPU设备,劫持了对Nvidia driver的调用。可以严格限制显存,通过时间片的方式限制算力。位于Cuda driver API和Nvidia Driver之间。

优势:1.安全性高;2.共享损耗小;3.Nvidia Driver的更新更少,改动量很小。

劣势:1.cGPU对OS设置有一定依赖;2.因为是内核模块,因此更新换代较困难;3.研发困难,对开发要求高。4.出于算力时间片的设计,对于某些模型,具有一定的性能损失。

四. 虚拟机:Nvidia官方的vGPU属于时间复用方式的共享产品,通过vfio-mdev提供了一个隔离性非常高的的硬件环境,主要面向的是虚拟机产品。其共享模块在Nvidia driver及之下。

优势:来自Nvidia官方,可靠性高,安全性高。

劣势:1.不支持容器,虚拟机在使用上不灵活;2.无法动态调整资源比例。3.有一定的共享损耗。4.无法定制化开发。

3、容器云环境建设和优化GPU资源池的生态和管理?

容器云屏蔽了应用和硬件、操作系统、网络之间的关系。但是对于AI来说,容器使用GPU卡也是势在必行的,是大趋势所在。
有几个疑问:
1、如何能在使用GPU时做到不影响容器云灵活的管理、如编排调度、弹性伸缩?
2、使用GPU运算是否需要应用一定要求,如保存状态?

嘉宾:Monica Wang NVIDIA AI Enterprise 产品经理 , NVIDIA英伟达

可以使用NVAIE软件套件,该软件套件在Openshift, VMware Tanzu以及上游K8S都已做了性能认证,可以通过NVAIE中的Operator模块支持云原生的编排调度和扩展。

嘉宾:rechen 云计算架构师 , 招商银行

环境准备:(A) GPU节点安装好NVIDIA驱动和 nvidia-docker套件。 (B)docker daemon运行时配置启动 nvidia runtime运行时。 (C)在 Kubernetes 安装nvidia的k8s-device-plugin开启vGPU支持,

在创建POD时,YAML中容器请求带上资源类型 nvidia.com/gpu,可以将POD调度到GPU节点上 。 apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: containers: - name: cuda-container image: nvidia/cuda:10.0-base resources: limits: nvidia.com/gpu: 1

使用GPU对应用没有特别要求,具体看应用自身的需求。譬如如果应用运行过程中要写中间数据,则反过来要求容器云提供持久化的存储能力。

4、GPU池化能力如何以及实现方案?

GPU计算能力的池化一直都是难点也是需要必备的能力,另外实际任务训练时,特别在联邦学习场景下,如果可以实现GPU对于云原生场景下的多方建模性能的提升,那还是很有前景的。不知道该产品GPU池化能力如何以及实现方案?
嘉宾:Monica Wang NVIDIA AI Enterprise 产品经理 , NVIDIA英伟达
通过使用NVAIE软件套件中的GPU Operator 来实现GPU池化能力。NVAIE也已在Redhat Openshift, VMware Tanzu,以及K8S 平台做了认证。客户可以通过购买NVAIE软件获得专业服务指导如何配置GPU池化方案。

嘉宾:rechen 云计算架构师 , 招商银行

传统机器学习一般使用的是32-bit的基本运算,这些基本运算一般都有芯片指令的直接支持,而联邦学习中的Paillier/RSA算法依赖的是1024或2048-bit 甚至更长的大整数运算,且这些运算是模幂、模乘等复杂运算。

使用GPU可以有效地加速联邦学习计算。具体原因有四种:

(A)联邦学习中的数据加解密及密态计算,不同数据的计算其实并不存在很大的关联性,这些计算是高度并行的,由GPU负载加速高度并行的任务。

(B)联邦学习很多计算公式其实本身并不复杂,但重复执行次数巨大。GPU适合加速此重复的轻量级计算。

(C)联邦学习是计算密集型的任务,数据IO较少,GPU适合加速此种计算密集型任务。

(D)联邦学习里训练模型的数据通常是以批量形式的产生为主,符合大数据的特征,GPU是满足海量数据的批量计算的需求。

构建满足联邦学习训练任务的GPU池化能力时,需要注意优化网络,譬如可优化的措施包括:

(A)通过RDMA网络技术优化GPU资源池中两节点间通信,

(B)通过动态参数聚合模型优化多节点间通信。

(C)通过引入英伟达的GPU-Direct-RDMA 技术,实现GPU和RDMA网卡之间的直接数据拷贝,可以将通信吞吐量从20G提升到100G,传输延迟降低了百倍。

相比使用CPU ,使用GPU资源池化能力加速联邦学习,在实际案例中,对于联邦学习的比较复杂的同态加密和解密,可以得到5+倍的加速比。对于联邦学习中计算相对简单的密态乘法和密态加法,可以分别得到30+倍以上和百倍的加速比。

业界使用NVIDIA Tesla V100 GPU池化加速的联邦学习平台方案,可以参考星云隐私计算解决方案:https://www.clustarai.com/ 

5、容器云与GPU相结合适用于什么样场景以及目前有哪些成熟的案例?

嘉宾:rechen 云计算架构师 , 招商银行

GPU算力可用于AI人工智能、深度学习和机器学习的训练和推理场景,当前银行在智能风控、营销、获客、投研等应用都有成熟投产的案例。

嘉宾:Monica Wang NVIDIA AI Enterprise 产品经理 , NVIDIA英伟达
当客户需要将AI技术从原来的原型开发转变到生产运营阶段,企业需要的可靠的,有企业级服务支持和SLA保证的AI套件,减少IT对AI应用的部署风险。例如金融中的反欺诈应用,医疗行业的医疗影像识别都是作为企业业务在日常工作中需要维护的AI应用,NVAIE提供了平台认证过的,云原生的AI工具以及企业级服务。

6、GPU资源池化加速AI工作负载方向上,是怎么解决切分、跨节点资源聚合与调用问题的呢?

嘉宾:Monica Wang NVIDIA AI Enterprise 产品经理 , NVIDIA英伟达

使用GPU Operator。它使基础架构团队能够在集群级别与 Kubernetes 一起使用时管理 GPU 的生命周期。 因此,无需单独管理每个节点。

以前,基础架构团队必须管理两个操作系统镜像,一个用于 GPU 节点,一个用于 CPU 节点。 使用 GPU Operator 时,基础架构团队也可以将 CPU 映像与 GPU 工作节点一起使用。

GPU Operator 允许客户在不可变操作系统上运行 GPU 加速应用程序。 我们看到像 Red Hat 这样的公司定位 RHCOS,这是一个与 OpenShift 一起使用的不可变操作系统。

GPU Operator支持更快的节点配置,因为 GPU Operator 的构建方式是检测新添加的 GPU 加速 Kubernetes 工作节点到集群,然后自动安装运行 GPU 加速应用程序所需的所有软件组件。

嘉宾:rechen 云计算架构师 , 招商银行

1、这涉及到GPU资源池化的一虚多和多虚一的技术。
2、一虚多是将一张物理GPU卡虚拟化出多张VGPU卡,增加AI工作负载的处理并行度。
3、多虚一是指多张GPU卡或多台GPU物理服务器的算力建设成统一的资源池,支撑AI工作负载的运行。
4、例子1:趋动科技OrionX猎户座产品,部署在多台不同类型的GPU服务器上,通过网络互联,构建了一个统一的GPU资源池化层,可以实现了GPU资源的统一调度、灵活分配、弹性伸缩能力。
5、例子2: NVIDIA AI Enterprise则更进一步,整合了从基础设施到AI框架、工具,为应用开发者提供部署AI负载的统一平台。

7、产品与云原生适配能力如何?

从英伟达专家介绍上看对于建模和推理性能都有提升,但是有些关键问题,没看出来,例如对于主流GPU是否完全兼容,对于K8S版本要求是否完全适配,对于现有业务是否有影响?

嘉宾:Monica WangMonica Wang NVIDIA AI Enterprise 产品经理 , NVIDIA英伟达
NVAIE产品的推出目的就是解决开发者AI云原生开发部署的问题。NVAIE平台在RedHat Openshift, VMware Tanzu, 上游K8S 平台都做了严格认证和测试,同时客户使用NVAIE里包含的企业级服务,可以指导用户完成AI工具的云原生部署。
NVAIE支持主流企业级GPU,包括:

  • NVIDIA A100X
  • NVIDIA A100 PCIe 40GB
  • NVIDIA A100 HGX 40GB
  • NVIDIA A100 PCIe 80GB
  • NVIDIA A100 HGX 80GB
  • NVIDIA A40
  • NVIDIA A30X
  • NVIDIA A30
  • NVIDIA A10
  • NVIDIA A16
  • NVIDIA A2
  • NVIDIA RTX A6000
  • NVIDIA RTX A5500
  • NVIDIA RTX A5000
  • NVIDIA T4
  • NVIDIA V100

嘉宾:rechen 云计算架构师 , 招商银行

可以在NVIDIA的官网文档中找到相关的信息。譬如硬件的要求: https://docs.nvidia.com/ai-enterprise/deployment-guide/openshift-prereqs.html 对K8S的要求:https://docs.nvidia.com/ai-enterprise/deployment-guide/openshift-onvsphere.html NVIDIA AI Enterprise 2.0 requires OpenShift Container Platform Version 4.9+ 对GPU卡的兼容性:https://docs.nvidia.com/ai-enterprise/overview/overview.html#supported-hardware-and-software.html 

三、交流达成的共识总结

通过本场银行同行的交流活动达成了一些交流共识如下,仅供参考:
(1)GPU共享和GPU虚拟化技术已经成熟,已有投产的成功案例。
(2)建设GPU资源池,将多个独立GPU硬件资源组建成共享资源池实现统一管理,把GPU资源从硬件定义变成软件定义,可以高效稳定地动态切分、灵活调度和弹性使用GPU资源,从而提高GPU资源的利用率,这是在公有云厂商云服务和专业厂商产品的技术发展方向。
(3)选择基于Kubernetes技术的容器云平台与GPU资源池化技术二者紧密结合,通过容器云平台实现统一分配与管理GPU算力资源,提供“GPU服务器硬件 + 软件定义GPU算力资源 +AI/机器学习平台”的一站式能力,为构建企业统一的AI业务平台提供重要的基础设施支撑,这是在公有云服务的技术输出和专业厂商的主要产品型态,当前已经有类似NVIDIA AI Enterprise的商用级产品。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论0 条评论

Ctrl+Enter 发表

本文隶属于专栏

活动总结
活动总结是社区交流活动内容的总结及延伸,为大家提供了社区专家们丰富且高水平的理论知识、实践经验以及常见问题的最佳解决方法,非常值得大家收藏学习。

容器云管理平台选型优先顺序调查

发表您的选型观点,参与即得50金币。