Quickstart fastai

In this federated learning tutorial we will learn how to train a SqueezeNet model on MNIST using Flower and fastai. It is recommended to create a virtual environment and run everything within a virtualenv.

Now that we have a rough idea of what this example is about, let’s get started. First, install Flower in your new environment:

# In a new Python environment
$ pip install flwr

Then, run the command below:

$ flwr new @flwrlabs/quickstart-fastai
quickstart-fastai
├── fastai_example
│   ├── client_app.py   # Defines your ClientApp   ├── server_app.py   # Defines your ServerApp   └── task.py         # Defines your model, training and data loading
├── pyproject.toml      # Project metadata like dependencies and configs
└── README.md

This example uses a local simulation profile that flwr run submits to a managed local SuperLink, which then executes the run with the Flower Simulation Runtime, creating a federation of two nodes using FedAvg as the aggregation strategy. The dataset will be partitioned using Flower Dataset’s IidPartitioner. Let’s run the project:

$ cd quickstart-fastai

# Run with default arguments and stream logs
$ flwr run . --stream

Plain flwr run . submits the run, prints the run ID, and returns without streaming logs. For the full local workflow, see Run Flower Locally with a Managed SuperLink.

With default arguments you will see streamed output like this:

Starting local SuperLink on 127.0.0.1:39093...
Successfully started run 1859953118041441032
INFO :      Starting FedAvg strategy:
INFO :          ├── Number of rounds: 3
INFO :      [ROUND 1/3]
INFO :      configure_train: Sampled 2 nodes (out of 2)
INFO :      aggregate_train: Received 2 results and 0 failures
INFO :          └──> Aggregated MetricRecord: {}
INFO :      configure_evaluate: Sampled 2 nodes (out of 2)
INFO :      aggregate_evaluate: Received 2 results and 0 failures
INFO :          └──> Aggregated MetricRecord: {'eval_loss': 3.1197, 'eval_acc': 0.14874}
INFO :      [ROUND 2/3]
INFO :      ...
INFO :      [ROUND 3/3]
INFO :      ...
INFO :      Strategy execution finished in 72.84s
INFO :      Final results:
INFO :          ServerApp-side Evaluate Metrics:
INFO :          {}

You can also override the parameters defined in the [tool.flwr.app.config] section in pyproject.toml like this:

# Override some arguments
$ flwr run . --run-config num-server-rounds=5

Check the Run simulations documentation to learn more about how to configure and run Flower simulations.

참고

Check the source code of this tutorial in examples/quickstart-fastai in the Flower GitHub repository.