Чи слід використовувати GPU або CPU для висновку?


13

Я керую нейронною мережею з глибоким навчанням, яку пройшов навчання GPU. Тепер я хочу розгорнути це для декількох хостів для висновку. Питання полягає в тому, які умови вирішують, чи слід використовувати GPU або CPU для висновку?


Додайте більше деталей із коментарів нижче.

Я новачок у цьому, тому цінуються вказівки.

  • Пам'ять : GPU - це K80

  • Framework : Cuda і cuDNN

  • Розмір даних на навантаження : 20G

  • Обчислювальні вузли для споживання : по одному на роботу, хоча хотіли б розглянути варіант масштабу

  • Вартість : Я можу дозволити собі варіант GPU, якщо причини мають сенс

  • Розгортання : працює на власних розміщених серверах голого металу, а не в хмарі.

Зараз я працюю на процесорі просто тому, що програма працює добре. Але поза цією причиною я не впевнений, чому б навіть розглянути GPU.


Щоб порадити щодо порівняння двох потенційних підходів, іншим буде корисно знати деякі деталі вашого завдання. Наприклад, який розмір ваших даних, яка ємність пам’яті вашого графічного процесора, кількість обчислювальних вузлів, які ви плануєте використовувати, і, можливо, також, які рамки для зменшення карт ви маєте на увазі.
Динамічний зоряний

@DynamicStardust ... і вартість. Дешеві вузли процесора EC2 або дорогі вузли графічного процесора ECW? Це занадто розпливчасте питання.
Spacedman

Відповіді:


8

@Dan @SmallChess, я не повністю згоден. Це правда, що для тренувань багато паралелізації можуть використовуватися GPU, що призводить до набагато швидшого навчання. Для висновку ця паралалізація може бути набагато меншою, однак CNN все одно отримає перевагу від цього, що призведе до більш швидкого висновку. Тепер ви просто повинні запитати себе: чи важливіший швидший висновок? Чи хочу я отримати додаткові залежності (хороший графічний процесор, встановлені правильні файли тощо)?

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


Цікавий момент, який ви піднімаєте, чому CNN отримає користь від паралельної обробки під час висновку?
Ден

1
Навчаючись, паралельні обчислення можуть бути очевидними: у вас є кілька входів, кожен з яких повинен бути переданий, повністю незалежний один від одного. Для згортання ядро ​​мультиплицируется на декілька вхідних «латок». Це теж можна зробити паралельно. Ось що робить CNN настільки потужним: їм не тільки потрібно менше параметрів для тренування, але й більш паралельним, а отже, зробити GPU настільки потужним. Я не знаю, над чим ви працюєте, але я працюю над сегментацією (класифікацією пікселів) зображень і при використанні GPU для висновку я отримую величезне підвищення швидкості (> x10).
Laurens Meeus

@LaurensMeeus Я також новачок у цьому спектрі і роблю аналіз витрат на хмарні віртуальні машини. Чи все-таки я буду використовувати GPU для навчання, якби тільки аналізував текст тексту, а не зображення?
Squ1rr3lz

2
@ Squ1rr3lz Я на 95%, ти повинен. Кожна форма паралельних обчислень повинна мати перевагу на GPU. Я не фахівець у цій галузі, але враховуючи, що аналіз тексту виконується також із звивистими шарами (будь то 1D замість 2D), це вже одна з причин того, що він міг би / повинен бути швидшим. Якщо можливо, просто спробуйте, який вплив має включення / відключення GPU.
Laurens Meeus

6

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

Однак, як ви вже говорили, програма працює нормально на процесорі. Якщо ви дістанетесь до точки, коли швидкість виведення є вузьким місцем у програмі, оновлення до GPU зменшить це вузьке місце.


Повністю згоден. І все-таки не зрозумійте, чому розміщено повідомлення про процесор.
Laurens Meeus

1
GeForce GTX Titan X забезпечує в 5,3 і 6,7 рази більшу продуктивність, ніж 16-ядерний процесор Intel Xeon E5 - це набагато нижче, ніж швидкість, досягнута під час тренінгу - з власного блогу NVidia: devblogs.nvidia.com/…
seanhalle

4

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

Візьмемо для прикладу новий iPhone X від Apple. Новий iPhone X має вдосконалений алгоритм машинного навчання факсичного виявлення. Співробітники Apple повинні мати скупчення машин для навчання та валідації. Але вашому iPhone X не потрібен графічний процесор для просто запущеної моделі.


Дякую за це пояснення. Я тоді не розумію, чому Nvidia сприяє використанню графічних процесорів, як найкраще рішення для висновку, якщо ЦП може це зробити добре. Крім того, чому Google також підштовхує TPU до висновку, якщо вони все це роблять з процесором? Чи має це щось спільне з паралельними обчисленнями?
Dan

3
@SmallChess чи не в IPhone X був якийсь просунутий процесор, подібний до TPU, виключно для висновку? extremetech.com/mobile/…
Laurens Meeus

3
@SmallChess Але чому це не може бути? Можливо, я просто не повністю розумію. Ви все ще не отримаєте певного покращення швидкості?
Laurens Meeus

2
Чесно кажучи, NVidia має фантастичний відділ маркетингу, і їм в інтересах сприяти використанню графічних процесорів NVidia для висновку. Це в їх інтересах, а не у ваших інтересах.
seanhalle

1
З блогу NVidia: "258 проти 242 зображень / секунду" для процесора NVIDIA Tegra X1 проти i7 6700K при виконанні висновку: devblogs.nvidia.com/…
seanhalle
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.