Skip to content

A distributed training orchestrator inspired by OpenAI's Evolution Strategies paper.

License

Notifications You must be signed in to change notification settings

neuro-soup/evochi

Repository files navigation

$$\LARGE {\color{white}\textrm{Evo}}{\color{gray}\textrm{lution~Or}}{\color{white}\textrm{ch}}{\color{gray}\textrm{estrat}}{\color{white}\textrm{i}}{\color{gray}\textrm{on}} $$

Go Python
evochi

Evochi is a framework-agnostic distributed training orchestrator for reinforcement learning agents using OpenAI's Evolution Strategies.

Features

  • 🔥 Agnostic: Evochi doesn't depend on any specific framework (or even programming language) for your workers. You define the format of your state for all workers.
  • Fast: Evochi's server is written in Go and uses gRPC for fast communication.
  • 📦 Lightweight: Evochi is designed to be as lightweight as possible on the server side. The computational workload is handled on the worker side.
  • 📈 Dynamically Scalable: Evochi is built to scale horizontally and dynamically. Workers can leave or join at any time. As long as one worker remains in the workforce, the training can continue.
  • 🚦 Fault-Tolerance: Evochi is fault-tolerant. If a worker crashes, mission-critical tasks can be recovered and delegated to other workers. As long as there is at least one functional worker, fault tolerance is ensured.

Getting Started

Start the Server

Binary releases are available on GitHub.

Alternatively, you can run Evochi from (master) source using the go run command:

go run github.com/neuro-soup/evochi/cmd/evochi@latest

Important

Evochi requires some environment variables to be set. See the server README for all configuration options.

Full (minimal) example:

EVOCHI_JWT_SECRET="secret" EVOCHI_POPULATION_SIZE=50 go run github.com/neuro-soup/evochi/cmd/evochi@latest

(Real-World) Example Implementations