FLightcase toolbox for Federated Learning
Project description
FLightcase :airplane::briefcase:
A federated Learning toolbox for neuro-image research, based on secure copy protocol (SCP) via secure shell (SSH).
It was first introduced in a preprint in medrXiv[1],
and now contains a Command-Line Interface (CLI): FLightcase
Requirements
- Unix-based operating system for each node in the network
- All computers in the same network (e.g. connected via VPN), identifiable via an IP Address
- All datasets in the Brain Imaging Data Structure (BIDS)([2])
- Make sure sending files via SCP is possible (e.g. on Mac, enable "Remote Login" (click here for more info))
In brief
The FLightcase toolbox works by sending files via SCP between computers. To ensure full transmission of a file, a .txt file is sent to mark transmission completion. Each node (server and clients) prepares a "workspace", which is a local directory that collect files. Files are shared between computers by knowing each other's workspace location. This, and other information, is available in a JSON metadata file included in each workspace directory. The server additionally defines the Federated Learning plan in a JSON file, containing the parameters for the FL process.
How to get started
Install FLightcase
Install FLightcase in a virtual environment or conda environment on each node. Example for virtual environment:
python3 -m venv .venv(creates virtual environment called ".venv" in current workspace)source .venv/bin/activate(activate virtual environment)pip3 install FLightcase(optional: define version number, e.g.pip3 install FLightcase==0.1.0)
Preparing the workspaces
The FLightcase prepare-workspace command is used for preparing the local workspace. Define two flags:
--who: client or server--workspace_path: path to workspace directory
Running it will first check whether the workspace path exists, and create it if this is not the case.
Then, an instruction menu is to be completed in your terminal:
--who client: Preparation of the client_node_settings.json file--who server: Preparation of the server_node_settings.json, the FL_plan.json file and the architecture.py file
When preparing each JSON file, there are two options:
- Copying the template file to the workspace. The template can then be filled in manually with any preferred text editor.
- Filling the template file in the terminal. The instruction menu will, step by step, complete the template with you. It will then be saved to the workspace. For the server, the architecture.py will always be copied to the workspace without being completed in the terminal. Please update this file to your preferred network architecture.
Running FLightcase
Make sure your terminal is in the virtual environment that contains FLightcase on each node. Then:
- On client nodes, run:
FLightcase run-client --settings_path /path/to/client_node_settings.json - On the server node, run
FLightcase run-server --settings_path /path/to/server_node_settings.json
Enjoy the show! :woman_dancing::man_dancing:
Note:
A file clean-up will be performed in the FL workspace after federated learning has completed. All files except the node settings, FL plan and architecture will be moved to a subdirectory marked by date and time stamp. The FL_plan and architecture will be copied to this subdirectory to keep a log of the exact experiment that was performed.
Need help or discovered a problem?
If you experience problems with this GitHub repository, please do not hesitate to create an issue, or send a mail to stijn.denissen@vub.be
References
[1] Denissen, S., Grothe, M., Vaneckova, M., Uher, T., Laton, J., Kudrna, M., ... & Nagels, G. (2023). Transfer learning on structural brain age models to decode cognition in MS: a federated learning approach. medRxiv, 2023-04.
[2] Gorgolewski, K. J., Auer, T., Calhoun, V. D., Craddock, R. C., Das, S., Duff, E. P., ... & Poldrack, R. A. (2016). The brain imaging data structure, a format for organizing and describing outputs of neuroimaging experiments. Scientific data, 3(1), 1-9.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flightcase-0.1.5.tar.gz.
File metadata
- Download URL: flightcase-0.1.5.tar.gz
- Upload date:
- Size: 38.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ca67e7335e621c4910de015ac2047dff7a02fd3684e026648531aeae1fbd85c
|
|
| MD5 |
8d4b4104746661f25df8ec1e658dc806
|
|
| BLAKE2b-256 |
0ea0d25898410a637c4789a7c5644a6790b42cc3c0142c6acb5b5ad4245c47cf
|
File details
Details for the file flightcase-0.1.5-py3-none-any.whl.
File metadata
- Download URL: flightcase-0.1.5-py3-none-any.whl
- Upload date:
- Size: 44.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88d3978285a2c4107c9bee75f63038666c9ab2c638ff897ab57736d26c169222
|
|
| MD5 |
f5f96e29a8885d05a0720d70f51ff864
|
|
| BLAKE2b-256 |
e9e9f92e0313e63c4ce20249bded25a5a4ef41ce567d53c75afba1916ed64793
|