Mixed Precision Training of Neural ODEs
Elena Celledoni, Brynjulf Owren, Lars Ruthotto, Tianjiao Nicole Yang
TL;DR
This work tackles the instability of naive mixed-precision training for Neural ODEs by introducing a framework that evaluates the neural ODE dynamics in low precision while accumulating states and adjoints in high precision, coupled with a dynamic adjoint scaling scheme. The authors prove that forward, adjoint, and gradient errors remain bounded at $O(u_{\mathrm{L}}) + O(u_{\mathrm{H}}/h)$, and they implement this in the rampde PyTorch package, providing a drop-in replacement with multiple backward variants. Empirically, the approach yields approximately 50% memory reduction and up to 2x speedups across challenging Neural ODE tasks, including CNFs, OT-Flow, and STL-10, while preserving accuracy comparable to single-precision baselines. The results demonstrate that mixed-precision Neural ODEs can scale to larger problems on tensor-core hardware, with practical guidance on when and how to apply scaling (bf16/float16) to balance stability, speed, and memory usage.
Abstract
Exploiting low-precision computations has become a standard strategy in deep learning to address the growing computational costs imposed by ever larger models and datasets. However, naively performing all computations in low precision can lead to roundoff errors and instabilities. Therefore, mixed precision training schemes usually store the weights in high precision and use low-precision computations only for whitelisted operations. Despite their success, these principles are currently not reliable for training continuous-time architectures such as neural ordinary differential equations (Neural ODEs). This paper presents a mixed precision training framework for neural ODEs, combining explicit ODE solvers with a custom backpropagation scheme, and demonstrates its effectiveness across a range of learning tasks. Our scheme uses low-precision computations for evaluating the velocity, parameterized by the neural network, and for storing intermediate states, while stability is provided by a custom dynamic adjoint scaling and by accumulating the solution and gradients in higher precision. These contributions address two key challenges in training neural ODE: the computational cost of repeated network evaluations and the growth of memory requirements with the number of time steps or layers. Along with the paper, we publish our extendable, open-source PyTorch package rampde, whose syntax resembles that of leading packages to provide a drop-in replacement in existing codes. We demonstrate the reliability and effectiveness of our scheme using challenging test cases and on neural ODE applications in image classification and generative models, achieving approximately 50% memory reduction and up to 2x speedup while maintaining accuracy comparable to single-precision training.
