При попытке обучить нейронную сеть с помощью специального загрузчика данных:
train_dataset = datasets.VectorizedDataset(x_train,y_train)
train_loader = datasets.DataLoader(shuffle=True,num_workers=4)
Это сразу приводит к ошибкам при загрузке данных с:
RuntimeError: cuda runtime error (71) : operation not supported at c:\a\w\1\s\tmp_conda_3.6_090826\conda\conda-bld\pytorch_1550394668685\work\torch\csrc\generic\StorageSharing.cpp:232
И это (CUDA IPC ops) задокументировано здесь :
Они не поддерживаются в Windows. Что-то вроде делать
многопроцессорная обработка на тензорах CUDA не может быть успешной, есть два
альтернативы этому.
Не использовать многопроцессорность. Установите num_worker DataLoader на ноль.
Вместо этого делитесь тензорами процессора. Убедитесь, что ваш пользовательский DataSet возвращает тензоры процессора.
Я использую графический процессор GTX 1070 на Windows 10 через PyTorch 1.0.1 и CUDA 10.0.
Разве нельзя буквально разгрузить загрузку тензорных данных CUDA в несколько процессоров на машинах с Windows в Pytorch? Есть ли обходной путь? Должны ли мы сделать что-то более сложное, например, написать собственную многопоточность? Или мы вынуждены сохранять всю загрузку данных в основном процессе?
Спасибо за помощь.