Skip to main content

Federated Deployment

Use federated deployment when you want to run FedGWAS with separate Flower SuperLink and SuperNode processes. This mode is closer to a real collaboration between multiple centers than local simulation.

Install on each node

Install FedGWAS in the Python environment used by the server and every participating client node:

python -m pip install FedGWAS
python -m pip install flwr

Each client node also needs PLINK-compatible genotype data and access to the configured PLINK executable:

plink --help
plink2 --help

Confirm that the Flower deployment commands are available:

flower-superlink --help
flower-supernode --help
flwr --help

Prepare center configs

Each participating center needs its own config file and local PLINK dataset. A minimal local deployment layout looks like:

configs/
server/config.yaml
center_1/config.yaml
center_2/config.yaml

For real deployments, each center should keep raw genotype data local and set the input_data.path, output directories, thresholds, and Flower settings in its own center config.

Run SuperLink on the coordinating server:

flower-superlink --insecure --fleet-api-address 127.0.0.1:9092

The Exec API configured in pyproject.toml is what flwr run uses to submit the FedGWAS app.

Start SuperNodes

Start one SuperNode per participating center. For a local two-center test:

flower-supernode \
--insecure \
--superlink 127.0.0.1:9092 \
--clientappio-api-address 127.0.0.1:9094 \
--node-config 'partition-id=0 num-partitions=2 config-file="experiments/correctness/tiny_even/configs/center_1/config.yaml"'
flower-supernode \
--insecure \
--superlink 127.0.0.1:9092 \
--clientappio-api-address 127.0.0.1:9095 \
--node-config 'partition-id=1 num-partitions=2 config-file="experiments/correctness/tiny_even/configs/center_2/config.yaml"'

Run the app

Submit the FedGWAS Flower app through the deployment federation:

flwr run . local-deployment --stream

Next steps