Streamlit FedPilot Dashboard

The FedPilot framework ships with a custom-built, highly interactive Streamlit Dashboard located in the fedpilot-dashboard/ directory.

Visualizing Experiments

While Prometheus/Grafana provide raw metric scraping, the Streamlit Dashboard is tailored specifically for Federated Learning analytics. It reads the CSV endpoints generated by the MetricsActor and visualizes:

  • Topology Health: Visual representations of your Star, Ring, or K-Connect graphs.
  • Convergence Tracking: Multi-line charts comparing client accuracy against global consensus accuracy.
  • System KPIs: High-level overviews of federation stability, communication overhead, and memory usage.

Configuring & Running Code from the Dashboard

The dashboard is not just a read-only viewer. It functions as the primary Graphical User Interface (GUI) for setting up and deploying new FedPilot experiments.

Using the Setup Experiment Modal, you can edit every parameter of the platform directly from your browser:

  1. General & Models: Select your Neural Network (e.g., CNN, ResNet, ViT), your dataset, and your hardware allocation (CPU vs CUDA).
  2. Schemas & Topologies: Toggle between Centralized and Decentralized schemas, and dynamically change your network graph (Star, Ring, K-Connect).
  3. Security: Toggle Differential Privacy (DP) on or off, and tune your $\epsilon$, $\delta$, and noise multipliers visually.
  4. Deploy: When you click “Apply Configuration”, the Dashboard serializes your choices, validates them against the schemas, and overwrites the active config.yaml on disk. You can then trigger the training loop immediately.

How to Boot the Dashboard

  1. Navigate to the Directory:
    cd fedpilot-dashboard/
    
  2. Install Requirements:
    uv pip install -r requirements.txt
    
  3. Launch Streamlit:
    streamlit run app.py
    

The dashboard will open automatically in your browser (usually at http://localhost:8501). It supports both Light and Dark themes (styles/dark.css) and features an interactive sidebar for filtering down to specific Virtual Nodes.