INTERSPEECH 2015 | Scalable Distributed DNN Training Using Commodity GPU Cloud Computing
一般来说,全连接层的前向和后向传递所需的计算量与权重的数量成正比。此外,数据并行训练中所需的带宽与可训练权重的数量成比例。因此,随着每个节点计算速度的提高,所需的网络带宽也随之增加。这篇文章主要是根据阈值进行梯度的稀疏化和量化操作,从而降低分布式训练中的通信开销。稀疏化指的是只传输那些比较重要的梯度(例如绝对值较大的梯度),而量化则是使用较少的比特来表示原始梯度,二者的差别由下图描述[1]:

本文提出的梯度压缩方法基于以下两个观点:(1)很多加速SGD的方法,包括minibatch SGD、动量法、双缓冲以及异步SGD,都可以在某种程度上视为延迟更新的变体;(2)节点上的子梯度是非常稀疏的,这就意味着只有少量的权值需要更新,换句话说,我们只需要传递那些对权值更新产生较大作用的梯度,而不再传输其余的梯度,这样就能降低带宽占用。
因为只传输那些大于某一阈值的梯度,所以我们必须记住这些梯度的索引,以在接收端对其进行重构。在实现上,我们可以使用字典存储索引和对应的梯度值。为了保证精度,我们并不直接在原始梯度上进行操作,而是操纵一个名为梯度残差的东西。在处理每个minibatch时,我们首先将上一次迭代的梯度残差与本次迭代的原始梯度相加,得到本次迭代的梯度残差。随后,对于残差向量中的每个元素,如果该元素大于正阈值,就将该元素的索引与正阈值编码进字典中,再从对应的残差元素中减去阈值;如果该元素小于负阈值,就将该元素的索引与负阈值编码进字典中,再从对应的残差元素中加上阈值。对于那些绝对值小于阈值的残差元素,我们不再传输它们。但是,随着迭代次数的增加,这些元素可能在某次迭代时就超过了阈值,从而完成一次更新。在某种程度上来说,这就是一种延迟更新策略。算法伪代码如下所示:

在实现中,我们将每个梯度(残差)元素编码为两个数字:整数元素索引和浮点梯度元素。为了进一步降低通信开销,本文使用1比特来编码梯度元素,使用31比特编码元素索引,这样就使用4个字节编码了1个整数和1个浮点数。为了保证模型精度,同样需要使用1 Bit SGD中提到的误差补偿技术。需要注意的是,本文使用的是对等结构而非参数服务器架构,而且整个训练过程中只进行梯度的传输,不进行权值的传输。为了降低GPU与OS之间的I/O瓶颈,作者还使用了CUDA中的某些字符串压缩函数。
INTERSPEECH 2015 | Scalable Distributed DNN Training Using Commodity GPU Cloud Computing的更多相关文章
- Meet Dgraph — an open source, scalable, distributed, highly available and fast graph databas
https://dgraph.io/ Meet Dgraph — an open source, scalable, distributed, highly available and fast gr ...
- Scalable, Distributed Systems Using Akka, Spring Boot, DDD, and Java--转
原文地址:https://dzone.com/articles/scalable-distributed-systems-using-akka-spring-boot-ddd-and-java Whe ...
- 论文阅读笔记六十四: Architectures for deep neural network based acoustic models defined over windowed speech waveforms(INTERSPEECH 2015)
论文原址:https://pdfs.semanticscholar.org/eeb7/c037e6685923c76cafc0a14c5e4b00bcf475.pdf 摘要 本文研究了利用深度神经网络 ...
- (转)分布式深度学习系统构建 简介 Distributed Deep Learning
HOME ABOUT CONTACT SUBSCRIBE VIA RSS DEEP LEARNING FOR ENTERPRISE Distributed Deep Learning, Part ...
- https ddos检测——研究现状
from: https://jyx.jyu.fi/bitstream/handle/123456789/52275/1/URN%3ANBN%3Afi%3Ajyu-201612125051.pdf 相关 ...
- 77-CCI,Commodity Channel Index,商品通道指标.(2015.7.1)
CCI,Commodity Channel Index 商品通道指标 Channel Index,商品通道指标.(2015.7.1)" title="77-CCI,Commodit ...
- 分布式系统(Distributed System)资料
这个资料关于分布式系统资料,作者写的太好了.拿过来以备用 网址:https://github.com/ty4z2008/Qix/blob/master/ds.md 希望转载的朋友,你可以不用联系我.但 ...
- [专题论文阅读]【分布式DNN训练系统】 FireCaffe
FireCaffe Forrest N. Iandola FireCaffe: near-linear acceleration of deep neural network training on ...
- Toward Scalable Systems for Big Data Analytics: A Technology Tutorial (I - III)
ABSTRACT Recent technological advancement have led to a deluge of data from distinctive domains (e.g ...
随机推荐
- 微信小程序输入框上移问题解决
微信小程序的输入框在上面还好,如果不是,在聚焦的时候页面就会上移,上方的页面信息会看不到,影响用户操作 在这里可以手动设置并获取输入框的高度来解决 这种方式虽然有的机子有点卡,但是已经算是比较完美的解 ...
- SYCOJ798Biorhythms
https://oj.shiyancang.cn/Problem/798.html #include<bits/stdc++.h> using namespace std; typedef ...
- 运行flutter-填坑之旅
运行flutter; 1.有一个问题,解决了好长时间 如果你安装了IntelliJ IDEA 2017.2.7 x64,运行flutter的时候报错,是因为IntelliJ IDEA 2017.2.7 ...
- LabVIEW生成.NET的DLL——C#下调用NI数据采集设备功能的一种方法 [原创www.cnblogs.com/helesheng]
LabVIEW是NI公司的数据采集设备的标准平台,在其上调用NI-DAQmx驱动和接口函数能够高效的开发数据采集和控制程序.但作为一种图形化的开发语言,使用LabVIEW开发涉及算法和流程控制的大型应 ...
- 02-JS中的数据类型及类型转换
02-JS中的数据类型及类型转换 一.数据类型 JS中的值,无论是字面量还是变量,都有明确的类型. (一)概述 1.基本类型5种 number 数字类型 string 字符串类型 boolean 布尔 ...
- Solon Web 开发,一、开始
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- 【刷题-LeetCode】229. Majority Element II
Majority Element II Given an integer array of size n, find all elements that appear more than ⌊ n/3 ...
- 🏆【Alibaba中间件技术系列】「RocketMQ技术专题」Broker服务端自动创建topic的原理分析和问题要点指南
前提背景 使用RocketMQ进行发消息时,一般我们是必须要指定topic,此外topic必须要提前建立,但是topic的创建(自动或者手动方式)的设置有一个开关autoCreateTopicEnab ...
- Chrome本地跨域请求设置,实现HTML模板页
按照需求,公司现在需要通过第三方的API反馈的数据,进行在本地就可以打开的静态页面程序(完全脱离IIS等服务器).为了更好的维护项目,需要实现静态HTML引入HTML模板,完成ASP.NET模板页的类 ...
- linux下git安装使用新手教程。
1.进入官网,创建Github帐户,获取git服务. 2.本地安装git客户端,yum install git. 3.生成ssh key,使用命令 "ssh-keygen -t rsa -C ...