A pure, immutable module system for JAX that replaces PyTorch-style imperative coding with declarative parameter trees.
Parallax is a prototype module system for JAX that introduces immutable parameter trees, eliminating the need for imperative state tracking and initialization patterns common in frameworks like PyTorch. It enables pure functional neural network definitions while maintaining familiar module-based APIs, making it easier to reason about parameter sharing, random number generation, and gradient updates in JAX-based machine learning workflows.
Machine learning researchers and engineers using JAX who want to define neural networks with object-oriented, PyTorch-like modules while adhering to JAX's functional programming principles.
Developers choose Parallax over alternatives because it provides immutable, declarative module definitions that eliminate hidden global state and imperative patterns, making parameter sharing, RNG handling, and gradient updates more explicit and easier to manage within JAX's functional ecosystem.
Parallax is a prototype module system for JAX that introduces immutable parameter trees, eliminating the need for imperative state tracking and initialization patterns common in frameworks like PyTorch. It enables pure functional neural network definitions while maintaining familiar module-based APIs, making it easier to reason about parameter sharing, random number generation, and gradient updates in JAX-based machine learning workflows.
Parameter and ParamInit, making module dependencies clear..initialized() method that binds random seeds..new_state().Parallax embraces pure functional programming principles by making all module state immutable and explicitly managed, avoiding hidden global state while maintaining the usability of object-oriented neural network definitions.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
All parameters and modules are immutable trees, eliminating hidden global state and making state changes explicit, as shown in the threading of RNG and training modes via `.new_state()`.
Uses `Parameter` and `ParamInit` to declare dependencies clearly, reducing initialization boilerplate and imperative patterns common in frameworks like PyTorch.
Designed for JAX's functional paradigm, enabling direct gradient computation and updates on the module tree using standard JAX transformations.
Forward methods mimic PyTorch's API, easing the transition for developers accustomed to object-oriented neural network definitions while maintaining functional purity.
As a prototype, it lacks maturity, with potential for breaking changes, limited features, and insufficient documentation for complex real-world applications.
Requires developers to manage state explicitly through immutable trees and RNG threading, which can be more complex and error-prone than imperative state handling.
Has a smaller community compared to established frameworks, with fewer pre-built modules, tutorials, or integrations, making it harder to adopt for diverse projects.
Parallax is an open-source alternative to the following products: