num_workers通过影响数据加载速度,从而影响训练速度
在调整num_workers的过程中,发现训练速度并没有变化
原因在于:
num_workers是加载数据(batch)的线程数目
当加载batch的时间 < 数据训练的时间
GPU每次训练完都可以直接从CPU中取到next batch的数据
无需额外的等待,因此也不需要多余的worker,即使增加worker也不会影响训练速度
当加载batch的时间 > 数据训练的时间
GPU每次训练完都需要等待CPU完成数据的载入
若增加worker,即使worker_1还未就绪,GPU也可以取worker_2的数据来训练
仅限单线程训练情况
Reference: