Воспроизводимость в модели Pytorch

#python #machine-learning #deep-learning #pytorch #computer-vision

Вопрос:

Я столкнулся со следующими явлениями в видеомодели, которую я обучал с помощью PyTorch 1.8 с использованием обучения с несколькими графическими процессорами: данное видео из набора проверки иногда предсказывается как класс A, а иногда как класс B.

Оглядевшись, я наткнулся на эту функцию torch.use_deterministic_algorithms() . Насколько я понимаю, некоторые операции над Cuda, например, torch.nn.AvgPool3d не реализованы детерминированно, а это значит, что их необходимо использовать torch.use_deterministic_algorithms(**mode=False**) для воспроизведения. Простое объяснение связано с многопоточностью.. Имеет смысл.

Почему такая базовая операция, как объединение ресурсов, не может быть реализована детерминированно, в отличие от других операций, таких как torch.nn.Conv2d (где mode=True допустимо)?

Полный список обычно-недетерминированных операций: https://pytorch.org/docs/stable/generated/torch.use_deterministic_algorithms.html