Должен ли я использовать графический процессор или процессор для вывода?

13

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


Добавление более подробной информации из комментариев ниже.

Я новичок в этом, поэтому руководство ценится.

  • Память : графический процессор K80

  • Рамки : Cuda и CuDNN

  • Размер данных на рабочие нагрузки : 20G

  • Вычислительные узлы для потребления : по одному на работу, хотя хотелось бы рассмотреть вариант масштабирования

  • Стоимость : я могу позволить себе вариант графического процессора, если причины имеют смысл

  • Развертывание : запуск на собственных серверах с открытым исходным кодом, а не в облаке.

Сейчас я работаю на процессоре просто потому, что приложение работает нормально. Но вне этой причины я не уверен, почему кто-то даже подумал бы о GPU.

Дэн
источник
Чтобы дать совет по сравнению между двумя потенциальными подходами, другим будет полезно узнать некоторые детали вашей задачи. Например, каков размер ваших данных, каков объем памяти вашего графического процессора, количество вычислительных узлов, которые вы планируете использовать, и, возможно, также какую платформу сокращения карт вы имеете в виду.
Динамическая Звездная пыль
@DynamicStardust ... и стоимость. Дешевые узлы CPU EC2 или дорогие узлы ECW GPU? Это слишком расплывчатый вопрос.
Spacedman

Ответы:

8

@Dan @SmallChess, я не совсем согласен. Это правда, что для обучения большая часть параллализации может быть использована графическими процессорами, что приводит к гораздо более быстрой тренировке. Для Вывода эта параллализация может быть намного меньше, однако CNN все равно получит преимущество от этого, что приведет к более быстрому выводу. Теперь вам просто нужно спросить себя: важен ли быстрый вывод? Нужны ли мне дополнительные зависимости (хороший графический процессор, правильные файлы и т. Д.)?

Если скорость не проблема, перейдите на процессор. Однако обратите внимание, что по моему опыту графические процессоры могут сделать это на порядок быстрее.

Лорен Миус
источник
Интересный вопрос, который вы затронули, почему CNN выиграет от параллельной обработки во время вывода?
Дэн
1
При обучении параллельные вычисления могут быть очевидны: у вас есть несколько входов, каждый из которых должен быть направлен на канал, полностью независим друг от друга. Для свертки ядро ​​умножается на несколько входных «патчей». Это может быть сделано параллельно. Вот что делает CNN таким мощным: им не только нужно меньше параметров для обучения, но и параллелизм, что делает GPU таким мощным. Я не знаю, над чем вы работаете, но я работаю над сегментацией (пиксельная классификация) изображений, и при использовании графических процессоров для вывода я получаю огромное улучшение скорости (> x10).
Лорен Миус
@ LaurensMeeus Я также новичок в этом спектре и занимаюсь анализом затрат на облачные виртуальные машины. Буду ли я все еще использовать GPU для обучения, если я только тренирую анализ текста, а не изображения?
Squ1rr3lz
2
@ Squ1rr3lz Я на 95% должен. Каждая форма параллельных вычислений должна получить преимущество над графическими процессорами. Я не эксперт в этой области, но, учитывая, что анализ текста также осуществляется с помощью сверточных слоев (будь то 1D вместо 2D), это уже одна из причин, почему он может / должен быть быстрее. Если возможно, просто попробуйте сами, какое влияние оказывает включение / отключение графического процессора.
Лорен Мееус
6

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

Однако, как вы сказали, приложение работает нормально на CPU. Если вы дойдете до точки, где скорость вывода является узким местом в приложении, обновление до GPU облегчит что узкое место.

mpotma
источник
Полностью согласен. До сих пор не понимаю, почему пост процессора занимает первое место.
Лорен Миус
1
GeForce GTX Titan X обеспечивает производительность в 5,3-6,7 раз выше, чем 16-ядерный процессор Intel Xeon E5 - это намного ниже, чем скорость, достигнутая во время обучения - из собственного блога NVidia: devblogs.nvidia.com/…
seanhalle
4

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

Давайте возьмем в качестве примера новый iPhone X от Apple. Новый iPhone X имеет усовершенствованный алгоритм машинного обучения для распознавания лиц. Сотрудники Apple, должны иметь кластер машин для подготовки и проверки. Но ваш iPhone X не нуждается в графическом процессоре только для запуска модели.

Привет, мир
источник
Спасибо за это объяснение. Тогда я не понимаю, почему Nvidia продвигает использование графических процессоров, поскольку это лучшее решение для логического вывода, если процессор может делать это нормально. Кроме того, почему Google подталкивает TPU для вывода , если они делают все это с процессором? Это как-то связано с параллельными вычислениями?
Dan
3
@SmallChess Разве в IPhone X не было какого-то продвинутого процессора, похожего на TPU, просто для умозаключения? extremetech.com/mobile/...
LAURENS MEEÛS
3
@SmallChess Но почему этого не может быть? Может быть , я просто не понимаю. Не вы еще получите некоторое улучшение в скорости?
Лоренса Meeus
2
Честно говоря, NVidia имеет фантастический отдел маркетинга, и это в их интересах , чтобы содействовать с помощью графических процессоров NVIDIA для вывода. Это в их интересах, а не ваша.
seanhalle
1
Из блога NVidia: «258 против 242 изображений в секунду» для процессора NVIDIA Tegra X1 против i7 6700K при выполнении логического вывода: devblogs.nvidia.com/…
seanhalle