Модель в проде даёт разные предсказания на одном входе, кто виноват

Рейтинг: 30.1% · 4 голосов
Machine learning и deep learning: обучение и дообучение моделей, датасеты, PyTorch, TensorFlow, эксперименты, метрики, MLOps и аналитика данных.
Ответить
Аватара пользователя
Planed
Сообщения: 26
Зарегистрирован: 15 май 2026, 17:36

Модель в проде даёт разные предсказания на одном входе, кто виноват

Сообщение Planed »

Модель в проде на абсолютно одинаковом входе иногда выдаёт чуть разные числа, и заказчик это поймал в логах. Классификатор, torch 2.3, инференс на GPU. Один и тот же запрос два раза подряд, и в третьем знаке после запятой расхождение, из-за чего на границе порога класс прыгает. seed зафиксировал, model.eval() стоит. Откуда берётся недетерминизм если веса не меняются и dropout выключен?
👍1 ❤️ 🔥2 😄1 🤔1
✔ Лучший ответ сформирован автоматически — terraform_dev
kernel_veteran писал(а):станет медленнее но воспроизводимо надо добавить что use_deterministic_algorithms(True) на некоторых операциях просто кинет ошибку RuntimeError что детерминированной реализации нет, например на scatter_add или некоторых пулингах. тогда либо CUBLAS_WORKSPACE_CONFIG=:4096:8 в окружении выставляй, либо переписывай проблемный кусок. так что бесплатно щёлкнуть флажок не…
Перейти к ответу →
Аватара пользователя
kernel_veteran
Сообщения: 63
Зарегистрирован: 11 май 2026, 06:09

Re: Модель в проде даёт разные предсказания на одном входе, кто виноват

Сообщение kernel_veteran »

GPU это сам по себе источник. cudnn выбирает алгоритмы свёрток по бенчмарку, и порядок суммирования флоатов на параллельных ядрах не гарантирован. поставь torch.use_deterministic_algorithms(True) и torch.backends.cudnn.deterministic=True, benchmark=False. станет медленнее но воспроизводимо.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
jpearce
Сообщения: 47
Зарегистрирован: 11 май 2026, 23:34

Re: Модель в проде даёт разные предсказания на одном входе, кто виноват

Сообщение jpearce »

@Planed, а батчинг у тебя есть? если на проде динамический батч и твой запрос то один едет, то склеен с другими, то паддинг и порядок редукции меняется, и вуаля третий знак пляшет. очень частая причина, про неё все забывают. проверь не зависит ли выход от размера батча.
👍 ❤️ 🔥1 😄 🤔
Аватара пользователя
kingcnut
Сообщения: 33
Зарегистрирован: 12 май 2026, 07:12

Re: Модель в проде даёт разные предсказания на одном входе, кто виноват

Сообщение kingcnut »

@Planed, в третьем знаке расхождение и из-за этого класс прыгает... так у тебя проблема не в недетерминизме а в том что порог стоит ровно на скоплении примеров. почини калибровку и мёртвую зону сделай, и плевать на шум в 1e-3.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
ama123
Сообщения: 19
Зарегистрирован: 11 май 2026, 09:03

Re: Модель в проде даёт разные предсказания на одном входе, кто виноват

Сообщение ama123 »

jpearce писал(а):если на проде динамический батч и твой запрос то один едет, то склеен с другими
вот это в точку. у нас ровно так и было на triton с dynamic batching. один и тот же вход в батче размера 1 и в батче размера 8 давал расхождение начиная с 4-5 знака, потому что matmul по-разному раскладывается на тензорных ядрах. лечится либо фиксацией max_batch=1 для критичных запросов, либо, что правильнее, не вешать бизнес-логику на сырой флоат у границы.
👍 ❤️1 🔥 😄 🤔
Аватара пользователя
postgres2
Сообщения: 66
Зарегистрирован: 11 май 2026, 17:56

Re: Модель в проде даёт разные предсказания на одном входе, кто виноват

Сообщение postgres2 »

serious? ты на классификаторе с жёстким порогом удивляешься шуму в 1e-3. это не баг это так флоаты работают. либо детерминизм включай и теряй скорость, либо делай гистерезис на пороге
👍1 ❤️1 🔥1 😄1 🤔
Аватара пользователя
terraform_dev
Сообщения: 5
Зарегистрирован: 15 май 2026, 21:26

Re: Модель в проде даёт разные предсказания на одном входе, кто виноват

Сообщение terraform_dev »

✔ Лучший ответ — сформирован автоматически
kernel_veteran писал(а):станет медленнее но воспроизводимо
надо добавить что use_deterministic_algorithms(True) на некоторых операциях просто кинет ошибку RuntimeError что детерминированной реализации нет, например на scatter_add или некоторых пулингах. тогда либо CUBLAS_WORKSPACE_CONFIG=:4096:8 в окружении выставляй, либо переписывай проблемный кусок. так что бесплатно щёлкнуть флажок не выйдет, готовься повозиться. и tf32 не забудь выключить, allow_tf32=False для matmul и cudnn, иначе он сам режет точность ради скорости и это тоже источник пляски в младших знаках. у нас после полного набора (deterministic algos, benchmark off, tf32 off, фикс размера батча) расхождение ушло в ноль бит в бит между запусками. но инференс просел процентов на 15 по латенси, так что взвесь надо ли оно тебе или проще порог починить.
👍2 ❤️ 🔥 😄1 🤔1
Аватара пользователя
cudaandy
Сообщения: 10
Зарегистрирован: 28 май 2026, 11:15

Re: Модель в проде даёт разные предсказания на одном входе, кто виноват

Сообщение cudaandy »

tf32 это вообще отдельная боль, на ампере по дефолту включён и тихо съедает мантиссу. народ потом удивляется почему обучение на A100 и на 3090 чуть разные лоссы дают
👍1 ❤️ 🔥 😄1 🤔
Ответить
Поделиться темой: ✈ Telegram VK

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

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

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