pattern, and the CyclicController is implemented with the relay_and_wait pattern. The controller API allows the
researcher to focus on the control logic without needing to deal with underlying communication issues. Figure 1
shows the principle. Each FL client acts as a worker that simply executes tasks assigned to it (e.g., model training)
and returns execution results to the controller. At each task interaction, there can be optional filters that process
the task data or results before passing it to the Controller (on the server side) or task executor (client side). The
filter mechanism can be used for data privacy protection (e.g., homomorphic encryption/decryption or differential
privacy) without having to alter the training algorithms.
Key Components
NVFlare is built on a componentized architecture that allows FL workloads to move from
research and simulation to real-world production deployment. Some of the key components of this SDK include:
•FL Simulator for rapid development and prototyping.
•NVFlare Dashboard
for simplified project management, secure provisioning, and deployment, orchestra-
tion.
•Reference FL algorithms
(e.g., FedAvg, FedProx, SCAFFOLD) and workflows, like scatter and gather,
cyclic, etc.
•Privacy preservation with differential privacy, homomorphic encryption, and more.
•Specification-based API for extensibility, allowing customization with plug-able components.
•Tight integration with other learning frameworks like MONAI [3], XGBoost [5], and more.
High-Level Architecture
NVFlare is designed with the idea that less is more, using a specification-based design
principle to focus on what is essential. This allows other people to be able to do what they want to do in real-world
applications by following clear API definitions. FL is an open-ended space. The API-based design allows others
to bring their implementations and solutions for various components. Controllers, task executors, and filters
are just examples of such extensible components. NVFlare provides an end-to-end operation environment for
different personas. It provides a comprehensive provisioning system that creates security credentials for secure
communications to enable the easy and secure deployment of FL applications in the real world. It also provides an
FL Simulator for running proof-of-concept studies locally. In production mode, the researcher conducts an FL study
by submitting jobs using admin commands using Notebooks or the NVFlare Console – an interactive command
tool. NVFlare provides many commands for system operation and job management. With these commands, one
can start and stop a specific client or the entire system, submit new jobs, check the status of jobs, create a job by
cloning from an existing one, and much more.
With NVFlare’s component-based design, a job is just a configuration of components needed for the study. For
the control logic, the job specifies the controller component to be used and any components required by the controller.
3 System Concepts
A NVFlare system is a typical client-server communication system that comprises one or more FL server(s), one
or more FL client(s), and one or more admin clients. The FL Servers open two ports for communication with FL
clients and admin clients. FL clients and admin clients connect to the opened ports. FL clients and admin clients
do not open any ports and do not directly communicate with each other. The following is an overview of the key
concepts and objects available in NVFlare and the information that can be passed between them.
3