Non-determinism and non-reproducibility present significant challenges in deep learning, leading to inconsistent results across runs and platforms. These issues stem from two origins: random number generation and floating-point computation. While randomness can be controlled through deterministic configurations, floating-point inconsistencies remain largely unresolved. To address this, we introduce RepDL, an open-source library that ensures deterministic and bitwise-reproducible deep learning training and inference across diverse computing environments. RepDL achieves this by enforcing correct rounding and order invariance in floating-point computation. The source code is available at https://github.com/microsoft/RepDL .
- ID статьи: 2510.09180
- Название: RepDL: Bit-level Reproducible Deep Learning Training and Inference
- Авторы: Peichen Xie, Xian Zhang, Shuo Chen (Microsoft Research)
- Классификация: cs.LG cs.SE
- Дата публикации: 10 октября 2024 г.
- Ссылка на статью: https://arxiv.org/abs/2510.09180
- Ссылка на код: https://github.com/microsoft/RepDL
Недетерминированность и невоспроизводимость в глубоком обучении приводят к несогласованности результатов между запусками и платформами. Эти проблемы возникают из двух источников: генерация случайных чисел и арифметика с плавающей точкой. Хотя случайность можно контролировать с помощью детерминированной конфигурации, проблема несогласованности с плавающей точкой остаётся нерешённой. Для этого авторы представляют RepDL — библиотеку с открытым исходным кодом, которая обеспечивает детерминированное и воспроизводимое на уровне битов обучение и вывод глубокого обучения в различных вычислительных средах путём принудительного применения правильного округления и инвариантности порядка.
Глубокое обучение сталкивается с двумя ключевыми проблемами:
- Недетерминированность: Повторное выполнение одной и той же задачи с одинаковыми входными данными и системой даёт разные результаты (несогласованность между запусками)
- Невоспроизводимость: Выполнение одной и той же задачи на разных системах даёт разные результаты (несогласованность между платформами)
Эти проблемы приводят к:
- Усложнению развёртывания и отладки моделей в производственной среде
- Нарушению корректности кроссплатформенных приложений
- Снижению достоверности опубликованных результатов
- Влиянию на надёжность систем ИИ в критических областях
Хотя промышленность и академические круги предложили множество решений, численная несогласованность остаётся открытой проблемой в глубоком обучении. Существующие методы в основном сосредоточены на контроле генераторов случайных чисел, но недостаточно решают проблемы вычислений с плавающей точкой.
Авторы выявили два источника проблемы: генераторы случайных чисел и вычисления с плавающей точкой. По сравнению с уже хорошо решённой проблемой случайных чисел, проблема вычислений с плавающей точкой более сложна и требует специализированного решения.
- Анализ проблемы: Систематический анализ источников недетерминированности и невоспроизводимости в глубоком обучении, классифицированных на две категории: генерация случайных чисел и вычисления с плавающей точкой
- Принципы проектирования: Предложены два основных принципа проектирования: правильное округление (correct rounding) и инвариантность порядка (order invariance)
- Библиотека RepDL: Разработана библиотека с открытым исходным кодом RepDL, реализующая воспроизводимое на уровне битов обучение и вывод глубокого обучения
- Совместимость с PyTorch: Предоставляет совместимый с PyTorch API, поддерживающий операции глубокого обучения, дифференцируемые функции, модули нейронных сетей и оптимизаторы
- Применение: Инициализация весов, перемешивание данных, регуляризация dropout, увеличение данных
- Проблемы: Различные семена, несогласованные алгоритмы RNG, недетерминированная последовательность вызовов в многопоточной среде
- Решение: Использование воспроизводимых алгоритмов RNG (например, MT19937), потокобезопасная реализация, фиксированное базовое семя
Более сложная проблема, разделённая на две подкатегории:
2.1 Точность базовых операций
- Различная точность реализации базовых математических функций между системами
- Различия в точности аппаратных инструкций (например, вариации инструкции RCP на процессорах x86)
2.2 Порядок вычислений
- Чувствительность к порядку из-за неассоциативности операций с плавающей точкой
- Недетерминированные факторы: атомарные операции, динамические пути кода, динамическая пакетная обработка и кэширование
- Факторы невоспроизводимости: вариативность программного обеспечения, оптимизация компилятора
- Соответствие принципу правильного округления стандарта IEEE-754
- Использование стандартных правил округления IEEE-754 для округления результатов с бесконечной точностью
- Устранение неоднозначности численной точности
- Сохранение инвариантности порядка для комбинаций базовых операций
- Использование одного типа базовых операций и одного порядка для реализации каждой операции
- Назначение различных API для различных порядков вычислений
- Использование математических библиотек с правильным округлением или алгоритмов высокой точности
- Реализация версий с правильным округлением для арифметических операций, квадратного корня, экспоненциальной функции, логарифмической функции и т.д.
- Избежание различий в реализации, зависящих от оборудования
Предоставляются два порядка суммирования:
- Последовательное суммирование: версия по умолчанию, дружественна к кэшу, подходит для большинства случаев
- Попарное суммирование: альтернативная версия, увеличивающая параллелизм
Для анализа полносвязных слоёв и двумерных слоёв свёртки:
- Полносвязный слой:
t_fc = B × M независимых задач суммирования, каждая суммирует n_fc = N элементов - Слой свёртки:
t_conv = B × O × W × H независимых задач суммирования, каждая суммирует n_conv = I × K_w × K_h элементов
- Явное определение порядка вычислений с помощью графика вычислений
- Назначение различных имён API для различных графиков вычислений одной и той же функции
- Избежание преобразований, математически эквивалентных, но дающих различные результаты с плавающей точкой
- Отключение параметров, приводящих к небезопасным математическим оптимизациям
- Включение параметра сжатия выражений с плавающей точкой (операции FMA)
- Типы данных: Поддержка одинарной точности (float32)
- Совместимость: Предоставление совместимого с PyTorch API
- Поддержка операций: Операции глубокого обучения, дифференцируемые функции, модули нейронных сетей, оптимизаторы
На примере ResNet-50:
- Слои свёртки доминируют в сложности вычислений
- Для нескольких слоёв свёртки
t_conv = B × 256 × 56 × 56 = B × 802816 - GPU NVIDIA A100 имеет 6912 ядер CUDA
- Даже при B=1 количество ядер намного меньше t_conv, поэтому последовательное суммирование эффективно
RepDL обеспечивает результаты, согласованные на уровне битов:
- Согласованность при многократном выполнении на одной системе
- Согласованность между различными системами CPU или GPU
- Полная воспроизводимость процесса обучения и вывода
- Переход с недетерминированной библиотеки на RepDL приводит к небольшому снижению производительности
- Деградация производительности приемлема, будущие оптимизации могут её смягчить
Статья ссылается на несколько областей связанных исследований:
- Алгоритмы воспроизводимого суммирования с плавающей точкой: Алгоритмы суммирования, инвариантные к порядку, Ahrens и др.
- Воспроизводимость глубокого обучения: Работы Chen и др. по обучению воспроизводимых моделей глубокого обучения
- Математические библиотеки с правильным округлением: Библиотека MPFR и высокопроизводительные математические библиотеки с правильным округлением
- Анализ численной точности: Исследования точности математических функций при различных точностях
RepDL, решая проблемы вычислений с плавающей точкой, обеспечивает основу для надёжной разработки моделей и согласованного развёртывания моделей. Библиотека успешно реализует детерминированное и воспроизводимое глубокое обучение в различных вычислительных средах.
- Недостаточная оптимизация производительности: Текущая версия не полностью оптимизирована, существует потеря производительности
- Ограниченная поддержка точности: Поддерживается только одинарная точность (float32), поддержка типов низкой точности представляет вызов
- Специфичность оборудования: Нестандартные и специфичные для оборудования характеристики вычислений низкой точности (например, Tensor Cores)
- Дальнейшая оптимизация производительности для снижения деградации производительности
- Поддержка типов данных с плавающей точкой низкой точности
- Стандартизация численного поведения вычислений низкой точности
- Расширение вкладов сообщества и функциональности
- Точное выявление проблемы: Систематический анализ источников проблем воспроизводимости в глубоком обучении
- Практическое решение: Предоставление осуществимого инженерного решения, а не только теоретического анализа
- Ясные принципы проектирования: Два принципа правильного округления и инвариантности порядка просты и эффективны
- Хорошая совместимость: Совместимость API с PyTorch снижает барьер входа
- Вклад в открытый исходный код: Предоставление реализации с открытым исходным кодом способствует развитию сообщества
- Ограниченная экспериментальная проверка: Отсутствие крупномасштабной экспериментальной проверки и тестов производительности
- Недостаточный теоретический анализ: Теоретический анализ потери производительности недостаточно глубок
- Ограниченная область применения: Поддержка только float32 ограничивает применение в современном глубоком обучении
- Отсутствие сравнительных экспериментов: Отсутствие сравнения с другими решениями для воспроизводимости
- Академическая ценность: Предоставление важного справочного материала для исследований воспроизводимости глубокого обучения
- Практическая ценность: Предоставление решения для сценариев приложений, требующих строгой воспроизводимости
- Влияние на индустрию: Может способствовать повышению внимания фреймворков глубокого обучения к воспроизводимости
- Научные исследования: Исследовательские проекты, требующие строгих воспроизводимых результатов
- Финансовый ИИ: Финансовые приложения с экстремально высокими требованиями к численной согласованности
- Медицинский ИИ: Системы медицинской диагностики, требующие детерминированных результатов
- Проверка моделей: Проверка согласованности при кроссплатформенном развёртывании моделей
Статья ссылается на 15 связанных работ, охватывающих:
- Алгоритмы воспроизводимого суммирования с плавающей точкой
- Исследования воспроизводимости глубокого обучения
- Математические библиотеки с правильным округлением
- Стандарт IEEE для плавающей точки
- Анализ случайности и недетерминированности в глубоком обучении
Общая оценка: Это практическая исследовательская статья, посвящённая проблеме воспроизводимости в глубоком обучении. Хотя она имеет некоторые недостатки в экспериментальной проверке и теоретическом анализе, предложенное решение имеет важную практическую ценность, особенно для сценариев приложений, требующих строгой численной согласованности. Выпуск библиотеки RepDL с открытым исходным кодом предоставляет сообществу ценный инструмент и, как ожидается, будет способствовать развитию исследований воспроизводимости в глубоком обучении.