This repository is the official implementation of FedHD Link(TBA Paper under review).
An edge-device friendly, efficient and robust Federated Learning System using Hyperdimensional Computing.
To install requirements:
pip install -r requirements.txt
FedHD use Mosquitto(https://mosquitto.org/) MQTT broker for communication and broadcasting.
Go to FedML-Server-HD/executor/mqtt/ Start server MQTT broker:
bash run_mosquitto_server.sh
Note: Before start MQTT broker, one might want to change MQTT configration (IP, Port), you can do so by change /FedML-Server-HD/executor/mqtt/mosquitto.conf.
Go to FedML-Server-HD/executor/ :
python app_HD.py [--options]
You can change server default options by pass in flag or modify file directly, for complete hyper-parameter list are listed in app_HD.py. Please make sure MQTT IP and Port matches MQTT configration.
To start clients, go to FedML-IoT-HD/raspberry_pi/fedhd/ and run
python fedhd_rpi_client.py --server_ip XXX.XXX.XXX.XXX:XXXX --client_uuid XX
Note: client uuid must be unique.
1 - Hidden Layer
2 - Fully Connected Layer
FedHD are implemented based on FedML, an open-source Federated Learning framework.