扩展机器学习,满足人工智能日益增长的要求

作者:Pradeep Dubey(英特尔)和 Amir Khosrowshahi 博士 (Nervana)

下载 [PDF 1.30MB]

人工智能 (AI) 的愿景非常简单,使电脑像人类一样思考和工作,和人类难以区分。人工智能离不开电脑,但它主要依赖人类的关注点、洞察力和启发。人工智能以人为本,但是人类的关注集中于人类专家。对专家的依赖(尤其是最初应用人工智能领域的专家,如医学领域的专家)给不断发展的人工智能带来了挑战,因为专家不能扩展。

如今,人工智能依赖机器学习,后者是一类能够随着时间进行改善的算法,其关键是具备出色的数据处理能力,并不断对硬件及方法进行完善。这是人工智能的一贯原则,但是由于需要处理和开发的数据规模较大,而现实中没有这么多数据,这个原则并未贯彻执行。如今,数据的规模每年提升一倍,其增度超过了计算能力。这就是我们讨论人工智能的真正原因,也验证了机器学习是实现人工智能功能的有效手段。

人工智能、机器学习与神经网络

神经网络作为一种算法,属于人工智能领域机器学习范围。因此,神经网络中包含一个组 - 深度神经网络的“子子类”。包含两个以上的输入和输出隐藏层。图 1 显示通过关系权重相连接的单个输入和输出层。实际上,深度神经网络有 100 多个输入和输出层。


图 1. 单层神经网络

机器学习算法中的神经网络子类是最受关注的算法。本文重点介绍了机器学习和机器学习算法的子类 - 神经网络。关系如图 2 所示。


图 2. 机器学习与人工智能领域的神经网络

 

将一张图像输入到深度神经网络,它将找到并用方框(或轮廓)标记您要找的人。前提是网络接受过相应的训练。从输入到输出的任务称做 “向前传播”,术语称之为 “推断”。

必须对神经网络进行训练。训练充满挑战。

训练

训练网络需要哪些条件?首先,执行向前传播,并查看结果。对比预想的结果和实际的结果,取其差值,并将差值传播回去(图 3)。这就是向后传播。向后传播算法是最难的。调整每个边缘的权重。需要认真地逐层完成,针对多个训练场景(本示例使用的是图像)。


图 3. 神经网络输入、节点、输出与基准评判

 

当前一流的训练方案有两大挑战:a) 依赖标记数据(监督式训练);b) 算法并行性十分有限。标记用于训练的数据,尽管需要大量人力,但是普通人即可完成(不需要专家),他们通常在目标对象周围画一个方框或轮廓。算法并行性主要用于批量处理图像,以获取某一点的平均属性。训练数据通常不适用于较大规模的批处理器,因此批量尺寸通常限制在 1000 左右。

由于输入数据(图像)较多,而且网络深度广,训练主要以串行方式进行(一次一层),网络本身也非常庞大(需要计算数百万的不同权重),因此,训练时间很长。对于多数的使用案例来说,训练时间过长(数周,甚至数月)令人难以接受。如果缺乏训练有素的模型,推断的目标任务无法开始。因此,需要更快地周转训练,训练时间成为衡量性能优劣的主要标准。

由于衡量标准是训练模型的时间,我们如何缩短训练时间?除非有完整的模型,否则机器学习无法自行启动。

提高训练质量有助于获得优质的、紧凑的模型。作为对比,假设有一位漫画家,能用 5 笔画出人物。线条的形式有无限种。选择哪 5 种线条,画在哪里及如何画属于结果,即便艺术界的专家通常也无法解释这个结果,所以无法复制这幅画。如果利用充足的数据训练机器学习算法,该算法可以学习正确的紧凑表示,不需要人类专家的帮助(如识别与重新创建原始图像)。

自动驾驶汽车是机器学习过程的绝佳例证。车内有传感器处理、传感器数据捕获、路径规划和驾驶控制功能。数据中心负责整个车队的车辆终端管理、车辆模拟与验证,对传感器捕获的数据进行分析。机器学习可能发生在任何一端。车辆拥有针对特定车辆的处理功能,数据中心拥有更广泛的车辆间处理功能。大多数推断和处理发生在边缘设备和云中,但是必须经过端对端的流程,因此产生了跨设备学习。

神经网络层

完全连接层是一个层内所有输入和输出相连接的层(输出是结果)。每一层包含输入、权重和输出。完全连接层利用矩阵数学进行矩阵处理。在神经网络中,通常利用矩阵乘法处理其它不完全连接卷积层。超过 90% 的计算都是矩阵乘法,主要是密集线性代数。也就是说,神经网络的核心函数非常便于计算,任何用于密集线性代数计算的架构都会表现出色。

最后,所需的矩阵乘法如图 4 所示。向前传播 - 输入矩阵、权重矩阵和输出矩阵的计算。向后传播研究输出矩阵与权重矩阵,立即计算并返回输入矩阵。对于权重更新,需要对比输入和输出的差异,计算新的权重(图 4)。


图 4.单层上的矩阵与矩阵计算

 

并行性

并行性包括数据并行性、模型并行性与混合并行性。

在数据并行性中,我们将数据分为两部分,使用相同的权重在两个不同的节点并行运行。权重没有变化,输入和输出数据分割后并行运行。

模型并行性和数据并行性的原理基本一致,只是应用于模型(权重)。权重分为两部分,数据在半个权重间并行运行。通常发生在完全连接层,此处的模型尺寸远超过 (n2) 数据规模 (n)。

混合并行性(图 5)是将模型和数据并行性结合在一起。


图 5. 显示混合并行性分割数据与权重,以并行运行

 

如何鉴别并行化系统的优劣?分割数据或模型后,矩阵发生变化,使用难度增大。例如,一个大型的规则矩阵(尺寸相似),几次分割之后,变成了细长型矩阵(行数多而列数少)。前者便于在处理器高速缓存或内存中读取数据块,有较宽的 SIMD 并行性,后者没有。有时,同一个节点的计算被分割,需要执行额外的操作,以确保同一个节点的计算保持在一起。对高度并行架构进行更精细的并行化时,节点间通信和偏差矩阵格式成为一个问题。

因此,一般情况下:

  • 激活(输出)>权重(模型)情况下使用数据并行性。
  • 权重>激活情况下使用数据并行性。

分割的影响:

  • 大规模数据并行使激活比权重小得多。
  • 大规模模型并行使权重比激活小得多。
  • 偏差矩阵(例如,10x4k 矩阵占用处理器时间,不受高速缓存限制)降低计算效率。

扩展

当我们进行大规模并行处理时,通信时间将会占据大部分的总体计算时间。因此,单个节点计算能力越强,工作负载性能(以总体训练时间来衡量)的优势越少。因此,我们需要超越朴素并行处理方案,才能从大型计算资源(如公有云)中受益,缩短训练大型模型的时间。在此基础上,推出两个优化:采用混合并行化,限制及管理节点间通信。这两种方法支持高效扩展。混合并行化有助于避免矩阵出现太多偏差。而且,为了限制节点间通信,建议创建节点组,可以在每个组内进行激活转移,小组之间进行权重转移。

深度学习的通信模式

让我们深入研究节点间通信模式的不同类型。在节点间并行处理时,需要节点间通信。例如,在对点积进行乘加操作时,在一个节点上只有一个可用的矩阵元素。需要传送并结合两个不同节点的部分激活,才能得到想要的点积。如果数据不在下一层中,则无法计算数据。如欲了解此类节点间通信的详细信息,请查看图 6。


图 6. 深度学习中的 MPI 集合

绿线 (Allreduce) 可以等待,红线(Alltoall 等)对下一层计算至关重要。绿线代表不太重要的通信,因为数据是下一个向前传播阶段所必需的。红线代表时间关键型通信,因为数据立即用于下一层计算,稍有延迟可能产生处理管道泡沫。效率下降将转移到另一条并行中处理,但是红线不会这样。因此,红线的信息需要优先调度。

总之,高效通信模式的必要步骤如下所示:

  1. 优化各种节点间通信基元的性能,尽量缩短处理时间
  2. 尽可能地使用计算覆盖通信,以尽量降低通信对性能的影响
  3. 优先调度时间关键型节点间通信消息(例如,红色对比绿色)

图 7 显示了优化 Allreduce 基元所引起的性能提升(关于当前英特尔 MPI 实施)。


图 7. MPI Allreduce 性能

通信消耗的周期减少,而计算消耗的周期增加时,效率提升。图 8 和图 9 显示了这些优化的有效性。


图 8. 将高效通信集成到扩展效率


图 9. 在 AlexNet 上将高效通信集成到扩展效率

这些优化相互结合,提升了各种神经网络拓扑的总体扩展性和性能。图 10 显示了 4 种常见拓扑的扩展结果。上图最多扩展至 128 个节点,但是我们正在研究扩展至数千节点。


图 10. 4 个最受欢迎的拓扑与它们在英特尔® 至强融核™ 处理器上的扩展效率

 

满足训练时间的要求后

我们充分开发,使训练时间达到可接受的范围后,会发生什么?这个模型非常紧凑,具有出色的速度和准确性。将训练模型部署在边缘设备上,运行并交付针对实际现场数据的准确推断。推断的记分卡返回服务器,服务器接收一定数量的新数据后重新自我训练,创建更优秀的模型,将模型部署到更多的设备上。提高模型推断的准确性,将模型部署到更多的边缘设备上,服务器会收到更多的反馈,重新训练并改善模型。这就是计算的良性循环(图 11)。


图 11. 计算的良性循环

提高模型推断的准确性,将模型部署到更多的边缘设备上,部署的设备越多,服务器收到的推断数据越多(包括正确预测或错误预测),反过来增强服务器改进、提升模型推断准确性的能力。这意味着模型有可能部署在更多的设备上,循环将继续。这就是我们为之准备的计算的良性循环(图 11)。

然而,将数据发送到设备后,才能完成循环。发送到设备需要稍微费些力气,因为网络总是受到限制。由于长时间的延迟和有限的网络(将边缘设备与数据中心相连接)带宽,在数据中心基础设施上实时、快速地重新训练模型变得更加困难。随着硬件、网络和无线连接的完善,这个问题将更容易解决。

此外,非常有必要了解什么是边缘设备。通常计算能力或可用内存受到限制,约束模型尺寸。而且必须以端到端的方式满足工具要求和软件支持需求。我们的深度学习工具套件考虑了此类模型部署的需求。

在边缘设备部署模型存在 3 个高级权衡:压缩、准确性和吞吐率(图 12)。有些设备可能无法保存模型,需要压缩、缩小或缩减模型(图 13)。如何压缩模型?需要稀疏模型1, 2


图 12.3 轴模型性能基础


图 13. 压缩(深蓝色)与正常交付和性能的对比

在特定环境下,为了提高推断吞吐率,需要牺牲推断的准确性。(图 14)。


图 14. 降低准确性以提高吞吐率

 

也就是说,设备要求和使用环境是进行周密权衡的决定因素。

Nervana™

在 2016 年,英特尔收购了 Nervana™,后者是机器学习领域的领导者,也是硬件工程、系统软件、机器学习和云领域的机器智能平台。

Nervana 的目标是构建一个机器智能平台。这意味着使用电脑来创建、处理大型数据集,并根据数据集进行推断。目标是通过优化深度学习和其它算法来提高处理速度。

然而,机器学习致力于为人类的问题提供解决方案。所以让我们来回答以下问题,人类打算如何使用机器学习?机器学习可以应用在哪些领域?以下是可以立即使用机器学习平台的领域:

  • 医疗 - 医学成像是最大的应用领域。基于 MRI 与 CT 扫描的体积成像,甚至单张图像都会出现问题。某些静态医学图像每一边的像素高达 200,000 个,单张图像比性能指标评测数据集还要大。因此,电脑难题非常严峻,我们必须进行高效扩展。
  • 农业 - 应用于基因组问题、气候建模与机器人蔬菜收割机(有选择地收获农作物)。这些技术需要在边缘、云等需要低延迟推断的位置上进行特殊的扩展。
  • 金融 - 拥有众多使用案例,如金融机构面临的大量 IT 问题。可以利用深度学习对不同方式获得的各种金融工具进行交易,更加注重交易时间与交易方式。还可以预测潜在诈骗,以保护不良事件中的交易。
  • 汽车 - 语音识别、驾驶员协助与自动驾驶。这些领域都具有大型数据集,收集更多的数据。扩展规模巨大,需要完整的解决方案,不仅在汽车边缘上处理,还要在数据中心处理。

因此,深度学习是内核技术。Nervana 将 “Google Brain” 模型应用于每一位客户,中心内核处理所有相关信息(图 16)。


图 16. Nervana 深度学习模型与 Google Brain 模型的对比

查看解决方案、解决方案工程师、部署等其他深度学习产品组成部分的方法,帮助客户了解如何将深度学习看做是一种内核技术。

Nervana 深度学习方法的另一个重点是云部署。云支持以最快的速度部署深度学习解决方案。高带宽、低延迟地连接至灵活、可扩展的云,可以简化探索性数据科学与训练数据模型。这是深度学习最简单易懂的方式。采用此方法时,最好保证界面干净,下载要求低,信息能便捷地提交到云服务。

英特尔在推动机器学习中发挥的作用

英特尔正致力于采用并改善硬件和软件发展蓝图及框架更新。

硬件

英特尔® 至强融核™ 处理器是现今最密集的计算解决方案,也是深度学习最好的平台,因为它具有高度并行的架构(图 17)。英特尔® 至强融核™ 处理器和英特尔® 至强® 处理器非常相似。在英特尔至强处理器上完成的所有开发可以直接应用于至强融核处理器,因为两者共用相同的计算模型。随着内存子系统和结构的进一步集成,性能将显著提升。


图 17. 英特尔® 至强融核™ 处理器在深度学习性能方面的价值

 

简化编程、分摊编程(在整个英特尔至强和至强融核处理器中分摊)和并行架构为英特尔® 至强融核™ 处理器 72xx 系列带来了出色的性能和效率。

软件

在多个节点间对训练和推断进行机器扩展,离不开硬件。每个节点的完成效果如何?英特尔® 数学核心函数库(英特尔® MKL)是针对节点级优化的最重要的库。使用英特尔 MKL后,改进的数量是使用前的 24 倍(图 18)。


图 18. 使用英特尔® 数学核心函数库(英特尔® MKL)对单节点训练进行性能优化

仅通过英特尔® MKL 就可以实现这种改进。英特尔 MKL 不需要重新编码。针对多个节点的改进会更出色。所有常用的深度学习框架将在多个节点间获得支持和扩展。但是不需要等待,您可以利用 Caffe* 和英特尔 MKL 立即开始。

英特尔还发布了一个深度学习工具套件,包含许多工具,能加快设计、训练和部署深度学习解决方案的速度。

总结

人工智能的前景和功能是消除生活中繁重的脑力工作。机器学习将发掘人工智能的强大性能。数字数据的爆炸式增长和无所不在的连接使计算激增,机器学习极大地促进了计算的新型良性循环。机器学习将大规模扩大计算应用(如自动驾驶汽车、农业、健康和制造)的范围。这些领域中,人类只需做简单的决定。近期,机器学习和人工智能取得了许多进步,这些领域将不断改进、转变及变化。

深度学习的计算要求亟需满足。复杂模型的训练时间需要数月或数周,我们需要扩展,将训练时间降低至数天或几个小时。机器学习计算基础设施必须符合开发人员所需的高性能和高效率的要求。必须利用云的效率。

由于突破了现有数据、模型并行性和节点间通信的极限,扩展分布式机器学习并非易事。英特尔的新版深度学习工具(将与 Nervana 云堆栈集成)专门用于在资源有限的边缘设备上隐藏、降低强扩展训练时间和模型部署之间平衡的复杂性,不会降低性能。

  1. Jongsoo Park、Sheng Li、Wei Wen、Hai Li、Yiran Chen 和 Pradeep Dubey。“全面稀疏 CNN:锻造准确性、速度与规模的三叉戟。”http://arxiv.org/abs/1608.01409
  2. Song Han、Huizi Mao 和 William J. Dally。“深度压缩:通过修剪、训练量化与哈夫曼编码压缩深度神经网络。”http://arxiv.org/abs/1510.00149
有关编译器优化的更完整信息,请参阅优化通知