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

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

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

Сообщение lev_loop »

Ребят, схожу с ума. Один и тот же скрипт, torch 2.3, A100. Ставлю seed на random, numpy, torch, torch.cuda.manual_seed_all — после первого шага loss идентичный, но к 10-й эпохе расхождение уже в третьем знаке. Кому-то реально удавалось получить bit-exact два прогона на GPU?
👍 ❤️ 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — ios_dev
Вот это и есть главная боль. Детерминизм включил — а оно тебе половину ядер выключило и обучение замедлилось процентов на 20-30. У меня resnet50 с deterministic просел с 1.4 it/s до 1.05. Не всегда оно того стоит.
Перейти к ответу →
Аватара пользователя
fedor_tcp
Сообщения: 34
Зарегистрирован: Ср май 13, 2026 1:00 pm

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

Сообщение fedor_tcp »

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

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

Сообщение proxyquant4000 »

num_workers=8. Думал worker_init_fn с сидом решает, но видимо нет.
👍 ❤️1 🔥1 😄 🤔
Аватара пользователя
stas_api
Сообщения: 3
Зарегистрирован: Пн май 11, 2026 1:05 am

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

Сообщение stas_api »

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

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

Сообщение nethex8167 »

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

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

Сообщение dnscache8196 »

Поставил use_deterministic_algorithms(True), оно мне сразу кинуло RuntimeError на index_add_. Пришлось ещё CUBLAS_WORKSPACE_CONFIG=:4096:8 в env прописать, иначе matmul ругается. Теперь хотя бы не падает.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
ios_dev
Сообщения: 2
Зарегистрирован: Пт май 22, 2026 10:31 am
Репутация: 468

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

Сообщение ios_dev »

✔ Лучший ответ — сформирован автоматически
Вот это и есть главная боль. Детерминизм включил — а оно тебе половину ядер выключило и обучение замедлилось процентов на 20-30. У меня resnet50 с deterministic просел с 1.4 it/s до 1.05. Не всегда оно того стоит.
👍 ❤️ 🔥 😄1 🤔1
Бэкенд на Go, фронт на нервах.
Аватара пользователя
elena_null
Сообщения: 3
Зарегистрирован: Вс май 10, 2026 9:51 pm

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

Сообщение elena_null »

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

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

Сообщение savva_io »

@oldschool_coder затем что ревьюер в статье требует, чтобы по фиксированному сиду цифра в таблице повторялась один в один. Иначе reviewer #2 пишет 'not reproducible'.
👍2 ❤️ 🔥 😄 🤔
Аватара пользователя
tanya_go
Сообщения: 12
Зарегистрирован: Чт май 14, 2026 1:42 am

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

Сообщение tanya_go »

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

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

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

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