Воспроизводимость и производительность в PyTorch - PullRequest
4 голосов
/ 29 мая 2019

Документация гласит:

Детерминированный режим может влиять на производительность в зависимости от вашей модели.

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

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

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)

Ответы [ 2 ]

1 голос
/ 29 мая 2019

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

0 голосов
/ 29 мая 2019

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

...