Skip to content

A decentralized learning research framework

License

Notifications You must be signed in to change notification settings

su-xingyu/decentralizepy

Repository files navigation

decentralizepy

Setting up decentralizepy

  • Fork the repository.

  • Clone and enter your local repository.

  • Check if you have python>=3.8.

    python --version
    
  • (Optional) Create and activate a virtual environment.

    python3 -m venv [venv-name]
    source [venv-name]/bin/activate
    
  • Update pip.

    pip3 install --upgrade pip
    pip install --upgrade pip
    
  • On Mac M1, installing pyzmq fails with pip. Use conda.

  • Install decentralizepy for development.

    pip3 install --editable .\[dev\]
    

Running the code

  • Choose and modify one of the config files in eval/{step,epoch}_configs.
  • Modify the dataset paths and addresses_filepath in the config file.
  • In eval/run.sh, modify arguments as required.
  • Execute eval/run.sh on all the machines simultaneously. There is a synchronization barrier mechanism at the start so that all processes start training together.

Contributing

  • isort and black are installed along with the package for code linting.

  • While in the root directory of the repository, before committing the changes, please run

    black .
    isort .
    

Node

  • The Manager. Optimizations at process level.

Dataset

  • Static

Training

  • Heterogeneity. How much do I want to work?

Graph

  • Static. Who are my neighbours? Topologies.

Mapping

  • Naming. The globally unique ids of the processes <-> machine_id, local_rank

Sharing

  • Leverage Redundancy. Privacy. Optimizations in model and data sharing.

Communication

  • IPC/Network level. Compression. Privacy. Reliability

Model

  • Learning Model

About

A decentralized learning research framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 86.8%
  • Shell 13.2%