Skip to content

A set of tools for demonstrating machine learning in a federated environment

Notifications You must be signed in to change notification settings

DLR-KI/fl-demonstrator

Repository files navigation

Federated Learning Demonstrator

DOI

This repository contains the Federated Learning Demonstrator, a comprehensive suite of tools designed for machine learning applications in a Federated context. This server component that handles the orchestration and notification of all training participants and ensuring smooth and efficient operation.

The demonstrator further provides capabilities for diverse model aggregation methods, merging the model inputs from each participant. It also offers model inference, enabling the generation of predictions using the trained models. The repository also includes utilities for quantifying uncertainty, which provide a measure of the reliability of the model's predictions.

This project is the server component of the Federated Learning (FL) platform, serving as a proof of concept for the Catena-X project. The FL platform aims to demonstrate the potential of federated learning in a practical, real-world context.

For a comprehensive understanding of the FL platform, please refer to the official FL platform documentation.

A complete list of all repositories relevant to the FL platform can be found here.

Get Started

This README.md is primarily intended for developers and contributors, providing necessary information for setup, installation, and contribution guidelines. If you're interested in using or testing this project, we recommend starting with the GitHub pages. They offer a more user-friendly interface and comprehensive guides to get you started.

Requirements

Python > 3.10

sudo apt install python<version>
#If not available you can add latest versions with
sudo add-apt-repository ppa:deadsnakes/ppa 

Venv

#Install venv
sudo apt install python<version>-venv

Virtualenv (alternative to venv)

#python 3.10 or later
which python
#virtualenv or venv
pip install -U virtualenv

Install

# create virtual environment
virtualenv -p $(which python<version>) .venv
# or
python<version> -m venv .venv

# activate our virtual environment
source .venv/bin/activate

# update pip (optional)
python -m pip install -U pip

# install
./dev install -U -e ".[all]"

Helpers

$ ./dev --help
usage: ./dev <action> [options]

positional arguments:
  {celery,clean,collectstatic,coverage,coverage-report,db-reset,doc,doc-build,docker-build,help,install,licenses,licenses-check,lint,lint-code,lint-doc,lint-scripts,makemigrations,manage,migrate,mypy,safety-check,start,superuser,test,version,versions}
                        Available sub commands
    help                Show this help message and exit
    start               Run the application
    celery              Run celery worker
    migrate             Run database migrations
    makemigrations      Create new database migrations
    manage              Run django manage.py
    superuser           Create superuser
    collectstatic       Collect static files
    db-reset            Reset database
    docker-build        Build docker images for local development
    test                Run all tests
    lint                Run all linter
    lint-code           Run code linter
    lint-doc            Run documentation linter
    lint-scripts        Run bash script linter
    mypy                Run type checker
    coverage            Run unit tests
    coverage-report     Generate test coverage report
    doc                 Start documentation server
    doc-build           Build documentation
    licenses            Generate licenses
    licenses-check      Check licenses
    safety-check        Check dependencies for known security vulnerabilities
    install             Install package
    clean               Clean up local files
    version             Show package version
    versions            Show versions

options:
  --no-http-serve       Do not serve the action result via HTTP

Contribution

  • Type-Save and linting with mypy+flake8
  • Scripts and examples for linux, wsl (bash)

Documentation

This projects is using the Docstring style from Google. At least public classes, methods, fields, ... should be documented.

"""
This is the single line short description.

This is the multiline or long description.
Note, that the whole Docstring support markdown styling.

The long description can also contains multiple paragraphs.

Args:
    log_filepath (str): Log file path.
    ensure_log_dir (bool, optional): Create directory for the log file if not exists. Defaults to True.

Returns:
    Dict[str, Any]: logging configuration dict
"""

Credits

DLR DLR
Catena-X Catena-X
European Union European Union BMWK