Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?
Рейтинг: 51.8% · 22 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
- nerd_vovan
- Сообщения: 6
- Зарегистрирован: 17 май 2026, 22:12
Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?
Ребят, схожу с ума. Один и тот же скрипт, torch 2.3, A100. Ставлю seed на random, numpy, torch, torch.cuda.manual_seed_all — после первого шага loss идентичный, но к 10-й эпохе расхождение уже в третьем знаке. Кому-то реально удавалось получить bit-exact два прогона на GPU?
✔ Лучший ответ сформирован автоматически — ama123
Короче подытожу что у меня сейчас работает приемлемо: generator с manual_seed в DataLoader, num_workers оставил 8 но с worker_init_fn, use_deterministic_algorithms(True), CUBLAS_WORKSPACE_CONFIG в env, версии заморожены. Bit-exact на GPU так и не получил между разными машинами, но на одной и той же — да. Между CPU и GPU даже не пытаюсь, это в доке прямо написано что не гарантируется.
Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?
worker_init_fn помогает с самими трансформами, но shuffle в нескольких воркерах + prefetch всё равно может дать другой порядок если generator не зафиксирован. Передай явный generator в DataLoader с manual_seed.
Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?
torch.use_deterministic_algorithms(True) ставил? Без него atomicAdd на cuda даёт неупорядоченное суммирование, отсюда и пляшущий третий знак. Заодно cudnn.deterministic=True и benchmark=False.
- ninja_anton
- Сообщения: 14
- Зарегистрирован: 18 май 2026, 20:32
Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?
Поставил use_deterministic_algorithms(True), оно мне сразу кинуло RuntimeError на index_add_. Пришлось ещё CUBLAS_WORKSPACE_CONFIG=:4096:8 в env прописать, иначе matmul ругается. Теперь хотя бы не падает.
- madsegfault
- Сообщения: 13
- Зарегистрирован: 23 май 2026, 18:38
Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?
Вот это и есть главная боль. Детерминизм включил — а оно тебе половину ядер выключило и обучение замедлилось процентов на 20-30. У меня resnet50 с deterministic просел с 1.4 it/s до 1.05. Не всегда оно того стоит.
- lonelygoblin
- Сообщения: 61
- Зарегистрирован: 12 май 2026, 12:45
Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?
@ninja_anton затем что ревьюер в статье требует, чтобы по фиксированному сиду цифра в таблице повторялась один в один. Иначе reviewer #2 пишет 'not reproducible'.
- coder_vlad
- Сообщения: 72
- Зарегистрирован: 11 май 2026, 01:57
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
-
- Контора поставила трекер со скриншотами каждые 10 минут. Терпеть или валить?
8 ответов · 84 просмотров
-
-
-
- Тимлид поставил exceeds, после калибровки пришло meets. Кто видел эти комитеты изнутри?
5 ответов · 56 просмотров
-
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость