浅谈分布式学习(SGD)中提高速率的方法
背景:
在分布式学习中,如下图所示,将深度学习中的梯度计算任务分成n份,交给n个从机进行计算,再将计算后的梯度返还到主机,用于模型的更新,这样计算的速度相比于单个主机进行计算,速率得到大大提升。尤其是面对大量数据集,神经网络深度比较深的情况。但是,这种方法也同样存在问题,假设在分布式系统上使用SGD(随机梯度下降),从机每次输入一个样本数据(xi,yi),就需要将梯度计算出来送入主机进行更新,主机与从机的交流损耗就会大幅度增加。所以为了解决这个问题,常用的算法有以下几种类型。
核心思想:将传输过程中的梯度进行压缩,取值,从而减小传输过程中的时间损耗。
Related work:
Stochastic Gradient Descent(SGD):
每次仅仅选用一个样本数据进行计算梯度,并将梯度用来更新
Batch Gradient Descent(BGD):
将全部的数据输入到模型中进行梯度计算
SGD相比于BGD,优势在于它的更新波动大一些,不容易陷入局部最优点,并且内存的损耗相对较小,所以SGD算法也经常在机器学习上使用
常见对于梯度(gradient)的处理方法:
1、quantize gradient(biased):
将梯度进行分桶,以桶中的平均值、中位数作为梯度的代表值,从而减少损耗(reduction)。
如下图所示:
我们将Values中的梯度值根据大小分成桶,大小相近的分到一块,然后我们以,得到分桶的数据,我们以桶的中位数代表该桶中的梯度值,例如:0.08和0.02分到第三个桶中,因此这俩数据的值都被记为[0.1,0.3]区间的中位数0.2,从而达到数据压缩的目的,而我们在分布式学习中只需要将桶中的数据传输,大大减少了主机和从机之间的传输损耗。
2、sparsify gradient(unbiased)
在大部分场景应用中,神经网络模型的梯度往往呈现稀疏性(大部分值为零),如下图所示(鸢尾花数据集迭代20000次梯度分布图)也就意味着,我们在更新时,只有部分权值W进行更新,大部分的权值更新要么更新变化不大,要么不进行更新。所以我们可以只选用最大的k个梯度值进行传输更新,而其他的梯度我们认为是零。所以代表性的方法是只取出梯度值中的Topk来进行权值更新,提高速度,减少损耗(reduction)
算法一:
Sketched-SGD(类型:sparsify gradient):
该算法是上述算法分类中的sparsify gradient(unbiased)方法,取出Topk的梯度来进行更新,只取Topk进行更新存在一个问题:不能保证算法的收敛特性(no convergence guarantees),所以该算法为了克服该问题引入了误差计算。核心思想是:通过每次计算更新累积误差来实现 convergence guarantees。
下图是该算法的伪代码:
REFERENCES:
[1]SketchML: Accelerating Distributed Machine Learning
with Data Sketches
[2]Communication-efficient Distributed SGD with
Sketching
[3]Sebastian U Stich, Jean-Baptiste Cordonnier, and Martin Jaggi. Sparsified sgd with memory. In
Advances in Neural Information Processing Systems, pages 4452–4463, 2018.
以上内容只是个人的理解总结,如有错误还烦请大家批评指正。以后会不定时更新内容。
浅谈分布式学习(SGD)中提高速率的方法相关推荐
- 浅谈在ASP.NET中数据有效性校验的方法
作者:未知 作为一名程序员,一定要对自己编写的程序的健壮性负责,因此数据的校验无论在商业逻辑还是系统实现都是必不可少的部分. 我这里总结了一种自认为比较不错的asp.net(C#)的数据校验方法,如大 ...
- 综合评价模型的缺点_浅谈交通影响评价中不同交通预测方法的特性
目前,据小编经验觉得,我国交通影响评价的工作中仍有很多问题未得到很好的解决,主要表现在:交通需求预测模型有待进一步精细.交通的影响程度评价内容与指标不够明确.报告中提出的交通改善措施很难落实到位等方面 ...
- 嵌入式AI —— 6. 为糖葫芦加糖,浅谈深度学习中的数据增广
没有读过本系列前几期文章的朋友,需要先回顾下已发表的文章: 开篇大吉 集成AI模块到系统中 模型的部署 CMSIS-NN介绍 从穿糖葫芦到织深度神经网络 又和大家见面了,上次本程序猿介绍了CMSIS- ...
- 关于计算机素养论文,浅谈计算机专业教学中如何提高学生计算机素养
[摘 要] 计算机素养在培养学生核心素养方面具有重要意义,因此在计算机教学中,教师应结合计算机专业教学习现状,结合学生的全面发展需求和未来的职业规划,转变自身传统的教学观念,运用现代化的教学思维,将新 ...
- 浅谈初中英语教学中如何激发学生的学习兴趣
浅谈初中英语教学中如何激发学生的学习兴趣 汪东峰 甘肃省天水市麦积区花牛中心学校 [摘 要]兴趣是促使教学活动初见成效的关键,也是一切教学活动开展的先决条件,培养兴趣对于任何学科而言都有一定的基础意义 ...
- 浅谈工作/学习中找bug的思路_0_调试、try-catch以及打印报错信息和百度的方法、No default constructor for entity: com.gyf.bos.mod
浅谈工作/学习中找bug的思路_0 文章目录 浅谈工作/学习中找bug的思路_0 调试.try-catch-以及打印报错信息和百度的方法 前言 描述 解决思路1 -- 检查移植的代码,细枝末节也不要忽 ...
- 浅谈数字媒体艺术中的技术应用-4-技术路线和学习地图
我们先来看下制作一个互动展示装置的设计思路和技术实现. 当我们大脑里面有一个点子之后,怎么最终输出成一个互动展示装置呢?首先我们需要设计一个外观造型,其次我们需要评估一下这个装置的互动方式,是用VR眼 ...
- ai在计算机教学中的应用,浅谈人工智能在教育中的应用
浅谈人工智能在教育中的应用 孙立友 摘要:随着人工智能技术的进步,以及研究的深入和在教育领域的逐步推广,对教育领域产生了深远的影响.人工智能对于弥补当前教育存在的种种缺陷和不足,推动教育发展改革和教学 ...
- 计算机教学在教学方面的作用,浅谈信息技术在教学中的重要作用
浅谈信息技术在教学中的重要作用 时间:2018-06-06 来源:未知 作者:admin 点击:次 核心提示:浅谈信息技术在小学语文教学中的重要作用 摘要:小学生的年龄特点,决定了他们对客观事物的认识 ...
最新文章
- laravel 重写以及500错误
- 【转】C++11 并发指南五(std::condition_variable 详解)
- python 文件操作的模块_Python之文件操作修改模块
- 【转】文本格式导入物料凭证模板
- 2016年华为校招上机考试试题答案
- qt在窗口的子部件中绘制矩形
- MethodInvokingJobDetailFactoryBean的并发问题
- 95-190-448-源码-window-Trigger-CountTrigger
- SpringBoot : 注解@Resource
- 赛锐信息:SAP系统用户账号类型介绍
- 数字化工厂的五大系统_工厂通过MES系统对车间设备数字化管理
- linux hasp的加密狗驱动程序,hasp加密狗驱动下载-hasp加密狗驱动(圣天诺加密狗驱动) win7/8/10 官方通用版 - 河东下载站...
- matlab 画图 浓淡有别,matlab画图命令汇总
- ManualResetEvent实现线程的暂停与恢复
- linux 字幕制作工具,字幕制作工具
- 欧姆龙nb触摸屏通信_313C和欧姆龙NB触摸屏怎么通讯
- PHP - 使用file_get_contents下载远程文件到本地
- 技术在游戏研发中的重要性
- Laravel Excel(maatwebsite/excel )导入
- 社工利器--setoolkit之钓鱼攻击