繁体   English   中英

使用大批量和少量GPU训练MXNet

[英]Training MXNet with large batch size and small number of GPUs

在训练MXNet时,如果批处理量很大(比如说128),而GPU的数量很小(比如说2),则每个GPU每次迭代只能处理几个样本(比如说16)。 默认情况下,此配置的最大批处理大小为16 * 2 = 32。

从理论上讲,我们可以在更新权重之前运行4次迭代,以使有效批大小为128。使用MXNet可以做到这一点吗?

使用更简化的方法(在内存方面)编辑此答案。 您必须配置每个参数以累积梯度,运行4个正向传递,反向运行,然后手动将梯度归零。

根据https://discuss.mxnet.io/t/aggregate-gradients-manually-over-n-batches/504/2

“使用Gluon非常简单。您需要在网络Parameter实例中将grad_req设置为'add',并在每个Trainer.step()之后使用zero_grad()将梯度手动设置为零(请参见此处 )。 grad_req为“添加”:

for p in net.collect_params().values():
    p.grad_req = 'add'

“并且类似地,在调用Trainer.step()之后,对每个参数调用zero_grad()。记住要相应地修改trainer.step()的batch_size参数。”

Vishaal

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM