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: Bit-level Reproducible Deep Learning Training and Inference

基本信息

摘要

深度学习中的非确定性和不可重现性问题导致跨运行和跨平台的结果不一致。这些问题源于两个根源:随机数生成和浮点运算。虽然随机性可以通过确定性配置控制,但浮点不一致性问题仍未得到很好解决。为此,作者引入RepDL,这是一个开源库,通过强制执行正确舍入和顺序不变性来确保跨不同计算环境的确定性和位级可重现的深度学习训练和推理。

研究背景与动机

问题定义

深度学习面临两个关键问题:

  1. 非确定性(Non-determinism): 相同任务在相同输入和系统下重复执行产生不同结果(运行间不一致)
  2. 不可重现性(Non-reproducibility): 相同任务在不同系统上执行产生不同结果(跨平台不一致)

问题重要性

这些问题导致:

  • 模型在生产环境中部署和调试复杂化
  • 跨平台应用的正确性受损
  • 发表结果的可信度下降
  • 敏感领域AI系统的可信性受影响

现有方法局限性

虽然业界和学术界提出了许多解决方案,但数值不一致性仍是深度学习中的开放问题。现有方法主要关注随机数生成器的控制,但对浮点计算问题的解决不够充分。

研究动机

作者识别出问题的两个根源:随机数生成器和浮点计算。相比已有较好解决方案的随机数问题,浮点计算问题更加复杂,需要专门的解决方案。

核心贡献

  1. 问题分析:系统性地分析了深度学习中非确定性和不可重现性的根源,将其归类为随机数生成和浮点计算两大类
  2. 设计原则:提出了两个核心设计原则:正确舍入(correct rounding)和顺序不变性(order invariance)
  3. RepDL库:开发了开源库RepDL,实现了位级可重现的深度学习训练和推理
  4. PyTorch兼容:提供与PyTorch兼容的API,支持深度学习操作、可微函数、神经网络模块和优化器

方法详解

问题根源分析

1. 随机数生成器

  • 用途:权重初始化、数据洗牌、dropout正则化、数据增强等
  • 问题:不同种子、不一致的RNG算法、多线程环境中的非确定性调用序列
  • 解决方案:采用可重现的RNG算法(如MT19937),线程安全实现,固定基础种子

2. 浮点计算

更复杂的问题,分为两个子类:

2.1 基本操作精度

  • 不同系统间基本数学函数实现精度不同
  • 硬件指令精度差异(如x86 CPU间RCP指令精度变化)

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
  • NVIDIA A100 GPU有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. 兼容性良好:与PyTorch的API兼容性降低了使用门槛
  5. 开源贡献:提供开源实现,促进社区发展

不足

  1. 实验验证有限:缺乏大规模实验验证和性能基准测试
  2. 理论分析不足:对性能损失的理论分析不够深入
  3. 适用范围受限:仅支持float32,限制了现代深度学习应用
  4. 对比实验缺失:缺乏与其他可重现性解决方案的对比

影响力

  1. 学术价值:为深度学习可重现性研究提供了重要参考
  2. 实用价值:为需要严格可重现性的应用场景提供解决方案
  3. 行业影响:可能推动深度学习框架对可重现性的重视

适用场景

  1. 科学研究:需要严格可重现结果的研究项目
  2. 金融AI:对数值一致性要求极高的金融应用
  3. 医疗AI:需要确定性结果的医疗诊断系统
  4. 模型验证:跨平台模型部署的一致性验证

参考文献

论文引用了15篇相关文献,涵盖:

  • 可重现浮点求和算法
  • 深度学习可重现性研究
  • 正确舍入数学库
  • IEEE浮点标准
  • 深度学习中随机性和不确定性的分析

总体评价:这是一篇针对深度学习可重现性问题的实用性研究论文。虽然在实验验证和理论分析方面有所不足,但其提出的解决方案具有重要的实用价值,特别是对于需要严格数值一致性的应用场景。RepDL库的开源发布为社区提供了有价值的工具,有望推动深度学习可重现性研究的发展。