Как использовать многопроцессорные ядра для обучения NN с использованием caffe и OpenBLAS

Недавно я изучал глубокое обучение, и мой друг рекомендовал мне кофе. После установки его с OpenBLAS я следовал учебному пособию MNIST в документации. Но позже я обнаружил, что это было очень медленно, и работало только одно ядро ​​процессора.

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

Я прогуглил это и получил такую ​​страницу. Я пытался export OPENBLAS_NUM_THREADS=8 а также export OMP_NUM_THREADS=8, Но кофе все еще использовал одно ядро.

Как я могу заставить кофе использовать несколько процессоров?

Большое спасибо.

3 ответа

@Karthik. Это также работает для меня. Одно интересное открытие, которое я сделал, состояло в том, что использование 4 потоков уменьшает проход вперед / назад во время проверки синхронизации caffe в 2 раза. Однако увеличение числа потоков до 8 или даже 24 приводит к скорости f/b, которая меньше, чем у меня. получить с OPENBLAS_NUM_THREADS=4. Вот несколько раз для подсчета потоков (проверено на модели NetworkInNetwork).

[# нитей] [время f/b в мс]
1 223
2 150
4 113
8 125
12 144

Для сравнения на GPU Titan X проход f/b занял 1,87 мс.

При сборке OpenBLAS вы должны установить флаг USE_OPENMP = 1, чтобы включить поддержку OpenMP. Затем настройте Caffe на использование OpenBLAS в Makefile.config, пожалуйста, экспортируйте количество потоков, которые вы хотите использовать во время выполнения, установив OMP_NUM_THREADS=n, где n - это количество потоков, которое вы хотите.

Я обнаружил, что этот метод работает:

Когда вы собираете caffe, в вашей команде make используйте это для 8 ядер: make all -j8 а такжеmake pycaffe -j8

Также убедитесь, что OPENBLAS_NUM_THREADS=8 установлено.

Этот вопрос имеет полный сценарий для того же.

Другие вопросы по тегам