在租用智星云服务器后,如果发现训练速度很慢,可以参考下面的方式进行调优。
查看gpu利用率
命令: watch nvidia-smi
如果发现 nvidia-smi显示gpu利用率很低,可以尝试以下操作:
a. 如果显存还有非常多空余,尝试增大batchsize,提升GPU利用率,加速训练。(注意学习率要做相应调整)
b. 如果显存已经没有多少剩余,尝试增大dataloader的num_workers, 这样可以加快数据获取。理想状态下,当前batch数据在GPU上forward的过程中,下一个 batch数据就已经准备好,这样GPU利用率可以达到最高,通过增加num_workers数量可以实现这样效果。但是num_workers的数量和实际租用机器有关,num_workers=核心数量最好,再大反而会使性能下降。
c. 修改代码:
- 尽量将数据预处理部分放在dataset里面,这样可以用dataloader多个num_workers加速;
- 模型forward过程中尽量避免出现tensor to CPU 的操作;
- 尽量避免频繁的磁盘写操作,比如ckpt频繁写入磁盘,或者一些debug时留下的imwrite,plt save等操作;
- pytorch linux 用户推荐使用distributed data parallel对模型进行加速;
- 可租用不同物理机同时跑多个实验,这样就不会有资源抢占。