@gfedops/fedops-mnist
flwr new @gfedops/fedops-mnistFedOps MNIST Client App (FlowerHub)
This repository provides a FedOps Client App for MNIST training in a federated setting. It is intended for real client participation (laptop/PC/server/edge nodes), not only single-machine simulation.
In other words, this project is the client-side application that joins a FedOps-managed FL lifecycle.
What Is FedOps?
FedOps (Federated Learning Lifecycle Operations Management Platform) is a platform for operating federated learning end-to-end in production-like environments:
- migrate existing AI/ML workflows into FL with minimal friction
- scale participation across many clients in an MLOps-like manner
- continuously manage and monitor the full FL lifecycle
FedOps official site: https://ccl.gachon.ac.kr/fedops
What This App Is (and Is Not)
This repository (fedops-mnist) is a FedOps Client App.
- It runs local training on client-side data.
- It sends updates to an FL server.
- It receives aggregated global updates for the next round.
It does not create the FedOps FL server itself.
To set up the FedOps FL server first, follow: https://gachon-cclab.github.io/docs/FedOps-Tutorials/Create-FL-Server/
Operational Capabilities in the FedOps Context
FedOps supports real-device FL operations with platform-level capabilities such as:
- FLScalize: adapt existing models/data into FL client/server workflows
- Manager: monitor and manage client/server execution states
- CE/CS (Contribution Evaluation / Client Selection): contribution-aware client selection logic
- CI/CD/CFL: Git-based deployment and continuous/cyclic federated workflows
- Monitoring Dashboard: lifecycle visibility across run states, logs, and rounds
How This Client Runs
When you run this app with Flower (flwr run .), it launches two FedOps-side client processes:
- local training client (fedopsmnist.client_main)
- communication manager (fedopsmnist.client_manager_main)
Together, they participate in the practical FL cycle:
- Train on local client data
- Send model updates to the FL server
- Receive aggregated global model updates
- Repeat for the next round
Installation
pip install -e .
Run
Default run:
flwr run .
Run with a specific FedOps task ID:
flwr run . --run-config 'task_id="<YOUR_TASK_ID>"'
task_id from Flower run config is injected into the FedOps client configuration at startup.
Project Structure
fedops-mnist ├── fedopsmnist │ ├── __init__.py │ ├── client_app.py # Placeholder ClientApp for Flower app validation │ ├── launcher_app.py # Flower ServerApp entrypoint (process launcher) │ ├── client_main.py # FedOps local training client │ ├── client_manager_main.py # FedOps communication manager (FastAPI) │ ├── data_preparation.py # MNIST data loading │ ├── models.py # MNIST model/train/eval helpers │ └── conf/config.toml # FedOps client configuration ├── pyproject.toml └── README.md
Notes
- Network connectivity to the target FedOps FL server is required.
- In local (non-Docker) execution, the launcher uses environment-based task ID injection so client-manager communication remains on localhost.