Загрузка данных PyTorch «зависает» при выполнении нескольких заданий на экземпляре GCP.

У меня проблема при запуске нескольких заданий python3.7 на одном компьютере (одно задание на графический процессор). Это задания по машинному обучению, включающие загрузку данных PyTorch для большого набора данных (>1000 ГБ).

Имея только одну работу, обучение проходит хорошо, если я использую pin_memory=Trueопция Dataloader, партии предоставляются вовремя, загрузка графического процессора высокая. Использую 8 рабочих. Если, основной процесс немного ждет загрузки данных для некоторых пакетов, но это не так уж плохо.

Однако, если я начинаю вторую работу, загрузка данных «зависает» для каждого 8-го пакета (у меня 8 рабочих) на одну минуту, резко замедляя обучение. Я рассчитал время для функций и, и время остается коротким и постоянным для этих функций. Следовательно, это не проблема пропускной способности диска, ввода-вывода или обработки. Во время «зависаний» я обнаружил, что во всех рабочих процессах загрузки данных преобладают потоки ядра (все процессоры отображаются красным цветом на htop). Превращение pin_memory=False не решает проблему.

Так что, если это не из __getitem__ ни collateфункции, куда тратится все это время? Что происходит после того, как одна партия была обработана рабочим, и до того, как ее можно будет использовать в основном процессе? Не могли бы вы порекомендовать какие-нибудь инструменты мониторинга, чтобы выяснить, откуда взялась проблема?

Я работаю на виртуальной машине GCP linux, и мои данные хранятся на SSD-диске.

Спасибо за вашу помощь.

0 ответов

Другие вопросы по тегам