Rose: Composable Autodiff for the Interactive Web
Sam Estep, Wode Ni, Raven Rothkopf, Joshua Sunshine
TL;DR
Rose addresses the challenge of interactive, web-based differentiation for scalar programs by blending tracing and program transformation into a lightweight, WebAssembly-backed engine. It enables developers to write differentiable computations in JavaScript with explicit composable function boundaries, producing small, fast code while preserving expressiveness through metaprogramming. The approach is demonstrated through ported differentiable physics simulations and an optimization-based diagramming application, where Rose yields orders-of-magnitude improvements over TensorFlow.js on the web. The work also introduces Rose as an open-source tool and outlines plans to extend toward WebGPU backends, signaling practical impact for web-based differentiable interactive experiences.
Abstract
Reverse-mode automatic differentiation (autodiff) has been popularized by deep learning, but its ability to compute gradients is also valuable for interactive use cases such as bidirectional computer-aided design, embedded physics simulations, visualizing causal inference, and more. Unfortunately, the web is ill-served by existing autodiff frameworks, which use autodiff strategies that perform poorly on dynamic scalar programs, and pull in heavy dependencies that would result in unacceptable webpage sizes. This work introduces Rose, a lightweight autodiff framework for the web using a new hybrid approach to reverse-mode autodiff, blending conventional tracing and transformation techniques in a way that uses the host language for metaprogramming while also allowing the programmer to explicitly define reusable functions that comprise a larger differentiable computation. We demonstrate the value of the Rose design by porting two differentiable physics simulations, and evaluate its performance on an optimization-based diagramming application, showing Rose outperforming the state-of-the-art in web-based autodiff by multiple orders of magnitude.
