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 本身具有您应该注意的计算成本(用于量化)。
我正在查看这里的文档: 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 本身具有您应该注意的计算成本(用于量化)。