CNN 训练超过了 PBS 中给定核心的数量
CNN training exceeds number of given cores in PBS
我正在使用名为 darknet/YOLO 的 CNN 在带有 NVIDIA 显卡的远程共享集群上进行深度学习。远程集群 linux 带有 PBS 作业计划系统。
我正在提交作业以在 GPU 上训练神经网络,效果很好。
问题在于训练期间消耗了大量处理器。我通常提交一个有 8 个处理器的作业,像这样
qsub -q gpu select=1:ncpus=8:ngpus=1:mem=15gb:gpu_cap=cuda61
但总是因为处理器数量过多而被杀死。即使我将数量增加到 20 个,它仍然超过了。
我不知道为什么 darknet 在服务器上消耗了这么多处理器,即使我可能 运行 我的笔记本电脑上有英特尔 i5 处理器(速度慢且效率低)。
我试过的:
1) 设置 cgroups=cpuacct
强制作业不使用分配的更多处理器,但它根本不起作用。似乎限制只是为了防止服务器没有其他资源。如果有空闲处理器,则限制不起作用 (https://drill.apache.org/docs/configuring-cgroups-to-control-cpu-usage/#cpu-limits)
2) 设置 place=excelhost
以防超过分配的资源时不会终止作业。另一方面,使用这个标志甚至需要 7 天才能开始工作,我必须每天训练网络。
问题:
我不需要这些处理器,我不明白为什么暗网使用这么多处理器。我如何强制作业不超过给定的处理器数量?或者其他一些想法我该如何解决这类问题?
更可能是该队列的管理员设置限制与您的请求不匹配。所以 ping 你的管理员并获取队列的详细信息。 (例如 queue1 ppm、gpu 的)
实际上 darknet 神经网络在共享集群上使用这么多线程的原因是 darknet 不甚至有可能在共享集群上 运行。
正如您在 darknet 的源代码 -- src/detector.c
,行 111
(Link) 中所见,darknet 使用 64 个线程来准备用于训练和计算的输入。如果你没有64核,就尽量用。
要减少线程数,请替换以下行中的线程数。对我来说8个线程比较合适。
detector.c
111
, 393
, 602
classifier.c
91
我正在使用名为 darknet/YOLO 的 CNN 在带有 NVIDIA 显卡的远程共享集群上进行深度学习。远程集群 linux 带有 PBS 作业计划系统。
我正在提交作业以在 GPU 上训练神经网络,效果很好。
问题在于训练期间消耗了大量处理器。我通常提交一个有 8 个处理器的作业,像这样
qsub -q gpu select=1:ncpus=8:ngpus=1:mem=15gb:gpu_cap=cuda61
但总是因为处理器数量过多而被杀死。即使我将数量增加到 20 个,它仍然超过了。
我不知道为什么 darknet 在服务器上消耗了这么多处理器,即使我可能 运行 我的笔记本电脑上有英特尔 i5 处理器(速度慢且效率低)。
我试过的:
1) 设置 cgroups=cpuacct
强制作业不使用分配的更多处理器,但它根本不起作用。似乎限制只是为了防止服务器没有其他资源。如果有空闲处理器,则限制不起作用 (https://drill.apache.org/docs/configuring-cgroups-to-control-cpu-usage/#cpu-limits)
2) 设置 place=excelhost
以防超过分配的资源时不会终止作业。另一方面,使用这个标志甚至需要 7 天才能开始工作,我必须每天训练网络。
问题:
我不需要这些处理器,我不明白为什么暗网使用这么多处理器。我如何强制作业不超过给定的处理器数量?或者其他一些想法我该如何解决这类问题?
更可能是该队列的管理员设置限制与您的请求不匹配。所以 ping 你的管理员并获取队列的详细信息。 (例如 queue1 ppm、gpu 的)
实际上 darknet 神经网络在共享集群上使用这么多线程的原因是 darknet 不甚至有可能在共享集群上 运行。
正如您在 darknet 的源代码 -- src/detector.c
,行 111
(Link) 中所见,darknet 使用 64 个线程来准备用于训练和计算的输入。如果你没有64核,就尽量用。
要减少线程数,请替换以下行中的线程数。对我来说8个线程比较合适。
detector.c
111
,393
,602
classifier.c
91