Нейронные сети и оборудование

Всем привет, хотел поднять такую тему, сейчас на работе стартует тема, связанная с нейронными сетями. Я программист С/C++, начал гуглить, по факту в интернете все пишут что нужно юзать связку С++, CUDA и cuDNN от Nvidia. Иными словами писать с использованием видеокарт, только сами знаете цены на видеокарты, вот я и хотел узнать ваше мнение коллеги, что лучше использовать в программировании(языки, библиотеки) и какое оборудование нужно, просить все же у руководства видеокарты?

P.S. Всем заранее спасибо, мнения принимаются все!))

Смотря что делать надо. Видеокарты для ускорения используют, но конечно простые проекты можно и без них. Или например сервер с видеокартами арендовать.

Это в магазинах для домашних юзеров, а оптом, В2В и т.д. вроде можно и норм цены найти. Ну и проф. видеокарты типа Quadro вроде это не затронуло.

Да по сути аналитика входящих данных, там коды ошибок, данные с устройств и т.д. По сути конечно ничего особенного, по крайней мере пока, просто надо что бы на выходе была стабильная работа, вот и думаю если просто на процессорах нейронную сеть крутить, нормально будет? А то в интернете прям ужасы пишут, чуть ли не десятки раз видеокарты быстрее, а процессоры тормозят.

А, есть необходимость в видеокартах или сервера на сервере типа XEON будет достаточно?

Ну это от проекта зависит.

Вам ж в любом случае его делать надо, так что в процессе и узнаете хватит или нет :slight_smile:

Да это понятно, а сложно если что потом адаптировать для графических ускорителей проект или не особо, просто скажем так, пока деньги компании сберегу, а потом если что и переехать?

Если использовать библиотеки типа Tensorflow, то включить использование GPU по идее должно быть не сложно, с минимальными изменениями кода или вообще без них. Если самому что-то более низкоуровневое писать, то наверно сложнее.

1 лайк

Нейронные сети нынче в тренде.
Сложность НС в их настройке наладки. Один пуск длится минуты десятки минут. Разумеется тут кто угодно затребует ускоритель. Более того после оптимизации НС её обучают на полном датасета. И тут уже арендуют сервер с видеокартой либо нейросетевым ускорителем. На 1-2 месяца.

А вот оптимизацию структуры НС как правило делают на выжимке из датасета.
Объем подбирают так, что бы было комфортно программисту. Тут большинство предпочитают видеокарты так как они в 10 раз быстрее чем ЦП.

Cuda работает на Nvidia и это дефакто стандарт для GpGPU. Ati с OpenCL где то на задворках истории.

На CUDA никто не пишет. Все используют фреймворки.
Tensorflow это низкоуровневая библиотека её тоже не используют. А используют обертки keras.

Так как тут обертки на обёртке то переключение с ЦП на ГПУ происходит в лёгкую.

По мимо фремворков народ используют предобученные НС deepPavlov, Bart, GPT-3 к примеру от сбера.

Тут ещё популярен питон вместо си++. И библиотеки типа PyTorch.

2 лайка

Нужен сервер с видеокартой. Xeon это многоядерный процессор с низкой частотой.

Для обучения многоядерность не годится. Тут нужна число дробилка с широким ALU с AVX-512 или GPU где ALU ещё больше.

А вот уже обученные НС можно пускать на многоядерном XEON пуская на разных ядрах разные документы на обработку.

Спасибо большое за развернутый ответ, я так понял, что нужно юзать питон с фрейверком, но такой вопрос, разве это не сказывается на производительности?

Так внутри Питоновских оберток часто С/С++ и есть )

image

Ну и оно ж все равно вызывает CUDA и т.д. для основных вычислений.