Руслан Черкас, архитектор МедТех-компании СберЗдоровье, опубликовал на Habr разбор одного из устойчивых мифов в разработке ИИ-систем: якобы нейросети по природе своей недетерминированы и могут выдавать разные результаты при одинаковых условиях. По его мнению, это заблуждение, которое прикрывает конкретные инженерные ошибки.
Проблема воспроизводимости особенно остро стоит в медицинских и финансовых системах, где расхождение результатов между запусками недопустимо. Именно в таких контекстах разработчики чаще всего апеллируют к «природной случайности» моделей, снимая с себя ответственность за некорректную реализацию.
Черкас формулирует базовый принцип через уравнение r=f(a,w): при фиксированном векторе входных данных (a) и фиксированных весах (w) нейросеть обязана возвращать одно и то же значение (r). Это справедливо для любой архитектуры — LLM, CNN, RNN и гибридных вариантов. Для рекуррентных сетей, где результат зависит от предыдущего состояния (r1=f(a,w,r0)), детерминированность сохраняется при фиксации r0.
Недетерминированность делится на четыре типа: входные данные, аппаратура, программное обеспечение, алгоритмы.
Автор разбирает пять категорий возражений. Первое — случайные начальные веса: они фиксируются при задании начальных условий, никакой внутренней случайности без изменения аргументов нет. Второе — аппаратная нестабильность (шум, скачки напряжения): при идентичном железе и точности вычислений она исключена, а её наличие означает дефект оборудования. Третье — различия в версиях библиотек и кэшировании: при идентичном окружении результаты воспроизводимы, иначе это программная ошибка. Четвёртое — параллельные вычисления и гонки потоков: если порядок операций «плавает» и приводит к тому, что (x+y)+z≠x+(y+z), реализация некорректна. Пятое — квантовые эффекты и внешние факторы: любой внешний параметр может влиять на результат только через явные аргументы модели, иначе это ошибка архитектуры.
Для устранения недетерминированности Черкас предлагает последовательный алгоритм: признать проблему, классифицировать её источник по одной из четырёх категорий (входные данные, аппаратура, ПО, алгоритм), затем устранить. Конкретные меры включают фиксацию seed для генераторов случайных чисел, проверку целостности оборудования, унификацию версий библиотек и пересмотр порядка параллельных операций.
Отдельно автор оговаривает случай намеренной случайности — например, в генеративных моделях. Она допустима, но должна быть явно передана через аргументы с возможностью воспроизведения при идентичных параметрах. Модель при прочих равных по-прежнему обязана быть детерминированной.
Позиция Черкаса сводится к тому, что недетерминированность — не архитектурная особенность, а индикатор инженерного долга. Принятие её как нормы снижает качество тестирования, затрудняет отладку и создаёт риски в production-системах, особенно в регулируемых отраслях вроде медицины.


