Как использовать многопроцессорные ядра для обучения 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
установлено.
Этот вопрос имеет полный сценарий для того же.