Глубокое обучение — процесс, требующий больших вычислительных мощностей. Конечно, нет ничего хорошего в том, чтобы тратить деньги на покупку аппаратного обеспечения с обложки журнала, которое потом полетит на помойку. Нужно подходить к этому делу с умом.
Попробуем взглянуть на примеры аппаратных решений, связанные с работой по осваиванию темы deep learning'а. Ну и затронем немного теории.
/ Фото Berkeley Center for New Media CC
Создавая систему глубокого обучения, определенно стоит задуматься об использовании ГП. Повышение производительности, которое он дает, слишком велико, чтобы его игнорировать. Эксперты советуют обращать внимание на такие модели как GTX 680 (ограниченных бюджет) и GTX Titan X (дорогое решение для свертки) или GTX 980 (лучшее решение за свои деньги).
Чтобы выбрать правильный центральный процессор, нужно понимать, какое он имеет отношение к глубокому обучению. Здесь он выполняет очень мало вычислений, но по-прежнему производит запись и чтение переменных, выполнение инструкций, инициализацию вызовов к ГП и передачу ему параметров.
Большинство библиотек глубокого обучения (как и большинство приложений) используют всего один поток. Это означает, что многоядерные процессоры бесполезны. Однако они могут вам пригодиться, если вы работаете с фреймворками, использующими параллельные вычисления, как, например, MPI.
Размер кэша центрального процессора не играет большой роли при обмене данными между ЦП и ГП. В глубоком обучении наборы данных, обычно, слишком большие, чтобы уместиться в кэше, и для каждой новой mini-batch выборки данные приходится читать из памяти — поэтому в любом случае понадобится постоянный доступ к оперативной памяти.
Тактовая частота не всегда является оптимальной мерой производительности в данной ситуации. Даже при загрузке ЦП на 100%, дело может быть не в его реальной работе, а просто в ошибках кэша (память имеет меньшую частоту чем ЦП). Частота работы процессора определяет максимальную частоту работы оперативной памяти, и обе эти частоты определяют результирующую пропускную способность памяти процессора.
Пропускная способность имеет значение только тогда, когда вы копируете большие объемы данных. Она определяет, насколько быстро может быть переписана и размещена mini-batch, чтобы можно было начать инициализацию передачи данных графическому процессору.
При прямом доступе к памяти (ПДП) задача будет состоять в правильном осуществлении передачи, что позволить обойтись более дешевой и медленной памятью. Это можно делать асинхронно и без потерь в производительности. Частота оперативной памяти не имеет значения.
Здесь очень важен размер оперативной памяти. Он должен быть не меньше объема памяти графического процессора. Если памяти много, можно избежать массы проблем, сохранить время и увеличить продуктивность, занявшись решением более сложных вопросов.
/ Фото UnknownNet Photography CC
Относительно хранения больших объемов данных все в целом понятно: скорее всего, вы будете хранить одну его часть на жёстком диске или SSD, другую часть в оперативной памяти и третью часть (две небольшие выборки) в памяти графического процессора. Например, если вы работаете с большим набором 32-битных данных, то вам определенно понадобится SSD, так как жесткие диски со скоростью 100-150 Мб/сек слишком медленные и не будут поспевать за ГП. Многие покупают SSD просто для удобства, но для глубокого обучения он необходим только в том случае, если размерность входных данных велика, и вы не можете их эффективно сжать.
Идем дальше. Охлаждение. Оно безусловно будет влиять на производительность в большей степени, чем это делает плохое аппаратное обеспечение. Во время работы современные ГП повышают свою частоту и энергопотребление до максимума, но как только температура процессора достигает 80 °C, скорость сбрасывается, чтобы избежать превышения температурного порога. Этот подход гарантирует наилучшую производительность.
В случае с глубоким обучением температурный порог достигается за несколько секунд после запуска алгоритма. Поэтому самый простой и дешевый способ обойти ограничения — это установить прошивку BIOS, имеющую новые, более адекватные настройки вентиляторов, которые сохранят температуру и шумы на приемлемом уровне.
Водяное охлаждение — тоже вариант. Оно практически вдове снизит температуру одного графического процессора даже при максимальной нагрузке, и температурный порог никогда не будет достигнут. Обслуживание не требует особых усилий и не должно стать проблемой. Вопрос только в деньгах.
Материнская плата должна иметь достаточное количество PCIe портов, чтобы на ней можно было закрепить все ГП. PCIe 2.0 подойдет для одного ГП, но PCIe 3.0 обладает лучшими показателями цена/производительность. Выбор материнской платы — в целом простая задача: выбирайте ту, которая поддерживает нужное вам аппаратное обеспечение.
Большие мониторы, которые позволят продуктивно работать и контролировать ситуацию — лучшее вложение средств. Разница между одним и тремя мониторами огромна, советуем обратить на это внимание.
Попробуем взглянуть на примеры аппаратных решений, связанные с работой по осваиванию темы deep learning'а. Ну и затронем немного теории.
![](https://habrastorage.org/files/3f3/097/d87/3f3097d873754d388dbd02179c015614.jpg)
Создавая систему глубокого обучения, определенно стоит задуматься об использовании ГП. Повышение производительности, которое он дает, слишком велико, чтобы его игнорировать. Эксперты советуют обращать внимание на такие модели как GTX 680 (ограниченных бюджет) и GTX Titan X (дорогое решение для свертки) или GTX 980 (лучшее решение за свои деньги).
Чтобы выбрать правильный центральный процессор, нужно понимать, какое он имеет отношение к глубокому обучению. Здесь он выполняет очень мало вычислений, но по-прежнему производит запись и чтение переменных, выполнение инструкций, инициализацию вызовов к ГП и передачу ему параметров.
Большинство библиотек глубокого обучения (как и большинство приложений) используют всего один поток. Это означает, что многоядерные процессоры бесполезны. Однако они могут вам пригодиться, если вы работаете с фреймворками, использующими параллельные вычисления, как, например, MPI.
Размер кэша центрального процессора не играет большой роли при обмене данными между ЦП и ГП. В глубоком обучении наборы данных, обычно, слишком большие, чтобы уместиться в кэше, и для каждой новой mini-batch выборки данные приходится читать из памяти — поэтому в любом случае понадобится постоянный доступ к оперативной памяти.
Тактовая частота не всегда является оптимальной мерой производительности в данной ситуации. Даже при загрузке ЦП на 100%, дело может быть не в его реальной работе, а просто в ошибках кэша (память имеет меньшую частоту чем ЦП). Частота работы процессора определяет максимальную частоту работы оперативной памяти, и обе эти частоты определяют результирующую пропускную способность памяти процессора.
Пропускная способность имеет значение только тогда, когда вы копируете большие объемы данных. Она определяет, насколько быстро может быть переписана и размещена mini-batch, чтобы можно было начать инициализацию передачи данных графическому процессору.
При прямом доступе к памяти (ПДП) задача будет состоять в правильном осуществлении передачи, что позволить обойтись более дешевой и медленной памятью. Это можно делать асинхронно и без потерь в производительности. Частота оперативной памяти не имеет значения.
Здесь очень важен размер оперативной памяти. Он должен быть не меньше объема памяти графического процессора. Если памяти много, можно избежать массы проблем, сохранить время и увеличить продуктивность, занявшись решением более сложных вопросов.
![](https://habrastorage.org/files/c7c/313/02c/c7c31302c4dc4754900d0ee10cce9bff.jpg)
Относительно хранения больших объемов данных все в целом понятно: скорее всего, вы будете хранить одну его часть на жёстком диске или SSD, другую часть в оперативной памяти и третью часть (две небольшие выборки) в памяти графического процессора. Например, если вы работаете с большим набором 32-битных данных, то вам определенно понадобится SSD, так как жесткие диски со скоростью 100-150 Мб/сек слишком медленные и не будут поспевать за ГП. Многие покупают SSD просто для удобства, но для глубокого обучения он необходим только в том случае, если размерность входных данных велика, и вы не можете их эффективно сжать.
Идем дальше. Охлаждение. Оно безусловно будет влиять на производительность в большей степени, чем это делает плохое аппаратное обеспечение. Во время работы современные ГП повышают свою частоту и энергопотребление до максимума, но как только температура процессора достигает 80 °C, скорость сбрасывается, чтобы избежать превышения температурного порога. Этот подход гарантирует наилучшую производительность.
В случае с глубоким обучением температурный порог достигается за несколько секунд после запуска алгоритма. Поэтому самый простой и дешевый способ обойти ограничения — это установить прошивку BIOS, имеющую новые, более адекватные настройки вентиляторов, которые сохранят температуру и шумы на приемлемом уровне.
Водяное охлаждение — тоже вариант. Оно практически вдове снизит температуру одного графического процессора даже при максимальной нагрузке, и температурный порог никогда не будет достигнут. Обслуживание не требует особых усилий и не должно стать проблемой. Вопрос только в деньгах.
Материнская плата должна иметь достаточное количество PCIe портов, чтобы на ней можно было закрепить все ГП. PCIe 2.0 подойдет для одного ГП, но PCIe 3.0 обладает лучшими показателями цена/производительность. Выбор материнской платы — в целом простая задача: выбирайте ту, которая поддерживает нужное вам аппаратное обеспечение.
Большие мониторы, которые позволят продуктивно работать и контролировать ситуацию — лучшее вложение средств. Разница между одним и тремя мониторами огромна, советуем обратить на это внимание.