-
我使用的硬件:16 Cores CPU、64G RAM 、RTX 4090、三星PM983 SSD 目前为止的猜想与尝试,但都没有明显的提升: 猜想1:DataLoader并行度不够 猜想2:encoding占用太多资源
结果利用率下降,否定了此猜想 猜想3:CPU to GPU瓶颈
结果:有微弱的提升(约1%~2%),似乎也并不是主要瓶颈 猜想4:IO瓶颈 |
Beta Was this translation helpful? Give feedback.
Replies: 5 comments 8 replies
-
如果你正在使用AutoDL训练 (你提供的利用率截图与AutoPanel的有关界面相同),要注意AutoDL服务器的硬盘是所有机上用户共享的,完全相同的程序在不同时段,利用率曲线也会有明显区别。 |
Beta Was this translation helpful? Give feedback.
-
我个人认为问题最可能是出在 dataloader 上。dataloader 的生产是被动触发的,即在 buffer 用完的时候才会去继续生产,而这就不可避免地会造成消费者的等待。增加 num_workers 只是增加了总吞吐,降低 file_batch_size 会减少等待时间但也会缩短生产触发的间隔,无论哪个都没有解决等待的问题。 不过,我确实有尝试过重写 dataloader,相当于自己实现了一个多进程 Queue,来实现完全异步的生产,即从「平时不生产,buffer 用完才开始」改成了「平时一直生产,buffer 满了才停止」,但是最后似乎也没有提升的样子。 |
Beta Was this translation helpful? Give feedback.
-
参考了 Equim-chan和Koyonomi的意见,最后将file_batch_size设置为1基本上解决了这个问题(达到了峰值的95%性能)。个人理解是通过最小的buffer_size让buffer一直处于耗尽状态,从而让dataloader持续工作。 不过个人认为未来通过实现异步的读取应该还有一定的性能提升的空间。 |
Beta Was this translation helpful? Give feedback.
-
是否设置了过高的batch_size,在我的测试中过高的batch_size带来的并不一定是正向的提升 |
Beta Was this translation helpful? Give feedback.
-
你好,可以分享下数据和训练的方法么,有偿 |
Beta Was this translation helpful? Give feedback.
参考了 Equim-chan和Koyonomi的意见,最后将file_batch_size设置为1基本上解决了这个问题(达到了峰值的95%性能)。个人理解是通过最小的buffer_size让buffer一直处于耗尽状态,从而让dataloader持续工作。
不过个人认为未来通过实现异步的读取应该还有一定的性能提升的空间。