CNTK: параллельное обучение данных в Python без использования 1-битного SGD

Я просматриваю документацию здесь: https://github.com/Microsoft/CNTK/wiki/Multiple-GPUs-and-machines

Согласно тексту: «Data-Parallel 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. Не могли бы вы подтвердить, что это так?

Спасибо


person malex    schedule 05.01.2017    source источник


Ответы (1)


Вы можете установить num_quantization_bits на 32, и это будет прямое синхронное параллельное обучение.

Вы должны быть предупреждены, что в зависимости от вашей сети установка num_quantization_bits на 32 может замедлить ваше обучение.

Если ваша сборка CNTK поддерживает NCCL, то использование 32-битной версии не сильно замедлит работу. Сам 1-битный SGD требует вычислительных затрат (для квантования), о которых вам следует знать.

person ChaZ    schedule 05.01.2017