我想同时使用并行模型和并行数据,并从官方网站上阅读了许多文档和教程。我面临的一个令人困惑的问题是如何在每个过程中收集各种仪表值?
Question1:在official tutorial中,他们仅记录每个过程中的仪表值。但是在我的代码中,我在每个过程中打印损失值,它们是不同的。因此,我认为其他仪表的价值也有所不同。该教程是否错误?我认为,正确的方法应该首先同步损耗,acc和其他仪表,然后所有进程保持相同的值,之后我只需要在一个进程中打印仪表信息。] >
Question2
:在official tutorial中,他们说“ DistributedDataParallel模块还处理世界范围内的梯度平均,因此我们不必在训练步骤中明确地对梯度进行平均”。但是,由于问题1,API是否确实按照本教程所说的那样工作?因为每个进程都有不同的损耗值,尽管它们从相同的初始权重开始,所以每个进程中的模型权重将是在不同方向上进行了优化?我想同时使用并行模型和并行数据,并从官方网站上阅读了许多文档和教程。我面临的一个令人困惑的问题是如何收集各种仪表值...
分布式采样器为每个过程提供了不同的训练数据子集,因此在每个过程中评估的损失将有所不同。如果仅在不使用分布式采样器的情况下计算每个流程中测试集的损失,则将看到所有流程报告的编号相同。