PaddleRec icon indicating copy to clipboard operation
PaddleRec copied to clipboard

train_thread_num=1时如何提高多核CPU利用率

Open Li-Jiajie opened this issue 4 years ago • 12 comments

分布式训练时,配置文件中可以通过train_thread_num来控制训练线程数,但是train_thread_num是样本并行的程度,相当于有多个reader并行去读取+训练。由于batchsize很大,且是hdfs样本,内存有限,我不能将train_thread_num设置得很大,但是当train_thread_num设置较小比如=1时,只能由1核被充分利用 尝试了下设置OMP_NUM_THREADS、MKL_NUM_THREADS等方式似乎可以提高CPU占用,但是训练速度差不多(比如原本把1核占满,把这两个设置大了,96核可以几乎占满,但是速度提升不明显) 看文档说通过CPU_NUM环境变量来配置,不设置则使用所有CPU,我没有配置CPU_NUM,但是CPU占用不满,基本都在compute阶段耗时,感觉是op里的计算没有并行起来,请问有方法可以设置吗 (OMP_NUM_THREADS、MKL_NUM_THREADS这两个环境变量也是我摸出来的,感觉官方文档里并没有人让配置这两个参数)

Li-Jiajie avatar Dec 08 '21 04:12 Li-Jiajie

能提供下使用的版本和代码吗?

yinhaofeng avatar Dec 08 '21 09:12 yinhaofeng

能提供下使用的版本和代码吗?

2.2.0 CPU占用的这个问题先放一边 想问问多机用fleetrun启动的时候,Worker日志一直卡在下图 image

我用两台机器就能正常启动,多加几个IP就容易卡住 请问有什么办法看到具体卡在哪,或者是卡在哪台机器吗

命令: fleetrun --servers="xxx" --workers="xxxxxxx" tools/static_ps_online_trainer.py -m models/rank/xxxx.yaml

Li-Jiajie avatar Dec 09 '21 03:12 Li-Jiajie

多机启动的时候,每台机器都应该有对应的worker和server端日志,可以通过查看机器日志来确定是哪台机器的问题,由于多台机器需要做一些同步通信,有可能是某台机器的问题导致训练卡住。

esythan avatar Dec 09 '21 04:12 esythan

多机启动的时候,每台机器都应该有对应的worker和server端日志,可以通过查看机器日志来确定是哪台机器的问题,由于多台机器需要做一些同步通信,有可能是某台机器的问题导致训练卡住。

每台机器都是如图,卡在Run Online worker Begin,用的static_ps_online_trainer.py GLOO设置为False(True也一样的问题),CPU模式 所以很奇怪,定位不到哪个机器的问题,如果我就放在两台机器上,就成功了

Li-Jiajie avatar Dec 09 '21 04:12 Li-Jiajie

server端的日志呢?

esythan avatar Dec 09 '21 04:12 esythan

server端的日志呢?

image 4个server,8个worker,均分至4台机器,server日志都是如图,worker都在Run Online worker Begin

Li-Jiajie avatar Dec 09 '21 06:12 Li-Jiajie

GLOO设置为False(True也一样的问题) 这个GLOO的配置是如何设置的呢?

esythan avatar Dec 09 '21 06:12 esythan

GLOO设置为False(True也一样的问题) 这个GLOO的配置是如何设置的呢?

https://github.com/PaddlePaddle/PaddleRec/blob/b2f28c2815595924b5e060a9917b4d799c4de463/models/rank/slot_dnn/config_online.yaml#L2

参考这里的

Li-Jiajie avatar Dec 09 '21 06:12 Li-Jiajie

这个gloo是干啥的呢?我是CPU集群,不知道有啥用,之前单机和2台机器都是默认True的

Li-Jiajie avatar Dec 09 '21 06:12 Li-Jiajie

fleetrun --servers="9.112.115.50:12226,9.112.115.51:12227,9.112.115.52:12228,9.112.115.55:12229" --workers="9.112.115.50:12230,9.112.115.50:12231,9.112.115.51:12232,9.112.115.51:12233,9.112.115.52:12234,9.112.115.52:12235,9.112.115.55:12236,9.112.115.55:12237" --http_port="12238" tools/static_ps_online_trainer.py -m models/rank/numerous_online/config_online.yaml

启动命令

Li-Jiajie avatar Dec 09 '21 06:12 Li-Jiajie

卡在fleet.init_worker里面

Li-Jiajie avatar Dec 09 '21 07:12 Li-Jiajie

算是解决了吧。。。 我看到Paddle的Git在昨天打了个2.2.1的Tag,官网还没发布。。安装了2.2.1就没这个问题了

Li-Jiajie avatar Dec 09 '21 08:12 Li-Jiajie