Я пытаюсь подогнать модель под TensorFlow 2.2. Написал кастомный тренинг l oop. Однако обучение довольно быстро завершается сбоем, когда у графического процессора заканчивается память. Модель отлично работает с теми же параметрами при использовании API-интерфейса model.fit (), но я хочу использовать индивидуальное обучение l oop, поскольку оно обеспечивает большую гибкость для моих нужд.
Каков общий способ Отладка таких проблем с памятью?
Я искал, но официальные документы TF в основном говорят о том, как отлаживать логические ошибки. На многих страницах рассказывается об отладке, основанной на режиме графика.
Любые советы приветствуются! Заранее спасибо!
ОБНОВЛЕНИЕ 1 Используемый код находится здесь на Colab Входные данные взяты из набора данных UCF-Crime, они были предварительно обработаны в jpeg и хранятся как сегменты в TFRecord. Пример TFRecord из того же здесь , каждый TFRecord содержит 500 сегментов, где каждый сегмент представляет собой 16 последовательных кадров видео в формате jpeg, уменьшенных до 128x128 изображений RGB.
Для воспроизведения проблему, вы можете создать набор данных, поместив путь к файлу TFRecord в mod_build_dataset()
. Код немедленно взломает sh на ЦП в Colab (поскольку максимальный доступный объем ОЗУ составляет ~ 13 ГБ), то же самое для графического процессора .
На Kaggle он будет нормально работать на ЦП (максимальное использование ОЗУ составляет 14,2 ГБ), но будет трещать sh на графическом процессоре (использует все 16 ГБ графической памяти)
Я предполагаю, что это это связано с тем, что ЦП выполняет вычисления медленнее, поэтому G C успевает включиться до того, как исчерпает память, тогда как на GPU этого не происходит.