unofficial-implement-of-openpose
unofficial-implement-of-openpose copied to clipboard
如何调用多GPU训练所遇到的相关问题?
你好,我在进行多GPU训练的时候出现了以下问题:
1、通过设置os.environ["CUDA_VISIBLE_DEVICES"]="4,5,6,7"指定GPU可见的驱动编号,
但是总是第一块gpu被调用(指定的第一块,这里编号为4)
2、如果不进行指定可见的GPU,则会将所有GPU都默认加载(一共8块GPU),但是只有第一块显存被加载满,并参与运算,其他的GPU并不参与运算。
3、CPU占用也特别严重,32核都被沾满了(每个核几乎都是100%)。
4、一块GPU训练很慢,不知道是我代码的问题不是,GPU已经跑满,看着也在高位运行,但是CPU调用也是100%。一块1080Ti的GPU训练coco2017数据集超过12小时,(我修改了batch_size为16,learning_rate初始值为1e-4)
5、我使用了TensorFlow官网提供的多GPU样例,如果使用os.environ["CUDA_VISIBLE_DEVICES"]指定可见的编号,也会出现只有制定GPU第一个编号的被调用。但是如果不指定可见,则8块GPU会全部加载并全部参与运算;
多GPU设置代码截图:
nvidia-smi GPU调用情况展示:
运算情况截图:
另外在最后一轮结束时报错:截图如下
我的理解这个错误应该是训练终止,所以报的错
多GPU我代码没跑过,不是太清楚,但是cpu核心跑满是因为gt是根据标注文件训练时生成的所以比较消耗计算资源,占用核心数是可以调整的,根据你的batch大小,保证cpu能把GPU喂满。最后的报错直接忽略即可,没有影响