FedBloom User Guide
FedBloom lets anyone — clinicians, bankers, researchers, data analysts — train machine learning models on private, distributed data without writing a single line of code. This guide walks you through every feature, from first launch to real network deployment.
On this page
What is Federated Learning?
Federated Learning (FL) is a technique that trains a shared AI model across multiple devices or organisations without ever moving the raw data. Each participant trains locally on their own data; only model updates (not data) travel over the network. The server aggregates these updates into a single improved global model.
What makes FedBloom different?
Traditional federated learning requires Python expertise, knowledge of frameworks like Flower or TensorFlow Federated, and hours of configuration. FedBloom replaces all of that with a desktop GUI — pick your model, upload your data, click Run.
Installation
Windows Installer (recommended)
Download FedBloom-Setup.exe from the website.
Run the installer and follow the prompts. No admin rights required for a per-user install.
Launch FedBloom from the Start Menu or Desktop shortcut.
Run from Source (developers)
# Clone the repository
git clone https://github.com/ziaurrehman-bit/FedBloom
cd FedBloom/files/fedbloom-stage-D/fedkit
# Install in editable mode
pip install -e .
# Launch
fedkit
First Launch
When FedBloom opens you will see the Welcome Screen. This is the starting point for every session.
A splash screen appears while services initialise (usually 2–5 seconds).
The Welcome Screen shows two cards: Enter as Server and Enter as Client. Choose your role for this session.
You can switch roles at any time using the arrow icon at the bottom of the sidebar.
Server vs Client
Every federated learning session has two types of participants:
Creating Experiments
Experiments are the core unit of work in FedBloom. Each experiment defines a complete FL training job.
Create a new experiment
Navigate to Experiments in the sidebar. Click + New Experiment.
Enter an experiment name and optional description.
Select your Dataset, Model, Aggregation strategy, and Partitioner from the dropdowns.
Set Number of clients, Rounds, Local epochs, Batch size, and Learning rate.
Choose Simulation (single machine) or Real Network deployment mode.
Click Save. The experiment appears in the list, ready to run.
Configuration reference
| Parameter | Description | Typical range |
|---|---|---|
| Clients | Number of participating clients per round | 2 – 500 |
| Rounds | Number of FL communication rounds | 5 – 100 |
| Local epochs | Training epochs per client per round | 1 – 20 |
| Batch size | Mini-batch size for local training | 16 – 256 |
| Learning rate | Optimizer step size | 0.0001 – 0.1 |
Datasets
Built-in datasets
FedBloom ships with several standard datasets for experimentation:
| Dataset | Task | Features | Classes |
|---|---|---|---|
| MNIST | Image classification | 784 pixels | 10 digits |
| CIFAR-10 | Image classification | 32×32 RGB | 10 objects |
| Letter Recognition | Classification | 16 numeric | 26 letters |
| Breast Cancer | Binary classification | 30 numeric | 2 (benign/malignant) |
| Iris | Multi-class | 4 numeric | 3 species |
Custom CSV datasets
You can upload any CSV file as a dataset. FedBloom handles all preprocessing automatically:
- Last column is treated as the label / target
- Numeric columns are z-score normalised
- String/categorical columns are one-hot encoded
- Data is split 80/20 into train and test sets
- Rows are distributed across clients using the selected Partitioner
Models
FedBloom ships 30 federated-learning-ready models across five families. Every model already knows which aggregation strategy it needs — when you pick a model in the New Experiment wizard, the Aggregation strategy dropdown auto-switches to the right one. You normally never have to think about this — it's covered here so you understand why the dropdown changed.
Neural networks (general purpose)
Trained with gradient descent. Aggregated with FedAvg by default (FedAdam / FedYogi / FedMedian also work — see Aggregation Strategies).
Image classification (pretrained, TorchVision)
Industry-standard architectures with optional ImageNet-pretrained weights, fine-tuned federatedly. All use FedAvg.
freeze_backbone for practical FL.Tabular deep learning
Tree-based & boosting models specialised aggregation
These don't have gradients — a decision tree is a sequence of yes/no splits, not a tensor of weights. Averaging two trees' numbers together produces nonsense, so FedBloom uses three purpose-built aggregation strategies instead of FedAvg for these models: FedForest, FedBoost, and FedBayes. Each is explained with a worked example in How Tree Models Aggregate below.
FedForest.FedForest.FedForest.FedBoost.FedBoost.FedBoost.pip install lightgbm. Aggregation: FedBoost.pip install catboost. Aggregation: FedBoost.Linear & probabilistic models
Also sklearn-based (no gradients shared with Flower), but unlike trees their parameters are simple vectors that can be meaningfully averaged or combined exactly.
FedLinear.FedLinear.FedLinear.FedBayes.Aggregation Strategies
The aggregation strategy controls how the server combines what each client sends back into one improved global model. FedBloom's New Experiment wizard exposes 9 strategies — 4 work on any gradient-based model, 4 are auto-selected for sklearn/tree models (see How Tree Models Aggregate), and one handles non-IID clients.
| Strategy | How it works | Best for | Works in |
|---|---|---|---|
| FedAvg | Weighted mean of client weights, proportional to each client's number of training examples. | General-purpose default for all neural networks. | Simulation & Real deployment |
| FedAdam | FedAvg, then the server runs one Adam optimizer step on the aggregated result. | Faster convergence on larger neural nets. | Real deployment only — simulation falls back to plain FedAvg |
| FedYogi | Same idea as FedAdam, using the Yogi optimizer — often steadier on non-IID data. | Non-IID clients on a real deployment. | Real deployment only — simulation falls back to plain FedAvg |
| FedMedian | Element-wise median of client weights instead of the mean — outliers get ignored rather than averaged in. | Suspected bad/noisy clients, mild Byzantine robustness. | Simulation & Real deployment |
| Krum | Scores each client by distance to its nearest neighbours, then keeps only the most consistent client(s) — outliers are discarded entirely rather than blended in. | Suspected malicious/poisoned clients. Needs ≥ 3 clients. | Simulation & Real deployment |
| FedProx | Adds a proximal penalty (μ·‖w − w_global‖²) to each client's local loss so updates can't drift too far from the global model. | Designed for heterogeneous/non-IID clients with stragglers. | See limitation note below |
| FedLinear | Weighted average of coef_/intercept_ vectors — exact under IID data. |
Ridge, Elastic Net, LinearSVC. Auto-selected. | Simulation & Real deployment |
| FedForest | Server collects every client's trees and unions them into one majority-vote ensemble. | Decision Tree, Random Forest, Extra Trees. Auto-selected. | Simulation & Real deployment |
| FedBoost | Server keeps the booster from the client that trained on the most local data each round. | XGBoost, HistGB, AdaBoost, LightGBM, CatBoost. Auto-selected. | Simulation & Real deployment |
| FedBayes | Server fuses per-class sufficient statistics (counts, means, variances) — zero approximation error. | Naive Bayes. Auto-selected. | Simulation & Real deployment |
How Tree Models Aggregate
Neural networks are made of numbers (weights) that live in a shared vector space — averaging two networks' weights gives you something meaningful in between. Trees, forests, and boosters aren't like that: a tree is a nested sequence of "if feature X < 5, go left" rules. Averaging two trees' split thresholds produces a tree that doesn't represent either client's logic. FedBloom solves this with three different strategies depending on what the model actually is.
FedForest — tree union (Decision Tree, Random Forest, Extra Trees)
Used for models that are themselves just "a bunch of trees that vote."
Each round, every client grows a fresh tree/forest on its own local data — a different random seed every round, so the trees are never duplicates.
The server collects every tree from every client and pools them into one ensemble that predicts by majority vote.
Next round's pool keeps the previous global trees and adds this round's new ones, up to a cap of 1,500 trees — past that, the oldest trees are dropped first.
To predict a label, every tree in the pool votes for a class and the majority wins — exactly like a single Random Forest, just grown collaboratively across clients who never shared raw data.
FedBoost — best-client selection (XGBoost, HistGB, AdaBoost, LightGBM, CatBoost)
Boosting models build trees sequentially — each new tree corrects the previous tree's mistakes — so unlike a forest, you can't just throw all clients' trees into one pool; the sequence matters.
The server sends the current global booster to every client.
XGBoost only: each client continues boosting on top of the global booster (adds new trees to it) using its own local data. Other boosters (LightGBM, CatBoost, AdaBoost, HistGB) train a fresh booster from scratch on local data each round.
The server keeps one client's booster as the new global model — specifically, the booster from whichever client trained on the most local data that round — and discards the rest.
xgb_model warm-start parameter). The other boosting models restart from scratch each round, so FedBoost is most powerful with XGBoost specifically — the others benefit more from running fewer, longer local rounds than many short federated ones.FedBayes — exact statistics fusion (Naive Bayes)
Naive Bayes is the one model in FedBloom with mathematically exact federated aggregation — zero accuracy loss compared to training on everyone's data pooled together.
Each client computes, per class, just three numbers per feature: how many examples, the mean, and the variance. No raw records are sent — only these summary statistics.
The server combines the counts with a weighted sum, and the means with a sample-weighted average.
Variances are combined with the parallel-variance formula (it also folds in how far each client's mean was from the global mean, so spread-out client means correctly increase the global variance):
# Parallel-variance formula FedBloom's server runs:
sigma2_global = sum(n_i * (sigma2_i + (mu_i - mu_global)**2)) / N_total
FedLinear — coefficient averaging (Ridge, Elastic Net, LinearSVC)
Linear models do have weights that live in a shared vector space (a coefficient per feature, plus an intercept), so — unlike trees — straightforward weighted averaging works well here, similar in spirit to FedAvg but operating on sklearn's coef_/intercept_ arrays instead of PyTorch tensors.
Partitioners
Partitioners control how data is distributed across clients — crucial for realistic experiments.
| Partitioner | Description |
|---|---|
| IID | Independent & Identically Distributed. Each client gets a random uniform sample. Ideal baseline. |
| Dirichlet | Non-IID distribution using a Dirichlet concentration parameter. Models real-world heterogeneity. |
| Label Shard | Each client receives data from only a subset of classes. Extreme non-IID scenario. |
| Custom | Specify exact sample counts per client. FedBloom auto-scales if totals exceed dataset size. |
Running & Monitoring
Starting a run
Select an experiment from the list and click ▶ Start. FedBloom will:
- Initialise the FL server and virtual clients (simulation) or wait for real clients (deployment)
- Begin round 1 — each client trains locally and sends updates
- Aggregate updates and broadcast the new global model
- Repeat for all configured rounds
Live metrics dashboard
While training runs, the Charts tab shows live plots:
- Global accuracy — model accuracy on the global test set per round
- Global loss — training loss curve
- Precision / Recall / F1 — per-class metrics bar chart
- ROC curve — with AUC score
- Computation cost — seconds per round
- Communication cost — MB exchanged per round
- CPU / GPU utilisation — live resource usage
- Memory utilisation — RAM and GPU memory
Topology view
The Topology tab shows a visual graph of connected clients with their training status:
- Blue — idle / waiting
- Orange — training locally
- Green — completed, update sent
- Red — error
Results & Artefacts
Results tab
After training, the Results tab shows a table with per-client and global metrics for every round. You can export this as a CSV file.
Artefacts tab
The Artefacts tab lists all saved model files and metadata:
training_metadata.json— full experiment configurationmetrics_all_rounds.csv— all metrics for all roundsround_XXX_global_model.pkl— saved global model per round
Click Download Bundle to export all artefacts as a ZIP.
.pkl model files can be loaded directly in Python using pickle.load() for inference or further fine-tuning.Settings
Open Settings from the sidebar to control appearance, simulation behaviour, email, and licensing. The most important option to understand is the simulation backend toggle, explained below.
Simulation backend — "Use Ray multi-process backend"
When you run a simulation experiment, FedBloom has two ways to run the virtual clients on your machine. This checkbox in Settings → Simulation switches between them.
Simple, stable, no extra software needed.
Faster for large numbers of clients — but has compatibility requirements.
Which should you choose?
| Your device | Recommendation | Why |
|---|---|---|
| Windows | ✅ Leave checkbox OFF | See below — Ray has known stability problems on Windows |
| macOS | Leave OFF for most use cases. Turn ON if you have 20+ clients and rounds feel slow. | Ray works well on macOS. Small experiments don't benefit enough to be worth the extra complexity. |
| Linux | Can turn ON for large experiments (20+ clients) | Ray is most stable on Linux. Genuinely speeds up multi-client training. |
Windows — why to keep it OFF
If you enable the Ray backend on Windows, you may experience one or more of the following:
- Training freezes or crashes — Windows launches new processes differently from Linux/macOS. Each Ray worker process must fully reload all libraries from scratch, which can fail or get stuck, especially when PyTorch is involved.
- Windows Defender / Firewall prompts — Ray runs a small internal server on your machine to coordinate its worker processes. Windows often flags this and prompts you to allow the connection, which interrupts the training session.
- Zombie processes after stopping a run — If you stop a training run mid-way, Ray worker processes can get stuck in the background. You may need to open Task Manager to close them manually.
- No speed benefit — Even when it works, the overhead of launching and coordinating separate processes on Windows usually cancels out any parallelism benefit for typical experiment sizes.
Does "OFF" mean slower training?
Not meaningfully for typical use. Running clients sequentially means your machine still uses all its CPU/GPU capacity — it's just doing one virtual client at a time rather than several simultaneously. For experiments with 2–50 clients and 5–30 rounds, the difference in total wall-clock time is rarely noticeable. The sequential mode is what FedBloom was built and tested on for Windows.
Local Network Deployment
When all participants are on the same WiFi or LAN:
Server: create an experiment, select Real Network mode, note the displayed IP address and port.
Clients: open FedBloom, choose Enter as Client, enter the server IP and port, click Connect.
Server: once enough clients appear in the Topology view, click ▶ Start.
Tailscale VPN (cross-network)
For participants on different networks (e.g., different hospitals, home offices):
- Install Tailscale on every machine.
- All machines join the same Tailscale network (or a shared Tailnet).
- Use the machine's Tailscale IP (e.g.,
100.x.x.x) as the server address. - No port forwarding or firewall rules needed — Tailscale handles NAT traversal.
Public IP + Port Forwarding
If Tailscale is not an option:
- Find your server's public IP (search "what is my IP" in a browser).
- In your router, create a port forward rule: external port → server machine's local IP, port 8080.
- Ensure your OS firewall allows inbound connections on port 8080.
- Clients connect using your public IP and the forwarded port.
Hyperparameter Optimisation (HPO) Pro
HPO automatically searches for the best training configuration. Navigate to HPO in the sidebar:
- Select the experiment to optimise.
- Choose the metric to maximise (accuracy, F1) or minimise (loss).
- Define search ranges for learning rate, batch size, local epochs.
- Set the number of trials and click Run HPO.
- Results show the best configuration — apply it to your experiment with one click.
Privacy & Security Pro
Differential Privacy (DP-SGD)
Enable DP in the experiment configuration to add mathematically guaranteed privacy noise to client updates. This prevents the server from reconstructing raw training data from model weights.
- Noise multiplier — higher = more privacy, lower accuracy
- Max grad norm — clips gradients before adding noise
Robustness against bad clients
FedBloom has two aggregation strategies for this (see Aggregation Strategies):
- FedMedian — element-wise median of client updates instead of the mean. Cheap, always-on protection: a misbehaving client's update gets outvoted rather than blended in.
- Krum — scores every client by distance to its nearest neighbours and keeps only the most consistent client(s), discarding anything that looks like an outlier entirely. Stronger guarantee, more compute (needs at least 3 participating clients).
AI Assistant Advanced
The AI Assistant (powered by a local Ollama LLM) helps you interpret experiment results, suggest configurations, and explain model behaviour.
Setup
- Install Ollama from ollama.com.
- Pull a model:
ollama pull llama3 - In FedBloom Settings, set the Ollama base URL (default:
http://localhost:11434) and model name.
Open the Assistant section in the sidebar to start a conversation about your experiments.
Plans & Licensing
| Feature | Free | Pro €3/mo | Advanced €5/mo |
|---|---|---|---|
| Max simulated clients | 5 | 50 | 100 |
| 10 core models (MLP, LR, Trees, XGBoost, Naive Bayes, Ridge, Elastic Net…) | ✓ | ✓ | ✓ |
| All 9 aggregation strategies | ✓ | ✓ | ✓ |
| IID / Dirichlet / Label Shard / Custom partitioners | ✓ | ✓ | ✓ |
| Global & local charts, Results & Artefacts export | ✓ | ✓ | ✓ |
| CNN · DNN · ResNet-18 · Linear SVM · Custom NN Builder | — | ✓ | ✓ |
| 9 TorchVision models (MobileNetV2/V3, EfficientNet, VGG-16, ViT-B/16…) | — | ✓ | ✓ |
| TabNet · Wide & Deep · LightGBM · CatBoost · HistGB · LinearSVC | — | ✓ | ✓ |
| Differential Privacy (DP-SGD via Opacus) | — | ✓ | ✓ |
| Hyperparameter Optimisation (HPO) | — | ✓ | ✓ |
| Real network deployment (LAN, Tailscale, port forwarding + TLS) | — | ✓ | ✓ |
| FL Plans — server pushes model & config to clients | — | ✓ | ✓ |
| Server–client in-app chat (deployment mode) | — | ✓ | ✓ |
| Federated Machine Unlearning | — | — | ✓ |
| XAI / SHAP explainability | — | — | ✓ |
| AI Assistant (local LLM via Ollama) | — | — | ✓ |
| Priority support | — | — | ✓ |
Activate your plan in the Subscription & Account section by signing in with Google (auto-applies your plan) or by entering the license key received after purchase.
Use Case: Healthcare
Problem: Five hospitals want to train a chest X-ray classification model. Patient data cannot leave each hospital due to HIPAA / GDPR regulations.
FedBloom solution:
- Each hospital installs FedBloom on a local workstation.
- One hospital acts as Server; the rest are Clients.
- Server creates experiment: Model = CNN, Dataset = custom X-ray CSV, Aggregation = FedAvg.
- Clients connect via Tailscale. Each trains on their local patient records.
- After 20 rounds, the global model outperforms any individual hospital's model.
Use Case: Finance & Banking
Problem: Six banks want to improve fraud detection. Transaction data is commercially sensitive and regulated — sharing is not permitted.
FedBloom solution:
- Each bank exports a transaction CSV with features (amount, time, merchant category) and a fraud label.
- Upload CSVs locally to each bank's FedBloom instance (data never leaves the bank).
- Server creates experiment: Model = XGBoost, Partitioner = Dirichlet (realistic non-IID). The aggregation strategy auto-switches to FedBoost — see How Tree Models Aggregate.
- Global model catches fraud patterns that no single bank's local model could detect.
Use Case: Genomics
Problem: Research institutions each have genomic datasets but cannot share raw sequences due to participant consent agreements.
FedBloom solution:
- Each lab uploads their genomic feature CSV. FedBloom auto-encodes categorical allele data.
- Model = MLP or DNN, Rounds = 30, Local epochs = 5.
- Use the AI Assistant to interpret SHAP feature importances — which genes matter most?
- Export the trained global model for deployment in clinical decision-support systems.
Use Case: Insurance
Problem: Multiple insurance companies want a better risk model but can't pool policyholder data.
FedBloom solution:
- Each insurer prepares a CSV of policy features and claim outcomes.
- Model = Random Forest, Aggregation = FedAvg, Clients = number of insurers.
- Run HPO to find the optimal number of trees and max depth.
- The resulting global risk model is more accurate and less biased than any single company's model.
Use Case: Academic Research
Problem: A researcher wants to benchmark FedAvg vs FedMedian on non-IID data without writing framework code.
FedBloom solution:
- Create two experiments with identical settings, changing only the aggregation strategy.
- Use Dirichlet partitioner (α = 0.1) for strong non-IID simulation.
- Run both, export metrics CSVs, compare accuracy and convergence speed.
- Save plots directly from the Charts tab for publication figures.
~/.fedbloom/fedbloom.db. You can query it directly for custom analysis.
FedBloom