DataLoader num_workers vs torch.set_num_threads

这两种选项之间的并行化处理有区别吗?我猜num_workers仅与数据加载的并行化有关。但是,设置torch.set_num_threads是否适用于一般的训练?我试图理解这两个选项之间的区别。谢谢!


回答:

对于DataLoader,num_workers指定了用于加载数据和运行所有转换的并行工作者的数量。如果您加载大型图像或有昂贵的转换,那么您可能会遇到GPU处理数据很快,而DataLoader供应GPU的速度太慢的情况。在这种情况下,设置更高的工作者数量会有所帮助。我通常会增加这个数字,直到我的epoch步长足够快。另外,一个小提示:如果您使用docker,通常您希望将shm设置为工作者数量的1到2倍的GB,对于像ImageNet这样的大型数据集来说。

torch.set_num_threads指定了用于并行化CPU-bound张量操作的线程数量。如果您的大部分张量操作都在使用GPU,那么这个设置并不太重要。然而,如果您在CPU上保留张量并且对它们进行了大量操作,那么您可能会从设置这个参数中受益。不幸的是,Pytorch文档没有具体说明哪些操作会从中受益,因此请查看您的CPU利用率,并调整这个数字直到您能最大化利用它。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注