首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

人工智能 (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 等)对下一层计算至关重要。绿线代表不太重要的通信,因为数据是下一个向前传播阶段所必需的。红线代表时间关键型通信,因为数据立即用于下一层计算,稍有延迟可能产生处理管道泡沫。效率下降将转移到另一条并行中处理,但是红线不会这样。因此,红线的信息需要优先调度。
总之,高效通信模式的必要步骤如下所示:
  • 优化各种节点间通信基元的性能,尽量缩短处理时间
  • 尽可能地使用计算覆盖通信,以尽量降低通信对性能的影响
  • 优先调度时间关键型节点间通信消息(例如,红色对比绿色)
图 7 显示了优化 Allreduce 基元所引起的性能提升(关于当前英特尔 MPI 实施)。


图 7. MPI Allreduce 性能


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


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



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


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


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

返回列表