Яка перевага збереження розміру партії потужністю 2?


18

Під час навчання моделей машинного навчання, чому іноді вигідно тримати розмір партії до потужності 2? Я подумав, що найкраще використовувати розмір, який найбільше вписується у вашу пам’ять / оперативну пам’ять.

Ця відповідь стверджує, що для деяких пакетів потужність 2 краще, ніж розмір партії. Чи може хтось надати детальне пояснення / посилання на детальне пояснення цього? Чи справедливо це для всіх алгоритмів оптимізації (спуск градієнта, зворотне розповсюдження тощо) або лише для деяких з них?

Відповіді:


24

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


точніше було б сказати, що розміри партії повинні бути кратними кількості РР? Тобто, у вашому прикладі ми могли б зіставити 16x3 = 48 VP до 16 PP?
захід

Так. ну ... Якщо ви зробите картування VP -> PP, то впевнені, що на 100% правильно. Якщо ви користуєтеся бібліотекою, попросіть 80 ВП. Я не впевнений. Я не кажу, що ви помиляєтесь. Якщо коефіцієнт потужність 2, ви можете використовувати дуже класичні та прості оптимізації. Мислення про доступ до пам'яті. Якщо кількість зверху сусідів VP не має потужності 2, скажімо, 5, lib не зможе так просто використовувати класичний O (log_2 (n)) доступ до пам'яті сусідів.
jcm69

@ jcm69 чи можете ви пояснити або дати посилання для log_2 (n) часу доступу для доступу до пам'яті VP
Arayan Singh

Це лише загальний розгляд щодо поводження з об'єктами в інформатиці. Якщо ви впевнені, що об’єкти дотримуються 2 правил, їх можна легко та безпечно керувати двійковими деревами пошуку, двійковими зрушеннями тощо. Коли ви не впевнені, ну, можливо, доведеться зробити додаткові тести та складніші алго. У всякому разі, це трохи далеко від початкового питання;)
jcm69

1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.