根本问题:num_workers=32,可能是过高
解决方法:将num_workers调整至8,一切恢复正常
导致 GPU 利用率为 0 的情况可能有几个原因:
CPU 瓶颈:设置过高的 num_workers 可能导致 CPU 资源过度竞争,尤其是在数据加载和预处理过程中。这可能会使 CPU 无法及时处理数据并将其发送到 GPU,从而造成 GPU 空闲等待数据,导致 GPU 利用率为 0。
IO 瓶颈:过多的 num_workers 也可能导致 IO 资源的竞争,尤其是在从磁盘读取数据时。如果系统 IO 能力有限,设置过多的 num_workers 可能会导致数据读取速度受限,进而影响到 GPU 的数据获取速度。
系统资源竞争:除了 CPU 和 IO,过高的 num_workers 还可能导致系统内存和其他资源的竞争,从而影响整体系统的稳定性和性能
更新
只改变num_workers问题没有解决,还需要将pin_memory设置为False