一战和二战德国实际上都是被美国的加入给击败的,而且美国赢得也并不公平,每次都是战争进行到一半了,德国累得气喘吁吁,“鹰酱”这时候却元气满满地加入了,上来就把德国给揍了。我想,现在的很多德国人心里都还很不服气。
文末有福利!
当前,数字经济已成为国民经济高质量发展的新动能,随着人工智能在产业数字化进程中从“单点突破”迈向“泛在智能”,一个以数字化、网络化、智能化为特征的智慧社会正加速到来。
智能算力作为人工智能的基石,是算力网络构建多要素融合新型信息基础设施的关键领域,已成为数字经济高质量发展的核心引擎,智能算力基础设施建设也迎来了高潮。
智算中心作为集约化建设的算力基础设施,它以 GPU、AI 芯片等智能算力为核心,提供软硬件全栈环境,主要承载模型训练、推理、多媒体渲染等业务,支撑千行百业数智化转型升级。
然而传统智算中心的智算资源利用率较低,资源分布相对碎片化,不利于整体效能的提升,亟需一个可聚合各类型算力、实现敏捷化资源管理的平台,使能资源可以被极致利用,算力池化技术应运而生。
为凝聚产业共识,进一步推动算力池化技术成熟,中国移动发布本白皮书,分析了智能算力发展的趋势及面临的挑战,系统性介绍了算力池化的定义与目标、总体架构、关键技术和当前业界的探索实践,并呼吁业界紧密合作、加快构建算力池化统一的标准体系。
1. 算力池化技术背景
数字经济时代,随着智慧城市、智慧交通、智慧家庭等智能场景的逐步落地,人工智能正深刻地改变我们的生产、生活方式。同时随着 5G、边缘计算等支撑技术的持续发展,数智业务转型过程中所产生的数据量正在以更加难以计量的速度爆发。
据 IDC 公布的《数据时代 2025》显示,从 2016 年到 2025 年全球总数据量将会增长 10 倍,达到 163ZB,其中非结构化数据占 70%以上,计算模式将变得更加复杂,对智能算力的需求也在不断提高,智能计算将成为主流的计算形态。
随着智能计算广泛融合到生产、生活的各个方面,以 GPU、AI 芯片为主要算力资源的智算中心正逐步取代通用数据中心成为算力发展的主流形态。在此背景下,各国政府已开始布局 AI 领域全栈能力,并出资引导智能算力基础设施建设;我国也已进入智能化时代,“十四五”期间,相关部委积极推动智算中心建设发展,旨在面向人工智能场景提供公共算力服务。
同时,随着 ChatGPT 等基础通用大模型业务引爆了对 GPU 的市场需求,产业各方纷纷加入对基础大模型的训练和培育,导致“一芯难求”,GPU 价格也随之暴涨。以英伟达 A800 为例,据市场数据统计,近半年来的价格增幅高达 30%以上。如何在有限的资源供应内尽可能提高利用率,充分发挥算力效率的同时降低智算中心 TCO,目前已成为智算中心建设待解决的关键命题之一。
1.1 传统智算中心存在资源效率问题
1.1.1 GPU 资源利用率不足 30%
当前智算中心主要以国家或当地政府总体牵头建设为主,此外,AI 应用服务企业也在布局自有智算基础设施建设。然而,据公开数据统计,传统模式下的智算中心 GPU 利用率较低,平均数值低于 30%:
− AWS re:Invent 2018 公布数据:平均 GPU 利用率为 20%
− Facebook 2021 年机器学习负载分析报告:平均 GPU 利用率不足 30%
− 英伟达 GTC2022 公布数据:Google 云平均 GPU 利用率为 25%
传统智算中心的 GPU 资源利用率过低,主要来源于以下多个方面的原因:
(一)资源分配较为粗放:资源分配以整卡分配为主,辅以一虚多的虚拟化分配方式,颗粒度较粗,无法适配不同 AI 任务对资源的差异化需求,导致部分资源闲置,影响算力资源的利用率;
(二)算力没有被充分激活:AI 任务模型设计缺陷、算力优化程度不足、模型框架与底层芯片适配不充分等原因,均可能导致算力资源的性能无法充分发挥,导致额外的资源损耗;
(三)网络带宽瓶颈制约:智算中心设备和服务器之间的通信需要消耗网络带宽,网络瓶颈会影响影响整体性能,算力资源空闲度高、利用率低。
传统智算中心的 GPU 资源利用率问题是一个综合性的问题,需要从资源管理策略、硬件架构设计、应用软件算法优化等多方面共同优化解决,其中尤以资源管理策略方面的优化可控性强、生效快、投入产出比高,是新型智算中心算力池化的重要研究方向之一。
1.1.2 资源碎片化导致分配率低
资源碎片指体量较小,低于应用的需求而无法被分配出去的闲置资源,通常来说,应用所需资源的规格越高、种类越多,导致资源碎片的概率则越大。近几年来,AI 业务迅速发展,从训练到推动,从小模型到大模型,AI 任务的种类越来越多,对算力的需求越来越高,算力资源碎片化趋势较为明显。
碎片化的原因包括任务类型差异、任务规模差异、任务优先级差异以及任务调度能力等多方面因素。
(一)任务类型差异:智算中心提供的算力资源可以用于不同种类的任务,包括机器学习、深度学习、图像处理等。也包括大模型、小模型、分布式推理、集中式推动,由于不同类型的任务对硬件配置的要求不同,因此会导致不同类型的任务需要不同的算力资源,难以充分适配;
(二)任务规模差异:任务规模不同,所需求的算力资源不同,并且不同任务规模对算力资源的分配也无实际标准,小规模任务可申请大规模的算力,虽然存在资源浪费,但却可加速任务完成,相反,在资源总数限制下,大规模任务也可根据相对较少的算力资源,虽然影响计算效率,但却节约了投资。以上多方面的因素,导致任务需求规格与硬件配置无法对齐,从而导致算力资源碎片化;
(三)任务优先级差异:不同的任务可能有不同的优先级,一些高优先级的任务可能会占用大量的计算资源,导致其他任务无法及时得到满足,影响整体资源布局;
(四)任务调度能力:任务调度也是影响计算资源碎片化的重要因素。如果任务调度不当,可能会导致计算资源得不到充分分配,从而造成资源浪费。
综上所述,根据多样化 AI 任务对算力资源的差异化需求,灵活地调度、分配资源,是降低智算中心算力资源碎片的关键。
1.2 池化技术是提高资源效率的关键
如何对稀缺、昂贵的算力资源充分利用,降低其不可分配的碎片概率,可以考虑借鉴云计算的思路,对 GPU、AI 芯片等进行聚合池化,再利用先进的资源管理技术进行切分、调度、分配,使能资源可按任务的实际需求进行有序供给。
(一)物理成池:通过高性能智算中心网络打通服务器间通路,使得分散在各服务器中的 CPU、GPU、AI 芯片等算力资源可以互联互通、透明共享。这项技术允许跨用户、用例、时间尺度共享物理算力资源,还可以为在集群的一个节点中执行的单个 AI 任务任意调用集群中算力,使 AI 任务获得进一步加速。
(二)逻辑成池:利用池化软件对 CPU、GPU、AI 芯片等资源在逻辑上聚合,AI 任务在创建时,不再是将零散的、孤岛式的资源进行裸分配,而是根据调度流程,从聚合的池化资源中切分出所需数量进行分配。一方面,分配的资源数量可按 AI 任务实际所需执行,当 AI任务所需资源不明确,或因负载变化导致资源数量变动时,可实现动态供给、回收,实现多 AI 任务的峰谷互补,降低资源闲置率;另一方面,切分后的零散资源可以再度聚合、调度、分配,降低碎片率。
2. 算力池化定义与目标
2.1 算力池化的定义
智能算力池化指依托云计算技术,整合 GPU/AI 芯片等异构算力资源,构建集中管理的资源池,并按上层智算业务的需求,对池化的资源进行统一调度、分配,实现智算业务生命周期管理的全套技术。
为解决智算中心所面临的资源利用率问题,算力池化基于传统云计算技术(如 Kubernetes、OpenStack,智算中心以 Kubernetes 为主)有针对性地增强 GPU/AI 芯片池化能力,采用软件定义的方式,对 GPU/AI 芯片进行分时调度管理,实现按 GPU/AI 芯片的细粒度分配资源,并采用 GPU/AI 芯片 Runtime API 劫持、应用程序监视器等技术,实现资源跨节点远程调用、零散资源整合等,从而达到算力资源充分利用、碎片最小化效果,可有效提升资源效率,降低智算中心整体建设成本。
2.2 算力池化的目标
智能算力池化的目标是利用软件定义技术,对通过高速无损网络互连互通的 CPU、GPU、AI 芯片等算力资源进行池化整合,实现资源的集中调度、按需分配,使能资源可被充分利用,降低碎片概率,提高总体有效算力、降低智算中心购置成本。
化整为零。革新传统的整卡分配、一虚多虚拟化分配的粗放式分配方式,使能精细化分配能力,根据 AI 任务的资源需求进行按需供给,契合多样化业务的差异需求。
隔空取物。基于高速无损网络,跨节点调取 GPU、AI 芯片等智能算力资源,使能 CPU 传统算力及 GPU、AI 芯片智能算力高度解耦,进一步降低碎片化比例。
化零为整。整合分布在多机上的零散资源,汇聚碎片为可再分配的资源、汇聚小规格资源为更大模型业务可使用的资源,使能资源可高效分配。
变静为动。革新传统的资源静态分配、本地绑定的机制,使能资源可以根据负载变化动态分配、回收,多任务间可以峰谷互补,全局资源可以适度超分,促进资源效率提升。
3. 算力池化架构与关键技术
3.1 算力池化平台技术架构
新型智算中心算力池化平台依托云计算技术扩展池化能力,根据AI 任务特点,一般基于 K8S(Kubernetes)定制化实现。算力池化平台的技术架构参考如下:
图片
图 1 算力池化平台技术架构
算力池化平台逻辑上可分为池化资源管理、资源服务代理、池化运行时三类模块组成:
(1) 池化资源管理
− Kubernetes 管理组件:基于 Kubernetes 原生管理服务组件定制化增强,如支持分布式文件存储、支持 POD 多网络平面、支持RoCEv2/Infiniband 网络等;
− Kubernetes 调度扩展:关联 Kubernetes 调度服务扩展专用的池化资源类型,对该类资源的请求转递智算资源池化控制器进行调度、分配,需配合 Kubernetes 设备插件使用;
− 智算资源池化控制器:对 GPU、AI 芯片等智算进行统一管理、调度、分配;
(2) 资源服务代理
池化服务代理:根据智算资源池化控制器的调度结果,将池化运行时对资源的访问请求重定向到实际物理位置执行,如涉及跨机访问智算资源,则需相关服务器上的池化服务代理多次重定向,跨机重定向的流量需经由高速无损网络(如参数面网络);
Kubernetes 服务代理:基于 Kubernetes 原生服务代理组件定制化增强;
Kubernetes 设 备 插件 : 配 合 Kubernetes 调 度 扩展 ,为Kubernetes 服务代理注册专用的池化资源类型;
容器运行时:基于原生容器运行时(如 Dockerd、Containerd等)定制化增强;
(3) 池化运行时
池化运行时:依托 GPU、AI芯片的原生运行时(如 CUDA Runtime)进行二次封装,采用 API 劫持、应用程序监视等技术,将 AI 应用软件/AI 开发框架对算力资源的访问转递至池化服务代理执行。池化运行时位于容器 POD 内,在容器运行时由自动注入。
根据上述技术架构,当 AI 应用编排器通过调用 Kubernetes API创建应用时,可按新增的池化资源类型指定申请的资源数量(如pool.kubernetes.io/gpu: 1),对该类型资源的申请会被 Kubernetes调度扩展拦截、转递至智算资源池化控制器进行调度,智算资源池化控制器按申请的资源数量、资源池内空闲资源分布情况进行调度后,将调度结果响应给 Kubernetes 管理组件,然后 Kubernetes 管理组件正常执行 AI 应用的创建流程,由 Kubernetes 服务代理创建最终 POD作为交付物,并通过池化服务代理配合在 POD 中自动注入池化运行时、通过 Kubernetes 设备插件配合在 POD 中插入虚拟 GPU。
AI 应用的 POD 在运行的时候,通过池化运行时访问虚拟 GPU、执行 AI 任务,池化运行时拦截对虚拟 GPU 的访问请求、转递给池化服务代理执行,池化服务代理通过向智算池化控制器查询虚拟 GPU 所对应的真实智算资源位置、规格,按查询结果分配智算资源、执行 AI任务,如果真实的智算资源位于远程计算节点,则由本地池化服务代理将访问请求转递给远程计算节点上的池化服务代理处理,相关通信经由参数面网络。
3.2 算力池化技术能力层级
算力池化技术本质是通过软件定义硬件加速的方式,更加高效灵活的聚合、调度以及释放海量 AI 加速算力,精准保障 AI 模型开发、训练、部署、测试、发布全链条算力配给,降低智算中心算力服务提供成本,提升智算中心整体效能。从对异构算力使用的成熟度及灵活性角度出发,当前算力池化技术可划分为以下三个能力层级:
图片
图 2 算力池化技术能力层级
阶段 1,静态管理。将单物理 GPU/AI 芯片按固定比例切分成多个虚拟 GPU/虚拟 AI 芯片,比如 1/2 或 1/4,每个虚拟 GPU/AI 芯片的显存相等,算力轮询。最初是伴随着服务器虚拟化的兴起,解决虚拟机可以共享和使用 GPU/AI 芯片资源的问题。对于静态管理方案,2021年英伟达在部分 Ampere系列 GPU上提供了 MIG 技术,例如可以将 A100切分成最多 7 份。
阶段 2,动态管理。以单物理 GPU/AI芯片为目标,支持物理 GPU/AI芯片从算力和显存两个维度灵活切分,实现自定义大小(通常算力最小颗粒度 1%,显存最小颗粒度 1MB),满足 AI 应用差异化需求。
同时,软件定义 GPU/AI 芯片资源可充分适应当前应用云原生化趋势,实时响应上层应用对资源需求的变化,实现 vGPU/AI 芯片资源基于Scale-Up/Scale-Down 的动态伸缩,并通过资源动态挂载动态释放实现 GPU/AI 芯片资源超分。
阶段 3,池化管理。池化技术的重大突破在于支持 CPU 通用算力及 GPU/AI 芯片等智能算力的独立成池,两种资源池内汇聚的资源独立调度、分配,当调度的资源分属不同节点时,可通过高速无损网络跨节点调用、组装成 AI 任务所需总算力。此管理方式下,AI 应用可以部署到智算中心的任意位置,不管所在节点上有没有智算资源、智算资源够不够,所欠缺的部分从远程抓取即可,从而实现在网络范围内充分共享闲置、甚至碎片化的多种类型资源,促进资源的有效利用。
由于远程调用的资源相比本地化资源的访问速度相对较低,因此,池化管理技术可引入服务质量管理技术,按任务优先级,优先分配本地资源,次选远程调用,任务资源不足时将 AI 任务进行队列化管理,等待释放出充足资源时再运行。
3.3 算力池化关键技术
3.3.1 软件定义的资源分配方式
传统的依赖于硬件支持的虚拟化技术下, AI 应用通过访问GPU/AI 芯片的运行时所提供的接口,以获得对智算资源的调用,资源的算力完全由卡硬件确定,软件上难以介入,从而无法获得更敏捷的管理。池化技术下,资源分配方式发生了根本性的变革,软件介入了资源的算力供给,为开启更敏捷的资源管理模式,比如动态伸缩、资源超分等奠定了技术基础,为持续优化智算资源利用率创造了无限可能。池化技术主要通过以下两种实现了软件定义的资源分配:
(1) API 劫持技术
API 劫持技术是目前比较普遍的、针对智能算力的池化技术,它通过劫持对 Runtime API(如 CUDA API)调用实现资源调度。
如 3.1 章节技术架构的图 1 所示,AI 应用的容器 POD 内运行的池化运行时并非 GPU/AI 芯片原生的运行时,而是基于原生运行时进行了一定定制化的版本,它对上层应用所提供的 API 接口完全等同于原生运行时,因此对 AI 应用来说是透明的。
当 AI 应用访问池化运行时的 API 时,则被池化运行时转递至池化服务代理执行,池化服务代理则具备敏捷化的资源管理功能,比如按 1%算力、1MB 缓存的精度细粒度分配资源,实现跨节点远程调用资源等。
图片
图 3 API 劫持技术图解
API 劫持技术的关键在于池化运行时仿真 GPU/AI 芯片的原生运行时,由于 GPU/AI 芯片种类、型号繁多,其原生运行时又相对活跃、升级频繁,仿真工作较为复杂,开发量、维护难度较大。
(2) 应用程序监视器技术
这是一种完全与 GPU/AI 芯片无关的设备虚拟化和远程处理方法,允许在没有显式软件支持的情况下启用新的硬件体系结构。该项技术通过应用程序监视器工作,该监视器与 Hypervisor 管理虚拟机的方式类似,分为前端、后端,前端监视指定应用程序的活动,拦截至后端处理,后端可以按应用程序申请的数量分配资源,或将应用程序拆分到多台机器上运行,在保持代码、数据和执行环境一致性的前提下使用这些机器上的智算资源,从而实现资源的细粒度管理、远程调用等资源敏捷化管理功能。应用程序监视器负责维护应用程序状态(内存、文件、应用程序库的加载),以及虚拟化与系统的交互(例如系统调用和进程间通信),以确保在多个位置执行时的一致性。
图片
图 4 应用程序监视器技术图解
与 API 劫持技术直接介入到 AI 应用访问资源的流程、需要仿真原生运行时的 API 接口的方式不同,应用程序监视器不介入到 AI 应用访问资源的流程、而是通过更底层的系统调用隐含而广泛的支持更多种类、型号的硬件和新的运行时功能,其实现方式与特定的运行时API(如 CUDA)无关,具备更加强大的通用性和兼容性。应用程序监视器技术是一种新型的池化方案,建议技术成熟后再考虑商用引入。
3.3.2 算力资源高质量管理技术
基于软件定义的资源分配方式,算力池化平台可以实现更敏捷的资源管理方式,从而实现算力的高质量管理。
(一)资源细粒度分配
通过虚拟化手段,将物理资源按照算力与显存两个维度进行细粒度抽象,上层应用不再以物理硬件为单位进行资源申请及使用,而是以物理硬件算力 1%,显存 1MB 为基本单位。
(二)资源限额管理
通过时分等算力控制技术,对不同租户之间、同租户不同进程、不同租户不同进程之间实现 GPU 算力及显存的隔离与控制,减少资源争抢带来的性能扰动,避免程序恶意抢占算力资源。
(三)资源无感动态伸缩
池化技术可通过资源动态分配,为容器动态的分配可用资源,上层应用可根据自身业务逻辑及负载情况,实时向算力调度平台申请算力、显存资源,实现资源动态垂直扩展。
(四)资源超分及峰谷互补
智算中心对外提供业务时,为避免业务之间的竞争影响到服务质量,不同类型的业务通常分开部署在不同的资源池。但业务的运行往往存在高峰期和低谷期,业务独占资源导致异构算力硬件普遍存在空闲周期,很多业务空闲期远长于高峰期,导致总体资源利用率很低。
与此同时,为保障服务质量,业界通用做法是采用资源过量供应的方式来对业务进行支撑,导致预留的资源量与实际的使用量之间存在较大的差距。
如果能够将业务的波谷时段利用起来,就能减少波谷时间,从时间维度提升效能;同理,将资源预留冗余缩小,就能从空间维度提升效能。因此将不同优先级、不同波动周期的业务进行混合部署,为两个维度提升利用率提供了可能性,即利用低优先级任务占用空闲资源,同时高优先级任务能及时抢占到资源,从而保证关键业务的服务质量。
算力池化技术可以通过软件定义,将底层物理硬件资源抽象后做适当的放大,利用算力硬件计算周期空闲时间,通过时分复用有效使用算力,同时,利用单一指针进行内存托管,将显存、系统内存进行统一维护,在 CPU 与 GPU 之间形成内存池共享内存资源,由系统来自动地进行内存迁移,以实现 GPU 显存扩展,如 CUDA unified memory。
(五)智算任务队列化管理
单个 AI 任务的开展可简单划为为数据准备、任务执行、模型评估三个阶段,从资源角度上分析,数据准备阶段主要使用 CPU 资源,训练开始后才开始使用 GPU 算力资源进行计算加速。相较于 CPU 通用算力资源,智算中心内智能算力资源更加容易达到瓶颈,为提高整体AI 训练任务的执行效率,算力池化技术可提供智能算力资源排队的能力,即 AI 任务的下发可根据 CPU、内存等资源的可用情况触发,训练任务进入执行阶段后,如智能算力资源不足可进行排队等待,按序执行。同时可根据训练任务的重要程度,设置资源使用的优先级。
3.3.3 泛在化碎片的池化整合技术
泛在化碎片至分布式在本地、远程的传统方式下无法再利用的资源。对这些泛在化碎片进行池化整合,合并为逻辑视图上的一整片算力,有更高概率满足 AI 任务的资源规格需求。
(一)泛在化资源跨机整合技术
论文《Characterizing Deep Learning Training Workloads onAlibaba-PAI》分析了阿里一个训练集群上的负载特征(见图 5):从任务数量上看,约 59%的任务是单卡小任务;从 GPU 资源消耗上看,虽然 81%的 GPU 是被分布式训练任务占用(单机多卡也算分布式),但是这其中有一半的资源是被小于 8 个 GPU 的任务所占用(1 台物理服务器可满足);只有 0.7%数量的任务是使用超过 128 个 GPU(需要16 台或更多物理服务器)。
图片
这个分析表明,训练任务是多样化的,其规模有大有小,从资源角度上看,意味着智算中心各类业务对 CPU 算力与 GPU 算力的配比需求是多样化的,而 GPU 服务器硬件配置往往是单机 4 卡或者单机 8 卡,单机 CPU 算力与 GPU 算力的固定配比,在承载多样化的训练任务时,势必带来资源碎片现象的产生,进而引发大量多卡任务因为资源不足在队列中排队等待执行,容易带来资源整体流转效率低下的问题。
为解决资源碎片问题,池化技术可以实现对零散资源的整合,包括跨机整合。见第 3.1章,智算资源池化控制器实现了对 CPU及 GPU/AI芯片分池、单独调度,也即为 POD 调度的 CPU 与 GPU/AI 芯片资源可能不在同一台服务器上,但对应用是透明的,当 AI 应用访问虚拟 GPU时,由池化服务代理根据虚拟 GPU 所对应的真实 GPU 资源位置分配资源,如果有远程调用需求,则由 POD 所在服务器上的池化服务代理转发资源请求至目标服务器上的池化代理服务访问。
通过资源聚合,可以将 GPU 集群内的资源碎片利用网络快速整合,保障多卡任务快速启动,提升资源流转效率。
(二)智算业务 SLA 分级及自动服务质量管理
智算中心作为承载海量智算业务的基础设施,在资源优化方面应在兼顾训练任务的整体吞吐率、GPU/AI 芯片资源的整体利用率的同时,提升多个训练任务的整体性能,而非强调单个任务的性能。
深度学习框架是很多训练任务依赖的一类基础软件,其设计目标之一是提升单个训练任务的性能,而池化技术的目标是通过充分利用数据中心内所有 GPU/AI 芯片资源,从而达到多任务的整体最优,两者并不矛盾。
框架和池化技术可以互相配合,在达成多任务整体最优的情况下,尽量让每个任务的运行更加优化。池化技术可针对不同任务对于性能的要求进行分级,按优先级高到低采取使用指定硬件资源、只使用任务所在服务器上 GPU/AI 芯片资源、任意调用数据中心内可用算力资源等分配策略,可以确保任务性能要求的前提下,达到整体资源最优分配。
5. 展望与倡议
随着 GPT、Stable Diffusion 等技术的成熟,AIGC 产业高速发展,对智能算力的需求也呈指数级的增长。算力池化技术相较与传统的 GPU/AI 芯片直通技术来说,具备更高的算力利用效率、更便捷的使用方式及更低的使用成本,为产业发展提供奠定优质的算力基础。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。