num_workers
是在深度学习框架(例如 PyTorch 和 TensorFlow)中配置数据加载器时的重要参数。它决定了用于数据加载的并发子进程数量,会直接影响以下计算资源的使用:
1. CPU 使用率
- 影响:
num_workers
控制了数据加载任务的并发性,值越大,使用的 CPU 线程/核心数也会越多。 - 结果:
- 如果
num_workers
较小,数据加载速度可能会成为训练的瓶颈,尤其是当数据需要大量预处理时(如图像解码、数据增强)。 - 如果
num_workers
较大,CPU 会被大量占用,这可能会影响其他程序或超出 CPU 核心的可用限制,导致资源竞争。
- 如果
2. 内存使用量
- 影响:每个 worker 子进程会维护自己的数据加载队列和缓存,
num_workers
越大,所需的内存也越多。 - 结果:
- 在内存充足的情况下,增大
num_workers
能提高数据加载的效率。 - 如果内存不足,可能会引发内存溢出(Out of Memory,OOM)问题。
- 在内存充足的情况下,增大
3. 磁盘 I/O
- 影响:
num_workers
增大后,多个子进程会同时读取磁盘数据,磁盘 I/O 会显著增加。 - 结果:
- 对于机械硬盘(HDD),过多的
num_wor
- 对于机械硬盘(HDD),过多的