我一直想增加批处理大小来提高模型的泛化能力(非常依赖批处理大小)。解决方法是通过多GPU来利用更多的内存。我在我的脚本中使用tensorflow.keras(在Windows 10上使用tensorflow 2.1),并按照配置镜像策略的说明对我的模型进行操作。问题是,我的训练脚本在没有镜像策略代码的情况下可以完美运行,但是使用了镜像策略后,我会遇到关于NCCL的错误。这似乎是与以下相同的问题:
https://github.com/tensorflow/tensorflow/issues/21470
不幸的是,那个链接中讨论的解决方案:
cross_tower_ops = tf.contrib.distribute.AllReduceCrossDeviceOps(
'hierarchical_copy', num_packs=num_gpus))
strategy = tf.contrib.distribute.MirroredStrategy(cross_tower_ops=cross_tower_ops)
因为tf的'contrib'部分似乎已被删除,所以它与tf 2.1不兼容。 有人知道NCCL在Windows上的替代解决方案,或者用于替换消失的'tf contrib'部分的内容吗?