2016-06-10 4 views
2

В this TensorFlow tutorial вы можете использовать N количество графических процессоров для распределения N мини-пакетов (каждый из которых содержит M обучающих образцов) для каждого графического процессора и вычисления градиентов одновременно.В чем преимущество тренировки Multi-GPU в TensorFlow?

Затем вы усредняете градиенты, собранные с N графических процессоров, и обновляете параметры модели.

Но это имеет тот же эффект, что и использование одного графического процессора для расчета градиентов выборок обучения N * M, а затем обновления параметров.

Таким образом, единственное преимущество, которое мне кажется, заключается в том, что вы можете использовать мини-пакет большего размера за такое же количество времени.

Но размер мини-партии большего размера обязательно лучше?

Я думал, что вы не должны использовать мини-пакет большого размера, чтобы сделать оптимизацию более устойчивой к точкам седла.

Если мини-пакет большего размера действительно не лучше, почему бы вам не заботиться об обучении с несколькими GPU или даже о многоуровневом обучении?

(Учебник выше, является синхронным обучением. Если это асинхронная обучение, то я могу увидеть достоинство, так как параметры будут обновляться без усреднения градиентов, рассчитанных по каждому GPU)

+0

Большие мини-партии не нужны лучше, но не меньшие мини-партии. Оптимальный выбор размера партии зависит от различных факторов. – Aenimated1

+0

Предположим, вы ограничены до 1000 образцов на графический процессор из-за размера VRAM. И предположим, что оптимальный размер мини-партии составляет 2000 экземпляров. Затем в этой синхронной настройке multi-gpu не должно быть преимуществ при использовании более 2 графических процессоров. Правильно? – mp2893

+0

Я бы подумал, что, наоборот, теоретически (но не практически) можно извлечь выгоду из 2000 графических процессоров, каждый из которых вычисляет градиенты одного примера. Реалистично, для начала использования графических процессоров используется значительный объем параллелизма, но, тем не менее, я ожидал бы повышения производительности путем распределения вычислений между (например) 4 графическими процессорами (каждый из которых отвечает за вычисление градиентов по 500 выборок на каждую партию). – Aenimated1

ответ

2

Основной цель для мульти -GPU-обучение позволяет вам тренироваться с большим набором данных за более короткое время. Это не обязательно лучше с более крупными мини-партиями, но по крайней мере вы можете закончить обучение в более подходящее время.

Точнее, эти мини-партии N не проходят обучение синхронно, если вы используете алгоритм асинхронного SGD. Поскольку алгоритм изменяется при использовании мульти-графического процессора, он не равен использованию мини-пакета размера MxN на одном GPU с алгоритмом SGD.

Если вы используете тренировку с несколькими GPU, преимущество в основном сводится к сокращению времени. Вы можете использовать мини-матч M/N для поддержания эффективного размера мини-партии, и, конечно же, масштабируемость ограничена, так как меньший размер мини-партии приводит к большему количеству накладных расходов. Обмен данными и синхронизация на большом количестве вычислительных узлов также являются катастрофами.

Чтобы решить проблему масштабируемости, люди переходят на A-SGD при одновременном использовании большого количества графических процессоров. Поэтому, вероятно, вы не увидите кого-то, кто использует синхронное обучение с несколькими GPU на сотнях (или даже десятков) графических процессоров.

+0

Итак, в крайнем случае, когда у вас есть бесконечное количество графических процессоров, вы можете разбить весь образец обучения на мини-партии и распределить их на бесконечные графические процессоры. Затем усреднение градиентов, рассчитанных бесконечными графическими процессорами, и обновление параметров будет точно таким же, как «пакетное обучение». В этом нет ничего стохастического.Но это нормально, потому что мы все еще можем тренировать модель в подходящее время, даже если у нас очень большой образец обучения. Правильно ли я понимаю? – mp2893

+0

Я понимаю, что асинхронная тренировка с несколькими gpu - это совсем другая история. В этом посте я уделяю особое внимание синхронному обучению с несколькими gpu. – mp2893

+0

@ mp2893, хорошо, для синхронизации обучения с несколькими gpu, преимущество - сокращение времени. Но вы можете использовать мини-матч M/N для поддержания эффективного размера мини-партии, и, конечно же, масштабируемость ограничена. – kangshiyin