Pytorch 数据集中无法打开共享文件映射错误

Mar*_*zen 5 runtime-error pytorch dataloader

在 Pytorch 1.4 中使用自定义数据集训练模型时,在看似随机的时期后会引发以下错误。

RuntimeError: Couldn't open shared file mapping: <torch_15324_2327643205>, error code: <1455>
Run Code Online (Sandbox Code Playgroud)

数据集被包装在 a 中torch.utils.data.DataLoader并使用 4 个工作线程,等于物理核心的数量。

class TSNDataSet(data.Dataset):
    def __init__(self, pickle_file_paths, transforms):
        self.pickle_file_paths = pickle_file_paths # list with file paths to pickle files
        self.dataset_size = len(pickle_file_paths)

    def __getitem__(self, index):
        with open(self.pickle_file_paths[index], 'rb') as f:
            mffs = pickle.load(f)
            
        return mffs, index

    def __len__(self):
        return self.dataset_size
Run Code Online (Sandbox Code Playgroud)

了解错误的含义以及可能的解决方案是什么会很有帮助。

Nik*_*ine 0

当 GPU 内存即将耗尽时,很可能会发生这种情况。在每个下一个纪元开始后都会观察到同样的问题。我使用具有 8GB 内存的 1070Ti 运行了批量大小为 1300 的 ImageNet 摘录。图像是从 RAM 驱动器加载的。

该问题与torch.utils.data.DataLoader枚举调用时执行的整理操作有关。

对于所附的屏幕截图,当图表显示红线并且共享内存正在使用 14+ GB 时,我的故障发生了。在批量大小减少两次后,达到 650,任务管理器显示仅使用了 2.6 GB,并且程序在各个时期都运行得很好。

  • 项目:来自官方 PyTorch示例的“imagenet” 。
  • 图片:ILSVRC2012\train 和 var,全套中的前 69 个文件夹,每个文件夹 1300 张图片。
  • IDE:PyCharm 2023.3.3 社区
  • 蟒蛇:3.10.4

任务管理器(Windows 10)