pytorch 服务器加速训练

问题:已经在服务器上训练了,但是训练的速度仍然很慢。

我在服务器上可以将batch变得很大,比如96/128,但是在训练的时候很慢,每秒只处理20张左右的图片(20 it/s),而这个在我自己的电脑上也可以达到(但是在我自己的电脑上,batch最多设置成8)。
pytorch中的batch更对应显卡的显存,一批次计算多少数据,尤其是在bn层,大的batch_size的bn层参数更贴近真实数据集的参数。
还有另外一个非常重要的参数容易被忽略,这个参数就是加载数据的DataLoader()函数中的num_workers,该参数根据函数说明,是读取数据所启动的子线程数,越大数据的读取速度越快,比如你设置为8,你在终端中使用top命令 (linun中)查看,便可以看到启动了多个python线程,这个时候,训练速度变成了近150 it/s了。

总结,要想训练的又快又好,就把batch_size和num_workers设置为大的值(num_workers默认为0)。

上一篇:执行update语句,用没用到索引,区别大吗?


下一篇:Pytorch ----- 数据集 (dataset) 数据加载器 (dataloader) num_workeres工作原理 及调整方法 ~~学习笔记