Authored by Pavle Vasiljević, Miroslav Popović (University of Novi Sad, Faculty of Technical Sciences)
Python Testbed for Federated Learning Algorithms (PTB-FLA) is in simple terms a lightweight federated learning framework that provides abstractions for easy development of FL algorithms and applications without needing to worry about issues such as communication between the nodes. PTB-FLA has its limitations, mainly that all nodes run on a singular host. Now its brand-new successor MicroPython Testbed for Federated Learning Algorithms (MPT-FLA) aims to take what its predecessor did one step further – to the local network!
MPT-FLA inherits all its precursors’ strong suits, mainly small application footprint and simple installation process without any additional dependencies other than python, while facilitating communication between the nodes for both centralized and decentralized federated learning algorithms. Like PTB-FLA, MPT-FLA is primarily an FL framework, which is seen by ML and AI developers in the TaRDIS project as an “algorithmic” testbed where they can plug in and test their FLAs.
Continuing the pure Python ideal, MPT-FLA is based on Python asynchronous I/O (asyncio) abstractions (including asyncio coroutines, streams, and events), and runs on MicroPython. The main four MPT-FLA operating modes are: (i) the system startup, (ii) the generic centralized FLA execution, (iii) the generic decentralized FLA execution, and (iv) the TDM peer data exchange.
All of these details are of course abstracted away, and the user of MPT-FLA doesn’t need to worry about them, since all of this is happening under the hood, usage of MPT-FLA in the development of new FL algorithms and applications is identical to the PTB-FLA, all with added benefits of network communication, which in turn makes it viable for IoT and edge platforms which support MicroPython.
One such example would be a RPi pico W board, however flexibility of MPT-FLA doesn’t stop there, its uses could be stretched even to the realm of robotics. If such topics spark your interest, check out the GitHub repository and the following video!