|
|
|
Adding a new contrlller requires a lot of sub-changes. The easiest way is to extend the base class `BaseController` and override the training hook method `_train`. The base class takes care of initializing the experiment on all devices, starting the logging process and more. Generally speaking, your implementation wants to iterate over the number of rounds. For each round, you will have to:
|
|
|
|
Adding a new controller requires a lot of sub-changes. The easiest way is to extend the base class `BaseController` and override the training hook method `_train`. The base class takes care of initializing the experiment on all devices, starting the logging process and more. Generally speaking, your implementation wants to iterate over the number of rounds. For each round, you will have to:
|
|
|
|
|
|
|
|
1) Do a training step
|
|
|
|
2) Refresh the list of active devices in case some droepped out (using `_refresh_active_devices`)
|
|
|
|
2) Refresh the list of active devices in case some dropped out (using `_refresh_active_devices`)
|
|
|
|
3) Optionally: aggregate metrics and log them
|
|
|
|
4) Optionally: save weights to file.
|
|
|
|
|
| ... | ... | @@ -9,3 +9,5 @@ The best controller to take a look at is the `FedController`. It has an easy imp |
|
|
|
|
|
|
|
- Add new RPC calls (see [here](modifications/protobuf-changes) for a more detailed overview)
|
|
|
|
- Add new methods to the device class
|
|
|
|
- Optionally: add constructor arguments to configure the controller, if necessary
|
|
|
|
- Add a new config file under`edml/config` that showcases/defines a default configuration for the controller. |
|
|
\ No newline at end of file |