代码之家  ›  专栏  ›  技术社区  ›  kocica

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

  •  0
  • kocica  · 技术社区  · 6 年前

    我在用CNN电话 darknet/YOLO 使用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天,我每天都要训练网络。

    问题:

    我不需要这些处理器,我也不明白为什么黑暗势力要用这么多处理器。如何强制作业不超过给定的处理器数量?或者别的什么主意我怎么解决这种问题?

    1 回复  |  直到 6 年前
        1
  •  0
  •   navneeth    6 年前

    很可能是该队列的管理集限制与您的请求不匹配。所以ping你的管理员并获取队列的详细信息。(例如排队1 ppm,GPU)

        2
  •  0
  •   kocica    6 年前

    实际上,darknet神经网络在共享集群上使用这么多线程的原因是darknet 甚至可以考虑它可能在共享集群上运行。

    从darknet的源代码中可以看到-- src/detector.c ,线 111 ( Link ,darknet使用64个线程为训练和计算准备输入。如果您没有64核,它将使用尽可能多。

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

    • detector.c 一百一十一 , 393 , 602
    • classifier.c 91

    学分 Metacentrum support .

    推荐文章