Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

路 李泽南编译

90秒训练AlexNet!商汤刷新纪录

随着技术和硬件的发展,在 ImageNet 上训练 AlexNet、ResNet-50 的速度被不断刷新。2018 年 7 月,腾讯机智机器学习平台团队在 ImageNet 数据集上仅用 4 分钟训练好 AlexNet、6.6 分钟训练好 ResNet-50;11 月,索尼刷新在 ImageNet 数据集上训练 ResNet-50 的时间:224 秒;之后不久,谷歌再次刷新 ImageNet/ResNet-50 训练时间的记录:2.2 分钟。 昨日,商汤和新加坡南洋理工大学的研究者发布最新研究,他们在 ImageNet 数据集上使用 512 个 GPU 仅用一分半钟完成了 AlexNet 的训练(此前,腾讯机智团队用了 1024 个 GPU、4 分钟时间);在 512 个 GPU 上用 7.3 分钟完成了 ResNet-50 的训练。

扩展深度神经网络(DNN)训练对于减少模型训练时间非常重要。高通信消耗是在多个 GPU 上进行分布式 DNN 训练的主要性能瓶颈。商汤的这项研究表明流行的开源 DNN 系统在以 56 Gbps 网络连接的 64 个 GPU 上仅能实现 2.5 倍的加速比。为解决该问题,这项研究提出了通信后端 GradientFlow 用于分布式 DNN 训练,并使用了一系列网络优化技术。

  • 将 ring-based allreduce、混合精度训练和计算/通信重叠(computation/communication overlap)集成到 GradientFlow 中。

  • 提出 lazy allreduce,将多个通信操作融合为一个操作来提高网络吞吐量。

  • 设计了粗粒度稀疏通信(coarse-grained sparse communication,CSC),仅传输重要的梯度 chunk 以降低网络流量。

研究者使用该方法在 512 个 GPU 上训练 ImageNet/AlexNet,获得了 410.2 的加速比,在 1.5 分钟内完成了 95-epoch 的训练,超过已有方法。

分布式 DNN 训练

关于 DNN

深度神经网络(DNN)从训练数据中学习模型,然后利用学得模型在新数据上执行预测。通常,DNN 包含多个层,从 5 个到 1000 多都有。下图展示了一个有 7 个层的 DNN。图中数据层负责读取和预处理输入数据,第一层与后续一系列中间层相连,包括两个卷积层、两个池化层、一个内积(innerproduct)层、一个损失层,这些层都使用特定函数和大量参数,以将输入转换为输出。最终,该 DNN 将原始输入数据转换为期望输出或者说预测结果。

图 2:有 7 个层的深度神经网络示例。

为了给出准确的预测结果,大部分 DNN 都需要接受训练。研究者最常使用 iterative-convergent 算法和反向传播来训练 DNN。

数据并行分布式 DNN 训练

在单个节点上用大型训练数据进行模型训练需要耗费大量时间。因此出现了很多分布式 DNN 系统(如 TensorFlow 和 PyTorch)可以通过数据并行策略在集群上进行并行化 DNN 训练,即一个模型在所有 GPU 上同时运行,但它们处理的是不同部分的训练数据。

如下图所示,实现数据并行 DNN 训练有两个设计选择:使用 master-slave 架构的参数服务器(PS)方法、使用 P2P 架构的 allreduce 方法。在 PS 方法中,设置一或多个服务器节点来主要管理模型参数。在每次迭代中,每个 worker 将其计算出的梯度传向服务器节点以聚合梯度、更新模型,然后再从服务器节点处获取最新的参数信息。而在 allreduce 方法中,所有 worker 直接互相通信,通过 allreduce 操作交换局部梯度。在 allreduce 操作之后,每个 GPU 聚合梯度,并使用它们对复制参数进行局部更新。

本研究使用基于 allreduce 的 DNN 训练方法。

图 3:分布式 DNN 的系统架构。

基准系统设计&集群设置

下图展示了基于 allreduce 的分布式 DNN 训练的基准系统设计。

图 4:分布式 DNN 训练的基准系统。

为评估系统性能,研究者在 ImageNet-1K 数据集上对两个经典 DNN(AlexNet 和 ResNet-50)的训练时间进行评估。该数据集包含超过 120 万张标注图像和 1000 个类别。

图 5:AlexNet 和 ResNet-50 架构信息。AlexNet 有 27 个层,26 个张量管理 60.9M 个可学习参数。ResNet-50 有 188 个层,152 个张量管理 25.5M 可学习参数

集群硬件 & 软件设置

该研究使用两个集群进行性能评估:Cluster-P 和 Cluster-V。

  • Cluster-P 包含 16 台物理机器和 128 个英伟达 Pascal GPU。

  • Cluster-V 包含 64 台物理机器和 512 个英伟达 Volta GPU。与 Pascal GPU 相比,Volta GPU 可使用 Tensor Core 通过混合精度矩阵乘法加速矩阵运算,并在单个任务中进行累加。

在两种集群中,每台物理机器都配备 8 个 GPU,同一台机器中的所有 GPU 通过 PCIe 连接,集群中的所有机器通过 56Gbps InfiniBand 连接,这些机器共享分布式文件系统,用于训练数据集管理。

Ring-Based AllReduce

高效的 allreduce 算法和实现对于分布式 DNN 来说非常重要。ring-based allreduce [24] 是一种以固定通信成本执行 allreduce 的算法,通信成本按每个 GPU 迁出/入的数据量来衡量。

图 7:ring-based allreduce 和层级 allreduce。该示例中有 4 台机器,每台机器有 4 个 GPU。在(a)中,全部 16 个 GPU 按逻辑环路(logical ring)排列。在(b)中,16 个 GPU 被分为 4 组,每一组的 master GPU 构成 allreduce 的逻辑环路。

混合精度训练

该研究将混合精度训练扩展到分布式设置中。下图展示了混合精度训练的分布式设计。

图 10:混合精度训练使用半精度梯度张量作为 allreduce 操作的输入。

图 11:以 NCCL 为通信后端,使用单精度训练和混合精度在 Cluster-P 和 Cluster-V 上进行 System-I 性能评估。在 Cluster-P 上,每个 GPU 的批量大小是 128,AlexNet 和 ResNet-50 各 64。在 Cluster-V 上,每个 GPU 的批量大小是 128,AlexNet 和 ResNet-50 均 128。

计算/通信重叠

图 12:基于层的计算/通信重叠。该方法中,上层的通信操作可与下层的计算操作重叠,从而降低迭代的专用通信时间。

图 13:AlexNet 和 ResNet-50 在单个 Volta GPU 上的单 GPU 单层 backward 计算时间。

GradientFlow 系统设计

本研究提出 GradientFlow 来解决分布式 DNN 训练的高通信成本问题。GradientFlow 是 System-I 的通信后端,支持大量网络优化技术,包括 ring-based allreduce、混合精度训练、计算/通信重叠。为了进一步降低网络成本,GradientFlow 使用 lazy allreduce,将多个 allreduce 操作融合为一个操作来提高网络吞吐量。它还使用粗粒度的稀疏通信,仅传输重要的梯度 chunk 以降低网络流量。下面将介绍 lazy allreduce 和粗粒度稀疏通信,并衡量其有效性。

Lazy AllReduce

图 15:lazy allreduce 不会在生成单个梯度张量时直接对其执行 allreduce。它试图将多个 allreduce 操作融合为一,以提高网络吞吐量。上例中,lazy allreduce 的上层通信与下层的 backward 计算重叠。

粗细度稀疏通信

下图展示了粗粒度稀疏通信的设计。

粗粒度稀疏通信(CSC)使用 momentum SGD correction 和 warm-up dense training,避免损失模型准确率

Momentum SGD Correction 算法如下所示:

研究者在 System-I 中实现了 CSC,并评估了其在 Alexnet 和 ResNet-50 训练中的性能。下图展示了平均吞吐量。

图 19:使用 NCCL、混合精度训练和粗粒度稀疏通信时的 System-I 性能评估。单 GPU 批量大小为 128。在 disable-overlap 方法中,System-I 对所有选中梯度 chunk 执行一个 allreduce 操作。在 enable-overlap 方法中,System-I 执行多个 allreduce 操作,通信和计算出现部分重叠。

整体性能评估

网络优化技术的有效性

表 1 和表 2 展示了单个集成网络优化技术及其结合体的有效性。

表 1:使用 System-I 在 Cluster-P (128 Pascal GPUs) 和 Cluster-V (512 Volta GPUs) 上对比不同网络优化技术的 AlexNet 训练吞吐量 (image/s) 和加速比。MP:混合精度训练;LA:Lazy AllReduce;CSC:粗粒度稀疏通信;Overlap:计算/通信重叠。

表 2:使用 System-I 在 Cluster-P (128 Pascal GPUs) 和 Cluster-V (512 Volta GPUs) 上对比不同网络优化技术的 ResNet-50 训练吞吐量 (image/s) 和加速比。

端到端训练时间

表 3:不同方法的 AlexNet 训练对比。

表 4:不同方法的 ResNet-50 训练对比。

论文链接:https://arxiv.org/abs/1902.06855

理论商汤AlexNetImageNet
2
相关数据
Qualcomm机构

高通公司(英语:Qualcomm,NASDAQ:QCOM)是一个位于美国加州圣地亚哥的无线电通信技术研发公司,由加州大学圣地亚哥分校教授厄文·马克·雅克布和安德鲁·维特比创建,于1985年成立。两人此前曾共同创建Linkabit。 高通公司是全球3G、4G与5G技术研发的领先企业,目前已经向全球多家制造商提供技术使用授权,涉及了世界上所有电信设备和消费电子设备的品牌。根据iSuppli的统计数据,高通在2007年度一季度首次一举成为全球最大的无线半导体供应商,并在此后继续保持这一领导地位。其骁龙移动智能处理器是业界领先的全合一、全系列移动处理器,具有高性能、低功耗、逼真的多媒体和全面的连接性。目前公司的产品和业务正在变革医疗、汽车、物联网、智能家居、智慧城市等多个领域。

http://www.qualcomm.com/
池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

网络流技术

在图论中,网络流(英语:Network flow)是指在一个每条边都有容量(capacity)的有向图分配流,使一条边的流量不会超过它的容量。通常在运筹学中,有向图称为网络。顶点称为节点(node)而边称为弧(arc)。一道流必须匹配一个结点的进出的流量相同的限制,除非这是一个源点(source)──有较多向外的流,或是一个汇点(sink)──有较多向内的流。一个网络可以用来模拟道路系统的交通量、管中的液体、电路中的电流或类似一些东西在一个结点的网络中游动的任何事物。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

推荐文章
暂无评论
暂无评论~