Недавно я попытался внедрить и внедрить глубокое обучающее решение (многослойная LSTM-сеть с дополнительными слоями для статического ввода) на большом сервере ЦП. После многих попыток я добился только 3-кратного ускорения по сравнению с производительностью на моем персональном компьютере. Я слышал, что графические процессоры могут работать лучше. Не могли бы вы объяснить мне, какая именно причина того, почему графические процессоры намного лучше, чем процессоры, когда речь идет о глубоких вычислениях нейронной сети?Что делает графические процессоры настолько эффективными в вычислениях нейронной сети?
ответ
Архитектура графического процессора в основном ориентирована на параллелизм, в то время как процессор - нет. Это означает, что графический процессор может выполнять множество простых операций одновременно; например, графический процессор может обрабатывать цвет каждого пикселя вашего экрана (1920x1080 составляет почти 2 миллиона пикселей) 60 раз в секунду. ЦПУ общего назначения может иметь один ALU на ядро (физическое или логическое), поэтому, возможно, ваш процессор имеет 8/16 ALU. Графический процессор может иметь thousands of them.
Короче говоря: процессор может выполнить несколько сложных операций очень быстро, в то время как графический процессор может выполнять тысячи очень простых операций очень быстро. Кроме того, поскольку GPU обрабатывает много данных одновременно, он обычно поставляется с очень высокоскоростным ОЗУ, чтобы избежать узких мест.
нейронные сети в основном много маленьких «компьютеры», работающих параллельно, так что архитектура GPU лучше подходит для этой задачи
Де-факто алгоритм подготовки глубоких нейронных сетей является обратным распространением алгоритм. Он включает в себя вычисление якобиевых матриц на разных уровнях сети и умножение этих матриц. Матричное умножение шаг - это то, где графические процессоры затмевают процессоры, поскольку задействованные операции структурированы и не нуждаются в сложной технике (например, прогнозирование ветвлений, планирование не по заказу) присутствует в процессорах. В качестве побочного пункта вы можете утверждать, что процессоры стали намного лучше при умножении матриц, используя такие методы, как блокировка кеша, предварительная выборка и сборка вручную.
Помимо обучения, часть вывода для нейронных сетей также использует эффективное умножение матрицы. Это связано с тем, что входы для разных слоев и векторы веса (параметра) обычно хранятся в тензорной форме.
Еще одно преимущество использования графических процессоров - лучшая пропускная способность памяти. GDDR5x приближается к 500 Гбайт/с, по сравнению с ~ 80-100 ГБ/с, предлагаемым новейшим DDR4. Таким образом, вы получаете 5-процентный коэффициент улучшения полосы пропускания, который может использовать накопительные вычисления нейронных сетей.
- 1. Интеллектуальные массивы и графические процессоры
- 2. Какие графические процессоры поддерживают CodeXL?
- 3. Графические процессоры NVIDIA и PhysX
- 4. Игровые графические процессоры и TensorFlow
- 5. Поддерживает ли PyOpenCV графические процессоры?
- 6. Что делает мой сайт настолько медленным?
- 7. Что такое EPOCH в нейронной сети?
- 8. Что такое функция стоимости в нейронной сети?
- 9. что такое «слой» в нейронной сети
- 10. Архитектура нейронной сети
- 11. Что такое глубина сверточной нейронной сети?
- 12. Что делает Rake настолько полезным в Ruby?
- 13. точность в нейронной сети
- 14. Обучение нейронной сети
- 15. Как сделать графические процессоры непрямыми ветвями
- 16. Как графические процессоры обрабатывают произвольный доступ?
- 17. Поддерживает ли Nvidia графические процессоры, подобные структурам?
- 18. Caffe/pyCaffe: установить все графические процессоры
- 19. Поддерживаемые графические процессоры Obtaing на Cocos2d-x
- 20. Как добавить параллелизм в работу нейронной сети?
- 21. Matlab - Обучение нейронной сети
- 22. php help делает более эффективными
- 23. Использование scipy.optimize.minimize в нейронной сети
- 24. Что делает доступ NSArray настолько медленным?
- 25. Обучение нейронной сети
- 26. Что делает эту первую факторизацию настолько эффективной?
- 27. Что делает VxWorks настолько детерминированным и быстрым?
- 28. Выход нейронной сети
- 29. Метод обучения нейронной сети
- 30. Дизайн архитектуры нейронной сети
Глубокое обучение (и AI) в значительной степени зависит от матриц и матричных операций (т. Е. Линейной алгебры). Матричные операторы могут быть сильно распараллелены и могут использовать сотни нитей (например, умножение двух матей) - и это то, что графические процессоры очень хороши (также думают, что память работает с GPU) – rbm