8000 GitHub - neuro-soup/evochi: A distributed training orchestrator inspired by OpenAI's Evolution Strategies paper.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

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.
  • 9226

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
Run with Nix

If you are using Nix, you can use the nix run command to run directly from source:

nix run "github:neuro-soup/evochi#server"

You can also import the package into your own Nix flake:

# flake.nix
inputs = {
    evochi.url = "github:neuro-soup/evochi";
};

# evochi.nix
{ inputs, pkgs, ... }:
{
    environment.systemPackages = [
        # installs `evochi` binary
        inputs.evochi.packages.${pkgs.system}.server
    ];
}

Alternatively, you can use evochi as Nix module:

# flake.nix
inputs = {
    evochi.url = "github:neuro-soup/evochi";
};

# evochi.nix
{ inputs, ... }:
{
    imports = [
        inputs.evochi.nixosModules.server
    ];

    services.evochi = {
        enable = true;
        config = {
            secret.file = ./evochi.secret;
            training.population = 100;
        };
    };
}

(Real-World) Example Implementations

About

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

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •  
0