从1964年发明CPU——即IBM System 360发布的那一年算起,已经过去60年,我们已经从传统的CPU算力时代跨越到了以GPU算力为代表的加速计算时代。尤其是随着大模型的广泛应用和AIGC技术的崛起,行业对GPU等AI算力的需求呈现出爆炸式的增长。据华为预计,到2030年AI算力将增长500倍,全球AI算力将超过105ZFLOPS(FP16),AI算力已经成为数据中心发展的最大驱动力和决定性因素。
如何灵活高效的使用和管理这些AI算力,也是整个行业面临的挑战和难题。
1 智算中心业务多样性
随着决策式AI到生成式AI的演进,AI任务从训练到部署的多样化发展,以及从小模型到大模型的持续迭代,智算中心的业务变得越多元化:
图1 业务多元化与AI算力
1)任务类型差异化。不同类型的AI任务,如机器学习、深度学习、图像处理等,对算力资源的需求各不相同。这些任务可能需要不同的处理器、内存、存储等硬件配置,导致算力资源难以统一管理和调度。
2)任务规模差异化。不同规模的任务对算力资源的需求差异很大,而当前缺乏统一的标准来指导算力资源的分配。这导致小规模任务可能占用过多资源,造成浪费,而大规模任务可能因资源不足而影响计算效率。
3)任务优先级差异化。在实际应用中,高优先级的任务往往能够优先获得算力资源,这可能导致其他任务得不到及时满足,加剧了算力资源的碎片化。
AI业务的多元化对于AI算力资源的使用和管理提出了挑战,具体包括AI算力资源的申请、分配、释放、回收等过程。
2 硬件定义AI算力
目前,AI算力的使用和管理主要依赖于物理机、虚拟机、容器等形态。这些形态虽然在一定程度上提升了算力的灵活性和可扩展性,但仍存在显著问题。
首先,当GPU算力被静态分配给某个计算单元后,即使这部分算力并未被AI应用实际使用,也无法被其他AI应用复用,这不仅导致了算力资源的极大浪费,也限制了AI应用的进一步发展;
图2 GPU静态分配
其次,用户在申请和释放资源的时候需要跟管理员进行沟通,同时管理员也需要经过多次确认之后才能完成资源的分配和回收。特别是在资源比较紧张的时候,如果用户在使用资源的时候发现无法满足应用的需求,则需要重复之前跟管理员的沟通流程,极大的阻碍了组织的业务创新,这种资源的使用和管理方式可以理解成“硬件定义AI算力”;
图3 硬件定义AI算力示意图
最后,不同的资源位于不同的业务孤岛中,无法实现部门间的共享;采购扩容又面临周期长的问题,大大降低了资源的使用效率。
3 软件定义AI算力
软件定义的本质就是通过软件实现业务和资源的解耦,具体实现方式就是通过一个抽象的资源池化层将底层分布在不同服务器上的硬件资源统一调度和管理。
当应用需要访问硬件时,会经过资源池化层的调度分配,最终映射到合适的服务器硬件上。应用不需要考虑最终访问的硬件资源在哪台服务器,也不需要关心自身运行的服务器上是否有硬件资源,所有的这些都是由资源池化层统一处理。
图4 软件定义AI算力技术架构
软件定义AI算力正是借鉴软件定义的思想,同时参考软件定义存储产品的演进路线,为解决AI算力使用和管理面临的挑战而提出的解决方案,能实现AI应用和AI算力加速卡的解耦以及用户和管理员的解耦。
AI应用和AI算力加速卡的解耦:软件定义AI算力的核心技术是将不同服务器的AI算力加速卡通过网络互联组成一个分布式的AI算力服务器集群,在AI算力服务器集群之上构建一个抽象的AI算力资源池化层,AI应用可以通过网络访问到整个资源池里面的AI算力,而不用关心AI算力来自于哪台物理服务器的哪张AI算力加速卡,同时AI应用可以按照自己的需求自助化的对资源池的AI算力进行按需申请、自动释放、动态调整、跨机聚合等操作,赋能业务创新。
用户和管理员的解耦:软件定义AI算力的核心价值是通过软件定义的方式将AI算力资源的申请、分配、使用、回收等过程实现用户和管理员的彻底解耦,从而保证用户可以灵活的申请和使用算力,管理员可以高效的分配和回收算力,同时通过开放的数据面和管理面API,第三方只需要简单的适配对接就可以将软件定义AI算力集成到现有的业务系统。
图5 软件定义AI算力
4 软件定义AI算力实现路径
目前智算中心和数据中心使用的AI算力90%都是GPU,因此我们可以以GPU为例,来分析软件定义AI算力实现路径。我们知道一个完整的GPU系统架构,从底层的硬件到顶层的应用,会分为硬件层、内核态、用户态三个大层次。
硬件层:包含不同厂商GPU硬件,如Nvidia、AMD、海光等,GPU作为附加在计算机当中的设备(device),通过PCIe接口(或其它接口,如SXM4等)和计算机系统连接。
内核态:计算机上运行的软件,如内核态驱动访问硬件时,都会转化成PCIe的TLP报文发送到GPU硬件上,由GPU硬件进行解析并处理。PCIe的TLP报文格式是国际标准,是公开的,但是报文承载的信息是GPU硬件厂商自己定义的,一般都是非公开的。
用户态:出于系统安全、功能方面的需求,从CPU硬件到操作系统设计上明确划分了代码执行的两个运行态,内核态和用户态。在内核态中运行的代码受到操作系统以及CPU硬件的特殊保护,用户态的代码只能通过操作系统预先定义好的标准接口,调用内核态的代码。
图6 GPU系统架构
从GPU系统架构来看,厂商在芯片到应用这五层都可以实现软件定义AI算力,但考虑到框架之间没有统一的API,再加上框架层支撑的AI应用仅仅是整个GPU拆分成应用的一个细分领域,还有云桌面、云游戏、超算、模拟仿真等,因此在框架层之上实现软件定义AI算力不具有通用性。
图7 软件定义AI算力实现路径通用性比较
要实现通用性更好的软件定义AI算力只有从运行时、驱动和芯片三层考虑。
1)如果从芯片层实现软件定义AI算力,因为涉及到硬件设计,所以只能由GPU厂商来做,且只能实现单个GPU的虚拟化,例如英伟达的MIG。
2)如果从驱动层实现软件定义AI算力,则厂商必须完全掌握GPU原生内核驱动的源码以及驱动对外的系统调用API。由于英伟达只开放了内核态的驱动源码,用户态模块还是闭源,因此只有英伟达自己可以在这层支持所有的GPU虚拟化能力。业内还有qGPU和cGPU方案都工作在这层,但是由于缺少完整的接口细节,目前这两个方案都只能支持基于容器环境的虚拟化,无法跨越操作系统支持远程GPU,因此也只能实现GPU的虚拟化。
3)如果从运行时层实现软件定义AI算力,则需要对CUDA、OpenGL、Vulkan等所有的标准接口进行拦截,工作量相对前面两种方案的要巨大得多,有数量级的差异。但考虑到CUDA、OpenGL、Vulkan等接口都是公开的标准化接口,具有开放性和接口稳定性,所以基于这些接口的实现方案具有很好的兼容性和可持续性。另外该方案运行在用户态,因此可以规避内核态代码不应承载过于复杂的功能的工程实践,可以通过复杂的网络协议栈来实现远程GPU的能力,从而支持GPU池化。从部署形态上来说,这种方案对用户环境的侵入性是最小的,也是最安全的,即使发生故障也可以迅速被操作系统隔离,而通过一些软件工程的设计可以有很强的自恢复能力。
综上分析,运行时是实现软件定义AI算力的最佳实现路径。
5 方案实践
趋动科技的OrionX(猎户座)软件定义AI算力解决方案可以帮助客户构建数据中心级AI算力资源池,使应用无需修改就能透明地共享和使用数据中心内任何服务器之上的AI加速卡,目前OrionX已经支持英伟达、海光、寒武纪、昇腾、天数智芯、登临科技、燧原科技等厂商AI加速卡的池化或纳管。
图8 OrionX系统架构
OrionX通过软件定义AI算力,颠覆了原有的AI应用直接调用物理GPU的架构,增加软件层,将AI应用与物理GPU解耦。AI应用调用逻辑的OrionX vGPU,再由OrionX将OrionX vGPU需求匹配到具体的物理GPU。
OrionX架构实现了GPU资源池化,让用户高效、智能、灵活地使用GPU资源,达到了降本增效的目的。软件定义AI算力的核心能力如下:
按需分配:资源池内各类算力资源按需挂载,用完立即回收,资源高效流转;
动态调整:只需在容器/虚拟机/物理机等执行环境中声明需要的资源,就可以让AI应用获取到对应的算力,而无需重启执行环境;
远程调用:AI 应用可在资源池任意位置进行部署,无需关注底层物理硬件配置细节;
资源聚合:资源池内各类算力资源通过网络远程调用方式实现资源整合,形成算力资源池,一方面可突破单服务器硬件配置闲置,另一方面可减少资源池内硬件资源碎片;
弹性伸缩:AI 应用可弹性使用资源池内算力资源,无需重启即可改变申请算力资源;
热迁移:支持在线地将AI任务迁移到不同节点,满足数据中心内节点均衡/碎片整理/下线维护等场景需求;
显存超分:支持将多个任务调度到同一张物理GPU卡上运行,即使这些任务的总显存需求超过了单张物理GPU卡的显存大小;
算力超分:支持将多个任务调度到同一张物理GPU卡上运行,即使这些任务的总算力需求超过了单张物理GPU卡100%的算力;
单设备多协议:单个OrionX vGPU能够支持CUDA+OpenGL或Vulkan双协议,同时满足计算+渲染的场景需求;
自定义算力芯片型号:支持管理员自定义算力卡规格,可设置自定义算力卡的名称、显存以及算力;支持AI应用使用自定义算力卡规格,系统自动进行资源的匹配以及AI任务的调度和运算。
6 展望
AI一定会进入千家万户赋能百业,人类社会对算力的需求一定会持续增长,用户永远都希望算力成本越低越好。软件定义技术为数据中心提供了一种灵活、高效、便捷和极致性价比的AI算力解决方案,用户可灵活地进行资源申请、调整和释放,管理员高效的资源分配、供应和回收;第三方业务系统便捷地适配、对接和集成。软件定义AI算力大大地促进了AI应用生态的繁荣和发展,也进一步加速了AI时代的到来。
参考文献:
1. 百度百科-软件定义存储https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E5%AE%9A%E4%B9%89%E5%AD%98%E5%82%A8/17583144?fr=ge_ala
2. 百度百科-软件定义网络
https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E5%AE%9A%E4%B9%89%E7%BD%91%E7%BB%9C?fromModule=lemma_search-box
3. 百度百科-软件定义
https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E5%AE%9A%E4%B9%89/18818421
4. 【干货】什么是软件定义存储,收藏级别~
https://mp.weixin.qq.com/s/zEUHWrb8Iq4pdqhv0-i_6w
5.华为发布《数据中心2030》报告:AI计算算力成为数据中心发展的最大驱动力和决定性因素
https://baijiahao.baidu.com/sid=1777571264042708490&wfr=spider&for=pc
6.联手体系结构专业委员会:“用户态GPU池化技术”术语发布 | CCF术语快线
https://mp.weixin.qq.com/s/BoqIrRdDzYSGdVgma641wQ
7.GPU从虚拟化迈向池化:趋动OrionX产品的创新之路
https://mp.weixin.qq.com/s/a68A