Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
1c03c091
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
5
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1c03c091
编写于
9月 25, 2019
作者:
W
WangXi
提交者:
gongweibao
9月 25, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refine DGCMomentumOptimizer doc (#1283)
上级
1a0b0e70
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
15 addition
and
15 deletion
+15
-15
doc/fluid/api_cn/optimizer_cn/DGCMomentumOptimizer_cn.rst
doc/fluid/api_cn/optimizer_cn/DGCMomentumOptimizer_cn.rst
+15
-15
未找到文件。
doc/fluid/api_cn/optimizer_cn/DGCMomentumOptimizer_cn.rst
浏览文件 @
1c03c091
...
...
@@ -5,34 +5,34 @@ DGCMomentumOptimizer
.. py:class:: paddle.fluid.optimizer.DGCMomentumOptimizer(learning_rate, momentum, rampup_begin_step, rampup_step=1, sparsity=[0.999], use_nesterov=False, local_grad_clip_norm=None, num_trainers=None, regularization=None, name=None)
原始论文: https://arxiv.org/abs/1712.01887
DGC(深度梯度压缩)Momentum 优化器。
原始论文: https://arxiv.org/abs/1712.01887
DGC通过
仅发送重要梯度(稀疏更新)来减少通信带宽:仅发送大于给定阈值的梯度
。
DGC通过
只传送重要梯度(稀疏更新)的方式,即只发送大于给定阈值的梯度,来减少通信带宽使用
。
为避免丢失信息,DGC在本地累积其余梯度。最终,这些梯度会积累到足够大,从而可
以传输。
DGC会在本地累加剩余梯度以避免信息的丢失。最终这些梯度会大到足
以传输。
因此,DGC
即时发送相对较大的梯度,但最终随时间积累而发送所有梯度
。
因此,DGC
只会立即发送大梯度,但随时间流逝所有梯度终将发送出去
。
此外,为了确保不损失精度
,DGC在梯度稀疏化之上采用动量修正和局部梯度修剪(clip)来维持模型性能。
为确保精度不会损失
,DGC在梯度稀疏化之上采用动量修正和局部梯度修剪(clip)来维持模型性能。
DGC还使用动量因子掩藏
(momentum factor masking)和预训练(warm-up)来克服由于reduced通讯而导致的数据陈旧性(staleness)
问题。
DGC还使用动量因子掩藏
(momentum factor masking)和预训练(warm-up)来克服由于规约(reduced)通信而导致的数据陈旧性(staleness)
问题。
这个优化器会执行如下操作:
1.
通过从张量获取前TopK个导入值来压缩梯度,并将其用于allreduce以减少网络带宽
。
2. 调用momentum来
降低cost
。
1.
从张量中获取的前TopK个重要梯度进行压缩,并将其用于allreduce通信以减少网络带宽使用
。
2. 调用momentum来
优化代价函数
。
参数:
- **learning_rate** (float | Variable) - 用于更新参数的学习率。可以是浮点值或由一个浮点型数据组成的Variable。
- **momentum** (float) - 动量因子。
- **rampup_begin_step** (int) - 进行梯度压缩的起步点。
- **rampup_step** (int) - 使用稀疏
期的时间。默认值为1.例如:如果稀疏度为[0.75,0.9375,0.984375,0.996,0.999],并且rampup_step为5,则在0步时使用0.75,在1步时使用0.9375,依此类推。当达到sparsity数组末尾时,它此后延续
使用0.999。
- **sparsity** (list [float]) - 从梯度张量中获取
较为重要的元素,比率为(1-当前稀疏度)
。
- **use_nesterov** (bool) - 启用Nesterov momentum。 True意味着使用
nesterov
。
- **local_grad_clip_norm** (float
) - 如果需要,clip norm值
。
- **num_trainers**
- 训练节点的数量
。
- **regularization**
- 正则器,如fluid.regularizer.L2DecayRegularizer
。
- **name**
- 可选的名称前缀
。
- **rampup_step** (int) - 使用稀疏
预热的时间步长。默认值为1。例如:如果稀疏度为[0.75,0.9375,0.984375,0.996,0.999],并且rampup_step为100,则在0~19步时使用0.75,在20~39步时使用0.9375,依此类推。当到达sparsity数组末尾时,此后将会
使用0.999。
- **sparsity** (list [float]) - 从梯度张量中获取
top个重要元素,比率为(1-当前稀疏度)。默认值为[0.999]。例如:如果sparsity为[0.99, 0.999],则将传输top [1%, 0.1%]的重要元素
。
- **use_nesterov** (bool) - 启用Nesterov momentum。 True意味着使用
Nesterov。默认值False
。
- **local_grad_clip_norm** (float
,可选) - 局部梯度裁减标准值。可选,默认为None,表示不需要裁减
。
- **num_trainers**
(int,可选) - 训练节点的数量。可选,默认为None
。
- **regularization**
(WeightDecayRegularizer,可选) - 正则器, 如 :ref:`cn_api_fluid_regularizer_L2DecayRegularizer`。可选,默认为None
。
- **name**
(str,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None
。
**代码示例**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录