AI 集群旨在获得更高的 AI 集成算力,扮演着“承上启下“的角色,“承上”是指向 AI 应用提供的有效集成算力,高集成算力是支撑 AI 大模型和海量数据量的使能能力。而“启下”是指通过集群的计算、网络、存储平衡设计来充分发挥 AI 计算芯片能力,例如访存或网络瓶颈都会导致较低的 AI 芯片效率。AI 集群设计的关键在于:1)单机:计算优化,软硬件协同优化发挥 AI 加速器有效算力。2)多机:通信优化,最小化多机数据交换引入的计算效率损耗。我们将从单机加速和集群加速(多机)两个方面介绍相关技术和系统。
首先,我们将从计算和互联两个技术点对阿里现有的技术栈进行全面的阐述。
计算技术
神龙服务器和神龙虚拟化技术
在阿里云神龙硬件平台下,虚拟化架构也做了相应的升级,使计算虚拟化部分的架构更加清晰简洁,让虚拟机能提供接近物理机的性能。如图所示,神龙服务器架构的主要特点是:I/O 链路从传统的软件实现转变为硬件和直通设备来实现,存储虚拟化、网络虚拟化都在 MOC 卡上来实现;同时将管控系统、监控程序等都下沉到 MOC 卡上。在提供计算服务的物理机上,只运行阿里云自己裁剪的 Linux 操作系统和轻量化的虚拟机监控器。总的来说,神龙硬件平台的底座,加上轻量化的宿主机 OS,再加上轻量化的虚拟机监控器,就组成了神龙架构下的轻薄且高效的新一代虚拟化平台。
GPU
CPU 执行 AI 计算往往并不能达到最优的性价比,因此,具有海量并行计算能力、能够加速 AI 计算的 AI 芯片应运而生。当前最具代表的是 GPU、FPGA 和 AI ASIC 芯片。GPU 仍然是当前最成熟也是最广泛使用的加速器,阿里巴巴上层框架针对 GPU 做了大量的编译优化工作。GPU 在阿里巴巴得到了广泛的部署,也是云上 AI 算力售卖的主力,我们已经能做到基于 GPU 的云产品与最新一代 GPU 同步发布。在云上 GPU 的安全性,可运维性,用户体验上我们都走在业界的前列。在于通用计算可运维性在 GPU 虚拟化场景下的热升级能力,居于业界第一;是业界首个发布基于 SRIOV 的 GPU 热迁移技术预研的云厂商。在业界首个实现基于 GRID 的 vGPU 技术在云上输出,引导了 vGPU 云化的技术趋势,并且为 5G 时代的云游戏铺垫了 GPU 计算基础设施。
GPU 的训练芯片一直引领着 GPU 技术发展的趋势,除了基础 FP32 算力的高速增长之外,通过精度的变化大幅度提高算力,比如 Tensorcore 是另外一个算力提升趋势;另外,由于多卡,多机的通信的需求,GPU 的通信经历了 PCIE P2P 技术,基于 NVLink 的高速通信技术,以及通过 RDMA 网络的 GPUDirect RDMA 技术。而在阿里云上,由于多租户之间需要进行算力共享,在不同的通信模式下,如何进行算力分割和通信的隔离,是一个阿里云一直研究的技术,包括最新的基于 NVSwitch 的 NVLink 全连接场景下的可编程拓扑分割技术等。
FPGA
FPGA 器件自诞生之初,就以高度灵活的可编程性提供类 ASIC 的性能和能效比而广泛应用于有线和无线通信、航空航天、医疗电子和汽车电子等领域。但是,相比 CPU 和 GPU,FPGA 的开发周期较长(尽管只有 ASIC 开发周期的一半乃至三分之一)、开发和使用门槛较高,使得 FPGA 的开发人员远远少于 CPU 和 GPU 的开发人员,同时应用范围和知名度也受到了很大的限制。在 FPGA 上,我们具备了有更高的定制和自研能力,阿里云与 AIS 联合研发的业界第一款单卡双芯片的 Xilinx FPGA 板卡,在板卡和 HDK 层面实现了技术自主创新的能力。
舜天平台:FPGA 即服务 (FaaS)
云上的 FPGA 实例做了丰富的功能输出,阿里云 FaaS(FPGA as a Service)舜天平台在云端提供统一硬件平台与中间件,可大大降低加速器的开发与部署成本。第三方 ISV 加速器 IP 可以迅速形成服务提供给用户,消除加速技术与最终用户的硬件壁垒。用户则能够在无需了解底层硬件的情况下,直接按需使用加速服务。为了给加速器提供方和使用方提供更加高效、统一的开发及部署平台,FaaS 舜天平台提供两大开发套件:HDK 和 SDK。FaaS 的逻辑架构图如下图所示:
FaaS FPGA 逻辑架构图
阿里云 FaaS 舜天平台支持最全面的 DMA 技术,包括:DMA、XDMA 和 QDMA;同一架构支持 RTL 和 HLS 开发、验证与测试;全球唯一的同一软件架构同时支持两大 FPGA 厂商 Xilinx 和 Intel 的云厂商。全面、过硬、兼容性好,并且能够利用 PR 技术进行动态热升级的Shell技术使得 FaaS 舜天平台成为阿里集团 FPGA 异构加速业务的基础设施,完全适配了集团的所有已经引入的 FPGA 器件,已经成功服务手淘、优酷、蚂蚁和云安全几大业务板块。
阿里云 FaaS 平台架构图
AliDNN
与 GPU 环境下,单向的软件适配硬件不同,FPGA 和阿里自研 NPU 给了我们定义硬件的机会,可以根据业务特征进行深度的软硬件优化。AliDNN 是一款基于 FPGA 的指令集、加速器、SDK 和编译器全栈自研的深度学习加速引擎。指令集加编译器设计为 AliDNN 提供了充分的灵活性。深度学习框架 (TensorFlow,Caffe 等)可以直接调用 AliDNN 引擎,编译器(震旦)将深度学习模型编译成加速器指令进行计算。算法, runtime,编译器和加速器的全栈软硬件协调优化,使得 AliDNN 拥有极致的效率和性能。AliDNN 提供了高吞吐、低延迟的深度学习推理服务。
NPU
AliNPU(含光 800)更是分析阿里集团内部的人工智能应用场景需求,确定了以 CNN 模型为主做了深度的优化,同时支持一些通用模型,比如 RNN 类模型等。这是针对特定深度学习算法领域做特别的优化,把相关应用的性价比提高到极致,正式如此,含光 800 性价比远超竞品,成为全球最强 AI 推理芯片。
互联技术
RDMA
RDMA 是目前业界最受欢迎的高性能网络技术,能大大节约数据传输时间及 CPU 开销,被公认为是提升人工智能、科学计算、分布式存储性能的关键技术。阿里巴巴基于全新的 HAIL 网络架构并结合自研交换机,打造了从主机网络、消息中间件、盘古分布式存储、网络运营到产品运营的完整技术体系,实现了数十个数据中心的全球最大规模 RDMA 网络部署,远超亚马逊、微软等主要云厂商。这张全球最大规模的数据中心“高速网”使得集群极大地突破了传输速度瓶颈,有效地支撑了云盘 ESSD、云超算 SCC、机器学习 PAI、 云原生数据库 POLARDB 这些广受欢迎的创新产品,并助力电商数据库从容应对双十一峰值流量考验。同时,可以跨 POD 的 lossy RDMA 技术已经在阿里巴巴进入实验测试阶段,届时将进一步扩大 RDMA 的适应范围。
EXSPARCL通信库
自研的EXSPARCL(Extremely Scalable and high Performance Alibaba gRoup Communication Library)集合通信库提供通用的集合通信功能,同时兼容 NVIDIA 的 NCCL。ExSparcl 专门优化支持大规模 AI 集群的高速互联架构和多网卡特性, 充分利用设备之间的互联带宽,保证通信和业务性能的线性扩展。通过对集群/主机物理互联的拓扑感知,和网络路由的最优选择,实现创新的无拥塞算法,确保节点内和节点间的高速通信。例如针对 SCC 训练集群架构,实现的Rank重映射 Havling-Doubling 算法,可以保障集合通信过程中没有因为路径冲突而产生的拥塞排队,在大规模环境中对比 NVDIA 公司的 NCCL 通信库,实现集合通信性能 (AllReduce/AllGather) 的数倍提升,对业务性能的提升也非常明显。此外,拓扑感知的特性可以用于故障规避,大大增强网络的可用性,详见:https://www.qbitai.com/2020/03/11987.html。
飞天AI加速工具(AIACC)
飞天 AI 加速工具通过统一的框架同时支持了 Tensorflow,PyTorch,MXNET,Caffe 这 4 种主流的 AI 计算框架的分布式性能加速,并且针对 VPC 网络和 RDMA 网络都做了很深入的性能优化,在不同场景不同训练规模下可以提升 1~10 倍的训练性能。同时, AIACC 和各 AI 计算框架是解耦的,一方面可以轻松支持各 AI 计算框架社区版本的向前迭代,另一方面,用户使用各 AI 计算框架实现的模型、算法代码基本上不用修改,就可以很轻松的获得性能加速。
FaaS 舜天可以支持 FPGA 芯片高速互联 (最高可达 600G)
阿里云与 AIS 联合研发的业界第一款单卡双芯片的 FPGA 板卡,AliFPGAx2,两块 FPGA 之间的 Serdes 的带宽可以高达 600G,在一台服务器上的两块 AliFPGAx2 的板卡,还可以通过光缆互联与高速 Serdes 互联。于此同时 FaaS F3 提供给用户强大的互联拓扑结构,方便用户搭建 FPGA 集群,实现 FPGA 互联,并且通过 FaaS 舜天的 Shell 提供高速 DMA 的软硬件支持。可以支持单卡 2 芯片互联,双卡 4 芯片互联和 8 卡 16 芯片互联,并且互联的通道可以通过软件灵活配置硬件的隔离分割,在云用户不同的拓扑需求之间进行互联和隔离。下图是典型的 2 卡 4 芯片互联拓扑结构。
在此基础上,阿里巴巴开发了适合不同应用场景的异构超算集群。
SCC:通用和异构超算集群
高性能计算是采用低延迟高带宽的计算节点构成并行计算集群,通过并行计算(Parallel computing)实现对浮点密集型科学和工程模型包括AI深度模型的求解。作为计算节点的神龙裸金属服务器通过 RoCE 网卡实现节点间计算的高速 MPI 通信,通过神龙 MOC 卡实现和 VPC,IO 和网络,云盘的互联。从而在输出超算水平的超级算力的同时,保持所有节点的“云原生”的弹性和统一运维。我们还开发了弹性高性能计算 E-HPC PaaS 平台,作为高性能计算软件栈创建和管理 SCC 集群,同时对有能力自建 HPC 平台的客户直接输出 SCC 集群。
SCC-训练集群:大规模AI训练集群
针对 AI 大规模训练的算力需求,阿里巴巴开展了从硬件到算法的一体化设计。从性能角度,集群设计的核心之一就是通过提升加速器间数据交互的能力,降低非计算开销占比,进而实现算力的规模线性扩展。因此,异构集群系统以优化通信为突破口,对服务器和整机网络架构进行重新定义,先从硬件上解除通信瓶颈,再通过软硬件协同,将增强的通信能力发挥出来,该部分的工作内部代号 EFlops,实现了 AI 训练的线性加速,相关成果在顶级学术会议 HPCA2020 上发布,目前建设的系统单集群 AI 算力可达 500 PFlops(FP16 性能)。
此外,液冷是推动AI集群架构演进的另一股力量。由于功耗限制,当前一个机柜仅能容纳两台或四台 8 卡服务器,计算密度难以提升,而液冷则可以打破这个限制,一个 Tank 即可容纳 100 多块 GPU 卡,省电省地省光纤,提升稳定性。相应地,集群架构根据浸没式液冷 Tank 的尺寸和出线特点进行了重新设计,这一工作已进入实验阶段。
再次,在获得极致性能的同时,我们也兼顾在计算成本方面的优化,以及通用与异构算力解耦之后的灵活性。
异构硬件层虚拟化
阿里 IaaS 的 GPU 虚拟化技术是 AI 计算力上云的基础。阿里 IaaS 在对现有开源 GPU 虚拟化技术之上进行了二次开发,使得现有 GPU 虚拟化方案可以适合公有云对安全性,高可靠性与可监控等关键功能的提升。
在公有云 GPU 服务器的安全隔离方面,阿里云异构 IaaS 层完成了从实例内部的驱动的初步安全过滤,宿主机虚拟化层对 GPU 特权指令的过滤拦截,宿主机 PCIe 协议成的容错处理等三层立体防护体系,确保客户实例不受攻击,也没有可能攻击其他客户。
当前主流异构虚拟化还是以设备直通的方式存在,并在基础之上逐渐演化出 SRIOV, vGPU 分片虚拟化等最新技术。阿里 IaaS 依托现有 GPU 虚拟化技术完成了 AI 集群 (GPU/FPGA) 的云上规模化和产品输出。GPU 虚拟化走过了漫长的发展路程;经历了直通虚拟化,SRIOV 与 vGPU 的分片虚拟化,Intel 的 GVT-G 技术等等。
在通用计算时代,虚拟化的引入主要是为了提高 CPU 利用率,但是随着热升级,热迁移技术的引入,把计算资源的安全性,可靠性推到新的高度。在 GPU 资源利用率提升,计算资源碎片整理上,GPU 虚拟化技术也扮演着重要的角色。
在公有云 GPU 服务器的监控方面,阿里云异构 IaaS 层做了 GPU 相关的云监控方案,可以实时取得当前 GPU 的运行状态与温度,显存用量等信息,并可以自定义多种监控模式。GPU 自定义监控与 GPU 云监控插件。
在公有云 GPU 服务器的高可用性方面,阿里云异构 IaaS 层开发并部署了特有的 GPU 服务器热升级与热迁移功能。使得当实例所在宿主机需要系统软件更新/硬件维修等运维操作时,可以让客户无感的完成升级更新,从而保障了客户业务的稳定性与连续性。基于 SRIOV 和 GRID vGPU 的热迁移能力上,阿里云都作为业界第一梯队领先竞对。
异构 GPU 容器支持(cGPU 容器 AI 算力隔离技术)
云原生已经成为业内云服务的一个趋势,如何能够在云原生上支持异构计算,同时在单个 GPU 上可以运行多个容器并进行隔离,对此业界也做了很多探索。Nvidia vGPU, Nvidia MPS, 友商的 vCUDA 方案,都为用户更小颗粒度的使用 GPU 提供了可能。
阿里云 GPU 团队推出了昊天 cGPU 方案,相比其他方案,这是一个颠覆性的创新。业内常用方案是通过替换 CUDA 库实现拦截,需要对静态链接的程序重新编译,同时 CUDA 升级时也需要适配新版本;而昊天 cGPU 在做到算力调度与显存隔离的同时,也做到了无需替换 CUDA 静态库,动态库,无需重新编译,CUDA,cuDNN 等版本随时升级无需适配。
cGPU 为自主研发的宿主机内核驱动。它的好处在于:
适配开源标准的 Kubernetes 和 NVidia Docker 方案
用户侧透明。AI 应用无需重编译,执行无需 cuda 库替换
针对 Nvidia 设备的底层操作更加稳定和收敛,而 CUDA 层的 API 变化多端,同时一些 Cudnn 非开放的 API 也不容易捕获。
同时支持 GPU 的显存和算力隔离
现在基于阿里云 GPU 团队的 cGPU 昊天方案和容器服务的 GPU 共享调度双剑合璧, 可以打造低成本,可靠,用户友好的规模化 GPU 调度和隔离方案。
软件池化
EAIS.EI:资源调度层池化
EAIS 通过软件池化的方式将 CPU 核心数和后端异构加速设备解耦,前端的纯 CPU ECS可以动态挂载或者卸载后端异构加速设备,前端 ECS 和后端异构加速设备间通过加密的 gRPC 协议通信。后端加速设备可以包括 GPU,FPGA,NPU 等异构加速器,并且通过软件池化的方式进行统一调度和管理。
HARP:Runtime 层池化
做加速机群池化的主要目的,是想提高机群资源利用率。机群管理如 K8s 对加速资源管理手段非常有限,一般都是以直通(pass-through)的方式,以整卡的力度来分配。再者 CPU 和加速资源以整机形式,绑定资源分配,在实际应用中有很大资源浪费。而数据中心呈现去中心化发展趋势(disaggregation),从物理机到虚拟机,到虚拟网卡,到分布式存储,整机的各个部件逐渐以专用机柜的形式,以虚拟化,可配置(configurable)的方式通过网络组装。对比磁盘,加速资源跟通用计算之间联系更紧密,但是随着技术的进步,加速资源单独组机柜,通过网络或者其他互联(interconnect)的形式,对通用计算(CPU)加速,成为一个技术趋势。
Heterogenous accelerator resource pooling (HARP),目前以 GPU 为主要加速资源,将来会扩展到 NPU 和其他加速硬件。通过在用户程序和 driver 之间,加一个中间层(目前为软件,将来可扩展为硬件),来实现加速资源的虚拟化,动态地为用户分配本地或者远程的加速资源,从而更好的管理和利用加速资源。
HARP 实现方式的优势为:
- 对上层应用透明,对运行环境无要求(物理机、容器、VM)均可
- 同时支持本地和远程的加速资源,本地模式下与直接使用 GPU 性能无差异
- 可以通过控制 API 来比较轻量化地在单卡复用情形下显存、计算资源控制
- 可以对上层应用隐藏底层硬件细节,自动化一些底层配置(本地物理 GPU/由 PCIE-switch 连接的另一台 host 上的物理机/vGPU/下一代 GPU 支持/Compute Instance)
- 可以实现一些额外的 profiling 功能,甚至生成一些可以 replay 的 trace
HARP 资源池需要支持其他各种加速芯片,因此希望能建立统一的接口。支持该接口的芯片只需要花少量的工作,就能接入资源池调度系统。因此我们联合上海交大和清华大学,以及寒武纪等芯片厂商,建立中国异构资源池技术标准产业联盟。
硬件层池化
作为软件池化技术的升级,利用自研或者三方的硬件插卡,通过机架或小规模跨机架的高速总线互联技术,对通用计算器与多种加速器进行配比解耦,达到中等规模加速器池化和任意的加速器的灵活组合。同时在可靠性,可运维性,加速卡硬件故障处理 SLA 上提供更好的服务。
远程资源 - 本地访问
最后,基于在“核高基”领域的技术研发,奠定了今天阿里云的 IaaS 及 PaaS 服务具备了以下特点:
- 以产品多样性,打造性价比极致的算力供给的硬件算力基础设施为设计目标。
- 以软硬协同为主的技术研发和布局形成我们的差异化竞争力和技术抓手。
- 从单加速器分片算力共享到大规模集群算力的弹性算力能力的交付能力是一个核心需要打造的能力。
- SLA 服务能力具备差异性,高可靠性。