Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Federated Learning and Split Learning with raspberry pie

This is for releasing the source code of the SRDS 2020 paper "End-to-End Evaluation of Federated Learning and Split Learning for Internet of Things".

If you find it is useful and used for publication. Please kindly cite our work as:

title={End-to-End Evaluation of Federated Learning and Split Learning for Internet of Things},
author={Gao, Yansong and Kim, Minki and Abuadbba, Sharif and Kim, Yeonjae and Thapa, Chandra and Kim, Kyuyeon and Camtepe, Seyit A and Kim, Hyoungshick and Nepal, Surya},
booktitle={The 39th International Symposium on Reliable Distributed Systems (SRDS)},

Helpful Link


This repository contains the implementations of various distributed machine learning models like Federated learning, split learning and ensemble learning


  • Python==3.6
  • PyTorch==1.5.1

Requirements(Raspberry pie3)

  • Python==3.7
  • PyTorch==1.0.0

Repository summary

  • models directory: has pre-processed training/testing data of MIT arrhythmia ECG database in hdf5 format. If you want, you can upload another preprocessed train and test data here.
  • federated_learning directory: source codes of federated learning in ipynb and .py format
  • split_learning directory: source codes of split learning in ipynb and .py format
  • ensemble_learning directory: source codes of ensemble learning in ipynb and .py format

How to use

1. Run client on desktop

you need to use ~client.ipynb file

2. Run client on raspberry pie

you need to use ~client_rasp.ipynb or file If you run these files, you can see the temperature, memory usage of raspberry pie.

Overall process

set hyperparameters

  • set variable users, in server and client file
  • set variable rounds, local_epoch or epochs of training

Running code

  • Run the server code first
  • After run server, run the clients

input information

  • if you run the server, you can see the printed ip address of server
  • when you run the client you need the enter order of client and ip address
  • if there is no problem, training will be started

Project members

Gao Yansong, Kim Minki, Abuadbba Sharif, Kim Yeonjae, Thapa Chandra, Kim Kyuyeon, Camtepe Seyit A, Kim Hyoungshick, Nepal Surya


SRDS 2020: End-to-End Evaluation of Federated Learning and Split Learning for Internet of Things








No releases published


No packages published

Contributors 4