Evochi is a framework-agnostic distributed training orchestrator for reinforcement learning agents using OpenAI's Evolution Strategies.
- 🔥 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.
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