阿里公开自研AI集群细节:64个GPU,百万分类训练速度提升4倍

简介: 从节点架构到网络架构,再到通信算法,阿里巴巴把自研的高性能AI集群技术细节写成了论文,并对外公布。

乾明 发自 凹非寺
量子位 报道 | 公众号 QbitAI

从节点架构到网络架构,再到通信算法,阿里巴巴把自研的高性能AI集群技术细节写成了论文,并对外公布。

论文名为EFLOPS: Algorithm and System Co-design for a High Performance Distributed Training Platform,被计算机体系结构顶级会议HPCA 2020收录。阿里是国内唯一有论文收录的企业,论文作者之一、阿里资深技术专家蒋晓维在会议现场分享了论文内容。

image.png

除了展示AI集群技术细节,他还介绍了其如何为阿里巴巴内部业务和算法带来价值。这一集群已应用于阿里巴巴计算平台的人工智能训练平台(PAI),服务阿里巴巴的人工智能业务的模型训练:

能将拍立淘百万分类大模型的训练速度提升4倍,并首次支持千万分类模型的训练;在提升阿里巴巴翻译模型精度的同时,能将训练时间从100小时降低至12小时。

而且与世界顶级的AI计算系统相比,阿里的AI集群虽然使用了性能较低的硬件资源,但表现出了相当的性能。

这是阿里巴巴首次对外披露高性能AI集群的性能,具体情况如何?我们根据阿里研究团队提供的解读一一来看。

从业务出发,优化AI集群架构

由于深度神经网络的技术突破,围绕AI的技术研究,如AI算法模型、训练框架、以及底层的加速器设计等,引起越来越多的关注,而且应用越来广泛,已经落地到社会生活的各个方面。

“然而极少有人从集群架构角度探究过,AI业务的运行模式与传统大数据处理业务的差别,以及AI集群的架构设计应该如何优化,“阿里研究团队表示。

image.png

他们认为,虽然AI业务存在很强的数据并行度,但与大数据处理业务和高性能计算业务特征存在明显的不同。核心差别有两点:

第一,AI业务的子任务独立性很低,需要周期性地进行通信,实现梯度的同步;第二,AI业务的运行以加速部件为中心,加速部件之间直接通信的并发度显著高于传统服务器。

因此,在传统数据中心的服务器架构和网络架构上运行AI业务,会存在很多严重的问题。

具体来说,服务器架构问题,主要是资源配置不平衡导致的拥塞问题,以及PCIe链路的QoS问题。

一般情况下,传统服务器配备一张网卡用于节点间通信,为了支持AI业务会配置多个GPU。

但AI训练经常需要在GPU之间进行梯度的同步,多GPU并发访问网络,唯一的网卡就会成为系统的瓶颈。

此外,PCIe链路上的带宽分配与路径长度密切相关,长路径获得的带宽分配较低,而跨Socket通信的问题更加严重。

image.png

网络架构问题,主要在于AI训练中同步通信导致的短板效应。网络拥塞本是一个非常普遍的问题,相关研究已经持续了几十年。

但拥塞控制算法的最终目的,在于对两个碰撞的流进行限速,使其尽快达到均分物理带宽的目的,并不能解决AI训练集群的通信效率问题。

由于AI业务通信的同步性,每个通信事务的最终性能决定于最慢的连接。均分带宽意味着事务完成时间的成倍提升,会严重影响AI通信的性能。

基于此,阿里巴巴决定为AI业务自研高性能AI集群。

阿里AI集群的关键技术

阿里巴巴自研的高性能AI集群名为EFlops,关键技术一共有三个:网络化异构计算服务器架构、高扩展性网络架构、与系统架构协同的高性能通信库。

为了避免网卡上的数据拥塞,他们为每个GPU提供专用的网卡,来负责与其他GPU的通信。

此外,基于Top-of-Server的设计思想,将节点内加速器之间的通信导出到节点外,并利用成熟的以太网QoS机制来保证拥塞流量之间的公平性。

研究团队认为,随着加速器芯片计算能力的快速提升,对通信性能提出越来越高的需求,这种多网卡的网络化异构计算服务器架构将很快成为主流。

在网络架构层面,EFlops设计了BiGraph网络拓扑,在两层网络之间提供了丰富的链路资源,提供了跨层路由的可控性。

image.png

配合多网卡服务器结构,他们在EFlops项目中提出了BiGraph网络拓扑,其与传统的Fat-tree拓扑有相似之处,也存在根本的区别。

与Fat-tree拓扑类似的地方在于,他们将网络中的分为两部分(Upper和Lower),各部分之间通过Clos架构进行互连,形如两层Fat-tree拓扑的Spine和Leaf交换机。

image.png

与Fat-tree不同的是,他们在两部分交换机上都可以直接接入计算服务器;即每一个交换机都扮演了Fat-tree拓扑中的Spine和Leaf两个角色,最大跳步数为3。

也给BiGraph拓扑带来了两个重要的特性:

一方面,在两层交换机之间提供了丰富的物理链路资源。在N个计算服务器的系统中,两层交换机之间至少存在着N/2个物理链路可供使用。另一方面,接入不同层次的任意两个计算服务器之间的最短路径具有唯一性。

因此,他们可以充分利用这一特性,在通信库甚至更高层次进行服务器间通信模式的管理。比如,在建立连接的时候,选择合适源和目的服务器,来控制网络上的路径选择。

想要说清楚这一点,需要引入一个新的概念:Allreduce——数据并行训练场景下的最主要集合通信操作。

其中常用的通信算法有Ring-based(Ring)、Tree-based(Tree)和Halving-Doubling(HD)等。

在阿里巴巴的这篇论文中,主要关注的是Ring和HD,前者是应用范围最广的算法之一,后者是他们在这一研究中的优化对象。

image.png

Ring和HD算法在数据传输量上没有区别,都是2S;其中S是Message的大小。从通信次数角度看,Ring算法需要N-1个Step的通信,而HD算法只需要log2N个Step;其中N是参与节点个数。

而Ring算法只需要N个连接,而HD算法需要N*log2N个连接。需要特别指出的是,HD算法的每个Step只需要N/2个连接。

结合BiGraph拓扑的特性进行分析,可以看到:BiGraph拓扑两层交换机之间存在N/2个物理链路,而HD算法每个step需要N/2个连接。

BiGraph拓扑两层交换机之间最短路径的确定性,提供了一种可能性:将HD算法的连接和BiGraph拓扑的物理链路进行一一映射,避免它们之间的链路争用,以彻底解决网络拥塞问题。

基于此,他们也进一步提出了Rank映射算法,将HD算法的通信连接一一映射至BiGraph网络的物理链路,避免了网络的拥塞,该算法Halving-Doubling with Rank-Mapping(HDRM)已经在阿里定制的集合式通信库ACCL实现。具体步骤如下:

image.png

如此集群,性能如何?

为了评估EFlops系统的性能,他们部署了16个节点,共计64个GPU的训练集群。其中每个节点配置了4个Tesla V100-32G的GPU,以及4个ConnectX-5 100Gbps网卡。

网络环境按照BiGraph拓扑进行设计,其中8个物理交换机划分为16个虚拟交换机,分别部署于BiGraph的两层。

研究团队用MLPerf的ResNet50模型评估了集群性能,具体方式是在达到指定准确率之后,计算单位时间图片处理数量。

下图呈现了EFlops系统和单网卡系统的性能对比,包括全系统吞吐量和单GPU平均吞吐量。

image.png

可以看到,EFlops系统的性能基本达到了线性扩展,而单网卡系统的单位吞吐量明显随着规模逐步下降。

与世界顶级的AI计算系统相比,EFlops虽然使用了性能较低的硬件资源(V100-PCIe性能低于V100-SXM2约10%)也表现出了相当的性能。

此外,他们还分析了阿里巴巴内部应用的性能收益。以拍立淘百万分类模型为例,EFlops系统可以提升通信性能5.57倍,端到端性能34.8%。

因为通信量占比不高,HDRM算法提升通信性能43.5%,整体性能4.3%。对BERT模型而言,通信量明显高于拍立淘百万分类模型,仅HDRM算法就可以提升通信性能36%,端到端性能15.8%。

image.png

研究团队表示,可以预见,随着系统规模进一步增长,EFlops的性能收益将显著提升。基于64节点集群的收益,他们进一步搭建了512 GPUs的高性能AI训练集群。

初步的评测结果显示,基于ImageNet训练集,在Resnet50模型上,EFlops集群仍然能保持接近线性的扩展性。

阿里巴巴基础设施团队打造

EFlops集群一共有17名阿里的技术专家参与打造,大多来自阿里巴巴基础设施团队,平头哥团队提供支持。

image.png

论文的第一作者是董建波,毕业于中科院计算所,现在是阿里巴巴高级技术专家。论文的通讯作者是谢源——阿里巴巴达摩院高级研究员、平头哥首席科学家。

谢源是计算体系结构、芯片设计领域大牛级别的存在,研究方向是计算机体系结构、集成电路设计、电子设计自动化、和嵌入式系统设计,已发表过300多篇顶级期刊和会议论文。

在获得IEEE、AAAS、ACM Fellow称号之后,他在2月28日再次获得国际学术荣誉——IEEE CS 2020年度技术成就奖。

本文来源:量子位微信公众号
点击查看原文

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
10月前
|
机器学习/深度学习 人工智能 算法
AI 基础知识从 0.6 到 0.7—— 彻底拆解深度神经网络训练的五大核心步骤
本文以一个经典的PyTorch手写数字识别代码示例为引子,深入剖析了简洁代码背后隐藏的深度神经网络(DNN)训练全过程。
1544 56
|
8月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
701 1
|
9月前
|
运维 NoSQL 调度
GPU集群扩展:Ray Serve与Celery的技术选型与应用场景分析
Ray Serve与Celery对比:Ray Serve适用于低延迟、高并发的GPU推理服务,支持资源感知调度;Celery适合CPU密集型的离线批处理,具备成熟的任务队列机制。两者设计理念不同,适用场景各异,可根据任务类型灵活选型。
427 6
GPU集群扩展:Ray Serve与Celery的技术选型与应用场景分析
|
8月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
508 89
|
8月前
|
Kubernetes 调度 异构计算
Kubernetes集群中,部分使用GPU资源的Pod出现UnexpectedAdmissionError问题的解决方案。
如果在进行上述检查之后,问题依然存在,可以尝试创建一个最小化的Pod配置,仅请求GPU资源而不
600 5
|
8月前
|
机器学习/深度学习 人工智能 JSON
PHP从0到1实现 AI 智能体系统并且训练知识库资料
本文详解如何用PHP从0到1构建AI智能体,涵盖提示词设计、记忆管理、知识库集成与反馈优化四大核心训练维度,结合实战案例与系统架构,助你打造懂业务、会进化的专属AI助手。
1310 6
|
11月前
|
机器学习/深度学习 人工智能 数据可视化
基于YOLOv8的AI虫子种类识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
本项目基于YOLOv8与PyQt5开发,实现虫子种类识别,支持图片、视频、摄像头等多种输入方式,具备完整训练与部署流程,开箱即用,附带数据集与源码,适合快速搭建高精度昆虫识别系统。
基于YOLOv8的AI虫子种类识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
|
11月前
|
机器学习/深度学习 人工智能 API
AI-Compass LLM训练框架生态:整合ms-swift、Unsloth、Megatron-LM等核心框架,涵盖全参数/PEFT训练与分布式优化
AI-Compass LLM训练框架生态:整合ms-swift、Unsloth、Megatron-LM等核心框架,涵盖全参数/PEFT训练与分布式优化