我在这里查看文档:
https://github.com/Microsoft/CNTK/wiki/Multiple-GPUs-and-machines

根据文本:“可以使用带有或不带有1bit-SGD的数据并行SGD”。

但是,在此文档之后,只有一个使用1位SGD的数据并行相关部分:“使用1位SGD的数据并行训练”,其代码如下:

distributed_learner = distributed.data_parallel_distributed_learner(
    learner = learner,
    num_quantization_bits = 1,
    distributed_after = distributed_after)  # warm start: don't use 1-bit SGD for first epoch


如果我选择不使用1位SGD(跳过上述调用中的相关参数),我认为我仍然应该获得data_parallel_distributed_learner的并行化优势。您能确认是这种情况吗?

谢谢

最佳答案

您可以将num_quantization_bits设置为32,这将是直接同步并行学习。

请注意,根据您的网络,将num_quantization_bits设置为32可能会减慢您的训练速度。

如果您的CNTK版本支持NCCL,那么使用32位不会太慢。 1位SGD本身具有计算成本(用于量化),您应该注意。

关于python - CNTK:不使用1位SGD的Python中的数据并行训练,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41493199/

10-12 21:54