2

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

根据文本:“Data-Parallel SGD 可以使用或不使用 1bit-SGD。”

但是,在本文档之后,只有一个使用 1-bit SGD 的数据并行相关部分:“Data-Parallel Training with 1-bit 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-bit SGD(跳过上面调用中的相关参数),我认为我仍然应该获得 data_parallel_distributed_learner 的并行化好处。你能确认是这种情况吗?

谢谢

4

1 回答 1

1

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

应该警告您,根据您的网络,设置num_quantization_bits为 32 可能会减慢您的训练速度。

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

于 2017-01-05T21:45:13.323 回答