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

CNTK: Data parallel training in Python without using 1-bit SGD

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

根据正文:"Data-Parallel SGD may be used with or without 1bit-SGD."

然而,在本文档中只有一个使用 1 位 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 位 SGD(跳过上面调用中的相关参数),我认为我仍然可以获得 data_parallel_distributed_learner 的并行化优势。你能证实是这样吗?

谢谢

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

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

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