2025-11-10T02:52:47.563865

RepDL: Bit-level Reproducible Deep Learning Training and Inference

Xie, Zhang, Chen
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 .
academic

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 — библиотеку с открытым исходным кодом, которая обеспечивает детерминированное и воспроизводимое на уровне битов обучение и вывод глубокого обучения в различных вычислительных средах путём принудительного применения правильного округления и инвариантности порядка.

Исследовательский контекст и мотивация

Определение проблемы

Глубокое обучение сталкивается с двумя ключевыми проблемами:

  1. Недетерминированность: Повторное выполнение одной и той же задачи с одинаковыми входными данными и системой даёт разные результаты (несогласованность между запусками)
  2. Невоспроизводимость: Выполнение одной и той же задачи на разных системах даёт разные результаты (несогласованность между платформами)

Значимость проблемы

Эти проблемы приводят к:

  • Усложнению развёртывания и отладки моделей в производственной среде
  • Нарушению корректности кроссплатформенных приложений
  • Снижению достоверности опубликованных результатов
  • Влиянию на надёжность систем ИИ в критических областях

Ограничения существующих методов

Хотя промышленность и академические круги предложили множество решений, численная несогласованность остаётся открытой проблемой в глубоком обучении. Существующие методы в основном сосредоточены на контроле генераторов случайных чисел, но недостаточно решают проблемы вычислений с плавающей точкой.

Исследовательская мотивация

Авторы выявили два источника проблемы: генераторы случайных чисел и вычисления с плавающей точкой. По сравнению с уже хорошо решённой проблемой случайных чисел, проблема вычислений с плавающей точкой более сложна и требует специализированного решения.

Основные вклады

  1. Анализ проблемы: Систематический анализ источников недетерминированности и невоспроизводимости в глубоком обучении, классифицированных на две категории: генерация случайных чисел и вычисления с плавающей точкой
  2. Принципы проектирования: Предложены два основных принципа проектирования: правильное округление (correct rounding) и инвариантность порядка (order invariance)
  3. Библиотека RepDL: Разработана библиотека с открытым исходным кодом RepDL, реализующая воспроизводимое на уровне битов обучение и вывод глубокого обучения
  4. Совместимость с PyTorch: Предоставляет совместимый с PyTorch API, поддерживающий операции глубокого обучения, дифференцируемые функции, модули нейронных сетей и оптимизаторы

Подробное описание методов

Анализ источников проблем

1. Генератор случайных чисел

  • Применение: Инициализация весов, перемешивание данных, регуляризация dropout, увеличение данных
  • Проблемы: Различные семена, несогласованные алгоритмы RNG, недетерминированная последовательность вызовов в многопоточной среде
  • Решение: Использование воспроизводимых алгоритмов RNG (например, MT19937), потокобезопасная реализация, фиксированное базовое семя

2. Вычисления с плавающей точкой

Более сложная проблема, разделённая на две подкатегории:

2.1 Точность базовых операций

  • Различная точность реализации базовых математических функций между системами
  • Различия в точности аппаратных инструкций (например, вариации инструкции RCP на процессорах x86)

2.2 Порядок вычислений

  • Чувствительность к порядку из-за неассоциативности операций с плавающей точкой
  • Недетерминированные факторы: атомарные операции, динамические пути кода, динамическая пакетная обработка и кэширование
  • Факторы невоспроизводимости: вариативность программного обеспечения, оптимизация компилятора

Принципы проектирования RepDL

Принцип 1: Правильное округление базовых операций

  • Соответствие принципу правильного округления стандарта IEEE-754
  • Использование стандартных правил округления IEEE-754 для округления результатов с бесконечной точностью
  • Устранение неоднозначности численной точности

Принцип 2: Инвариантность порядка для других операций

  • Сохранение инвариантности порядка для комбинаций базовых операций
  • Использование одного типа базовых операций и одного порядка для реализации каждой операции
  • Назначение различных API для различных порядков вычислений

Конкретная реализация

1. Обеспечение правильного округления

  • Использование математических библиотек с правильным округлением или алгоритмов высокой точности
  • Реализация версий с правильным округлением для арифметических операций, квадратного корня, экспоненциальной функции, логарифмической функции и т.д.
  • Избежание различий в реализации, зависящих от оборудования

2. Фиксирование порядка суммирования

Предоставляются два порядка суммирования:

  • Последовательное суммирование: версия по умолчанию, дружественна к кэшу, подходит для большинства случаев
  • Попарное суммирование: альтернативная версия, увеличивающая параллелизм

Для анализа полносвязных слоёв и двумерных слоёв свёртки:

  • Полносвязный слой: t_fc = B × M независимых задач суммирования, каждая суммирует n_fc = N элементов
  • Слой свёртки: t_conv = B × O × W × H независимых задач суммирования, каждая суммирует n_conv = I × K_w × K_h элементов

3. Определение графика вычислений

  • Явное определение порядка вычислений с помощью графика вычислений
  • Назначение различных имён API для различных графиков вычислений одной и той же функции
  • Избежание преобразований, математически эквивалентных, но дающих различные результаты с плавающей точкой

4. Параметры компиляции

  • Отключение параметров, приводящих к небезопасным математическим оптимизациям
  • Включение параметра сжатия выражений с плавающей точкой (операции 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 приводит к небольшому снижению производительности
  • Деградация производительности приемлема, будущие оптимизации могут её смягчить

Связанные работы

Статья ссылается на несколько областей связанных исследований:

  1. Алгоритмы воспроизводимого суммирования с плавающей точкой: Алгоритмы суммирования, инвариантные к порядку, Ahrens и др.
  2. Воспроизводимость глубокого обучения: Работы Chen и др. по обучению воспроизводимых моделей глубокого обучения
  3. Математические библиотеки с правильным округлением: Библиотека MPFR и высокопроизводительные математические библиотеки с правильным округлением
  4. Анализ численной точности: Исследования точности математических функций при различных точностях

Заключение и обсуждение

Основные выводы

RepDL, решая проблемы вычислений с плавающей точкой, обеспечивает основу для надёжной разработки моделей и согласованного развёртывания моделей. Библиотека успешно реализует детерминированное и воспроизводимое глубокое обучение в различных вычислительных средах.

Ограничения

  1. Недостаточная оптимизация производительности: Текущая версия не полностью оптимизирована, существует потеря производительности
  2. Ограниченная поддержка точности: Поддерживается только одинарная точность (float32), поддержка типов низкой точности представляет вызов
  3. Специфичность оборудования: Нестандартные и специфичные для оборудования характеристики вычислений низкой точности (например, Tensor Cores)

Направления будущих исследований

  1. Дальнейшая оптимизация производительности для снижения деградации производительности
  2. Поддержка типов данных с плавающей точкой низкой точности
  3. Стандартизация численного поведения вычислений низкой точности
  4. Расширение вкладов сообщества и функциональности

Углубленная оценка

Преимущества

  1. Точное выявление проблемы: Систематический анализ источников проблем воспроизводимости в глубоком обучении
  2. Практическое решение: Предоставление осуществимого инженерного решения, а не только теоретического анализа
  3. Ясные принципы проектирования: Два принципа правильного округления и инвариантности порядка просты и эффективны
  4. Хорошая совместимость: Совместимость API с PyTorch снижает барьер входа
  5. Вклад в открытый исходный код: Предоставление реализации с открытым исходным кодом способствует развитию сообщества

Недостатки

  1. Ограниченная экспериментальная проверка: Отсутствие крупномасштабной экспериментальной проверки и тестов производительности
  2. Недостаточный теоретический анализ: Теоретический анализ потери производительности недостаточно глубок
  3. Ограниченная область применения: Поддержка только float32 ограничивает применение в современном глубоком обучении
  4. Отсутствие сравнительных экспериментов: Отсутствие сравнения с другими решениями для воспроизводимости

Влияние

  1. Академическая ценность: Предоставление важного справочного материала для исследований воспроизводимости глубокого обучения
  2. Практическая ценность: Предоставление решения для сценариев приложений, требующих строгой воспроизводимости
  3. Влияние на индустрию: Может способствовать повышению внимания фреймворков глубокого обучения к воспроизводимости

Сценарии применения

  1. Научные исследования: Исследовательские проекты, требующие строгих воспроизводимых результатов
  2. Финансовый ИИ: Финансовые приложения с экстремально высокими требованиями к численной согласованности
  3. Медицинский ИИ: Системы медицинской диагностики, требующие детерминированных результатов
  4. Проверка моделей: Проверка согласованности при кроссплатформенном развёртывании моделей

Библиография

Статья ссылается на 15 связанных работ, охватывающих:

  • Алгоритмы воспроизводимого суммирования с плавающей точкой
  • Исследования воспроизводимости глубокого обучения
  • Математические библиотеки с правильным округлением
  • Стандарт IEEE для плавающей точки
  • Анализ случайности и недетерминированности в глубоком обучении

Общая оценка: Это практическая исследовательская статья, посвящённая проблеме воспроизводимости в глубоком обучении. Хотя она имеет некоторые недостатки в экспериментальной проверке и теоретическом анализе, предложенное решение имеет важную практическую ценность, особенно для сценариев приложений, требующих строгой численной согласованности. Выпуск библиотеки RepDL с открытым исходным кодом предоставляет сообществу ценный инструмент и, как ожидается, будет способствовать развитию исследований воспроизводимости в глубоком обучении.