====== Flower ======
* https://flower.ai/docs/framework/how-to-install-flower.html
===== Installation ======
Conda is __not__ needed to install Flower and just loads additional complexity - it works quite happily with the standard ''pip'' command including in later versions of the Python 3 modules installed on our HPC facilities.
The easiest approach is to load one of our Python software modules, and then create a new python venv area to hold it. In the example below we create the ''flowers'' folder with a new Python venv and use ''pip'' to install the latest Flowers package:
$ module load Python/3.11
$ python -m venv flower
$ cd flower
$ source bin/activate
$ pip install flwr
Collecting flwr
Downloading flwr-1.16.0-py3-none-any.whl (532 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 532.1/532.1 kB 6.1 MB/s eta 0:00:00
Collecting cryptography<45.0.0,>=44.0.1
Downloading cryptography-44.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2/4.2 MB 28.4 MB/s eta 0:00:00
...
...
Installing collected packages: ...
$
If you need to install the ''ray'' dependency, just substitute the ''pip'' command for the one which installs ''flwr[simulation]'' instead:
$ module load Python/3.11
$ python -m venv flower
$ cd flower
$ source bin/activate
$ pip install "flwr[simulation]"
Collecting flwr
Downloading flwr-1.16.0-py3-none-any.whl (532 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 532.1/532.1 kB 6.1 MB/s eta 0:00:00
Collecting cryptography<45.0.0,>=44.0.1
Downloading cryptography-44.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2/4.2 MB 28.4 MB/s eta 0:00:00
Collecting ray==2.31.0
Downloading ray-2.31.0-cp311-cp311-manylinux2014_x86_64.whl (66.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.7/66.7 MB 19.3 MB/s eta 0:00:00
...
...
Installing collected packages: ...
$
== Testing ==
$ module load Python/3.11
$ cd flower
$ source bin/activate
$ python -c "import flwr;print(flwr.__version__)"
1.16.0
$
===== Using Flower =====
You will need to load the required Python software module, then activate the Flowers virtual environment:
$ module load Python/3.11
$ cd flower
$ source bin/activate
$ bin/flower-simulation --help
usage: flower-simulation [-h] --app APP --num-supernodes NUM_SUPERNODES [--run-config RUN_CONFIG] [--backend BACKEND] [--backend-config BACKEND_CONFIG]
[--enable-tf-gpu-growth] [--verbose] [--flwr-dir FLWR_DIR] [--run-id RUN_ID]
Start a Flower simulation
options:
-h, --help show this help message and exit
--app APP Path to a directory containing a FAB-like structure with a pyproject.toml.
--num-supernodes NUM_SUPERNODES
Number of simulated SuperNodes.
--run-config RUN_CONFIG
Override configuration key-value pairs.
--backend BACKEND Simulation backend that executes the ClientApp.
--backend-config BACKEND_CONFIG
A JSON formatted stream, e.g '{"":, "":}' to configure a backend. Values supported in are
those included by `flwr.common.typing.ConfigsRecordValues`.
--enable-tf-gpu-growth
Enables GPU growth on the main thread. This is desirable if you make use of a TensorFlow model on your `ServerApp` while having
your `ClientApp` running on the same GPU. Without enabling this, you might encounter an out-of-memory error because TensorFlow
by default allocates all GPU memory.Read more about how `tf.config.experimental.set_memory_growth()` works in the TensorFlow
documentation: https://www.tensorflow.org/api/stable.
--verbose When unset, only INFO, WARNING and ERROR log messages will be shown. If set, DEBUG-level logs will be displayed.
--flwr-dir FLWR_DIR The path containing installed Flower Apps. By default, this value is equal to: - `$FLWR_HOME/` if `$FLWR_HOME` is defined -
`$XDG_DATA_HOME/.flwr/` if `$XDG_DATA_HOME` is defined - `$HOME/.flwr/` in all other cases
--run-id RUN_ID Sets the ID of the run started by the Simulation Engine.
$
----
[[:faq:index|Back to FAQ]]