繁体   English   中英

如何在 Pytorch1.1 和 DistributedDataParallel() 中计算米?

[英]How to calculate meters in Pytorch1.1 & DistributedDataParallel()?

我想同时使用模型并行和数据并行,并从官网阅读了许多文档和教程。 我面临的一个令人困惑的问题是如何收集每个进程中的各种仪表值?

问题1 :在官方教程中,他们只是记录每个进程中的仪表值。 但是在我的代码中,我在每个过程中打印损失值,它们是不同的。 所以,我觉得其他仪表的数值也是不一样的。 那个教程错了吗? 在我看来,我认为正确的方法应该是先同步loss、acc等仪表,然后所有进程保持相同的值,然后我只需要在一个进程中打印仪表信息。

问题 2 :在官方教程中,他们说“DistributedDataParallel 模块还处理全球梯度的平均,因此我们不必在训练步骤中明确平均梯度”。 但是,由于问题 1, API 是否真的像教程所说的那样工作? 因为每个进程都有不同的损失值,虽然它们从相同的init权重开始,但每个进程中的模型权会朝着不同的方向优化吗?

分布式采样器给每个进程一个不同的训练数据子集,所以每个进程评估的损失都会不同。 如果在没有分布式采样器的情况下只计算每个进程中测试集的损失,您将看到所有进程报告相同的数字。

暂无
暂无

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

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