ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

AI多种并行算法

2021-10-12 06:31:22  阅读:221  来源: 互联网

标签:多种 机器 每个 并行算法 AI 模型 并行 参数 节点


AI多种并行算法

并行模型

  • 模型并行( model parallelism ):分布式系统中的不同机器(GPU/CPU等)负责网络模型的不同部分 —— 例如,神经网络模型的不同网络层被分配到不同的机器,或者同一层内部的不同参数被分配到不同机器;[14]
  • 数据并行( data parallelism ):不同的机器有同一个模型的多个副本,每个机器分配到不同的数据,然后将所有机器的计算结果按照某种方式合并。

 

  • 当然,还有一类是混合并行(Hybrid parallelism),在一个集群中,既有模型并行,又有数据并行,例如,可以在同一台机器上采用模型并行化(在GPU之间切分模型),在机器之间采用数据并行化。

 

数据并行

数据并行化式的分布式训练,在每个工作节点上,存储一个模型的备份,在各台机器上处理数据集的不同部分。数据并行化式训练方法,需要组合各个工作节点的结果,在节点之间同步模型参数。各种方法之间的主要区别在于:

  1. 参数平均法 vs. 更新式方法
  2. 同步方法 vs. 异步方法
  3. 中心化同步 vs. 分布式同步

参数平均 model averaging

参数平均是最简单的一种数据并行化。若采用参数平均法,训练的过程如下所示:

  1. 基于模型的配置随机初始化网络模型参数
  2. 将当前这组参数分发到各个工作节点
  3. 在每个工作节点,用数据集的一部分数据进行训练
  4. 将各个工作节点的参数的均值作为全局参数值
  5. 若还有训练数据没有参与训练,则继续从第二步开始

上述第二步到第四步的过程如下图所示。在图中,W表示神经网络模型的参数(权重值和偏置值)。下标表示参数的更新版本,需要在各个工作节点加以区分。

 

参数平均法在数学意义上,等同于用单个机器进行训练;每个工作节点处理的数据量是相等的。(实际上如果采用momentum等技术,不是严格相等的)

假设该集群有n个工作节点,每个节点处理m个样本,总共是对nxm个样本求均值。如果在单台机器上处理所有nxm个样本,学习率设置为α,权重更新的方程为: 

 

假设把样本分配到n个工作节点,每个节点在m个样本上进行学习(节点1处理样本1,……,m,节点2处理样本m+1,……,2m,以此类推),得到: 

 

 参数平均法听上去非常简单,但事实上并没有看上去这么容易。

首先,应该如何求平均值?简单将每轮迭代之后的参数进行平均。一旦这样实现了,会发现此方法在计算之外的额外开销非常巨大;网络通信和同步的开销许就能抵消额外机器带来的效率收益。因此,参数平均法通常有一个大于1的平均周期averaging period(就每个节点的minibatch而言)。如果求均值周期太长,每个节点得到的局部参数更多样化,求均值之后的模型效果非常差。想法是N个局部最小值的均值并不保证就是局部最小:

 

 

 什么样的平均的周期算是过高呢?这个问题还没有结论性的回答,和其它超参数搅和在一起之后变得更为复杂,比如学习率、minibatch的大小,和工作节点的数量。有些初步的研究结论,建议平均的周期为每10~20个minibatch计算一次(每个工作节点),能够取得比较好的效果。随着平均的周期延长,模型的准确率则随之下降。

另一类额外的复杂度则是与优化算法相关,比如adagrad,momentum和RMSProp。这些优化方法,在神经网络的训练过程中,能够显著提升收敛的特性。这些updater都有中间状态(通常每个模型参数有1或2个状态值)—— 需要对这些状态值求均值吗?对每个节点的中间状态求均值可以加快收敛的速度,牺牲的代价则是两倍(或者多倍)增加网络的传输数据量。有些研究在参数服务器的层面应用类似的“updater”机制,而不仅仅在每个工作节点。

参考链接:

https://blog.csdn.net/xbinworld/article/details/74781605

标签:多种,机器,每个,并行算法,AI,模型,并行,参数,节点
来源: https://www.cnblogs.com/wujianming-110117/p/15396022.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有