В чем преимущество обучения с использованием нескольких графических процессоров в TensorFlow?

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

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

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

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

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

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

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

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


person mp2893    schedule 10.06.2016    source источник
comment
Лучше не нужны большие мини-партии, но и меньшие мини-партии тоже не нужны. Оптимальный выбор размера партии во многом зависит от различных факторов.   -  person Aenimated1    schedule 10.06.2016
comment
Допустим, вы ограничены 1000 сэмплами на графический процессор из-за размера видеопамяти. Предположим, оптимальный размер мини-партии - 2000. Тогда в этой синхронной настройке с несколькими графическими процессорами НЕ должно быть никаких преимуществ в использовании более двух графических процессоров. Верно?   -  person mp2893    schedule 10.06.2016
comment
Я бы подумал, что наоборот, теоретически (но не практически) вы могли бы получить выгоду от 2000 графических процессоров, каждый из которых вычисляет градиенты одного примера. На самом деле графические процессоры используют значительный объем параллелизма для начала, но, тем не менее, я ожидал бы увидеть улучшение производительности за счет распределения вычислений между (например) 4 графическими процессорами (каждый отвечает за вычисление градиентов по 500 сэмплов на пакет).   -  person Aenimated1    schedule 10.06.2016
comment
Это верный момент. Запуск 500 обучающих образцов будет значительно быстрее, чем запуск 1000 образцов.   -  person mp2893    schedule 10.06.2016
comment
Зачем усреднять градиенты?   -  person DunkOnly    schedule 25.12.2018


Ответы (2)


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

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

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

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

person kangshiyin    schedule 10.06.2016
comment
Итак, в крайнем случае, когда у вас бесконечное количество графических процессоров, вы можете разбить всю обучающую выборку на мини-пакеты и распределить их по бесконечному количеству графических процессоров. Тогда усреднение градиентов, вычисленных бесконечными графическими процессорами, и обновление параметров будет точно таким же, как пакетное обучение. В этом нет ничего стохастического. Но это нормально, потому что мы все еще можем обучить модель за приемлемое время, даже если у нас очень большая обучающая выборка. Я правильно понимаю? - person mp2893; 10.06.2016
comment
Я понимаю, что асинхронное обучение с несколькими графическими процессорами - это совсем другая история. В этом посте я сосредоточусь на синхронном обучении с несколькими графическими процессорами. - person mp2893; 10.06.2016
comment
@ mp2893, хорошо, для обучения синхронизации с несколькими графическими процессорами выгода заключается в сокращении времени. Но вы можете использовать мини-соответствие размера M / N, чтобы поддерживать эффективный размер мини-пакета, и, конечно, масштабируемость ограничена. - person kangshiyin; 10.06.2016
comment
Да, в этом есть смысл. Думаю, теперь я лучше понимаю эту проблему. Спасибо @ Aenimated1 и @Eric !! - person mp2893; 10.06.2016
comment
@kangshiyin, я был бы признателен, если бы вы могли взглянуть на это, и спасибо за ваше время. stackoverflow.com/questions/45643375/ - person Desta Haileselassie Hagos; 13.08.2017
comment
Зачем усреднять градиенты? - person DunkOnly; 25.12.2018
comment
@ 不是 phd 的 phd: см. Этот ответ datascience.stackexchange.com/questions/33489/ - person totjammykd; 26.11.2019
comment
@kangshiyin можно ли вообще выполнять асинхронное обучение с несколькими GPU, не используя CPU? Насколько я понимаю, это никому не удавалось. - person John Jiang; 21.06.2020

Больше графического процессора означает больше данных в пакете. И градиенты пакетных данных усредняются для обратного распространения.

Если скорость обучения пакета фиксирована, то скорость обучения данных меньше.

Если скорость обучения данных фиксирована, то скорость обучения пакета больше.

https://github.com/guotong1988/BERT-GPU

person DunkOnly    schedule 18.02.2021