GPU при обучении загружен на 30-40 процентов, упёрся в даталоадер и не пойму куда копать
Рейтинг: 49% · 10 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
GPU при обучении загружен на 30-40 процентов, упёрся в даталоадер и не пойму куда копать
Учу ViT-S на своём датасете, 2.3 млн картинок, классификация. Сервер с A5000 24GB, торч 2.7, cuda 12.4. И вот беда: nvidia-smi показывает загрузку 30-40%, эпоха идёт почти 6 часов, по прикидкам должна быть часа 2.
Что имеем: картинки jpeg по 200-400кб лежат на сетевом сторадже (NFS, так исторически сложилось), стандартный ImageFolder плюс albumentations, batch 256, num_workers пробовал 8, 12, 16, разницы почти нет. pin_memory=True, AMP включён.
В htop воркеры даталоадера не упираются в 100% cpu, то есть вроде и не декод jpeg виноват? Но GPU явно голодает: на синтетических тензорах из памяти утилизация 95+ и скорость как ожидал.
Куда копать? Профилировщиком торча толком не умею пользоваться, если честно, тыкните, что там смотреть.
Что имеем: картинки jpeg по 200-400кб лежат на сетевом сторадже (NFS, так исторически сложилось), стандартный ImageFolder плюс albumentations, batch 256, num_workers пробовал 8, 12, 16, разницы почти нет. pin_memory=True, AMP включён.
В htop воркеры даталоадера не упираются в 100% cpu, то есть вроде и не декод jpeg виноват? Но GPU явно голодает: на синтетических тензорах из памяти утилизация 95+ и скорость как ожидал.
Куда копать? Профилировщиком торча толком не умею пользоваться, если честно, тыкните, что там смотреть.
✔ Лучший ответ сформирован автоматически — Sdgator
Воркеры не в 100% cpu при голодающем GPU это почти всегда io, и твой NFS первый подозреваемый, выше правильно сказали. 2.3 млн мелких файлов по сети это худший паттерн для NFS, на каждый файл куча метадата-запросов. Если весь датасет на ноду не влезает (у тебя это что-то около 600-700 гигов), пакуй в шарды: webdataset или просто tar по 5-10к картинок. Читается последовательно, NFS такое переварив…
Re: GPU при обучении загружен на 30-40 процентов, упёрся в даталоадер и не пойму куда копать
✔ Лучший ответ — сформирован автоматически
Воркеры не в 100% cpu при голодающем GPU это почти всегда io, и твой NFS первый подозреваемый, выше правильно сказали. 2.3 млн мелких файлов по сети это худший паттерн для NFS, на каждый файл куча метадата-запросов.
Если весь датасет на ноду не влезает (у тебя это что-то около 600-700 гигов), пакуй в шарды: webdataset или просто tar по 5-10к картинок. Читается последовательно, NFS такое переваривает на порядок лучше, перепаковка это скрипт на полчаса.
По профилировке: torch.profiler с activities CPU+CUDA на 50 шагов, трейс открываешь в perfetto и смотришь дырки между cuda kernels. Если между батчами пустота по 200-300мс, это точно данные. Ну или совсем по-простому: замерь время next(iter(loader)) отдельно от форварда, сразу всё станет ясно.
Если весь датасет на ноду не влезает (у тебя это что-то около 600-700 гигов), пакуй в шарды: webdataset или просто tar по 5-10к картинок. Читается последовательно, NFS такое переваривает на порядок лучше, перепаковка это скрипт на полчаса.
По профилировке: torch.profiler с activities CPU+CUDA на 50 шагов, трейс открываешь в perfetto и смотришь дырки между cuda kernels. Если между батчами пустота по 200-300мс, это точно данные. Ну или совсем по-простому: замерь время next(iter(loader)) отдельно от форварда, сразу всё станет ясно.
Re: GPU при обучении загружен на 30-40 процентов, упёрся в даталоадер и не пойму куда копать
nvidia-smi utilization это кстати почти бесполезная цифра, она показывает, был ли хоть один kernel за период, а не насколько GPU занят реально. карта может показывать 90% и считать в полсилы. смотрите SM occupancy через dcgm или nsight, а не на этот градусник. в вашем случае и так понятно, что данные, но на будущее имейте в виду
- Manuelriere
- Сообщения: 58
- Зарегистрирован: 13 май 2026, 17:46
Re: GPU при обучении загружен на 30-40 процентов, упёрся в даталоадер и не пойму куда копать
у меня была почти такая же картина, тоже грешил на диски, а виноваты оказались аугментации. albumentations с resize на оригинальных фотках в 3-4 мегапикселя жрёт будь здоров, при этом по htop размазано и в глаза не бросается. сделал офлайн ресайз всего датасета до 256px, он стал весить в 7 раз меньше и внезапно влез на локальный ssd. эпоха с 5 часов упала до полутора, два зайца одним скриптом
- wireguardmaker
- Сообщения: 12
- Зарегистрирован: 19 май 2026, 08:10
Re: GPU при обучении загружен на 30-40 процентов, упёрся в даталоадер и не пойму куда копать
а зачем вообще ViT-S на 2 млн картинок? возьми предобученный и файнтюнь, или convnext, на таких объёмах трансформер с нуля себя не оправдывает. понимаю, что вопрос был не об этом, но вы оптимизируете обучение, которое может и не нужно
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Ввели KPI на использование ИИ: меньше 30 процентов подсказок принял, иди на беседу к лиду
8 ответов · 7 просмотров
-
- Ввели перформанс ревью с квотой: 10 процентов команды обязаны получить оценку ниже ожиданий
5 ответов · 6 просмотров
-
- Чем платите за Claude Max и Cursor из России в 2026? Посредник просит плюс 25 процентов
6 ответов · 5 просмотров
-
-
-
- Почему loss скачет при обучении трансформера на одной и той же конфигурации
7 ответов · 0 просмотров
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость