论文:https://arxiv.org/pdf/1712.01887.pdf

译文:深度梯度压缩:减小分布式训练的通信带宽

摘要

大规模分布式训练需要通信带宽用于梯度交换,这在节点较多时,限制了训练的可扩展性,而且网络带宽比较贵。如果是在移动设备上进行分布式训练(如联合学习),情况会变得更加糟糕,高延迟,低吞吐还断断续续的网络连接。本文,我们发现分布式SGD中99.9%的梯度交换都是多余的,然后提出深度梯度压缩(DGC),极大地减少了通信带宽。为了保留压缩过程中的精度,DGC采用了四种方法:

1、动量纠正(momentum correction)

2、本地梯度裁剪(local gradient clipping)

3、动量因子掩蔽(momentum factor masking)

4、热身训练(warm-up training)

我们已经把DGC应用到图像分类、语音识别和语言模型,并且基于各种数据集,包括Cifar10、ImageNet、Penn Treebank和Librispeech Corpus。在这些场景,DGC的梯度压缩比例有270倍到600倍,而且不会损失准确率。ResNet50的梯度大小从97MB减少到0.35MB,以及DeepSpeech从488MB减少到0.74MB。DGC可以在1Gbps以太网和移动设备中进行分布式训练。

介绍

大规模分布式训练可以训练更深更大的模型。SGD被广泛应用于分布式训练。通过增加训练节点,以及利用数据并行,相同大小的训练数据,forward-backward的总体计算时间会大幅减少。但是,梯度交换比较耗时,特别是RNN的计算/通信比较小。因此,当分布式训练规模变大时,网络带宽会变成主要瓶颈。在移动设备上,带宽问题会变得更加严重。

深度梯度压缩

1、梯度稀疏化:

我们只发送重要梯度(稀疏更新),来减少通信所需的带宽。只有那些大于某个阈值的梯度会被发送(注:梯度跟权值不是一一对应的吗?那些没传的梯度,权值怎么更新?)。为了防止丢失信息,我们本地累加剩余的梯度,最终这些梯度大到可以发送。因此,我们是立马发送大梯度,最终发送所有的梯度,如算法1所示。

系统的性能以及分析

实现DGC需要筛选top k梯度。给定稀疏率99.9%,我们就需要从几百万权值中,挑选出top 0.1%。时间复杂度是O(n),其中n是梯度个数。我们采用抽样来减少top k的选择时间。先抽样0.1% ~ 1%,再在样本上筛选top k梯度。

结论

DGC能够把梯度压缩270倍到600倍,并且适用于很多CNN和RNN。为了不让DGC导致收敛慢,采用了动量纠正、本地梯度裁剪、动量因子掩蔽和热身训练。我们进一步提出分级阈值选择,来加速梯度稀疏化过程。DGC减少了分布式训练的通信带宽需求,提高了可扩展性。

注:有在移动设备上做分布式训练的场景?

转载于:https://www.cnblogs.com/yangwenhuan/p/11413310.html

深度梯度压缩:减小分布式训练的通信带宽相关推荐

  1. 深度神经网络的分布式训练概述:常用方法和技巧全面总结

    论文地址:https://arxiv.org/abs/1810.11787 深度学习已经为人工智能领域带来了巨大的发展进步.但是,必须说明训练深度学习模型需要显著大量的计算.在一台具有一个现代 GPU ...

  2. 新手手册:Pytorch分布式训练

    文 | 花花@机器学习算法与自然语言处理 单位 | SenseTime 算法研究员 目录 0X01 分布式并行训练概述 0X02 Pytorch分布式数据并行 0X03 手把手渐进式实战 A. 单机单 ...

  3. TensorNet——基于TensorFlow的大规模稀疏特征模型分布式训练框架

    女主宣言 今天小编为大家分享一篇有关于TensorNet的文章.TensorNet是一个构建在TensorFlow之上针对广告推荐等大规模稀疏场景优化的分布式训练框架.希望能对大家有所帮助. PS:丰 ...

  4. 【二】分布式训练---参数服务器训练(飞桨paddle1.8)

    1.参数服务器训练简介 参数服务器训练是分布式训练领域普遍采用的编程架构,主要解决以下两类问题: 模型参数过大:单机内存空间不足,需要采用分布式存储. 训练数据过多:单机训练太慢,需要加大训练节点,来 ...

  5. 如何像用MNIST一样来用ImageNet?这里有一份加速TensorFlow分布式训练的梯度压缩指南

    作者 | 王佐 今年的 NIPS 出现 "Imagenet is the new MNIST" 口号,宣告使用 MNIST 数据集检验网络模型性能已经成为过去式.算法工程师们早就意 ...

  6. PTMs:大模型预训练技巧之ZeRO训练优化技术(DeepS库-减少参数的冗余+优化通信)的简介(四大核心(模型分片/梯度累积/内存优化/分布式训练)、两大优化(非精度/冗余消除))、ZeRO3三个版

    PTMs:大模型预训练技巧之ZeRO训练优化技术(DeepSpeed库-减少参数的冗余+优化通信)的简介(四大核心技术(模型分片/梯度累积/内存优化/分布式训练).两大优化技术(ZeRO-Offloa ...

  7. 分布式深度学习:神经网络的分布式训练

    分布式深度学习:神经网络的分布式训练 2016-10-09 14:05:04     深度学习    神经网络   http://www.jiqizhixin.com/article/1611  0  ...

  8. Pytorch分布式训练/多卡训练(二) —— Data Parallel并行(DDP)(2.2)(代码示例)(BN同步主卡保存梯度累加多卡测试inference随机种子seed)

    DDP的使用非常简单,因为它不需要修改你网络的配置.其精髓只有一句话 model = DistributedDataPrallel(model, device_ids=[local_rank], ou ...

  9. 超出认知的数据压缩 用1-bit数据来表示32-bit的梯度 语音识别分布式机器学习 梯度压缩 论文精读

    说明 介绍 1 − b i t 1-bit 1−bit论文内容. 原文链接:1-bit stochastic gradient descent and its application to data- ...

  10. 深度学习的分布式训练--数据并行和模型并行

    <div class="htmledit_views"> 在深度学习这一领域经常涉及到模型的分布式训练(包括一机多GPU的情况).我自己在刚刚接触到一机多卡,或者分布式 ...

最新文章

  1. 封装了一下我佛山人4.0 (支持vs2005)asp.net 页面验证
  2. python画长方形-怎么用python 画出任意占空比的一串矩形方波呢?
  3. 三个程序代码托管平台出现勒索事件? 建议启用多因素验证以保护账户
  4. Thread.setDefaultUncaughtExceptionHandler作用
  5. vlan和如何建立vlan和vconifg
  6. java 正则表达式验证邮箱格式是否合规 以及 正则表达式元字符
  7. System.Xml名称空间下的支持DOM的类型
  8. UltraEdit中显示空格与回车的问题
  9. 002 ceph的deploy部署
  10. SQL Server 2017:mTVF的交错执行
  11. rpm常用命令集合2
  12. 使用正当时!用扩展全面武装Firefox
  13. 微信中扫一扫二维码唤起手机默认浏览器的实现方式
  14. Unity3D-Tilemap初体验(Unity自带Tilemap使用体验)
  15. 生活小知识,生活要认真,驱蚊驱虫驱苍蝇大法
  16. 学会这几点,不懂代码也能做出炫酷可视化大屏!
  17. 毕设论文中第一章的图注出现“图一.1”,转化为“图1.1”的方法
  18. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
  19. 人脸颜值预测(facial beauty prediction)综述
  20. excel提示“文件已损坏,无法打开”解决方法

热门文章

  1. linux如何配置自定义命令,[shell脚本]Linux自定义命令并启用应用
  2. 飞机大战小游戏3.0
  3. liunx中查看安装软件和卸载软件和启动程序
  4. 正则匹配新闻内容案例,JS和PHP
  5. Jenkins 多服务器自动部署,发布到多台服务器
  6. java socket 客户端接收_java socket,怎么把客户端接收到的用户名和密码发送给后台?...
  7. java layer调用native层的android_media_AudioTrack_get_min_buff_size()确定audio track buffer的min size...
  8. 关于/r与/n以及 /r/n 的区别总结
  9. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_6_字符输出流写数据的其他方法...
  10. java学习笔记④MySql数据库--01/02 database table 数据的增删改