CNN训练超过PBS中给定核心的数量

时间:2018-11-19 15:02:10

标签: linux deep-learning pbs yolo darknet

我正在使用名为darknet/YOLO的CNN来通过NVIDIA图形卡在远程共享群集上进行深度学习。远程集群是带有PBS作业计划系统的linux。

我正在提交工作,以便在GPU上训练神经网络,效果很好。

在训练过程中,处理器消耗了大量的问题。我通常会提交具有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天,我每天都必须训练网络。

问题:

我不需要这些处理器,我也不明白为什么Darknet使用这么多处理器。我怎么能迫使这项工作不超过给定的处理器数量?或其他想法,我该如何解决这类问题?

2 个答案:

答案 0 :(得分:0)

该队列的管理员设置限制与您的请求之间很可能不匹配。因此,对您的管理员执行ping操作,并获取队列的详细信息。 (例如queue1 ppm,gpu)

答案 1 :(得分:0)

Darknet神经网络实际上在共享群集上使用了这么多线程的原因是,甚至没有考虑到Darknet可能在共享群集上运行的可能性。

正如您在darknet的源代码中看到的那样-src/detector.c,行111Link),darknet使用64个线程来准备训练和计算的输入。如果您没有64核,它将尽可能多地使用。

要减少线程数,请在以下行上替换线程数。对我来说8条线是合适的。

  • detector.c 111393602
  • classifier.c 91

贷记Metacentrum support