Я использую CNN с именем darknet / YOLO для глубокого изучения удаленного общего кластера с графическими картами NVIDIA. Удаленный кластер - это Linux с системой планирования заданий PBS.
Я отправляю задание на обучение нейронной сети на графическом процессоре, который хорошо работает.
Проблема в огромном количестве потребляемых процессоров во время обучения. Я обычно отправляю работу с 8 процессорами, как это
qsub -q gpu select=1:ncpus=8:ngpus=1:mem=15gb:gpu_cap=cuda61
но он всегда убит из-за превышения числа процессоров. Даже если я увеличу число до 20, оно все равно будет превышено.
Я не знаю, почему darknet использует так много процессоров на сервере, даже если я могу запустить задание на своем ноутбуке с процессором Intel i5 (который работает медленно и неэффективно).
Что я пробовал:
1) Установите cgroups=cpuacct
, что заставляет задание НЕ использовать больше процессоров, чем назначено, но это не сработало вообще. Кажется, что ограничение работает на тот случай, если на сервере нет ресурсов для других. Если имеются свободные процессоры, ограничение не работает (https://drill.apache.org/docs/configuring-cgroups-to-control-cpu-usage/#cpu-limits)
2) Установите place=excelhost
, который не убивает задание в случае превышения назначенных ресурсов. С другой стороны, чтобы начать работу с этим флагом, требуется около 7 дней, и мне приходится каждый день тренировать сеть.
Вопрос:
Мне не нужны эти процессоры, и я не понимаю, почему даркнет использует их так много. Как я могу заставить работу НЕ превышать заданное количество процессоров? Или какая-то другая идея, как я могу решить эту проблему?