精华内容
下载资源
问答
  • 并行与分布式方向
    千次阅读
    2020-10-12 15:35:49

    并行计算:parallel computing
    分布式计算:distributed computing
    并行计算:这是一台计算机的概念,即一台计算机中多个处理器被组织起来,大任务下达的时候,将大任务分成若干个小任务,然后分配给若干个处理器进行运算。
    分布式计算:这个一组计算机的概念,通过计算机网络连接起来,大任务下达的时候,将大任务分成若干个小任务,然后分配给若干个计算机进行运算。
    区别:
    显然,分布式计算非常强调计算机网络中的计算机合作,并行式计算强调一个计算机的多个处理器合作。

    一个是系统总线相连处理器,一个是网线相连计算机。有人说:分布式计算是并行计算的特例,也有人说并行计算是分布式计算的特例。你同意哪一种呢?欢迎探讨。

    更多相关内容
  • 1. 并行与分布式系统简介

    千次阅读 2022-04-28 00:10:52
    分布式系统——一组独立的计算机,由单台计算机呈现给用户。示例:工作站网络(选择用于执行程序的处理器、单个文件系统)、机器人工厂(机器人连接到不同的计算机,但充当单台计算机的外部设备、具有多个分支机构的...

    1.1 共享内存多处理器系统(multiprocessors)的优点

    1. 表现
    2. 可靠性

    多处理器的缺点

    1. 软件(应用程序、语言、操作系统)比单处理器计算机更复杂
    2. 增长时受限(物理尺寸 - 接近内存,64 个处理器 - 达到的最大值)。

    1.2 分布式系统的优势

    分布式系统——一组独立的计算机,由单台计算机呈现给用户。示例:工作站网络(选择用于执行程序的处理器、单个文件系统)、机器人工厂(机器人连接到不同的计算机,但充当单台计算机的外部设备、具有多个分支机构的银行、机票预订系统。

    为什么要创建分布式系统?与集中式计算机相比,它们有什么优势?

    第一个原因是经济上的。Grosh 定律(Herb Grosh,25 年前)——处理器速度与其成本的平方成正比。随着微处理器的出现,该法则不再适用——以双倍的价格,您可以获得具有稍高频率的相同处理器。

    第二个原因 - 通过组合微处理器可以实现如此高性能,这在中央计算机中是无法实现的。

    第三个原因——自然分布(银行、用户群协作支持)。

    第四个原因是可靠性(几个节点的故障会稍微降低性能)。

    第五个原因是性能可扩展性。未来,主要原因将是大量个人计算机的存在以及需要协同工作,而不会感到人员、数据和机器在地理和物理分布上的不便。

    为什么需要联网 PC?

    1. 共享数据的需要。
    2. 分离昂贵的外设、独特的信息和软件资源的优势。
    3. 实现人与人之间的发达交流。在许多情况下,电子邮件比信件、电话和传真更方便。
    4. 灵活使用不同的计算机,负载分配。
    5. 通过更换计算机来简化增量升级。

    分布式系统的缺点:

    1. 软件问题(应用程序、语言、操作系统)。
    2. 通信网络问题(信息丢失、过载、开发和更换)。
    3. 保密。

    1.3 操作系统类型(网络操作系统、分布式操作系统、多处理器计算机操作系统)

    网络操作系统——机器具有高度自治性,一般系统要求很少。您可以与另一台计算机通信,在其批处理队列中输入作业,并可以访问远程文件,尽管不同客户端的目录层次结构可能不同。一个例子是文件服务器(许多 WS 可能根本没有磁盘)。

    分布式操作系统——单一的全局进程间通信机制,全局访问控制方案,文件系统的相同愿景。通常 - 一台计算机的错觉。

    多处理器计算机的操作系统- 等待执行的单个进程队列,一个文件系统。


    网络操作系统分布式操作系统多处理器操作系统
    计算机系统看起来像一个虚拟的单处理器计算机是的是的
    相同的操作系统在所有处理器上运行是的是的
    内存中有多少操作系统副本NN1
    如何进行通信共享文件留言共享内存
    是否需要协商的网络协议是的是的
    是否有一个正在运行的进程队列是的
    文件共享有明确定义的语义通常没有是的是的

    1.4. 构建分布式操作系统的原则(透明性、灵活性、可靠性、效率、可扩展性)

    (1) 透明度(对于用户和程序)。

    位置透明度用户不需要知道资源的位置
    移民的透明度资源可以在不更改名称的情况下移动
    育种透明度用户不需要知道存在多少副本
    竞争的透明度多用户自动共享资源
    并发透明度无需用户干预即可并行执行工作

    (2) 灵活性(尚不清楚 - 需要更改决定)。

    使用单片操作系统内核或微内核。

    (3) 可靠性。

    • 可访问性,容错性。
    • 保密。

    (4) 性能。

    粒度。细粒度和粗粒度并行(fine-grained parallelism,粗粒度并行)。容错需要额外的开销。

    (5) 可扩展性。

    糟糕的解决:

    • 集中式组件(一个邮件服务器);
    • 集中式电子表格(一个电话簿);
    • 集中式算法(基于完整信息的路由器)。

    仅具有以下功能的分散式算法:

    • 没有机器拥有关于系统状态的完整信息;
    • 机器仅根据本地信息做出决策;
    • 一台机器的故障不应导致算法的故障;
    • 不应该有关于全球时钟存在的隐含假设。
    展开全文
  • 并行分布仿真对复杂大规模动态系统的研究以及探索,对长远的应用提供...在分别论述四类基本的时间推进同步机制,即保守机制、乐观机制、混合机制和自适应机制的同时,还分析了各自的优缺点,指出了今后的研究发展方向
  • 并行计算、分布式计算、网格计算云计算都属于高性能计算(High PerformanceComputing,HPC)的范畴,主要目的在于对大数据的分析处理,但它们却存在很多差异。电子海图云服务是基于高性能计算的理论技术、通过对...

     并行计算、分布式计算、网格计算与云计算都属于高性能计算(High Performance Computing,HPC)的范畴,主要目的在于对大数据的分析与处理,但它们却存在很多差异。电子海图云服务是基于高性能计算的理论技术、通过对传统服务体系结构的改进,以实现海量电子海图数据的快速存取与处理操作,使其更好地为海洋地理信息科学领域中的计算密集型和数据密集型问题提供相应的计算和处理能力。高性能计算体系结构是海量电子海图数据存储与处理的技术基础,也是顺利进行电子海图云服务原型系统开发的保证。以下将对并行计算、分布式计算、网格计算与云计算之间的区别与联系做分析。

    并行计算
           并行计算是相对于串行计算而言的,它是指一种能够让多条指令同时进行的计算模式,可分为时间并行和空间并行。时间并行即利用多条流水线同时作业,空间并行是指使用多个处理器执行并发计算,以降低解决复杂问题所需要的时间。从程序开发人员的角度看,并行计算又可分为数据并行与功能并行,数据并行是通过对数据的分解实现相同子任务的并行作业,功能并行是通过对任务的分解实现相同数据不同任务的并行作业。相比较而言,数据并行较易实现,因此本文在并行算法研究时也将基于数据并行的原则进行设。对于并行计算的研究在上世纪70年代开始,就已有相关理论研究,如单指令多数据流(SIMD)与多指令多数据流(MIMD)的并行机制研究,到了80年代在并行体系结构方面有了很大成果,出现了利用网络组成多台计算机的并行结构与利用共享存储器组成多处理器的并行计算机,科学家利用这种并行计算结构在技术高精尖领域缩减了解决复杂问题的时间。
           从以上分析可得出,早期的并行计算主要应用于科学研究领域,具有特定的应用环境,需要利用很高的技术技巧才能完成任务所需要的并行程序设计。虽然当时的并行计算离普

    通大众还很遥远,但已经为复杂问题求解(如功能并行、数据并行、通信协调等)奠定了方法论基础。可以说,并行计算是云计算的初始阶段或者说是萌芽期,它为云计算的发展提供了实际而朴素的思想和基本思路。
    分布式计算
           分布式计算是一种把需要进行大量计算的工程数据分区成小块,由多台联网计算机分别处理,在上传处理结果后,将结果统一合并得出数据结论的科学。在90年代,随着TCP/IP协议的最终确定,计算机网络快速发展,Web Service等网络新技术随之而来,为基于广域网的分布式计算做好了硬件与软件基础。首先来比较下分布式计算与并行计算的异同。其相同之处都是将复杂任务化简为多个子任务,然后在多台计算机同时运算。不同之处在于分布式计算是一个比较松散的结构,实时性要求不高,可以跨越局域网在因特网部署运行,大量的公益性项目(如黑洞探索、药物研究、蛋白质结构分析等)大多采用这种方式,而并行计算是需要各节点之间通过高速网络进行较为频繁地通信,节点之间具有较强的关联性,主要部署在局域网内。在分布式计算的算法中,我们更加关注的是计算机间的通信而不是算法的步骤,因为分布式计算的通信代价比起单节点对整体性能的影响权重要大得多。
           从以上分析可得出,分布式计算是网络发展的产物,是由并行计算演化出的新模式:网络并行计算。如果说并行计算为云计算奠定了理论基础,那么分布式计算则为云计算的实现打下了坚固的网络技术基石。
    网格计算
           网格计算是指通过利用多个独立实体或机构中大量异构的计算机资源(处理器周期和磁盘存储),采用统一开放的标准化访问协议及接口,实现非集中控制式的资源访问与协同式的问题求解,以达到系统服务质量高于其每个网格系统成员服务质量累加的总和。
           在90年代中期,分布式计算发展到一定阶段后,网格计算开始出现,其目的在于利用分散的网络资源解决密集型计算问题。当时由于高端的计算机硬件价格不菲,研究人员试图通过定义专门的协议机制以实现对分散异构且动态变化的网络资源管理,以解决高端计算机才能解决的密集型运算问题。网格计算与虚拟组织的概念由此产生,它通过定义一系列的标准协议、中间件以及工具包,以实现对虚拟组织中资源的分配和调度。它的焦点在于支持跨域计算与异构资源整合的能力,这使它与传统计算机集群或简单分布式计算相区别。为使网格计算能够成为类似于水电网的日常公共服务,Ian Foster提出应该定义一个在网络中获取计算或存储资源的标准协议,在这一理论指导下,世界各组织设计了一系列的网格系统,如OSG、ESG、EGEE等,这些网格系统能够按照设计人员的要求提供所需要的计算资存储资源甚至多种数据服务与功能服务。OASIS、OGF等国际标准组织也制定了相关标准,网格计算曾一度被认为是集群计算的市场化。然而迄今为止,商业化的网格系统仍然没有出现。过于庞大的概念、异常复杂的协议标准使得真正实现实用化的网格项目都是由国家行为推动的,如EUGrid、DataGrid、ChinaGrid、EduGrid等。然而网格计算的发展,为云计算的出现提供了基本的网络框架支持。
    云计算
           云计算是一种由大数据存储分析与资源弹性扩缩需求驱动的计算模式,它通过一个虚拟化、动态化、规模化的资源池为用户提供高可用性、高效性、弹性的计算存储资源与
    数据功能服务。其具备五个关键特点:①基于分布式并行计算技术;②能够实现规模化、弹性化的计算存储;③用户服务的虚拟化与多级化;④受高性能计算与大数据存储驱动;⑤服务资源的动态化、弹性化。近年来云计算能够获得普遍关注的原因主要有以下三点:①设备存储计算能力的提升与成本的下降,多核、多处理器技术的诞生与普及;②各行业积累了越来越多的专业数据,亟需得到有效利用;③网络服务和Web2.0应用的广泛使用。
    从以上分析可知,在概念层次上云计算与并行计算、集群计算、网格计算、分布式计算存在交叉,正如上一节所描述的云计算不仅是从网格计算演化来的,而且网格计算还为
           云计算提供了基本的网络框架支持。网格计算的焦点在于计算与存储能力的提供,而云计算更注重于资源与服务能力的抽象,这就是网格计算向云计算的演化。与分布式计算比较,云计算是一种成熟稳定的流式商业资源,它为用户提供可量算的抽象服务就如同水电厂提供可量算的水电资源一样便捷可靠。图1.1显示了云计算与其他相关概念的关系。Web2.0诠释了面向服务的发展方向,云计算成为其中的主力;并行计算和集群计算更注重于传统面向应用的程序设计;网格计算由于其概念的庞大与这四个领域都有交叉,从广义的角度讲,分布式计算包含了整个概念域。

     

           根据以上分析,我们可以得出这几个概念的关系。从计算机用户角度来讲,并行计算是由单个用户完成,分布式计算是由多用户合作完成,网格计算是由庞大的异构计算组织完成,云计算是没有用户参与由另一端的弹性服务集群完成。

    内容出自 信息工程大学 刘灿由 博士论文。
    ————————————————
    版权声明:本文为CSDN博主「GeoWin_CAS」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/yaoxiaochuang/article/details/41542293

    展开全文
  • 并行计算体系结构: 单机(通常是共享内存)系统 多机(通常是分布式内存)系统 加速的主要技术是利用学习工作负载中的固有并行性。 互连网络最重要的指标是延迟、带宽和消息速率。 在使用分布式内存的多台机器上,可以...

    这篇论文讲解基础知识点还是蛮全的。

    篇幅很长,过第一遍记录,看的也不是很仔细。

    推荐论文:https://arxiv.org/abs/1802.09941

    • 为了最小化的目的,一个样本损失函数ℓ应该是连续和可微的。
    • 回归问题中,可以使用直接的损失函数,如平方差。
    • 分类问题中,损失的简单定义如:ℓ(w, z) = 0 if fw(z)=h(z) else 1 (也称为二进制或0-1损失),不符合连续性和可微性准则。为了解决这一问题,突出的多类分类问题将Y定义为推断出的class类型的概率分布,而不是单个标签,模型输出通常使用softmax函数()来归一化为某种分布。损失函数然后计算预测与真实标签“分布”的差异,例如,使用交叉熵。

    • 交叉熵损失可以看作是逻辑回归的一种推广,为多类分类引出了一个连续的损失函数。
    • 机器学习中的优化主要是通过梯度下降进行的。然而,由于从未观察到完整的概率分布D,因此有必要获得梯度的无偏估计。可以在每次迭代中使用随机采样的数据进行下降,应用随机梯度下降(SGD)

    • SGD算法的权重初始化可能反映结果的最终质量。初始权值的选择可以来自随机值、知情决策(如Xavier初始化),或来自迁移学习方法中预先训练的权值。初始化不当可能会随着网络深度的增加而对泛化产生不利影响。
    • 权值更新规则:
      • Momentum,使用当前和过去权重的差值来避免局部极小值和 natural motion的冗余步骤。
      • RMSProp和Adam,使用梯度的第一和第二矩来适应每权重的学习率,比其他方法增强稀疏更新。

    • 为了获得最佳结果,超参数必须进行调优,这可以通过value sweeps或meta-optimization来执行。
    • 在实践中,minibatch采样是通过对数据集S进行shuffling实现的,并通过从中获得大小为B的连续片段来处理这种排列。

    • 对数据集的整个遍历称为epoch,一个完整的训练过程通常由几十到数百个epoch组成
    • 无监督学习:数据集S没有标记,训练通常会产生不同的目标函数,旨在从未标记的数据推断结构。有两种有用的实现:自动编码器生成对抗网络(GANs):
      • Auto-encoders:可以被构造成一个接收样本x作为输入,并输出一个尽可能接近x的值的神经网络。
      • GANs:利用深度神经网络通过同时训练两个网络来生成真实的数据(通常是图像)。训练第一个(discriminator)网络来区分"真实"数据集样本和"虚假"生成的样本,而训练第二个(generator)网络来生成尽可能与真实数据集相似的样本。
    • 强化学习:在给定的时间点观察环境的任务,训练优化动作策略函数,使观察者的奖励最大化。训练算法有Deep Q learning和A3C。

    • 并行计算体系结构:
      • 单机(通常是共享内存)系统
      • 多机(通常是分布式内存)系统
    • 加速的主要技术是利用学习工作负载中的固有并行性
    • 互连网络最重要的指标是延迟、带宽消息速率
    • 在使用分布式内存的多台机器上,可以使用简单的通信机制,如TCP/IP或远程直接内存访问(RDMA)。在分布式内存机器上,还可以使用更方便的库,如消息传递接口(MPI)Apache Spark。MPI是一个专注于提供可移植性能的低级库,而Spark是一个更专注于程序员生产力的高级框架。
    • 深度学习具有与大规模HPC应用非常相似的特征。因此,从2016年开始,建立的MPI接口成为分布式深度学习中事实上的便携通信标准
    • 计算机上的每一次计算都可以建模为有向无环图(DAG)。DAG的顶点计算,而数据依赖(或数据流)。这种图的计算并行性可以用两个主要参数来表征:
      • 图的工作量W:对应于顶点的总数。
      • 图的深度D:是DAG中任意最长路径上的顶点数量。

    在单个处理器上处理图所需的时间是T_1 = W,在无限多个进程上处理图所需的时间是。计算中的平均并行度是,在个处理器上的执行时间受限于:

    • 在深度学习中的大多数操作都可以建模为对张量的操作(通常张量作为并行编程模型)。这样的操作是高度数据并行的,只有求和才会引入依赖关系。
    • 探索不同的底层通信、消息调度拓扑映射策略,这些在HPC领域广为人知,可以显著加快分布式深度学习中的通信速度
    • 神经元的稀疏连接权值共享有利于减少参数的数量
    • RNN包含自连接,因此不能单独用反向传播进行训练。解决这个问题最流行的方法是应用时间反向传播(backpropagation through time, BPTT),它将循环层展开到一定的序列长度,对每个时间点使用相同的权值。这就创造了一个更大的前馈网络,可以用通常的方法进行训练。
    • 全连通层可以表示为权值和神经元值矩阵-矩阵乘法(每小批量样本列)并建模。为此,可以使用高效的线性代数库,如CUBLASMKL

    • 计算卷积的第二种方法是利用傅里叶域,在傅里叶域中,卷积被定义为逐元素的乘法。在该方法中,数据和核都使用FFT进行变换,相乘,然后对结果进行逆FFT。卷积核越大,FFT效果越好。
    • 网络结构的并行化。神经网络的高平均并行度(W/D)不仅可以有效地计算单个算子,而且可以针对不同的维度并发地评估整个网络:

      • 数据并行:在minibatch SGD中,数据以N个样本的增量进行处理。由于大多数操作符相对于N是独立的,因此并行化的一个简单方法是将小批处理样本的工作划分到多个计算资源(核心或设备)中。在这种分区方法中,所有的DNN参数必须对所有参与的设备都是可访问的,这意味着它们应该被复制。然而,阻碍数据并行性扩展的一个瓶颈是BN操作符,它在调用时需要一个完整的同步点。目前可以利用高性能通信接口(如MPI)来实现细粒度的并行特性,例如通过异步执行和流水线减少延迟稀疏通信,以及利用给定计算资源内的并行性

      • 模型并行(网络并行):根据每一层的神经元(即四维张量中的C、H或W维)来划分工作。在这种情况下,采样的minibatch被复制到所有处理器,并且DNN的不同部分在不同的处理器上计算,这可以节省内存(因为整个网络不是存储在一个地方),但在每一层之后都会产生额外的通信

      • 流水线Pipelining:在深度学习中,流水线既可以指重叠计算,即在一层和下一层之间(当数据准备好时);或根据深度划分DNN,将层分配给特定的处理器。流水线可以看作是数据并行的一种形式,因为元素(样本)是通过网络并行处理的,但也可以看作模型并行,因为流水线的长度是由DNN结构决定的。
        • 第一种形式的管道可用于重叠前向计算、反向传播和权值更新。该方案在实践中得到了广泛应用,通过减少处理器空闲时间来提高利用率。在更细的粒度中,神经网络架构可以围绕重叠层计算的原则设计,深度堆叠网络(Deep Stacking Networks, DSN)就是这样。在DSN中,每一步都计算一个不同的完全连接的数据层。然而,前面所有步骤的结果都被连接到层输入。由于放松的数据依赖关系,这使得每一层都可以部分并行计算。
        • 优势:(a)在正向求值和反向传播过程中,不需要将所有参数存储在所有处理器上(与模型并行性一样);(b)处理器之间(在层边界)有固定数量的通信点,源处理器和目标处理器总是已知的。此外,由于处理器总是计算相同的层,权重可以保持缓存,以减少内存往返。缺点:为了充分利用系统,数据(样本)必须以特定的速率到达,并且延迟与产生的处理器数量成正比。
    • 混合并行:多种并行方案的组合可以克服每种方案的缺点。一个成功的混合方案的例子将数据并行性应用于卷积层模型并行性应用于全连接部分。使用这种混合方法,可以在一个8个以上的gpu上实现高达6.25×的加速,精度损失小于1%(由于小批量大小的增加)。DistBelief分布式深度学习系统结合了三种并行策略。在实现中,对多个模型副本同时进行训练,其中每个副本对不同的样本进行训练(数据并行性)。在每个副本, DNN既按同一层神经元分布(模型并行性),又按不同层分布(流水线)Project Adam扩展了DistBelief的思想,并展示了相同类型的并行性。然而,在Project Adam中,流水线被限制在同一个节点的不同CPU核上。

    • 训练的并行化。在分布式环境中,可能有多个独立运行的SGD实例(训练代理),因此必须对整个算法进行调整。深度学习的分布方案可以分为:模型一致性、参数分布和训练分布

      • 模型一致性:将每个人都能观察到的最新w的训练算法表示为一致的模型方法(图20a和图20b)。直接在节点之间划分计算创建了一种分布式形式的数据并行性,其中所有节点必须在获取新的小批处理之前将它们的更新传递给其他节点。最近的研究放宽了同步限制,产生了一个不一致的模型(图20c)。为了在异步的情况下提供正确性保证,SSP提出了一致和不一致模型之间的折衷。在SSP中(图20d),在某个节点可能达到最大的陈旧状态后,执行全局同步步骤强制限制梯度陈旧状态。这种方法在异构环境中尤其有效,在这种环境中滞后代理(掉线者)受到了控制。

      • 集中式:为DNN训练设计集中式分布式网络架构取决于多种因素,包括网络拓扑、带宽、通信延迟、参数更新频率期望的容错能力。集中式网络体系结构通常包括一个参数服务器(PS)基础设施(例如图20a, 20c, 21),它可能由一个或多个专门节点组成;而分布式架构(图20b, 20d)将依赖于allreduce在节点之间通信参数更新。通信结束后,集中式参数更新由PS执行,分布式更新由各节点单独计算。在后一种情况下,每个节点都创建自己的优化器。

    • 参数和梯度压缩:在分布式深度学习中,通常有两种节省通信带宽的方法:一种是通过有效的数据表示方式来压缩参数,另一种是避免发送不必要的信息,从而导致稀疏数据结构的通信。前一类中的方法与网络基础设施正交,后一类中应用的方法在使用集中(PS)和分散拓扑实现时不同。
      • 量化梯度(或参数)压缩的一个重要数据表示是量化,即将连续的信息映射到表示值集(通常是范围)的buckets中。研究表明,参数和梯度值的分布分散得很窄(图22a),因此这些方法可以有效地表示工作范围,减少每个参数的比特数。量化通常是通过减少浮点动态范围来实现的。量化训练对于有损压缩(如降低精度)并不能“开箱即用”。相反,它依赖于以一种保持参数期望值(E)的方式舍入参数局部梯度积累是有损量化SGD算法收敛的关键。特别是在分布式环境中,更新是不一致的,重要的是将量化误差带到下一个梯度,积累误差以避免漂移

      • 稀疏化。dnn(特别是cnn)在参数更新过程中表现出稀疏的梯度。这主要是因为大量的参数并不一定会立刻改变;以及算子如卷积,其中的优化过程可以提高某些卷积核的精度。梯度稀疏化的第一个应用使用静态阈值修剪梯度值,低于该阈值的元素不应发送。为了弥补稀疏化导致的精度损失,一些研究建议通过改变DNN结构来约束梯度值,添加各种归一化算子;而其他人则提出了局部梯度裁剪热身训练。在集中式设置中,分布稀疏梯度很简单——稀疏消息在训练代理和PS之间发送。然而,在分布式设置中实现必要的allreduce就不那么简单了,因为每个代理在其梯度中可能贡献不同的非零指数(维度)。Kylix用个步骤实现了稀疏的allreduce,首先交换索引,然后交换数据。虽然这对于每个节点的稀疏模式不改变的系统是可取的,但在深度学习中,梯度指数随着每次迭代的不同而不同。
    • 模型整合
      • 集成学习与知识蒸馏。一种广泛使用的训练后巩固技术集成学习。在集合中,w的多个实例在同一个数据集上分别训练,整体预测是集合成员预测的平均值。在深度学习时代之前,集成学习作为一种增强的形式在机器学习中得到了广泛的应用,通常可以提高单一模型的整体精度。TreeNets(章节6.2)等研究将集成学习与自定义(集成感知)损失函数相结合,以促进集成成员之间的多样性。考虑到集成消耗m倍的内存和计算能力,另一种训练后模型整合技术是使用知识蒸馏减少DNN的大小。在该方案中,训练分为两步进行:第一步,正常训练一个大型网络或集合;第二步训练单个神经网络来模拟大集合的输出。结果表明,第二个网络在集成上比在标记数据集上更容易训练,其错误率与10个dnn的集成相同。
      • 模型平均。另一种整合模型的技术是模型平均。这些方法可以在不同的机器上单独运行m个SGD实例,只聚合一次(训练后)或每隔几次迭代。为了克服由于不频繁平均而导致的精度下降,更复杂的固结方法包括弹性平均SGD(EASGD)和自然梯度下降。
    • 优化算法与体系结构搜索: 由于深度学习中的训练是一个非线性优化问题,其他表现出并发性的算法可以替代SGD。此外,它可能使用多余的计算能力来执行元优化,搜索更好的超参数DNN架构
      • 参数搜索。监督学习既可以被视为一次使用一个或一小批样本的随机优化过程,也可以被表示为一个批优化问题,其中整个数据集需要获得梯度下降。由于高维性,批处理方法在内存、通信计算方面的二次增长是不可取的。为了克服这些问题,L-BFGS的随机变量被提出,它估计逆Hessian矩阵,并被证明在强凸、lipschitz -连续环境中以线性速度收敛。应用于深度学习的其他优化算法试图:(a)减少随机抽样产生的SGD方差,(b)使用乘子交替方向法(ADMM)来完全跳过反向传播,(c)使用Neumann系列展开来近似Hessian矩阵,缩放到大的小批量大小(32k),没有精度损失或大量的计算开销。无梯度进化算法也被用于深度学习,其中包括遗传算法,神经进化,粒子群优化。除了重组/进化步骤,训练行为类似于集成学习,因此这些算法比传统的梯度下降更适合并行性。这种算法的梯度无关性质使它们能够用于超参数和DNN架构的元优化。
      • 超参数搜索。SGD中大量的超参数及其对结果精度的不利影响阻碍了对机器学习新技术的研究。直到最近,超参数搜索的主要方法是执行参数扫描(即在可行范围内的网格搜索)。研究表明,在分布式环境中,在训练过程中控制同步SGD节点组的大小可以提高精度性能元启发式优化算法可以将超参数调整与训练相结合,因此被用于dnn。这些方法包括基于粒子群优化的深度学;以及CoDeepNEAT,它是对NEAT算法的修改,可以同时搜索超参数和架构配置。由于有大量的独立计算,这种方法几乎是线性扩展的。基于种群的训练(population based Training, PBT)使用一种强化学习方法来“探索”和“利用”超参数空间。
      • 体系结构的搜索。手工制作DNN架构自然会受到人类智力和创造力的限制。这一限制促进了最近自动神经结构搜索研究的兴起。体系结构搜索可以分为三种方法:基于顺序模型的优化(SMBO)强化学习(RL)进化算法(EA)

        • 基于smbo的搜索方法依赖于优化架构候选,定义要探索的有限状态集(例如,搜索树的子节点),并遍历这些集合。因此,并发性取决于给定时间内搜索空间中的点的数量。许多最近的DNN架构表现出自相似性重复的子单元(模块)。如图24b所示,这种观察结果可以大大减少探索的架构的数量,由模块和基本块(例如卷积)分层组成网络。
        • 基于rl的架构搜索使用结果网络的准确性作为奖励函数,而对DNN或其超参数的修改动作
        • 进化算法(EA)对于架构搜索是有利的,因为任何函数(不一定是可微分的)都可以使用这些方法进行优化。遗传cnn采用遗传算法(GAs),将DNN连接编码为二进制基因(如图24c所示),并以最终精度作为适应度函数,以每一个时间步训练DNN种群。GAs对并行性具有很高的适应性,并已成功用于非常大规模的训练,其中18000个节点在Titan超级计算机上使用24小时,以获得最先进的分割和重建问题的精度。
        • 大规模进化也使用GAs,但定义了一组可应用的特定突变(例如,插入卷积,改变步幅)。大规模进化在准确性可扩展性方面优于一些现有的基于rl的方法,因为遗传算法可以并行运行整个种群(其精度随着预期的种群规模而增加)。但在一般情况下,遗传算法需要在时间步之间进行同步约简通信,以选择最优候选算法。为了克服这个问题,采用了竞赛选择,它只对种群成员进行两两比较。
        • 其他的GA架构搜索方法包括对dnn的多级分层表示(图24b),通过专门的变异实现异步分布式竞赛选择(集中式、基于队列的实现)。正则化进化(AmoebaNets)通过每次迭代从种群中移除最古老的样本(类似于自然界中的死亡),进一步扩展了遗传算法的竞赛选择,从而规范化了优化过程。
    • 并行和分布式深度学习未来的潜在研究方向:
      • 随着研究的进展,DNN架构正变得越来越深入,在连续和非连续层之间(“跳过连接”)更加互联。除了准确性,大量的工作致力于减少内存占用操作数量,以便成功地在移动设备上运行推断。这也意味着训练后的DNN压缩可能会得到进一步的研究,训练可压缩网络将是可取的。由于移动硬件的内存容量有限,且必须具有能源效率,因此经常有人提出专门的DNN计算硬件。我们在NVIDIA张量核心、张量处理单元、其他专用集成电路和fpga,甚至神经形态计算中看到了这一趋势。
      • 处理DNN稀疏性(例如,压缩后)是一些专用集成电路的一个重点,而循环网络注意力学习方面的进展表明,训练和推理硬件也需要在可变长度输入下有效工作。
      • 目前,计算单个算子是高度优化的,因此目前的研究方向是层间整个dnn优化。TensorFlow XLA, Tensor comprehension, Latte和TM一次性编译整个神经网络图,执行各种转换(如融合)来优化执行时间,比手动调优的单个操作实现了4倍的加速。我们希望在这个方向上继续研究,直到DNN的评估在操作共享内存优化方面接近最优。
      • 应用于分布式深度学习的技术正在趋同到可以设计标准编程接口(或框架)的地步。在未来,生态系统如Ease。Ml可以使训练方案的定义(例如,关于集中化和梯度一致性)更容易,隐藏了大多数底层基础设施设置。结合对云系统和弹性训练的日益增长的支持(节点可以随意旋转和移除)与进化算法的最新发展,我们可能会看到自适应和财务上可行的优化方法崛起。
      • 最后,深度学习被用于解决越来越复杂的问题,如路由算法分层任务组合人工通用智能的研究目前集中在多用途网络,这为模型并行不同的训练算法创造了新的、未探索的机会。寻找充分的多用途网络可能超出了人类团队的创造力,随着元优化(特别是架构搜索)和渐进式训练的可用性和质量的增加,参数扫描手动DNN架构工程将会过时。支持这一说法的事实是,目前最先进的计算机视觉CNN(CIFAR-10和ImageNet数据集)是自动架构搜索的结果。利用并行性是实现这些突破和其他突破的必要条件,这将与深度学习领域的进步携手并进。
    展开全文
  • 为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个网络相连的计算机专有编号,或者两者结合使用。并行计算的主要目的是快速解决大型且复杂的计算问题。  并行计算可以划分成时间...
  • 如何实现大规模并行分布式深度学习成为深度学习的研究热点,从而成为推动算法创新的关键的人工智能工程能力。
  • 为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个网络相连的计算机专有编号,或者两者结合使用。并行计算的主要目的是快速解决大型且复杂的计算问题。  并行计算可以划分成时间...
  • 为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个网络相连的计算机专有编号,或者两者结合使用。并行计算的主要目的是快速解决大型且复杂的计算问题。    并行计算可以划分成时间并...
  • 并行计算(Parallel Computing) 并行计算或称平行计算是相对于串行计算来说的。并行计算(Parallel Computing)...为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个网络相连的计算机...
  • 并行与分布式计算:并行程序设计的基本原则(三)Section 3 并行程序的基本设计原则3.1 增量并行化3.2 Foster的设计理念(四步法)3.2.1 划分数据划分任务划分Pipelining(生产线)Foster检查表3.2.2 通信Foster检查...
  • 基础知识: 1.目标函数 机器学习要优化的目标函数一般表现为一下形式: 函数J(θ)为目标函数,f为表示真实值拟合值之差的损失函数,r(θ)为正则项(防止过拟合问题,主要分为L1正则项、L2正则项)...交替方向乘子算
  • 为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个网络相连的计算机专有编号,或者两者结合使用。并行计算的主要目的是快速解决大型且复杂的计算问题。  并行计算可以划分成时间并行.....
  • NVIDIA Megatron 是一个基于 PyTorch 的分布式训练框架,用来训练超大Transformer语言模型,其通过综合应用了数据并行,Tensor并行和Pipeline并行来复现 GPT3,值得我们深入分析其背后机理。
  • 高性能计算及应用专题研讨会Seminar on High Performance Computing and Applications第 35 期 (总第94期)主题报告: 迈向分布式并行计算Towards distributed parallel computing报 告 人:姜 海 博士,美国阿肯色州...
  • 并行计算:并行计算是相对于串行计算来说的。... 时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。例如基于CUDA编程。并行计算的目的就是提供单处理器无法提供的性能(处理器
  • 模型并行的动机和现状我们在上一篇《数据并行:提升训练吞吐的高效方法|深度学习分布式训练专题》详细介绍了利用数据并行进行大规模分布式训练。读者不禁要问:仅仅使用数据并行,是否可以完全满足大模型训练的要求...
  • 分布式计算是一种计算方法,和集中式计算是相对的。 随着计算技术的发展,有些应用需要非常巨大的计算能力才能完成,如果采用集中式计算,需要耗费相当长的时间来完成。 分布式计算将该应用分解成许多小的部分,分配...
  • 摘要:给出了一种分布式智能火灾报警控制系统的设计方法、系统软硬件的组成和实现。系统设计中采用多CPU的并行处理方式和智能数据处理方法,实现了系统的实时、准确报警和可*的联动控制,利用现场总线CAN实现控制器...
  • 书中,这种随处可见的微小昆虫进化出了可以和人类社会相提并论的文明,并人类开展了一场惊心动魄的争锋对决。文学作品虽然是虚构的,但蚂蚁、蜜蜂等生物的社会化程度确实令人吃惊:没有领导,没有指挥官,却分工...
  • 【大数据】分布式计算

    千次阅读 2019-06-14 14:57:29
    分布式计算是一种计算方法,和集中式计算是相对的。随着计算技术的发展,有些应用需要非常巨大的计算能力才能完成,如果采用集中式计算,需要耗费相当长的时间来完成。分布式计算将该应用分解成许多小的部分,分配给...
  • 转自: ...云计算与并行计算、分布式计算的区别,以计算机用户来说,并行计算是由单个用户完成的,分布式计算是由多个用户合作完成的,云计算是没有用户参与,而是交给网络另一端的服务器完成的。
  • 随着互联网的蓬勃兴起,大数据、人工智能、物联网、云计算云存储等这些专业词汇在大众视野内出现的频率越来越高,再加上近几年分布式技术异军突起,更使得分布式存储、分布式计算等成为热词。然而,很多人对这些...
  • 内部资料。关于分布式并行计算,无锁编程相关的最新研究方向

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,276
精华内容 15,710
热门标签
关键字:

并行与分布式方向