2016-05-17 6 views
2

Недавно я попытался внедрить и внедрить глубокое обучающее решение (многослойная LSTM-сеть с дополнительными слоями для статического ввода) на большом сервере ЦП. После многих попыток я добился только 3-кратного ускорения по сравнению с производительностью на моем персональном компьютере. Я слышал, что графические процессоры могут работать лучше. Не могли бы вы объяснить мне, какая именно причина того, почему графические процессоры намного лучше, чем процессоры, когда речь идет о глубоких вычислениях нейронной сети?Что делает графические процессоры настолько эффективными в вычислениях нейронной сети?

+1

Глубокое обучение (и AI) в значительной степени зависит от матриц и матричных операций (т. Е. Линейной алгебры). Матричные операторы могут быть сильно распараллелены и могут использовать сотни нитей (например, умножение двух матей) - и это то, что графические процессоры очень хороши (также думают, что память работает с GPU) – rbm

ответ

3

Архитектура графического процессора в основном ориентирована на параллелизм, в то время как процессор - нет. Это означает, что графический процессор может выполнять множество простых операций одновременно; например, графический процессор может обрабатывать цвет каждого пикселя вашего экрана (1920x1080 составляет почти 2 миллиона пикселей) 60 раз в секунду. ЦПУ общего назначения может иметь один ALU на ядро ​​(физическое или логическое), поэтому, возможно, ваш процессор имеет 8/16 ALU. Графический процессор может иметь thousands of them.

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

нейронные сети в основном много маленьких «компьютеры», работающих параллельно, так что архитектура GPU лучше подходит для этой задачи

2

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

Помимо обучения, часть вывода для нейронных сетей также использует эффективное умножение матрицы. Это связано с тем, что входы для разных слоев и векторы веса (параметра) обычно хранятся в тензорной форме.

Еще одно преимущество использования графических процессоров - лучшая пропускная способность памяти. GDDR5x приближается к 500 Гбайт/с, по сравнению с ~ 80-100 ГБ/с, предлагаемым новейшим DDR4. Таким образом, вы получаете 5-процентный коэффициент улучшения полосы пропускания, который может использовать накопительные вычисления нейронных сетей.

Смежные вопросы