Недетерминизм в pytorch, один и тот же код дает разный результат

Рейтинг: 37.6% · 5 голосов
Machine learning и deep learning: обучение и дообучение моделей, датасеты, PyTorch, TensorFlow, эксперименты, метрики, MLOps и аналитика данных.
Ответить
Аватара пользователя
archmaster
Сообщения: 44
Зарегистрирован: 15 май 2026, 01:57

Недетерминизм в pytorch, один и тот же код дает разный результат

Сообщение archmaster »

Один и тот же скрипт обучения на pytorch 2.4 даёт разный лосс от запуска к запуску, хотя seed зафиксировал везде. Разброс не критичный, финальная accuracy гуляет на 0.3-0.5%, но когда сравниваешь два эксперимента и не понимаешь, это улучшение от твоей правки или просто шум, бесит до трясучки. Как добиться полной воспроизводимости и стоит ли вообще?
👍2 ❤️2 🔥1 😄 🤔1
✔ Лучший ответ сформирован автоматически — fpga87
@автор собери всё в одну функцию и зови в начале: import torch, numpy as np, random, os def seed_all(s=42): random.seed(s); np.random.seed(s); torch.manual_seed(s); torch.cuda.manual_seed_all(s) os.environ['CUBLAS_WORKSPACE_CONFIG']=':4096:8' torch.backends.cudnn.deterministic=True; torch.backends.cudnn.benchmark=False torch.use_deterministic_algorithms(True, warn_only=True) warn_only=True важно,…
Перейти к ответу →
Аватара пользователя
regexlover
Сообщения: 18
Зарегистрирован: 21 май 2026, 11:59

Re: Недетерминизм в pytorch, один и тот же код дает разный результат

Сообщение regexlover »

плюсую к сидам-ансамблю. одна цифра это не результат, это анекдот
👍1 ❤️ 🔥1 😄1 🤔1
Аватара пользователя
fpga87
Сообщения: 26
Зарегистрирован: 13 май 2026, 16:01

Re: Недетерминизм в pytorch, один и тот же код дает разный результат

Сообщение fpga87 »

✔ Лучший ответ — сформирован автоматически
@автор собери всё в одну функцию и зови в начале:
import torch, numpy as np, random, os
def seed_all(s=42):
random.seed(s); np.random.seed(s); torch.manual_seed(s); torch.cuda.manual_seed_all(s)
os.environ['CUBLAS_WORKSPACE_CONFIG']=':4096:8'
torch.backends.cudnn.deterministic=True; torch.backends.cudnn.benchmark=False
torch.use_deterministic_algorithms(True, warn_only=True)
warn_only=True важно, иначе на atomic-операциях типа scatter_add или некоторых пулингов оно кинет исключение и ты будешь переписывать слои. дальше DataLoader делай так: g=torch.Generator(); g.manual_seed(s); и передавай generator=g, плюс worker_init_fn который сидит каждый воркер. после этого у меня лосс совпадает побитово между запусками на одной и той же карте. но! на другой видяхе или другой версии cuda числа поедут, детерминизм он только в пределах одного железа и окружения. так что для сравнения экспериментов держи фиксированную машину или контейнер.
👍2 ❤️1 🔥 😄 🤔
Аватара пользователя
kingpaul
Сообщения: 57
Зарегистрирован: 11 май 2026, 12:35

Re: Недетерминизм в pytorch, один и тот же код дает разный результат

Сообщение kingpaul »

archmaster писал(а):стоит ли вообще
честный ответ нет, не стоит гнаться за полным детерминизмом. ты потеряешь процентов 10-20 скорости на детерминированных ядрах, а проблему сравнения не решишь по-настоящему. правильно гонять каждый эксперимент на 3-5 сидах и смотреть на среднее и разброс. если твоя правка даёт +0.4% а разброс между сидами 0.5%, то твоё улучшение это шум и точка, никакой детерминизм тут не поможет, он просто заморозит тебя на одной случайной точке.
👍 ❤️ 🔥2 😄1 🤔
Аватара пользователя
gpu2000
Сообщения: 7
Зарегистрирован: 18 май 2026, 16:46

Re: Недетерминизм в pytorch, один и тот же код дает разный результат

Сообщение gpu2000 »

@archmaster, torch.manual_seed мало. нужно ещё np.random.seed, random.seed, и главное torch.use_deterministic_algorithms(True) плюс переменная окружения CUBLAS_WORKSPACE_CONFIG=:4096:8 иначе на cublas ругнётся.
👍1 ❤️ 🔥1 😄1 🤔
Аватара пользователя
rsal56
Сообщения: 17
Зарегистрирован: 11 май 2026, 04:05

Re: Недетерминизм в pytorch, один и тот же код дает разный результат

Сообщение rsal56 »

@kingpaul, не забудь про dataloader, num_workers с шафлом тоже источник. нужен generator с сидом и worker_init_fn. без этого порядок батчей пляшет.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
timur12
Сообщения: 30
Зарегистрирован: 13 май 2026, 01:35

Re: Недетерминизм в pytorch, один и тот же код дает разный результат

Сообщение timur12 »

fpga87 писал(а):на другой видяхе или другой версии cuda числа поедут
вот это народ постоянно забывает. человек добился детерминизма локально на 4090, выкатил на A100 в облаке и удивляется что цифры другие. железо часть сида, по сути.
👍 ❤️1 🔥1 😄1 🤔1
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Машинное обучение и Data Science»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя