Я использую PyTorch как универсальный инструмент для дифференцированного программирования для задачи оптимизации, над которой я работаю, не связанной с нейронными сетями.
Я заметил, что время выполнения по отношению к шагам является квадратичным: график времени
Я вычисляю свою функцию потерь в цикле и вызываю loss.backward (retain_graph = True) в каждой итерации.Профилирование кода показывает, что ~ 99% времени выполнения тратится в loss.backward ().
Квадратичное замедление означает линейное увеличение времени выполнения на каждом шаге, поэтому, возможно, Pytorch хранит весь сохраненный граф для каждого шага отдельно?
Любые мысли приветствуются.
Спасибо.