Почему результаты обучения PyTorch не воспроизводятся даже с фиксированным seed

Рейтинг: 40.9% · 8 голосов
Machine learning и deep learning: обучение и дообучение моделей, датасеты, PyTorch, TensorFlow, эксперименты, метрики, MLOps и аналитика данных.
Ответить
Аватара пользователя
py_wizard
Сообщения: 28
Зарегистрирован: 19 май 2026, 15:41

Почему результаты обучения PyTorch не воспроизводятся даже с фиксированным seed

Сообщение py_wizard »

Зафиксировал все сиды (torch, numpy, random), но два запуска одного и того же обучения дают разный loss уже к 100 шагу, расхождение в третьем знаке растет. CUDA, A100, torch 2.5. Поставил seed везде, а детерминизма нет. Кто победил эту дичь полностью, не теряя слишком много скорости?
👍 ❤️1 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — depechie
одного сида мало, там целый ритуал. вот что реально нужно на cuda. torch.manual_seed и cuda.manual_seed_all, numpy, random, плюс PYTHONHASHSEED через env до старта питона. worker_init_fn в даталоадере и generator у DataLoader, иначе воркеры шафлят по своему и порядок батчей плывет. это часто и есть твой источник расхождения на 100 шаге, не сами кернелы. torch.use_deterministic_algorithms(True) и …
Перейти к ответу →
Аватара пользователя
mstrbates
Сообщения: 88
Зарегистрирован: 11 май 2026, 00:45

Re: Почему результаты обучения PyTorch не воспроизводятся даже с фиксированным seed

Сообщение mstrbates »

torch.use_deterministic_algorithms(True) ставил? без него куда тебе насыпет недетерминированных кернелов, особенно в свертках и atomic-операциях reduction
👍 ❤️ 🔥 😄1 🤔1
Аватара пользователя
depechie
Сообщения: 67
Зарегистрирован: 11 май 2026, 11:32

Re: Почему результаты обучения PyTorch не воспроизводятся даже с фиксированным seed

Сообщение depechie »

✔ Лучший ответ — сформирован автоматически
одного сида мало, там целый ритуал. вот что реально нужно на cuda.

torch.manual_seed и cuda.manual_seed_all, numpy, random, плюс PYTHONHASHSEED через env до старта питона.
worker_init_fn в даталоадере и generator у DataLoader, иначе воркеры шафлят по своему и порядок батчей плывет. это часто и есть твой источник расхождения на 100 шаге, не сами кернелы.
torch.use_deterministic_algorithms(True) и CUBLAS_WORKSPACE_CONFIG=:4096:8 в окружении, иначе cublas кидает ошибку или молча недетерминирует.
и cudnn.benchmark=False, cudnn.deterministic=True.

после этого расхождения уйдут, но готовься что часть кернелов сядет на медленный детерминированный путь, у меня на резнете было процентов 15 просадки. если amp/bf16 еще и mixed precision добавляет шум через порядок редукций.

и отдельно. если у тебя multi-gpu с ddp то all-reduce порядок и nccl могут давать копеечный разброс который копится. на одной карте сначала добейся детерминизма, потом масштабируй.
👍1 ❤️ 🔥 😄1 🤔1
Аватара пользователя
van100
Сообщения: 19
Зарегистрирован: 16 май 2026, 02:09

Re: Почему результаты обучения PyTorch не воспроизводятся даже с фиксированным seed

Сообщение van100 »

depechie писал(а):worker_init_fn в даталоадере и generator у DataLoader, иначе воркеры шафлят по своему
вот это недооценено сильно. у меня именно даталоадер был виноват, num_workers=8 и каждый со своим рандомом аугментаций. поставил generator и сид воркерам, loss стал бит-в-бит. кернелы были вообще ни при чем
👍 ❤️2 🔥 😄 🤔
Аватара пользователя
kingpaul
Сообщения: 57
Зарегистрирован: 11 май 2026, 12:35

Re: Почему результаты обучения PyTorch не воспроизводятся даже с фиксированным seed

Сообщение kingpaul »

а смысл. в третьем знаке расхождение это шум который на финальную метрику не влияет почти никогда. ты убьешь скорость ради красивых логов
👍1 ❤️ 🔥 😄1 🤔1
Аватара пользователя
radiomaker
Сообщения: 27
Зарегистрирован: 24 май 2026, 00:35

Re: Почему результаты обучения PyTorch не воспроизводятся даже с фиксированным seed

Сообщение radiomaker »

@van100, @скептик не скажи. для дебага регрессий и для A/B сравнения архитектур детерминизм критичен, иначе не отличишь реальный эффект изменения от сидового шума. для прода может и пофиг, для ресерча нет
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
silentsegfault
Сообщения: 10
Зарегистрирован: 18 май 2026, 21:12

Re: Почему результаты обучения PyTorch не воспроизводятся даже с фиксированным seed

Сообщение silentsegfault »

@py_wizard, bf16 сам по себе недетерминизма не добавляет если алгоритмы детерминированные, добавляет именно порядок суммирования в редукциях. не вали все на mixed precision
👍2 ❤️ 🔥 😄1 🤔
Ответить
Поделиться темой: ✈ Telegram VK

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

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

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