这两个选项之间的并行化之间是否有区别?我假设num_workers只关心并行化数据加载。但是,是否一般设置torch.set_num_threads进行培训?试图了解这些选项之间的区别。谢谢!
答案 0 :(得分:1)
DataLoader的num_workers
指定要使用多少个并行工作器来加载数据和运行所有转换。如果您正在加载大图像或进行昂贵的转换,则可能会遇到GPU快速处理数据而DataLoader太慢而无法连续馈入GPU的情况。在这种情况下,设置更多的工人数量会有帮助。我通常会增加这个数字,直到我的纪元步骤足够快为止。另外,还有一个提示:如果使用的是docker,对于像ImageNet这样的大型数据集,通常要将shm设置为1X到2X GB的工作人员数。
torch.set_num_threads
指定用于并行化CPU绑定张量操作的线程数。如果您将GPU用于大多数张量操作,则此设置并不太重要。但是,如果您在cpu上保留了张量,并且对其进行了大量操作,则可以从设置中受益。不幸的是,Pytorch文档没有指定将从中受益的操作,因此请查看您的CPU利用率并调整此数字,直到可以最大化使用为止。