Как рассчитать счетчики в Pytorch1.1 и DistributedDataParallel ()? - PullRequest
0 голосов
/ 19 мая 2019

Я хочу использовать параллельную модель и параллельную передачу данных, и прочитал множество документов и учебных пособий с официального сайта. Одна сбивающая с толку проблема, с которой я столкнулся, заключается в том, как собрать все виды значений счетчиков в каждом процессе?

Вопрос1 : В официальном руководстве они просто записывают значение счетчиков в каждом процессе. Но в моем коде я печатаю значения потерь в каждом процессе, они разные. Итак, я думаю, что стоимость других метров также отличается. Является ли это руководство неправильным? По моему мнению, правильный путь должен сначала синхронизировать потери, акк и другие счетчики, затем все процессы сохраняют одинаковые значения, после этого мне просто нужно распечатать информацию счетчиков в одном процессе. .

Вопрос2 : в официальном учебнике говорится, что модуль DistributedDataParallel также обрабатывает усреднение градиентов по всему миру, поэтому нам не нужно явно усреднять градиенты в тренировочный шаг ». Но из-за вопроса 1 действительно ли API работает так, как сказал учебник? Поскольку каждый из процессов имеет различное значение потерь, хотя они начинаются с одинаковых весов инициализации, будет моделировать веса в каждый процесс оптимизировать в разных направлениях?

...