RobertTLange/evosax
Evolution Strategies in JAX 🦎
What it solves
evosax is designed to eliminate the need for handling complex asynchronous processes when implementing neuroevolution. It allows researchers to leverage massive vectorization and high-throughput hardware accelerators (like GPUs and TPUs) for Evolution Strategies (ES) without the overhead typically associated with distributed implementations.
How it works
The library is built on JAX, utilizing XLA compilation and JAX's transformation primitives (such as jit, vmap, and lax.scan) to achieve high performance. It follows a standardized ask-eval-tell API cycle:
- Ask: The strategy generates a set of candidate solutions (a population) to be evaluated.
- Eval: The user evaluates the fitness of that population.
- Tell: The user provides the fitness results back to the strategy to update its internal state and evolve the population for the next generation.
Who it’s for
It is intended for researchers and practitioners working with evolutionary algorithms and neuroevolution who want to scale their experiments to modern hardware accelerators using a high-performance, JAX-native library.
Highlights
- Extensive Algorithm Library: Includes over 30 implemented evolution strategies, ranging from classics like CMA-ES and Differential Evolution to modern approaches like OpenAI-ES and Diffusion Evolution.
- JAX-Native: Full support for JAX transformations, enabling efficient scaling and XLA compilation.
- Standardized API: Uses a consistent
ask-eval-tellloop across different strategies, including population-based algorithms likeSimpleGA. - High Throughput: Optimized for hardware accelerators to avoid the traditional overhead of distributed systems.
Related
- Project
- Project
- Project
- Project
- Project