В чем преимущество сохранения размера партии равным 2?

15

При обучении моделей машинному обучению, почему иногда выгодно поддерживать размер пакета в степени 2? Я подумал, что было бы лучше использовать размер, который больше всего подходит для вашей памяти GPU / RAM.

Этот ответ утверждает, что для некоторых пакетов степень 2 лучше, чем размер пакета. Может ли кто-нибудь предоставить подробное объяснение / ссылку на подробное объяснение этого? Верно ли это для всех алгоритмов оптимизации (градиентный спуск, обратное распространение и т. Д.) Или только для некоторых из них?

Джеймс Бонд
источник

Ответы:

19

Это проблема выравнивания виртуальных процессоров (VP) с физическими процессорами (PP) графического процессора. Поскольку число PP часто является степенью 2, использование числа VP, отличного от степени 2, приводит к снижению производительности.
Вы можете увидеть отображение ПО на ПП в виде кучи кусочков размером ПП .
Скажем, у вас есть 16 пп.
Вы можете нанести на них 16 ПО: 1 ПО сопоставлено с 1 ПО.
Вы можете нанести на них 32 ПО: 2 среза по 16 ПО, 1 ПО будет отвечать за 2 ПО.
И т. Д. Во время исполнения каждый ПП будет выполнять задание 1-го ПП, за которое он отвечает, затем задание 2-го
ПП и т. Д. Если вы используете 17 ПП, каждый ПП будет выполнять задание своего 1-го ПП, тогда 1 ПП будет выполнить задание 17-го Иостальные ничего не сделают (уточнено ниже).
Это связано с парадигмой SIMD (называемой вектором в 70-х годах), используемой графическими процессорами. Это часто называют параллелизмом данных: все PP делают одно и то же одновременно, но с разными данными. Смотрите https://en.wikipedia.org/wiki/SIMD .
Точнее, в примере с 17 VP, после выполнения работы 1-го среза (всеми PP, выполняющими работу 1-го VP), все PP будут выполнять одну и ту же работу (2nd VP), но только у одного есть несколько данные для работы .
Ничего общего с обучением. Это всего лишь программирование.

jcm69
источник
Было бы точнее сказать, что размеры партии должны быть кратны числу ПП? То есть в вашем примере мы можем отобразить 16x3 = 48 VP на 16 PP?
1
Да. хорошо ... Если вы делаете отображение VP -> PP, вы уверены, что вы на 100% правы. Если вы используете библиотеку, и попросите 80 VP. Я не уверен. Я не говорю, что ты не прав. Если отношение является степенью 2, вы можете использовать очень классические и простые оптимизации. Подумайте о доступе к памяти. Если число соседних с VP виртуальных компьютеров не является степенью 2, скажем, 5, библиотека не сможет так же легко использовать классические O (log_2 (n)) доступы к памяти соседей.
jcm69
@ jcm69 Вы можете объяснить или дать ссылку для log_2 (n) времени доступа к памяти VP
Араян Сингх
Это всего лишь общее соображение об обработке объектов в информатике. Когда вы уверены, что объекты подчиняются степени 2 правил, ими можно легко и безопасно управлять с помощью бинарных деревьев поиска, бинарных сдвигов и т. Д. Если вы не уверены, то, возможно, вам придется выполнить некоторые дополнительные тесты и более сложный алгоритм. Во всяком случае, это немного далеко от первоначального вопроса;)
jcm69