tensorflow Windows 10上NCCL替代方案

yqyhoc1h  于 2023-10-23  发布在  Windows
关注(0)|答案(1)|浏览(277)

所以我在windows 10上,现在使用多个GPU来运行一些机器学习模型的训练,这个模型是关于GAN算法的,你可以通过here检查完整的代码:
在这里,我需要减少不同GPU设备的总和,如下所示:

if len(devices) > 1:
            with tf.name_scope('SumAcrossGPUs'), tf.device(None):
                for var_idx, grad_shape in enumerate(self._grad_shapes):
                    g = [dev_grads[dev][var_idx][0] for dev in devices]
                    if np.prod(grad_shape):  # nccl does not support zero-sized tensors
                        g = tf.contrib.nccl.all_sum(g)
                    for dev, gg in zip(devices, g):
                        dev_grads[dev][var_idx] = (gg, dev_grads[dev][var_idx][1])

现在在这一部分我得到一个关于NCCL的错误,我注意到在Windows上不支持它需要Linux,因此我被困在这里...这里的“解决方案”是什么??...我如何在Windows上使用NCCL或替代上面的代码...有什么简单的方法可以做到这一点?...提前感谢。
注意:我已经检查了一些堆栈溢出问题。但是,没有答案存在,可以解决我的问题。

enxuqcxy

enxuqcxy1#

尝试使用gloo:https://pytorch.org/docs/stable/distributed.html
并在代码的开头添加以下内容:

import os 
import torch
os.environ['PL_TORCH_DISTRIBUTED_BACKEND'] = 'gloo'
os.environ['NCCL_DEBUG'] = 'INFO'
torch.distributed.init_process_group(backend="gloo")

希望它有帮助(我这样做是为了在我的Windows电脑上制作工作美洲驼)

相关问题