nnaisense/evotorch

Advanced evolutionary computation library built directly on top of PyTorch, created at NNAISENSE.

What it solves

EvoTorch is designed to solve optimization problems that may not be differentiable, meaning they cannot be solved using traditional gradient descent. This includes black-box optimization (both continuous and discrete), reinforcement learning tasks, and supervised learning tasks.

How it works

Built on top of PyTorch, the library implements various evolutionary computation algorithms. It leverages PyTorch's vectorization and parallelization to speed up optimization on GPUs. For larger scale workloads, it integrates with Ray to distribute computations across multiple CPUs, GPUs, and entire clusters.

Who it’s for

It is intended for researchers and developers working on optimization, neuroevolution, and reinforcement learning who need a scalable, GPU-accelerated framework for evolutionary algorithms.

Highlights

  • Diverse Algorithm Suite: Includes distribution-based search (PGPE, XNES, CMA-ES, SNES, CEM) and population-based search (Genetic Algorithms, CoSyNE, MAP-Elites).
  • GPU Acceleration: Native PyTorch implementation allows for high-speed vectorized operations on GPUs.
  • Scalability: Integration with Ray enables scaling across multiple machines and hardware accelerators.
  • Flexible Objective Functions: Supports any objective function defined in PyTorch, whether vectorized or non-vectorized.

Related

  • Project
  • Project
  • Project
  • Project
  • Project