Потерял неделю из-за невоспроизводимого обучения, у всех так с недетерминизмом в torch

Рейтинг: 51% · 4 голосов
Machine learning и deep learning: обучение и дообучение моделей, датасеты, PyTorch, TensorFlow, эксперименты, метрики, MLOps и аналитика данных.
Ответить
Аватара пользователя
haskell_chan
Сообщения: 22
Зарегистрирован: 14 май 2026, 13:46

Потерял неделю из-за невоспроизводимого обучения, у всех так с недетерминизмом в torch

Сообщение haskell_chan »

Зафиксировал все сиды, выставил seed на torch numpy random, а две прогонки одного и того же скрипта дают разный val accuracy, расхождение до 1.5 процента. На ревью модель не воспроизводится, заказчик не верит метрикам. Это вообще лечится или с GPU так и живём? torch 2.5, cuda 12.4, одна 4090.
👍 ❤️ 🔥 😄 🤔1
✔ Лучший ответ сформирован автоматически — proxmoxaddict
Прошёл этот ад когда сдавал модель в банк под аудит, там воспроизводимость это требование, не каприз. Минимальный набор который реально даёт бит в бит на одной железке. Сиды питона, numpy, torch и cuda все четыре. random.seed, np.random.seed, torch.manual_seed, torch.cuda.manual_seed_all. Дальше cudnn. torch.backends.cudnn.deterministic = True и torch.backends.cudnn.benchmark = False. Benchmark в…
Перейти к ответу →
Аватара пользователя
seniorsamurai
Сообщения: 44
Зарегистрирован: 15 май 2026, 19:29

Re: Потерял неделю из-за невоспроизводимого обучения, у всех так с недетерминизмом в torch

Сообщение seniorsamurai »

одного сида мало. cudnn бенчмарк подбирает алгоритмы недетерминированно, плюс atomics в некоторых ядрах дают разный порядок суммирования флоатов. порядок сложения float меняется, и вот тебе уже другой бит в третьем знаке, который за эпохи раскачивается в проценты
👍 ❤️1 🔥1 😄 🤔1
Аватара пользователя
deepghost
Сообщения: 10
Зарегистрирован: 14 май 2026, 23:56

Re: Потерял неделю из-за невоспроизводимого обучения, у всех так с недетерминизмом в torch

Сообщение deepghost »

torch.use_deterministic_algorithms(True) ставил? без него всё остальное бесполезно
👍1 ❤️1 🔥1 😄 🤔
Аватара пользователя
infern
Сообщения: 87
Зарегистрирован: 11 май 2026, 10:23

Re: Потерял неделю из-за невоспроизводимого обучения, у всех так с недетерминизмом в torch

Сообщение infern »

deepghost писал(а):torch.use_deterministic_algorithms(True) ставил?
ставил, оно мне упало с ошибкой что для одного из слоёв нет детерминированной реализации. оказалось это был adaptive pooling, заменил на обычный и пошло. так что да, оно ещё и заставляет переписывать модель местами
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
proxmoxaddict
Сообщения: 6
Зарегистрирован: 20 май 2026, 00:57

Re: Потерял неделю из-за невоспроизводимого обучения, у всех так с недетерминизмом в torch

Сообщение proxmoxaddict »

✔ Лучший ответ — сформирован автоматически
Прошёл этот ад когда сдавал модель в банк под аудит, там воспроизводимость это требование, не каприз. Минимальный набор который реально даёт бит в бит на одной железке.

Сиды питона, numpy, torch и cuda все четыре. random.seed, np.random.seed, torch.manual_seed, torch.cuda.manual_seed_all.

Дальше cudnn. torch.backends.cudnn.deterministic = True и torch.backends.cudnn.benchmark = False. Benchmark в True это главный скрытый источник дрейфа, он каждый запуск выбирает быстрейший алгоритм свёртки и они дают чуть разный результат.

torch.use_deterministic_algorithms(True), и переменную окружения CUBLAS_WORKSPACE_CONFIG=:4096:8 обязательно, иначе cublas в детерминированном режиме просто кинет исключение.

DataLoader. num_workers больше нуля без worker_init_fn и без фиксированного generator даёт разный порядок и разную аугментацию. Прокинь generator с сидом в DataLoader и seed_worker в worker_init_fn.

И отдельно, воспроизводимость только в пределах одной и той же GPU, драйвера и версии torch. Перенёс на другую карту или обновил cuda, числа поплывут, это нормально и неизбежно. Цена детерминизма примерно 10-25 процентов скорости обучения, benchmark=False больно бьёт по свёрткам. Поэтому держу два режима, дев гоняю быстро без детерминизма, финальную сдаточную прогонку в полном детерминированном. После этого банк смог воспроизвести метрики у себя бит в бит.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
kotlin123
Сообщения: 46
Зарегистрирован: 12 май 2026, 14:33

Re: Потерял неделю из-за невоспроизводимого обучения, у всех так с недетерминизмом в torch

Сообщение kotlin123 »

proxmoxaddict писал(а):воспроизводимость только в пределах одной и той же GPU, драйвера и версии torch
вот про это все забывают и потом удивляются. у меня A100 и 4090 на одном коде дают разный лосс на третьем знаке, и это не баг. разная микроархитектура, разные ядра, разный порядок редукции. бит в бит между разным железом не бывает в принципе
👍 ❤️1 🔥 😄 🤔
Аватара пользователя
kingpaul
Сообщения: 57
Зарегистрирован: 11 май 2026, 12:35

Re: Потерял неделю из-за невоспроизводимого обучения, у всех так с недетерминизмом в torch

Сообщение kingpaul »

1.5 процента это многовато для просто недетерминизма имхо. у меня после фиксации остаётся болтанка в районе 0.1-0.2. если у тебя полтора, я бы ещё на дропаут и аугментации посмотрел, может там свой рандом не засижен
👍 ❤️2 🔥 😄 🤔
Аватара пользователя
GpuGuru
Сообщения: 12
Зарегистрирован: 19 май 2026, 09:46

Re: Потерял неделю из-за невоспроизводимого обучения, у всех так с недетерминизмом в torch

Сообщение GpuGuru »

@anonymous плюсую к предыдущему, полтора процента это уже не шум флоатов а скорее незафиксированный источник рандома где-то в пайплайне. скорее всего аугментация или какой-нибудь random split датасета без сида. чистый недетерминизм cuda столько не даёт
👍 ❤️ 🔥1 😄1 🤔
Ответить
Поделиться темой: ✈ Telegram VK

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

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

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