Параллелизм данных для РНН в тензорном потоке
Недавно я использовал тензор потока для разработки системы NMT. Я пытался обучить эту систему на множественном GPU, используя метод параллелизма данных, чтобы ускорить ее. Я следую стандартному параллелизму данных, широко используемому в тензорном потоке. Например, если мы хотим запустить его на компьютере с 8 gpus. Сначала мы создаем большую партию, которая в 8 раз превышает размер партии, используемой в одном графическом процессоре. Затем мы разделяем эту большую партию на 8 мини-партий. Мы отдельно обучаем их разным gpus. В конце мы собираем градиенты для обновления параметров. Но я обнаружил, что когда я использовал dynamic_rnn, среднее время, затрачиваемое на одну итерацию в 8 графических процессорах, вдвое больше, чем на одну итерацию, обученную в одном графическом процессоре. Я удостоверяюсь, что размер партии для каждого графического процессора одинаков. У кого есть лучший способ ускорить обучение RNN в тензорном потоке?