CNTK:Python中的数据并行训练,不使用1位SGD

时间:2017-01-05 19:31:45

标签: python cntk

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

根据文字:"数据并行SGD可以使用或不使用1bit-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的并行化优势。你能确认是这种情况吗?

谢谢

1 个答案:

答案 0 :(得分:1)

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

您应该收到警告,根据您的网络,将num_quantization_bits设置为32可能会降低您的培训速度。

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