Как выполнить накопление градиента с распределенным обучением в TF 2.0 / 1.14.0-eager и настраиваемым циклом обучения (градиентная лента)?

Предыстория: у меня есть модель, и я пытаюсь перенести ее на TF 2.0, чтобы получить приятное нетерпеливое исполнение, но я просто не могу понять, как выполнять распределенное обучение (4 GPU) И одновременно выполнять накопление градиента. .

Проблема:

  • Мне нужно иметь возможность использовать настраиваемый цикл обучения с градиентной лентой, потому что у меня сложная многомодельная проблема (несколько моделей ввода и модели вывода обучаются вместе), мне не нужны градиенты 2-го порядка

  • С размером моей модели (средний, что-то вроде трансформатора среднего размера) я не могу получить размер партии больше ~ 32 с 4 графическими процессорами, что является самым большим экземпляром, который я могу получить, к сожалению, это действительно старые 11 ГБ K80, потому что Azure, похоже, думает, что графические процессоры, которые Google даже не раздает бесплатно, уже достаточно хороши ...........

  • У меня есть набор данных, для которого требуются очень большие пакеты, потому что я должен учитывать очень большой дисбаланс (я также использую взвешивание и фокусные потери c), поэтому мне нужно выполнить 4-8 шагов накопления градиента, чтобы сгладить градиенты.

Я прочитал руководство по распределенным циклам обучения и сумел его реализовать: https://www.tensorflow.org/beta/tutorials/distribute/training_loops

Я также реализовал накопление градиента в TF 2.0 для пользовательских циклов обучения и tf.keras: https://colab.research.google.com/drive/1yaeRMAwhGkm1voaPp7EtFpSLF33EKhTc


person Göran Sandström    schedule 27.06.2019    source источник
comment
Вы решили эту проблему?   -  person Stefan Falk    schedule 10.11.2020
comment
Если бы у вас были действительно небольшие партии, подошла бы ваша модель? С очень большими дисбалансами можно справиться, применяя обратное распространение только к худшим образцам. Об этом есть очень хорошая статья, которую я освещаю в этом видео youtube.com/watch?v= pglJizzJsD4, который одновременно обработает ваш дисбаланс и размер пакета.   -  person Anton Codes    schedule 20.11.2020
comment
Вот как Nvidia делает это для BERT, если это поможет: github.com/NVIDIA/DeepLearningExamples/blob/   -  person y.selivonchyk    schedule 18.12.2020
comment
Вы читали https://www.tensorflow.org/tutorials/distribute/custom_training? ?   -  person DachuanZhao    schedule 11.03.2021


Ответы (1)


Прочтите https://www.tensorflow.org/tutorials/distribute/custom_training и обновите ваш вопрос, если у вас остались вопросы.

person DachuanZhao    schedule 11.03.2021
comment
Это не похоже на ответ на вопрос. Посетите тур и как ответить, чтобы узнать, как работают ответы на Stack Overflow. Также см. Ваш ответ находится в другом замке: когда ответ не является ответом? - person Scratte; 11.03.2021