Skip to content

gdamaskinos/fleet

Repository files navigation

FLeet

Author: Georgios Damaskinos (georgios.damaskinos@gmail.com)

FLeet is a middleware introduced in FLeet: Online Federated Learning via Staleness Awareness and Performance Prediction.

Quick Start

The following steps train a CNN on the non-IID MNIST dataset.

  1. Setup
    • Ubuntu 18.04.3 LTS
    • gcc 7.5
    • Python 3.6
    • Java 1.8.0_77
    • Maven 3.6.3
    • Gradle 4.10.1
    • Android API level 25
    • Create and start an Android emulator
    • Export variables:
      • JAVA_HOME
      • ANDROID_HOME
    • Download Python numpy package
  2. Download and extract the 4 files of the MNIST dataset
  3. Compile, deploy and run FLeet
    ./local_deploy.sh 5554 9992 ~/log /path/to/mnist/ 0 0 1000 3000 0.0005 1 1 0 0 0 0 0
    

Detailed information about the deployment options for FLeet is available here.

Usage

The following contains information about each module of FLeet along with instructions for implementing a new application.

Server

Performs the descent computation and updates the model

Driver

Initializes the Server and performs a periodic evaluation

Android Client

Performs the gradient computation

Existing applications

cppNN

Image classification application based on Convolutional Neural Networks and written in C++.

MLP

Image classification application based on multilayer perceptron and written in Java.

LR

Facebook check-in prediction application based on logistic regression and written in Java.

DL4J

Port of DL4J library on FLeet.

Datasets

MNIST

See Quick Start.

EMNIST

  • Download Python dependencies:
    • Sklearn
    • Scipy
    • Numpy
  • python emnistParser.py --help
  • For parsing into FLeet change to the DL4J app:
    • See all TODO notes in the Driver.
    • Change the application in the Server and Client (see Usage).
    • Give the output of the parser as input dataset for FLeet.

CIFAR