Giter VIP home page Giter VIP logo

synergos_director's Introduction

Synergos Director

Main job orchestrator for a synergos cluster.

Synergos Grid Configurations

Setting up Synergos Cluster for complex workloads

In federated learning, it is important to establish a secured grid, where all orchestrator(s) and participants can reside in, and communicate accordingly for complex federated workflows. However, this is often easier said than done, due to a multitude of deployment conditions & configurations to consider. That's where Synergos and its respective components come in.

The ideas behind Synergos are simple:

  • MODULARITY - Plug-&-play methodology for assembling your ideal grid architecture
  • AUTOMATION - All complexities involving federated orchestration are to be abstracted
  • SIMPLICITY - Deploy & execute in a single command

TL;DR, We want users to be able to configure & deploy their federated endeavours with ease & confidence.


Synergos Director is one of the core components necessary to scale up your Synergos workflow!

Synergos Components

X-raying Synergos' core components

Under the hood, we see that every feature embedded within each Synergos component is modularized as well. This allows users to activate or de-activate certain functionalities depending on their deployment setup.

In addition to having all functions as that of Synergos TTP, it serves to ease the process of parallelizing multiple jobs across multiple federated grids.


Installation

Synergos Director has been dockerized for easy component-based deployment.

# Download source repository
git clone https://github.com/aimakerspace/synergos_director
cd ./synergos_director

# Checkout to stable tag
git checkout tags/v0.1.0

# Initialize & update all submodules
git submodule update --init --recursive
git submodule update --recursive --remote

# Build director image
docker build -t synergos_director:syncluster --label "syncluster_director" .

# Start containerized service
docker run --rm 
    -p <PORT>:5000      
    -v <PATH-TO-DATA>:/orchestrator/data        # <-- Mount for data access
    -v <PATH-TO-OUTPUTS>:/orchestrator/outputs  # <-- Mount for outputs access
    -v <PATH-TO-MLFLOGS>:/mlflow                # <-- Mount for MLFlow outputs
    --name <DIRECTOR_ID> 
    synergos_director:syncluster          
        --id <DIRECTOR_ID>       
        --logging_variant <LOGGER-VARIANT> <LOGGER-HOST> <SYSMETRIC-PORT> 
        --queue <MQ-VARIANT> <MQ-HOST> <MQ-PORT>
        --censored                              # <-- optional
        --debug                                 # <-- optional
  • <DIRECTOR_ID> - ID of this director instance. If not specified, a random UUID will be generated.
  • <PORT> - Port on which Synergos Director is served
  • <PATH-TO-DATA> - User's custom volume on which data is to be stored
  • <PATH-TO-OUTPUTS> - User's custom volume on which outputs are to be stored
  • <PATH-TO-MLFLOGS> - User's custom volume on which MLFlow logs are to be stored
  • <LOGGER-VARIANT> - Logger backend deployed (i.e. "graylog" or "basic")
    • <LOGGER-HOST> - If Synergos Logger was deployed, specify logger's host
    • <SYSMETRIC-PORT> - If Synergos Logger was deployed, specify logger's allocated sysmetric port. A sysmetric port is the port allocated for logging system resource usage for any synergos component within the same deployment setting/grid.
  • <MQ-VARIANT> - Message queue backend deployed (only "rabbitmq" accepted for now)
    • <MQ-HOST> - Specify Synergos MQ's host. This is a mandatory declaration, since Synergos Director orchestratrates jobs across multiple grids.
    • <MQ-PORT> - Synergos MQ's allocated port

Examples of a launch command are as follows:

# Basic logging (to screen)
docker run --rm 
    -p 5001:5000      
    -v /synergos_demos/orchestrator/data/:/orchestrator/data      
    -v /synergos_demos/orchestrator/outputs/:/orchestrator/outputs      
    -v /synergos_demos/orchestrator/mlflow/:/mlflow 
    --name director_syncluster 
    synergos_director:syncluster          
        --id director_syncluster        
        --logging_variant basic
        --queue rabbitmq 172.17.0.4 5672            # <-- Mandatory!

OR

# With centralized logging deployed by Orchestrator
docker run --rm 
    -p 5001:5000      
    -v /synergos_demos/orchestrator/data/:/orchestrator/data      
    -v /synergos_demos/orchestrator/outputs/:/orchestrator/outputs      
    -v /synergos_demos/orchestrator/mlflow/:/mlflow 
    --name director_syncluster 
    synergos_director:syncluster          
        --id director_syncluster        
        --logging_variant graylog 172.30.0.4 9300   # <-- Recommended!
        --queue rabbitmq 172.17.0.4 5672            # <-- Mandatory!

Note: Only 1 Synergos Director instance is required in a SynCluster grid!

Note: A SynCluster grid MUST have Synergos MQ deployed.



Further Resources

You can view the guides for running:

synergos_director's People

Contributors

tojhe avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.