使用 PyTorch 中同时使用 GPU 的代码来使用更多 CPU 核心

使用 PyTorch 中同时使用 GPU 的代码来使用更多 CPU 核心

我正在尝试在 PyTorch 中成功运行使用的代码DataLoader。可以DataLoader通过使用参数配置使用多个进程加载数据(这可以大大加快数据加载速度) num_workers,将其配置为正数(https://pytorch.org/docs/stable/data.html#multi-process-data-loading)。

我可以通过将其设置为远大于 0 的数字来获得所需的结果num_workers,例如,如果我调整代码以不使用 GPU,则使用多个加载进程,即通常使用多个 CPU 内核,每个内核都在一个进程中工作,但如果我调整代码以使用 GPU,如果我将 num_workers 设置为大于 0 的值,则仅使用 1 个 CPU 内核,该内核链接到单个进程(主进程),该进程的内核利用率为 100%,程序无法执行。关于 Slurm 脚本,我将其配置为每个任务使用 1 个节点、1 个任务和 x 个 CPU,x 是我配置的值num_workers(根据本页上的说明 -https://researchcomputing.princeton.edu/support/knowledge-base/pytorch-“使用多个 CPU 核心加载数据”部分)。

我做了很多测试,但还是无法解决这个问题。“单进程数据加载(默认)”部分 -https://pytorch.org/docs/stable/data.html#single-process-data-loading-default,紧接着出现在我从 PyTorch 网站传递的上述链接中的页面部分提到,用于在进程之间共享数据的资源(例如共享内存、文件描述符)可能受到限制,这将妨碍num_workers正确使用 > 0,那么会是这样吗?如果是这样,我应该在 Slurm 脚本或我的代码中进行任何配置吗?虽然我认为这种情况发生是没有意义的,因为通过调整我的代码以不使用 GPU,我在使用 > 0 的值时没有任何问题。num_workers提前感谢您的关注!

相关内容