A comprehensive, high-performance library implementing 30+ Evolution Strategies in JAX for scalable optimization on modern hardware.
evosax is a Python library that implements a wide range of Evolution Strategies (ES) using JAX. It provides a high-performance, unified API for gradient-free optimization, enabling scalable execution on modern hardware accelerators like GPUs and TPUs. The library solves the problem of inefficient, asynchronous neuroevolution implementations by leveraging JAX's compilation and vectorization capabilities.
Researchers and practitioners in machine learning and optimization who need scalable, hardware-accelerated evolutionary algorithms for black-box optimization, reinforcement learning, or neuroevolution tasks.
Developers choose evosax for its comprehensive collection of 30+ ES algorithms, seamless integration with JAX's transformation primitives for massive speedups, and production-ready implementation that eliminates the overhead of traditional distributed ES setups.
Evolution Strategies in JAX 🦎
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements over 30 classic and modern evolution strategies, from CMA-ES to Diffusion Evolution, providing a comprehensive toolkit for diverse optimization scenarios as listed in the README.
Leverages JAX's jit, vmap, and lax.scan transformations for compiled, high-throughput execution on GPUs and TPUs, eliminating traditional distributed implementation overhead.
Follows a consistent ask-eval-tell cycle across all strategies, making it easy to switch algorithms without restructuring code, as demonstrated in the basic usage examples.
Includes utilities like ClipUp, fitness shaping, and restart strategies, backed by thorough testing, documentation, and examples for real-world research and deployment.
Tightly coupled with JAX, requiring users to adopt JAX for their entire workflow, which can be a barrier for projects using other deep learning frameworks like PyTorch or TensorFlow.
Installing and configuring JAX for specific hardware accelerators like TPUs can be non-trivial, adding initial setup overhead compared to pure Python ES libraries.
The JIT compilation in JAX introduces upfront latency, making evosax less suitable for rapid iteration on small-scale or frequently changing optimization tasks.