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.

Getting Started

Start the Server

Binary releases are available on GitHub.

Alternatively, y 8A7E ou 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