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

документация указывает:

Deterministic mode can have a performance impact, depending on your model.

Мой вопрос в том, что здесь подразумевается под производительностью. Скорость обработки или качество модели (т.е. минимальные потери)? Другими словами, при задании начальных значений вручную и обеспечении детерминированной работы модели увеличивается время обучения до тех пор, пока не будут обнаружены минимальные потери, или эти минимальные потери хуже, чем когда модель недетерминирована?

Для полноты картины я вручную делаю модель детерминированной, устанавливая все эти свойства:

def set_seed(seed):
    torch.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)
    torch.backends.cudnn.deterministic = True
    torch.backends.cudnn.benchmark = False
    np.random.seed(seed)
    random.seed(seed)
    os.environ['PYTHONHASHSEED'] = str(seed)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
19
0
6 929
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

«производительность» в этом контексте относится к времени выполнения

У вас есть какие-либо источники для этого? Как вы можете быть уверены?

Bram Vanroy 29.05.2019 10:03

При включении случайных изменений между разными тренировочными сеансами вы, очевидно, не получите точно такие же веса и, следовательно, не точно с той же потерей/точностью. Однако эти различия незначительны (см., например, это). С другой стороны, требуя точно таких же численных результатов, необходимо проводить процесс обучения точно так же. Это занимает время: Фиксация порядка параллельных вычислений не позволяет вам наслаждаться балансировкой нагрузки и т. д. Таким образом, с точки зрения точности/потери вы находитесь примерно в том же месте, но за более длительное время. @Bra

Shai 29.05.2019 10:12

Интересно, что здесь утверждается, что случайные семена могут иметь огромные последствия. Здесь вы увидите, что та же модель с другим начальным числом имеет разницу в точности 10%. linkedin.com/posts/…

Bram Vanroy 09.12.2019 15:26
Ответ принят как подходящий

Производительность относится к времени выполнения; У CuDNN есть несколько способов реализации, когда для cudnn.deterministic установлено значение true, вы говорите CuDNN, что вам нужны только детерминированные реализации (или то, что мы считаем ими). Короче говоря, когда вы делаете это, вы должны ожидать те же результаты на ЦП или GPU на та же система при подаче те же входы. Почему это может повлиять на производительность? CuDNN использует эвристику для выбора реализации. Итак, на самом деле от вашей модели зависит, как будет вести себя CuDNN; выбор его как детерминированного может повлиять на время выполнения, потому что это мог быть, скажем, более быстрый способ выбора их в одной и той же точке запуска.


Что касается вашего фрагмента, я делаю точный посев, он работает хорошо (с точки зрения воспроизводимости) для 100+ экспериментов DL.

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