描述一下我的情况。我训一个CNN网络时单个物体差不多一万张数据的时候,num_worker取的是8,pin_memory也设置为true,第一个epoch比较慢,差不多20分钟;但之后cpu6个核心的使用率都能接近百分百,而gpu的使用率基本保持在90以上,训得飞快,基本一个1个epoch3分钟就拿下了,那是多么赏心悦目啊。
可是当我不变化配置地喂入全部8个物体约八万条数据后cpu总体使用率就一直比较低,通过top指令查看在20%以下(20%!以下!),自然也就导致显卡使用率也上不去,大多数时候都是个位数,偶尔跳到90几(每0.5s观测nvidia-smi)。第一个epoch三个半小时,其后的每个epoch一个半小时,整个训练速度不成比例的变慢了好多,并且没跑其他程序。这个问题已经折腾两天了,算上之前懵懵懂懂地以为就只能这么快的时间就更长了。我加上了监视器的两张图片,链接在下(不大会发图片)。期待能有站友解决我的疑惑
https://weibo.com/u/7639430630?from=feed&loc=avatar&is_all=1
配置:3060显卡,驱动515.65,cuda11.1, cudnn8.0.5, 主板芯片组:B365颜色分类:i5 9600KF+B365M AORUS ELITE, 内存容量:8GBx2根

关于网络训练过程中cpu使用率过低的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- kakaccys 2022-08-13 17:27关注
楼主,我没太搞明白的是你到底是gpu训练还是cpu训练?还有你的batch_size是多少?数据增加后有变化batch_size吗?还有你有观察内存和虚存吗?目前看你的内存有点差啊,虽然gpu运算中主要用显存,但是数据是从内存拷贝到显存的这个过程的io,当你没有太多内存空间的时候,会很浪费时间,导致cpu也上不去,即使你是cpu训练,当内存不太够的时候,也会出现这情况。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报