Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?

Теги: #GPU
Рейтинг: 51.8% · 22 голосов
Machine learning и deep learning: обучение и дообучение моделей, датасеты, PyTorch, TensorFlow, эксперименты, метрики, MLOps и аналитика данных.
Аватара пользователя
nerd_vovan
Сообщения: 6
Зарегистрирован: 17 май 2026, 22:12

Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?

Сообщение nerd_vovan »

Ребят, схожу с ума. Один и тот же скрипт, 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 даже не пытаюсь, это в доке прямо написано что не гарантируется.
Перейти к ответу →
Аватара пользователя
add007
Сообщения: 15
Зарегистрирован: 11 май 2026, 11:11

Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?

Сообщение add007 »

num_workers в DataLoader какой? Если не 0, то порядок батчей и аугментаций поплывёт даже с сидами. Это первое что проверяю.
👍4 ❤️1 🔥3 😄3 🤔1
Аватара пользователя
spark_pro
Сообщения: 15
Зарегистрирован: 12 май 2026, 23:56

Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?

Сообщение spark_pro »

num_workers=8. Думал worker_init_fn с сидом решает, но видимо нет.
👍 ❤️1 🔥1 😄 🤔
Аватара пользователя
sofshu
Сообщения: 6
Зарегистрирован: 12 май 2026, 13:04

Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?

Сообщение sofshu »

worker_init_fn помогает с самими трансформами, но shuffle в нескольких воркерах + prefetch всё равно может дать другой порядок если generator не зафиксирован. Передай явный generator в DataLoader с manual_seed.
👍3 ❤️1 🔥4 😄2 🤔1
Аватара пользователя
b1llyn0m
Сообщения: 70
Зарегистрирован: 11 май 2026, 07:32

Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?

Сообщение b1llyn0m »

torch.use_deterministic_algorithms(True) ставил? Без него atomicAdd на cuda даёт неупорядоченное суммирование, отсюда и пляшущий третий знак. Заодно cudnn.deterministic=True и benchmark=False.
👍1 ❤️ 🔥 😄 🤔2
Аватара пользователя
ninja_anton
Сообщения: 14
Зарегистрирован: 18 май 2026, 20:32

Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?

Сообщение ninja_anton »

Поставил use_deterministic_algorithms(True), оно мне сразу кинуло RuntimeError на index_add_. Пришлось ещё CUBLAS_WORKSPACE_CONFIG=:4096:8 в env прописать, иначе matmul ругается. Теперь хотя бы не падает.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
madsegfault
Сообщения: 13
Зарегистрирован: 23 май 2026, 18:38

Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?

Сообщение madsegfault »

Вот это и есть главная боль. Детерминизм включил — а оно тебе половину ядер выключило и обучение замедлилось процентов на 20-30. У меня resnet50 с deterministic просел с 1.4 it/s до 1.05. Не всегда оно того стоит.
👍 ❤️ 🔥 😄1 🤔1
Аватара пользователя
causious
Сообщения: 30
Зарегистрирован: 13 май 2026, 16:00

Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?

Сообщение causious »

А зачем вам вообще bit-exact? Если результаты статистически совпадают (среднее±std по 5 сидам), то наука сделана. Гонка за идентичным float — это уже невроз, а не воспроизводимость.
👍3 ❤️ 🔥3 😄1 🤔2
Аватара пользователя
lonelygoblin
Сообщения: 61
Зарегистрирован: 12 май 2026, 12:45

Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?

Сообщение lonelygoblin »

@ninja_anton затем что ревьюер в статье требует, чтобы по фиксированному сиду цифра в таблице повторялась один в один. Иначе reviewer #2 пишет 'not reproducible'.
👍2 ❤️ 🔥 😄 🤔
Аватара пользователя
coder_vlad
Сообщения: 72
Зарегистрирован: 11 май 2026, 01:57

Re: Поставил все сиды, а loss всё равно гуляет между запусками — кто победил недетерминизм в PyTorch?

Сообщение coder_vlad »

Ну тогда мои соболезнования, reviewer #2 это отдельный вид страданий.
👍1 ❤️1 🔥1 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

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

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

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