Quickstart#

In this guide, we will train a simple Convolutional Neural Network (CNN) on MNIST handwritten digits dataset. We will simulate a Federated Learning experiment between two collaborators, orchestrated by an aggregator, using the TaskRunner CLI interface.

OpenFL must be installed for this tutorial. Refer to the installation guide.

# Suppress TensorFlow warnings
%env TF_CPP_MIN_LOG_LEVEL=3
env: TF_CPP_MIN_LOG_LEVEL=3

Create a workspace#

For brevity, we will reuse an existing workspace.

!fx workspace create --prefix ./mnist_example --template keras_cnn_mnist
%cd ./mnist_example
Creating Workspace Directories
Creating Workspace Templates from /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl-workspace/keras_cnn_mnist in /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example
Collecting keras==3.6.0 (from -r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1))
Downloading keras-3.6.0-py3-none-any.whl.metadata (5.8 kB)
Collecting tensorflow==2.18.0 (from -r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading tensorflow-2.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.1 kB)
Collecting absl-py (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1))
  Downloading absl_py-2.1.0-py3-none-any.whl.metadata (2.3 kB)
Requirement already satisfied: numpy in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (2.2.1)
Requirement already satisfied: rich in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (13.9.4)
Collecting namex (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1))
  Downloading namex-0.0.8-py3-none-any.whl.metadata (246 bytes)
Collecting h5py (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1))
Downloading h5py-3.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.5 kB)
Collecting optree (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1))
  Downloading optree-0.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (47 kB)
Collecting ml-dtypes (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1))
  Downloading ml_dtypes-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (21 kB)
Requirement already satisfied: packaging in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (24.2)
Collecting astunparse>=1.6.0 (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
Downloading astunparse-1.6.3-py2.py3-none-any.whl.metadata (4.4 kB)
Collecting flatbuffers>=24.3.25 (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading flatbuffers-24.12.23-py2.py3-none-any.whl.metadata (876 bytes)
Collecting gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading gast-0.6.0-py3-none-any.whl.metadata (1.3 kB)
Collecting google-pasta>=0.1.1 (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading google_pasta-0.2.0-py3-none-any.whl.metadata (814 bytes)
Collecting libclang>=13.0.0 (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading libclang-18.1.1-py2.py3-none-manylinux2010_x86_64.whl.metadata (5.2 kB)
Collecting opt-einsum>=2.3.2 (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading opt_einsum-3.4.0-py3-none-any.whl.metadata (6.3 kB)
Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<6.0.0dev,>=3.20.3 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (5.29.3)
Requirement already satisfied: requests<3,>=2.21.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (2.32.3)
Requirement already satisfied: setuptools in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (75.8.0)
Requirement already satisfied: six>=1.12.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (1.17.0)
Collecting termcolor>=1.1.0 (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading termcolor-2.5.0-py3-none-any.whl.metadata (6.1 kB)
Requirement already satisfied: typing-extensions>=3.6.6 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (4.12.2)
Collecting wrapt>=1.11.0 (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.4 kB)
Requirement already satisfied: grpcio<2.0,>=1.24.3 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (1.65.5)
Collecting tensorboard<2.19,>=2.18 (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading tensorboard-2.18.0-py3-none-any.whl.metadata (1.6 kB)
Collecting numpy (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1))
Downloading numpy-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (60 kB)
Collecting ml-dtypes (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1))
  Downloading ml_dtypes-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (20 kB)
Collecting tensorflow-io-gcs-filesystem>=0.23.1 (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading tensorflow_io_gcs_filesystem-0.37.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (14 kB)
Requirement already satisfied: wheel<1.0,>=0.23.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from astunparse>=1.6.0->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (0.40.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from requests<3,>=2.21.0->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (3.4.1)
Requirement already satisfied: idna<4,>=2.5 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from requests<3,>=2.21.0->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (3.10)
Requirement already satisfied: urllib3<3,>=1.21.1 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from requests<3,>=2.21.0->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (2.3.0)
Requirement already satisfied: certifi>=2017.4.17 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from requests<3,>=2.21.0->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (2024.12.14)
Collecting markdown>=2.6.8 (from tensorboard<2.19,>=2.18->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading Markdown-3.7-py3-none-any.whl.metadata (7.0 kB)
Collecting tensorboard-data-server<0.8.0,>=0.7.0 (from tensorboard<2.19,>=2.18->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading tensorboard_data_server-0.7.2-py3-none-manylinux_2_31_x86_64.whl.metadata (1.1 kB)
Collecting werkzeug>=1.0.1 (from tensorboard<2.19,>=2.18->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2))
  Downloading werkzeug-3.1.3-py3-none-any.whl.metadata (3.7 kB)
Requirement already satisfied: markdown-it-py>=2.2.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from rich->keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (3.0.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from rich->keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (2.19.1)
Requirement already satisfied: mdurl~=0.1 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from markdown-it-py>=2.2.0->rich->keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (0.1.2)
Requirement already satisfied: MarkupSafe>=2.1.1 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from werkzeug>=1.0.1->tensorboard<2.19,>=2.18->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (3.0.2)
Downloading keras-3.6.0-py3-none-any.whl (1.2 MB)
?25l   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0/1.2 MB ? eta -:--:--
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 36.6 MB/s eta 0:00:00
?25hDownloading tensorflow-2.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (615.3 MB)
?25l   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0/615.3 MB ? eta -:--:--
   ━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 32.8/615.3 MB 163.9 MB/s eta 0:00:04
   ━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67.9/615.3 MB 170.6 MB/s eta 0:00:04
   ━━━━━━╸━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 109.8/615.3 MB 181.5 MB/s eta 0:00:03
   ━━━━━━━━━╸━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 157.0/615.3 MB 194.4 MB/s eta 0:00:03
   ━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━ 209.7/615.3 MB 207.5 MB/s eta 0:00:02
   ━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━━━━━━━━━━ 262.1/615.3 MB 215.9 MB/s eta 0:00:02
   ━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━━━━━━━ 313.3/615.3 MB 236.2 MB/s eta 0:00:02
   ━━━━━━━━━━━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━ 366.2/615.3 MB 251.9 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━ 408.9/615.3 MB 248.2 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━ 457.2/615.3 MB 245.9 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╺━━━━━━ 512.5/615.3 MB 249.0 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━ 567.0/615.3 MB 251.0 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 609.7/615.3 MB 242.0 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 615.3/615.3 MB 238.6 MB/s eta 0:00:01
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 615.3/615.3 MB 27.3 MB/s eta 0:00:00
?25hDownloading absl_py-2.1.0-py3-none-any.whl (133 kB)
Downloading astunparse-1.6.3-py2.py3-none-any.whl (12 kB)
Downloading flatbuffers-24.12.23-py2.py3-none-any.whl (30 kB)
Downloading gast-0.6.0-py3-none-any.whl (21 kB)
Downloading google_pasta-0.2.0-py3-none-any.whl (57 kB)
Downloading h5py-3.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB)
?25l   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0/5.3 MB ? eta -:--:--
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.3/5.3 MB 113.6 MB/s eta 0:00:00
?25hDownloading libclang-18.1.1-py2.py3-none-manylinux2010_x86_64.whl (24.5 MB)
?25l   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0/24.5 MB ? eta -:--:--
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24.5/24.5 MB 131.3 MB/s eta 0:00:00
?25hDownloading ml_dtypes-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB)
?25l   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0/2.2 MB ? eta -:--:--
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.2/2.2 MB 122.4 MB/s eta 0:00:00
?25hDownloading numpy-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.5 MB)
?25l   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0/19.5 MB ? eta -:--:--
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 19.5/19.5 MB 123.9 MB/s eta 0:00:00
?25hDownloading opt_einsum-3.4.0-py3-none-any.whl (71 kB)
Downloading tensorboard-2.18.0-py3-none-any.whl (5.5 MB)
?25l   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0/5.5 MB ? eta -:--:--
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.5/5.5 MB 116.0 MB/s eta 0:00:00
?25hDownloading tensorflow_io_gcs_filesystem-0.37.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.1 MB)
?25l   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0/5.1 MB ? eta -:--:--
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.1/5.1 MB 118.5 MB/s eta 0:00:00
?25hDownloading termcolor-2.5.0-py3-none-any.whl (7.8 kB)
Downloading wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (82 kB)
Downloading namex-0.0.8-py3-none-any.whl (5.8 kB)
Downloading optree-0.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (391 kB)
Downloading Markdown-3.7-py3-none-any.whl (106 kB)
Downloading tensorboard_data_server-0.7.2-py3-none-manylinux_2_31_x86_64.whl (6.6 MB)
?25l   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0/6.6 MB ? eta -:--:--
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.6/6.6 MB 125.1 MB/s eta 0:00:00
?25hDownloading werkzeug-3.1.3-py3-none-any.whl (224 kB)
Installing collected packages: namex, libclang, flatbuffers, wrapt, werkzeug, termcolor, tensorflow-io-gcs-filesystem, tensorboard-data-server, optree, opt-einsum, numpy, markdown, google-pasta, gast, astunparse, absl-py, tensorboard, ml-dtypes, h5py, keras, tensorflow
Attempting uninstall: numpy
    Found existing installation: numpy 2.2.1
Uninstalling numpy-2.2.1:
      Successfully uninstalled numpy-2.2.1
Successfully installed absl-py-2.1.0 astunparse-1.6.3 flatbuffers-24.12.23 gast-0.6.0 google-pasta-0.2.0 h5py-3.12.1 keras-3.6.0 libclang-18.1.1 markdown-3.7 ml-dtypes-0.4.1 namex-0.0.8 numpy-2.0.2 opt-einsum-3.4.0 optree-0.14.0 tensorboard-2.18.0 tensorboard-data-server-0.7.2 tensorflow-2.18.0 tensorflow-io-gcs-filesystem-0.37.1 termcolor-2.5.0 werkzeug-3.1.3 wrapt-1.17.2
Successfully installed packages from /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt.
[22:20:51] INFO     Loading DEFAULTS for section aggregator from file                                                                                ]8;id=352322;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=53019;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#147\147]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl-workspace/workspace/plan/defaults/aggregator.yaml.            
           INFO     Loading DEFAULTS for section assigner from file                                                                                  ]8;id=858877;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=12497;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#147\147]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl-workspace/workspace/plan/defaults/assigner.yaml.              
           INFO     Loading DEFAULTS for section collaborator from file                                                                              ]8;id=389555;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=570122;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#147\147]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl-workspace/workspace/plan/defaults/collaborator.yam            
                    l.                                                                                                                                          
           INFO     Loading DEFAULTS for section compression_pipeline from file                                                                      ]8;id=863006;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=434023;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#147\147]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl-workspace/workspace/plan/defaults/compression_pipe            
                    line.yaml.                                                                                                                                  
           INFO     Loading DEFAULTS for section data_loader from file                                                                               ]8;id=761919;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=292184;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#147\147]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl-workspace/workspace/plan/defaults/data_loader.yaml            
                    .                                                                                                                                           
           INFO     Loading DEFAULTS for section network from file                                                                                   ]8;id=93902;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=565702;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#147\147]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl-workspace/workspace/plan/defaults/network.yaml.               
           INFO     Loading DEFAULTS for section task_runner from file                                                                               ]8;id=642871;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=221871;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#147\147]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl-workspace/workspace/plan/defaults/task_runner.yaml            
                    .                                                                                                                                           
           INFO     Loading DEFAULTS for section tasks from file                                                                                     ]8;id=798662;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=176434;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#147\147]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl-workspace/workspace/plan/defaults/tasks_keras.yaml            
                    .                                                                                                                                           
           INFO     FL-Plan hash is a1113de951ee54ee07f35f92fd44e9bae930ef8acea7b15cab53cd67d3dcb9cdfa8aa9dc9230c03da7fd0e78b52b5bca                 ]8;id=844110;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=154554;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#288\288]8;;\
           INFO     FL-Plan hash is bff00735b75404236959f1888f251b222a20e5cd353e0fa32a52cf49f80b03696ea467c338da9b592510e81f2f81466b                 ]8;id=235258;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=400200;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#288\288]8;;\
           INFO     Parsing Federated Learning Plan : SUCCESS :                                                                                      ]8;id=904280;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=71991;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#193\193]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl-workspace/keras_cnn_mnist/plan/plan.yaml.                     
           INFO     aggregator:                                                                                                                      ]8;id=977226;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=619811;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#198\198]8;;\
                      settings:                                                                                                                                 
                        best_state_path: save/best.pbuf                                                                                                         
                        db_store_rounds: 2                                                                                                                      
                        init_state_path: save/init.pbuf                                                                                                         
                        last_state_path: save/last.pbuf                                                                                                         
                        rounds_to_train: 10                                                                                                                     
                      template: openfl.component.Aggregator                                                                                                     
                    assigner:                                                                                                                                   
                      settings:                                                                                                                                 
                        task_groups:                                                                                                                            
                        - name: learning                                                                                                                        
                          percentage: 1.0                                                                                                                       
                          tasks:                                                                                                                                
                          - aggregated_model_validation                                                                                                         
                          - train                                                                                                                               
                          - locally_tuned_model_validation                                                                                                      
                      template: openfl.component.RandomGroupedAssigner                                                                                          
                    collaborator:                                                                                                                               
                      settings:                                                                                                                                 
                        db_store_rounds: 1                                                                                                                      
                        delta_updates: false                                                                                                                    
                        opt_treatment: RESET                                                                                                                    
                      template: openfl.component.Collaborator                                                                                                   
                    compression_pipeline:                                                                                                                       
                      settings: {}                                                                                                                              
                      template: openfl.pipelines.NoCompressionPipeline                                                                                          
                    data_loader:                                                                                                                                
                      settings:                                                                                                                                 
                        batch_size: 256                                                                                                                         
                        collaborator_count: 2                                                                                                                   
                        data_group_name: mnist                                                                                                                  
                      template: src.dataloader.KerasMNISTInMemory                                                                                               
                    network:                                                                                                                                    
                      settings:                                                                                                                                 
                        agg_addr: build-26889138-project-638300-openfl                                                                                          
                        agg_port: 59282                                                                                                                         
                        cert_folder: cert                                                                                                                       
                        client_reconnect_interval: 5                                                                                                            
                        hash_salt: auto                                                                                                                         
                        require_client_auth: true                                                                                                               
                        use_tls: true                                                                                                                           
                      template: openfl.federation.Network                                                                                                       
                    task_runner:                                                                                                                                
                      settings: {}                                                                                                                              
                      template: src.taskrunner.KerasCNN                                                                                                         
                    tasks:                                                                                                                                      
                      aggregated_model_validation:                                                                                                              
                        function: validate_task                                                                                                                 
                        kwargs:                                                                                                                                 
                          apply: global                                                                                                                         
                          batch_size: 32                                                                                                                        
                          metrics:                                                                                                                              
                          - accuracy                                                                                                                            
                      locally_tuned_model_validation:                                                                                                           
                        function: validate_task                                                                                                                 
                        kwargs:                                                                                                                                 
                          apply: local                                                                                                                          
                          batch_size: 32                                                                                                                        
                          metrics:                                                                                                                              
                          - accuracy                                                                                                                            
                      settings: {}                                                                                                                              
                      train:                                                                                                                                    
                        function: train_task                                                                                                                    
                        kwargs:                                                                                                                                 
                          batch_size: 32                                                                                                                        
                          epochs: 1                                                                                                                             
                          metrics:                                                                                                                              
                          - loss                                                                                                                                
                                                                                                                                                                

New workspace directory structure:
mnist_example
├── plan
│   ├── plan.yaml
│   ├── cols.yaml
│   ├── data.yaml
│   └── defaults
├── cert
├── logs
├── save
├── src
│   ├── mnist_utils.py
│   ├── taskrunner.py
│   ├── __init__.py
│   └── dataloader.py
├── requirements.txt
├── data
└── .workspace

6 directories, 10 files

 ✔️ OK
/home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/IPython/core/magics/osm.py:417: UserWarning: This is now an optional IPython functionality, setting dhist requires you to install the `pickleshare` library.
  self.shell.db['dhist'] = compress_dhist(dhist)[-100:]

Initialize a Plan#

This step builds an entire FL experiment plan, along with the initial set of parameters that will be used in the experiment. We supply localhost as the aggregator address, for simulation purposes.

!fx plan initialize -a localhost
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152452.199799     640 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152452.203643     640 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
Requirement already satisfied: keras==3.6.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from -r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (3.6.0)
Requirement already satisfied: tensorflow==2.18.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from -r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (2.18.0)
Requirement already satisfied: absl-py in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (2.1.0)
Requirement already satisfied: numpy in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (2.0.2)
Requirement already satisfied: rich in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (13.9.4)
Requirement already satisfied: namex in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (0.0.8)
Requirement already satisfied: h5py in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (3.12.1)
Requirement already satisfied: optree in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (0.14.0)
Requirement already satisfied: ml-dtypes in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (0.4.1)
Requirement already satisfied: packaging in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (24.2)
Requirement already satisfied: astunparse>=1.6.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (1.6.3)
Requirement already satisfied: flatbuffers>=24.3.25 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (24.12.23)
Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (0.6.0)
Requirement already satisfied: google-pasta>=0.1.1 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (0.2.0)
Requirement already satisfied: libclang>=13.0.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (18.1.1)
Requirement already satisfied: opt-einsum>=2.3.2 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (3.4.0)
Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<6.0.0dev,>=3.20.3 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (5.29.3)
Requirement already satisfied: requests<3,>=2.21.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (2.32.3)
Requirement already satisfied: setuptools in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (75.8.0)
Requirement already satisfied: six>=1.12.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (1.17.0)
Requirement already satisfied: termcolor>=1.1.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (2.5.0)
Requirement already satisfied: typing-extensions>=3.6.6 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (4.12.2)
Requirement already satisfied: wrapt>=1.11.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (1.17.2)
Requirement already satisfied: grpcio<2.0,>=1.24.3 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (1.65.5)
Requirement already satisfied: tensorboard<2.19,>=2.18 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (2.18.0)
Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (0.37.1)
Requirement already satisfied: wheel<1.0,>=0.23.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from astunparse>=1.6.0->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (0.40.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from requests<3,>=2.21.0->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (3.4.1)
Requirement already satisfied: idna<4,>=2.5 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from requests<3,>=2.21.0->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (3.10)
Requirement already satisfied: urllib3<3,>=1.21.1 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from requests<3,>=2.21.0->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (2.3.0)
Requirement already satisfied: certifi>=2017.4.17 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from requests<3,>=2.21.0->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (2024.12.14)
Requirement already satisfied: markdown>=2.6.8 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorboard<2.19,>=2.18->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (3.7)
Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorboard<2.19,>=2.18->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (0.7.2)
Requirement already satisfied: werkzeug>=1.0.1 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from tensorboard<2.19,>=2.18->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (3.1.3)
Requirement already satisfied: markdown-it-py>=2.2.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from rich->keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (3.0.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from rich->keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (2.19.1)
Requirement already satisfied: mdurl~=0.1 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from markdown-it-py>=2.2.0->rich->keras==3.6.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 1)) (0.1.2)
Requirement already satisfied: MarkupSafe>=2.1.1 in /home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages (from werkzeug>=1.0.1->tensorboard<2.19,>=2.18->tensorflow==2.18.0->-r /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt (line 2)) (3.0.2)
Successfully installed packages from /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/requirements.txt.
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152456.357842     640 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152456.361773     640 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
[22:20:58] INFO     FL-Plan hash is ccab021654f48fa1b901c963154e9be62634e740c520d465f89c0338a92102c6573cd6cb8c1e94aa776d34f2ac4aad25                 ]8;id=96604;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=196359;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#288\288]8;;\
           INFO     Parsing Federated Learning Plan : SUCCESS :                                                                                      ]8;id=428794;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=682613;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#193\193]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/plan/plan.yaml.                         
           INFO     aggregator:                                                                                                                      ]8;id=435901;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=478353;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#198\198]8;;\
                      settings:                                                                                                                                 
                        best_state_path: save/best.pbuf                                                                                                         
                        db_store_rounds: 2                                                                                                                      
                        init_state_path: save/init.pbuf                                                                                                         
                        last_state_path: save/last.pbuf                                                                                                         
                        rounds_to_train: 10                                                                                                                     
                      template: openfl.component.Aggregator                                                                                                     
                    assigner:                                                                                                                                   
                      settings:                                                                                                                                 
                        task_groups:                                                                                                                            
                        - name: learning                                                                                                                        
                          percentage: 1.0                                                                                                                       
                          tasks:                                                                                                                                
                          - aggregated_model_validation                                                                                                         
                          - train                                                                                                                               
                          - locally_tuned_model_validation                                                                                                      
                      template: openfl.component.RandomGroupedAssigner                                                                                          
                    collaborator:                                                                                                                               
                      settings:                                                                                                                                 
                        db_store_rounds: 1                                                                                                                      
                        delta_updates: false                                                                                                                    
                        opt_treatment: RESET                                                                                                                    
                      template: openfl.component.Collaborator                                                                                                   
                    compression_pipeline:                                                                                                                       
                      settings: {}                                                                                                                              
                      template: openfl.pipelines.NoCompressionPipeline                                                                                          
                    data_loader:                                                                                                                                
                      settings:                                                                                                                                 
                        batch_size: 256                                                                                                                         
                        collaborator_count: 2                                                                                                                   
                        data_group_name: mnist                                                                                                                  
                      template: src.dataloader.KerasMNISTInMemory                                                                                               
                    network:                                                                                                                                    
                      settings:                                                                                                                                 
                        agg_addr: build-26889138-project-638300-openfl                                                                                          
                        agg_port: 59282                                                                                                                         
                        cert_folder: cert                                                                                                                       
                        client_reconnect_interval: 5                                                                                                            
                        hash_salt: auto                                                                                                                         
                        require_client_auth: true                                                                                                               
                        use_tls: true                                                                                                                           
                      template: openfl.federation.Network                                                                                                       
                    task_runner:                                                                                                                                
                      settings: {}                                                                                                                              
                      template: src.taskrunner.KerasCNN                                                                                                         
                    tasks:                                                                                                                                      
                      aggregated_model_validation:                                                                                                              
                        function: validate_task                                                                                                                 
                        kwargs:                                                                                                                                 
                          apply: global                                                                                                                         
                          batch_size: 32                                                                                                                        
                          metrics:                                                                                                                              
                          - accuracy                                                                                                                            
                      locally_tuned_model_validation:                                                                                                           
                        function: validate_task                                                                                                                 
                        kwargs:                                                                                                                                 
                          apply: local                                                                                                                          
                          batch_size: 32                                                                                                                        
                          metrics:                                                                                                                              
                          - accuracy                                                                                                                            
                      settings: {}                                                                                                                              
                      train:                                                                                                                                    
                        function: train_task                                                                                                                    
                        kwargs:                                                                                                                                 
                          batch_size: 32                                                                                                                        
                          epochs: 1                                                                                                                             
                          metrics:                                                                                                                              
                          - loss                                                                                                                                
                                                                                                                                                                
           INFO     Building `src.dataloader.KerasMNISTInMemory` Module.                                                                             ]8;id=41858;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=552465;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
8192/11490434 [..............................] - ETA: 0s
 1024000/11490434 [=>............................] - ETA: 0s
 6512640/11490434 [================>.............] - ETA: 0s
 7921664/11490434 [===================>..........] - ETA: 0s
11493376/11490434 [==============================] - 0s 0us/step
[22:20:59] INFO     MNIST > X_train Shape : (30000, 28, 28, 1)                                                                                ]8;id=519372;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py\mnist_utils.py]8;;\:]8;id=316372;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py#108\108]8;;\
           INFO     MNIST > y_train Shape : (30000,)                                                                                          ]8;id=539519;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py\mnist_utils.py]8;;\:]8;id=63209;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py#109\109]8;;\
           INFO     MNIST > Train Samples : 30000                                                                                             ]8;id=8707;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py\mnist_utils.py]8;;\:]8;id=571405;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py#110\110]8;;\
           INFO     MNIST > Valid Samples : 5000                                                                                              ]8;id=784024;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py\mnist_utils.py]8;;\:]8;id=666677;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py#111\111]8;;\
           INFO     Building `src.taskrunner.KerasCNN` Module.                                                                                       ]8;id=182271;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=614718;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/keras/src/layers/convolutional/base_conv.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
  super().__init__(activity_regularizer=activity_regularizer, **kwargs)
           INFO     Model: "sequential"                                                                                                     ]8;id=519184;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/keras/src/utils/summary_utils.py\summary_utils.py]8;;\:]8;id=367526;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/keras/src/utils/summary_utils.py#389\389]8;;\
                    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓                                                                
                    ┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃                                                                
                    ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩                                                                
                    │ conv2d (Conv2D)(None, 13, 13, 16)272                    
                    ├─────────────────────────────────┼────────────────────────┼───────────────┤                                                                
                    │ conv2d_1 (Conv2D)(None, 5, 5, 32)8,224                    
                    ├─────────────────────────────────┼────────────────────────┼───────────────┤                                                                
                    │ flatten (Flatten)(None, 800)0                    
                    ├─────────────────────────────────┼────────────────────────┼───────────────┤                                                                
                    │ dense (Dense)(None, 100)80,100                    
                    ├─────────────────────────────────┼────────────────────────┼───────────────┤                                                                
                    │ dense_1 (Dense)(None, 10)1,010                    
                    └─────────────────────────────────┴────────────────────────┴───────────────┘                                                                
                     Total params: 89,606 (350.02 KB)                                                                                                           
                     Trainable params: 89,606 (350.02 KB)                                                                                                       
                     Non-trainable params: 0 (0.00 B)                                                                                                           
                                                                                                                                                                
           INFO     Train Set Size : 30000                                                                                                      ]8;id=571765;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/taskrunner.py\taskrunner.py]8;;\:]8;id=623995;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/taskrunner.py#32\32]8;;\
           INFO     Valid Set Size : 5000                                                                                                       ]8;id=812229;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/taskrunner.py\taskrunner.py]8;;\:]8;id=693735;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/taskrunner.py#33\33]8;;\
           INFO     Building `openfl.pipelines.NoCompressionPipeline` Module.                                                                        ]8;id=252332;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=810007;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
           WARNING  Following parameters omitted from global initial model, local initialization will determine values: []                           ]8;id=345336;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/plan.py\plan.py]8;;\:]8;id=983002;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/plan.py#186\186]8;;\
           INFO     Creating Initial Weights File    🠆 save/init.pbuf                                                                                ]8;id=931648;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/plan.py\plan.py]8;;\:]8;id=611902;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/plan.py#196\196]8;;\
           WARNING  Patching Aggregator Addr in Plan 🠆 localhost                                                                                     ]8;id=310081;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/plan.py\plan.py]8;;\:]8;id=829732;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/plan.py#209\209]8;;\
           INFO     FL-Plan hash is f185582a79bcb3638a9d17256e2384ca80deaab0aac553a86b7b427c149ad6b907426005cec9e6b07259265de7adaef2                 ]8;id=363865;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=917971;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#288\288]8;;\
           INFO     ['plan_f185582a']                                                                                                                ]8;id=445063;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/plan.py\plan.py]8;;\:]8;id=351647;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/plan.py#223\223]8;;\

 ✔️ OK

Create a certificate authority (CA)#

OpenFL supports mTLS, which ensures secure communication between the collaborators and the aggregator. This step generates a certificate authority (CA) that will be used to sign the certificates of the collaborators. The CA is generated only once and can be reused for multiple experiments.

!fx workspace certify
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152460.975346     660 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152460.979750     660 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
Setting Up Certificate Authority...

1.  Create Root CA
1.1 Create Directories
1.2 Create Database
1.3 Create CA Request and Certificate
2.  Create Signing Certificate
2.1 Create Directories
2.2 Create Database
2.3 Create Signing Certificate CSR
2.4 Sign Signing Certificate CSR
3   Create Certificate Chain

Done.

 ✔️ OK

Create an aggregator, and its key-pair#

!fx aggregator generate-cert-request --fqdn localhost
!fx aggregator certify --fqdn localhost --silent
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152465.177808     666 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152465.181686     666 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
Creating AGGREGATOR certificate key pair with following settings: CN=localhost, SAN=DNS:localhost
Writing AGGREGATOR certificate key pair to: /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/cert/server
The CSR Hash 06c5645ddf15d63142745669d92b659ea5315268a10e82e0896551cbfa487addb9c97e8e1361825c25338b61f5be5661

 ✔️ OK
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152469.193325     672 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152469.197205     672 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
The CSR Hash for file server/agg_localhost.csr = 06c5645ddf15d63142745669d92b659ea5315268a10e82e0896551cbfa487addb9c97e8e1361825c25338b61f5be5661
 Warning: manual check of certificate hashes is bypassed in silent mode.
 Signing AGGREGATOR certificate

 ✔️ OK

Create collaborators, and their key-pairs#

We will name our first collaborator bob.

!fx collaborator create -d 0 -n bob --silent
!fx collaborator generate-cert-request -n bob --silent
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152473.277271     678 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152473.281113     678 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
✔️ OK
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152477.208685     684 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152477.212546     684 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
Creating COLLABORATOR certificate key pair with following settings: CN=bob, SAN=DNS:bob
Moving COLLABORATOR certificate to: /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/cert/col_bob
The CSR Hash 4c56d299b6d86f6deee3a4bdc33818f8d34cdeb9eea528baf9a6262cd1413cfe58f9a6b5a59c1e25b999da46577667f5
Archive col_bob_to_agg_cert_request.zip with certificate signing request created
This file should be sent to the certificate authority (typically hosted by the aggregator) for signing

 ✔️ OK

Certify bob with the CA.

Note: This is a command that runs on the aggregator side. bob’s certificate signing request (CSR) is sent to the aggregator, which then signs the certificate with the CA. The signed certificate then has to be sent back to bob.

!fx collaborator certify --request-pkg col_bob_to_agg_cert_request.zip --silent
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152481.227417     690 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152481.231268     690 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
The CSR Hash for file col_bob.csr is 4c56d299b6d86f6deee3a4bdc33818f8d34cdeb9eea528baf9a6262cd1413cfe58f9a6b5a59c1e25b999da46577667f5
Signing COLLABORATOR certificate, Warning: manual check of certificate hashes is bypassed in silent mode.
Registering bob in /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/plan/cols.yaml

 ✔️ OK

And the second collaborator charlie.

!fx collaborator create -d 1 -n charlie --silent
!fx collaborator generate-cert-request -n charlie --silent
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152485.229270     696 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152485.233400     696 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
✔️ OK
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152489.165177     702 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152489.169118     702 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
Creating COLLABORATOR certificate key pair with following settings: CN=charlie, SAN=DNS:charlie
Moving COLLABORATOR certificate to: /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/cert/col_charlie
The CSR Hash 7506d61abab5654815d4f9f1abbcc8e76fa82c1ef57efd8b0ee9b0cca1871cd96751ce38242ee226dbdbf849107d86c1
Archive col_charlie_to_agg_cert_request.zip with certificate signing request created
This file should be sent to the certificate authority (typically hosted by the aggregator) for signing

 ✔️ OK

Certify charlie with the CA.

Note: This is a command that runs on the aggregator side. charlie’s certificate signing request (CSR) is sent to the aggregator, which then signs the certificate with the CA. The signed certificate then has to be sent back to charlie.

!fx collaborator certify --request-pkg col_charlie_to_agg_cert_request.zip --silent
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152493.248773     708 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152493.252618     708 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
The CSR Hash for file col_charlie.csr is 7506d61abab5654815d4f9f1abbcc8e76fa82c1ef57efd8b0ee9b0cca1871cd96751ce38242ee226dbdbf849107d86c1
Signing COLLABORATOR certificate, Warning: manual check of certificate hashes is bypassed in silent mode.

Registering charlie in /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/plan/cols.yaml

 ✔️ OK

Import CA signed certificates#

This step imports the CA-signed certificates of the collaborator and the aggregator into the workspace.

Note: This command runs on respective collaborator sites.

!fx collaborator certify --import agg_to_col_bob_signed_cert.zip
!fx collaborator certify --import agg_to_col_charlie_signed_cert.zip
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152497.342898     714 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152497.347865     714 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
Certificate updated in the PKI directory

 ✔️ OK
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152501.279626     720 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152501.283451     720 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
Certificate updated in the PKI directory

 ✔️ OK

Start the simulation#

This step starts the simulation of the FL experiment. The aggregator will orchestrate the training process between the collaborators.

!fx aggregator start & fx collaborator start -n bob & fx collaborator start -n charlie
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152505.737535     728 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152505.750676     728 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152505.831356     726 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152505.837438     726 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1737152505.994504     727 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1737152506.021403     727 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
[22:21:52] INFO     FL-Plan hash is f185582a79bcb3638a9d17256e2384ca80deaab0aac553a86b7b427c149ad6b907426005cec9e6b07259265de7adaef2                 ]8;id=809219;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=574288;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#288\288]8;;\
           INFO     Parsing Federated Learning Plan : SUCCESS :                                                                                      ]8;id=883712;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=882807;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#193\193]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/plan/plan.yaml.                         
           INFO     aggregator:                                                                                                                      ]8;id=393592;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=941473;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#198\198]8;;\
                      settings:                                                                                                                                 
                        best_state_path: save/best.pbuf                                                                                                         
                        db_store_rounds: 2                                                                                                                      
                        init_state_path: save/init.pbuf                                                                                                         
                        last_state_path: save/last.pbuf                                                                                                         
                        rounds_to_train: 10                                                                                                                     
                      template: openfl.component.Aggregator                                                                                                     
                    assigner:                                                                                                                                   
                      settings:                                                                                                                                 
                        task_groups:                                                                                                                            
                        - name: learning                                                                                                                        
                          percentage: 1.0                                                                                                                       
                          tasks:                                                                                                                                
                          - aggregated_model_validation                                                                                                         
                          - train                                                                                                                               
                          - locally_tuned_model_validation                                                                                                      
                      template: openfl.component.RandomGroupedAssigner                                                                                          
                    collaborator:                                                                                                                               
                      settings:                                                                                                                                 
                        db_store_rounds: 1                                                                                                                      
                        delta_updates: false                                                                                                                    
                        opt_treatment: RESET                                                                                                                    
                      template: openfl.component.Collaborator                                                                                                   
                    compression_pipeline:                                                                                                                       
                      settings: {}                                                                                                                              
                      template: openfl.pipelines.NoCompressionPipeline                                                                                          
                    data_loader:                                                                                                                                
                      settings:                                                                                                                                 
                        batch_size: 256                                                                                                                         
                        collaborator_count: 2                                                                                                                   
                        data_group_name: mnist                                                                                                                  
                      template: src.dataloader.KerasMNISTInMemory                                                                                               
                    network:                                                                                                                                    
                      settings:                                                                                                                                 
                        agg_addr: localhost                                                                                                                     
                        agg_port: 59282                                                                                                                         
                        cert_folder: cert                                                                                                                       
                        client_reconnect_interval: 5                                                                                                            
                        hash_salt: auto                                                                                                                         
                        require_client_auth: true                                                                                                               
                        use_tls: true                                                                                                                           
                      template: openfl.federation.Network                                                                                                       
                    task_runner:                                                                                                                                
                      settings: {}                                                                                                                              
                      template: src.taskrunner.KerasCNN                                                                                                         
                    tasks:                                                                                                                                      
                      aggregated_model_validation:                                                                                                              
                        function: validate_task                                                                                                                 
                        kwargs:                                                                                                                                 
                          apply: global                                                                                                                         
                          batch_size: 32                                                                                                                        
                          metrics:                                                                                                                              
                          - accuracy                                                                                                                            
                      locally_tuned_model_validation:                                                                                                           
                        function: validate_task                                                                                                                 
                        kwargs:                                                                                                                                 
                          apply: local                                                                                                                          
                          batch_size: 32                                                                                                                        
                          metrics:                                                                                                                              
                          - accuracy                                                                                                                            
                      settings: {}                                                                                                                              
                      train:                                                                                                                                    
                        function: train_task                                                                                                                    
                        kwargs:                                                                                                                                 
                          batch_size: 32                                                                                                                        
                          epochs: 1                                                                                                                             
                          metrics:                                                                                                                              
                          - loss                                                                                                                                
                                                                                                                                                                
Data = {'one': '1', 'bob': '0', 'charlie': '1'}
           INFO     🧿 Starting a Collaborator Service.                                                                                       ]8;id=36376;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/collaborator.py\collaborator.py]8;;\:]8;id=96619;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/collaborator.py#85\85]8;;\
           INFO     Building `src.dataloader.KerasMNISTInMemory` Module.                                                                             ]8;id=639015;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=115312;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/_distutils_hack/__init__.py:30: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
  warnings.warn(
[22:21:52] INFO     FL-Plan hash is f185582a79bcb3638a9d17256e2384ca80deaab0aac553a86b7b427c149ad6b907426005cec9e6b07259265de7adaef2                 ]8;id=166941;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=552250;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#288\288]8;;\
           INFO     Parsing Federated Learning Plan : SUCCESS :                                                                                      ]8;id=109860;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=463546;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#193\193]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/plan/plan.yaml.                         
           INFO     aggregator:                                                                                                                      ]8;id=186731;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=700402;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#198\198]8;;\
                      settings:                                                                                                                                 
                        best_state_path: save/best.pbuf                                                                                                         
                        db_store_rounds: 2                                                                                                                      
                        init_state_path: save/init.pbuf                                                                                                         
                        last_state_path: save/last.pbuf                                                                                                         
                        rounds_to_train: 10                                                                                                                     
                      template: openfl.component.Aggregator                                                                                                     
                    assigner:                                                                                                                                   
                      settings:                                                                                                                                 
                        task_groups:                                                                                                                            
                        - name: learning                                                                                                                        
                          percentage: 1.0                                                                                                                       
                          tasks:                                                                                                                                
                          - aggregated_model_validation                                                                                                         
                          - train                                                                                                                               
                          - locally_tuned_model_validation                                                                                                      
                      template: openfl.component.RandomGroupedAssigner                                                                                          
                    collaborator:                                                                                                                               
                      settings:                                                                                                                                 
                        db_store_rounds: 1                                                                                                                      
                        delta_updates: false                                                                                                                    
                        opt_treatment: RESET                                                                                                                    
                      template: openfl.component.Collaborator                                                                                                   
                    compression_pipeline:                                                                                                                       
                      settings: {}                                                                                                                              
                      template: openfl.pipelines.NoCompressionPipeline                                                                                          
                    data_loader:                                                                                                                                
                      settings:                                                                                                                                 
                        batch_size: 256                                                                                                                         
                        collaborator_count: 2                                                                                                                   
                        data_group_name: mnist                                                                                                                  
                      template: src.dataloader.KerasMNISTInMemory                                                                                               
                    network:                                                                                                                                    
                      settings:                                                                                                                                 
                        agg_addr: localhost                                                                                                                     
                        agg_port: 59282                                                                                                                         
                        cert_folder: cert                                                                                                                       
                        client_reconnect_interval: 5                                                                                                            
                        hash_salt: auto                                                                                                                         
                        require_client_auth: true                                                                                                               
                        use_tls: true                                                                                                                           
                      template: openfl.federation.Network                                                                                                       
                    task_runner:                                                                                                                                
                      settings: {}                                                                                                                              
                      template: src.taskrunner.KerasCNN                                                                                                         
                    tasks:                                                                                                                                      
                      aggregated_model_validation:                                                                                                              
                        function: validate_task                                                                                                                 
                        kwargs:                                                                                                                                 
                          apply: global                                                                                                                         
                          batch_size: 32                                                                                                                        
                          metrics:                                                                                                                              
                          - accuracy                                                                                                                            
0m
                      locally_tuned_model_validation:                                                                                                           
                        function: validate_task                                                                                                                 
                        kwargs:                                                                                                                                 
                          apply: local                                                                                                                          
                          batch_size: 32                                                                                                                        
                          metrics:                                                                                                                              
                          - accuracy                                                                                                                            
                      settings: {}                                                                                                                              
                      train:                                                                                                                                    
                        function: train_task                                                                                                                    
                        kwargs:                                                                                                                                 
                          batch_size: 32                                                                                                                        
                          epochs: 1                                                                                                                             
                          metrics:                                                                                                                              
                          - loss                                                                                                                                
                                                                                                                                                                
Data = {'one': '1', 'bob': '0', 'charlie': '1'}
           INFO     🧿 Starting a Collaborator Service.                                                                                       ]8;id=811047;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/collaborator.py\collaborator.py]8;;\:]8;id=726936;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/collaborator.py#85\85]8;;\
           INFO     Building `src.dataloader.KerasMNISTInMemory` Module.                                                                             ]8;id=380203;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=241929;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
           INFO     MNIST > X_train Shape : (30000, 28, 28, 1)                                                                                ]8;id=582856;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py\mnist_utils.py]8;;\:]8;id=701158;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py#108\108]8;;\
           INFO     MNIST > y_train Shape : (30000,)                                                                                          ]8;id=579650;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py\mnist_utils.py]8;;\:]8;id=778055;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py#109\109]8;;\
           INFO     MNIST > Train Samples : 30000                                                                                             ]8;id=543538;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py\mnist_utils.py]8;;\:]8;id=18668;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py#110\110]8;;\
           INFO     MNIST > Valid Samples : 5000                                                                                              ]8;id=101126;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py\mnist_utils.py]8;;\:]8;id=693124;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py#111\111]8;;\
           INFO     Building `src.taskrunner.KerasCNN` Module.                                                                                       ]8;id=571080;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=479984;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/keras/src/layers/convolutional/base_conv.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
  super().__init__(activity_regularizer=activity_regularizer, **kwargs)
[22:21:52] INFO     FL-Plan hash is f185582a79bcb3638a9d17256e2384ca80deaab0aac553a86b7b427c149ad6b907426005cec9e6b07259265de7adaef2                 ]8;id=488594;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=986691;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#288\288]8;;\
           INFO     Parsing Federated Learning Plan : SUCCESS :                                                                                      ]8;id=410747;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=750720;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#193\193]8;;\
                    /home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/plan/plan.yaml.                         
           INFO     aggregator:                                                                                                                      ]8;id=401497;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=863471;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#198\198]8;;\
                      settings:                                                                                                                                 
                        best_state_path: save/best.pbuf                                                                                                         
                        db_store_rounds: 2                                                                                                                      
                        init_state_path: save/init.pbuf                                                                                                         
                        last_state_path: save/last.pbuf                                                                                                         
                        rounds_to_train: 10                                                                                                                     
                      template: openfl.component.Aggregator                                                                                                     
                    assigner:                                                                                                                                   
                      settings:                                                                                                                                 
                        task_groups:                                                                                                                            
                        - name: learning                                                                                                                        
                          percentage: 1.0                                                                                                                       
                          tasks:                                                                                                                                
                          - aggregated_model_validation                                                                                                         
                          - train                                                                                                                               
                          - locally_tuned_model_validation                                                                                                      
                      template: openfl.component.RandomGroupedAssigner                                                                                          
                    collaborator:                                                                                                                               
                      settings:                                                                                                                                 
                        db_store_rounds: 1                                                                                                                      
                        delta_updates: false                                                                                                                    
                        opt_treatment: RESET                                                                                                                    
                      template: openfl.component.Collaborator                                                                                                   
                    compression_pipeline:                                                                                                                       
                      settings: {}                                                                                                                              
                      template: openfl.pipelines.NoCompressionPipeline                                                                                          
                    data_loader:                                                                                                                                
                      settings:                                                                                                                                 
                        batch_size: 256                                                                                                                         
                        collaborator_count: 2                                                                                                                   
                        data_group_name: mnist                                                                                                                  
                      template: src.dataloader.KerasMNISTInMemory                                                                                               
                    network:                                                                                                                                    
                      settings:                                                                                                                                 
                        agg_addr: localhost                                                                                                                     
                        agg_port: 59282                                                                                                                         
                        cert_folder: cert                                                                                                                       
                        client_reconnect_interval: 5                                                                                                            
                        hash_salt: auto                                                                                                                         
                        require_client_auth: true                                                                                                               
                        use_tls: true                                                                                                                           
                      template: openfl.federation.Network                                                                                                       
                    task_runner:                                                                                                                                
                      settings: {}                                                                                                                              
                      template: src.taskrunner.KerasCNN                                                                                                         
                    tasks:                                                                                                                                      
                      aggregated_model_validation:                                                                                                              
                        function: validate_task                                                                                                                 
                        kwargs:                                                                                                                                 
                          apply: global                                                                                                                         
                          batch_size: 32                                                                                                                        
                          metrics:                                                                                                                              
                          - accuracy                                                                                                                            
                      locally_tuned_model_validation:                                                                                                           
                        function: validate_task                                                                                                                 
                        kwargs:                                                                                                                                 
                          apply: local                                                                                                                          
                          batch_size: 32                                                                                                                        
                          metrics:                                                                                                                              
                          - accuracy                                                                                                                            
                      settings: {}                                                                                                                              
                      train:                                                                                                                                    
                        function: train_task                                                                                                                    
                        kwargs:                                                                                                                                 
                          batch_size: 32                                                                                                                        
                          epochs: 1                                                                                                                             
                          metrics:                                                                                                                              
                          - loss                                                                                                                                
                                                                                                                                                                
           INFO     Setting aggregator to assign: learning task_group                                                                          ]8;id=981401;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/aggregator.py\aggregator.py]8;;\:]8;id=445508;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/aggregator.py#101\101]8;;\
           INFO     🧿 Starting the Aggregator Service.                                                                                        ]8;id=106911;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/aggregator.py\aggregator.py]8;;\:]8;id=575368;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/interface/aggregator.py#103\103]8;;\
           INFO     Building `openfl.component.RandomGroupedAssigner` Module.                                                                        ]8;id=597183;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=932664;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
           INFO     Building `openfl.pipelines.NoCompressionPipeline` Module.                                                                        ]8;id=576193;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=122823;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
           INFO     Building `openfl.component.straggler_handling_functions.CutoffTimeBasedStragglerHandling` Module.                                ]8;id=379390;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=937823;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
           WARNING  CutoffTimeBasedStragglerHandling is disabled as straggler_cutoff_time is set to np.inf.           ]8;id=55017;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/straggler_handling_functions/cutoff_time_based_straggler_handling.py\cutoff_time_based_straggler_handling.py]8;;\:]8;id=706045;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/straggler_handling_functions/cutoff_time_based_straggler_handling.py#46\46]8;;\
           INFO     Building `openfl.component.Aggregator` Module.                                                                                   ]8;id=684104;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=784416;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
           INFO     Starting Aggregator gRPC Server                                                                                     ]8;id=920431;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/transport/grpc/aggregator_server.py\aggregator_server.py]8;;\:]8;id=11912;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/transport/grpc/aggregator_server.py#347\347]8;;\
           INFO     Model: "sequential"                                                                                                     ]8;id=810019;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/keras/src/utils/summary_utils.py\summary_utils.py]8;;\:]8;id=641173;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/keras/src/utils/summary_utils.py#389\389]8;;\
                    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓                                                                
                    ┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃                                                                
                    ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩                                                                
                    │ conv2d (Conv2D)(None, 13, 13, 16)272                    
                    ├─────────────────────────────────┼────────────────────────┼───────────────┤                                                                
                    │ conv2d_1 (Conv2D)(None, 5, 5, 32)8,224                    
                    ├─────────────────────────────────┼────────────────────────┼───────────────┤                                                                
                    │ flatten (Flatten)(None, 800)0                    
                    ├─────────────────────────────────┼────────────────────────┼───────────────┤                                                                
                    │ dense (Dense)(None, 100)80,100                    
                    ├─────────────────────────────────┼────────────────────────┼───────────────┤                                                                
                    │ dense_1 (Dense)(None, 10)1,010                    
                    └─────────────────────────────────┴────────────────────────┴───────────────┘                                                                
                     Total params: 89,606 (350.02 KB)                                                                                                           
                     Trainable params: 89,606 (350.02 KB)                                                                                                       
                     Non-trainable params: 0 (0.00 B)                                                                                                           
                                                                                                                                                                
           INFO     Train Set Size : 30000                                                                                                      ]8;id=529254;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/taskrunner.py\taskrunner.py]8;;\:]8;id=148378;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/taskrunner.py#32\32]8;;\
           INFO     Valid Set Size : 5000                                                                                                       ]8;id=245726;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/taskrunner.py\taskrunner.py]8;;\:]8;id=715789;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/taskrunner.py#33\33]8;;\
           INFO     Building `openfl.pipelines.NoCompressionPipeline` Module.                                                                        ]8;id=507383;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=371077;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
           INFO     Building `openfl.component.Collaborator` Module.                                                                                 ]8;id=77502;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=945202;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
           INFO     Waiting for tasks...                                                                                                     ]8;id=71080;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=201946;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Sending tasks to collaborator charlie for round 0                                                                          ]8;id=491393;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=127753;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=881799;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=471109;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
[22:21:53] INFO     MNIST > X_train Shape : (30000, 28, 28, 1)                                                                                ]8;id=491330;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py\mnist_utils.py]8;;\:]8;id=612593;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py#108\108]8;;\
           INFO     MNIST > y_train Shape : (30000,)                                                                                          ]8;id=369188;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py\mnist_utils.py]8;;\:]8;id=846666;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py#109\109]8;;\
           INFO     MNIST > Train Samples : 30000                                                                                             ]8;id=606120;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py\mnist_utils.py]8;;\:]8;id=486723;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py#110\110]8;;\
           INFO     MNIST > Valid Samples : 5000                                                                                              ]8;id=557578;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py\mnist_utils.py]8;;\:]8;id=675528;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/mnist_utils.py#111\111]8;;\
           INFO     Building `src.taskrunner.KerasCNN` Module.                                                                                       ]8;id=101428;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=294333;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
/home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/keras/src/layers/convolutional/base_conv.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
  super().__init__(activity_regularizer=activity_regularizer, **kwargs)
           INFO     Model: "sequential"                                                                                                     ]8;id=238476;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/keras/src/utils/summary_utils.py\summary_utils.py]8;;\:]8;id=433918;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/envs/v1.7/lib/python3.10/site-packages/keras/src/utils/summary_utils.py#389\389]8;;\
                    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓                                                                
                    ┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃                                                                
                    ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩                                                                
                    │ conv2d (Conv2D)(None, 13, 13, 16)272                    
                    ├─────────────────────────────────┼────────────────────────┼───────────────┤                                                                
                    │ conv2d_1 (Conv2D)(None, 5, 5, 32)8,224                    
                    ├─────────────────────────────────┼────────────────────────┼───────────────┤                                                                
                    │ flatten (Flatten)(None, 800)0                    
                    ├─────────────────────────────────┼────────────────────────┼───────────────┤                                                                
                    │ dense (Dense)(None, 100)80,100                    
                    ├─────────────────────────────────┼────────────────────────┼───────────────┤                                                                
                    │ dense_1 (Dense)(None, 10)1,010                    
                    └─────────────────────────────────┴────────────────────────┴───────────────┘                                                                
                     Total params: 89,606 (350.02 KB)                                                                                                           
                     Trainable params: 89,606 (350.02 KB)                                                                                                       
                     Non-trainable params: 0 (0.00 B)                                                                                                           
                                                                                                                                                                
           INFO     Train Set Size : 30000                                                                                                      ]8;id=823729;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/taskrunner.py\taskrunner.py]8;;\:]8;id=140326;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/taskrunner.py#32\32]8;;\
           INFO     Valid Set Size : 5000                                                                                                       ]8;id=321318;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/taskrunner.py\taskrunner.py]8;;\:]8;id=29170;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/docs/tutorials/mnist_example/src/taskrunner.py#33\33]8;;\
           INFO     Building `openfl.pipelines.NoCompressionPipeline` Module.                                                                        ]8;id=686356;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=220611;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
           INFO     Building `openfl.component.Collaborator` Module.                                                                                 ]8;id=538926;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py\plan.py]8;;\:]8;id=409708;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/plan/plan.py#226\226]8;;\
           INFO     Waiting for tasks...                                                                                                     ]8;id=841702;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=660070;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:21:53] INFO     Sending tasks to collaborator bob for round 0                                                                              ]8;id=66677;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=984084;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=274728;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=195842;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
     17/Unknown 0s 3ms/step - accuracy: 0.1087 - loss: 2.3032
     37/Unknown 1s 3ms/step - accuracy: 0.0996 - loss: 2.3047
     58/Unknown 1s 3ms/step - accuracy: 0.0944 - loss: 2.3055
     76/Unknown 1s 3ms/step - accuracy: 0.0920 - loss: 2.3060
     97/Unknown 1s 3ms/step - accuracy: 0.0909 - loss: 2.3061
    117/Unknown 1s 3ms/step - accuracy: 0.0901 - loss: 2.3061
    133/Unknown 1s 3ms/step - accuracy: 0.0895 - loss: 2.3061
    150/Unknown 1s 3ms/step - accuracy: 0.0889 - loss: 2.3062
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.0886 - loss: 2.3062
      1/Unknown 1s 542ms/step - accuracy: 0.0938 - loss: 2.3005
[22:21:54] INFO     Collaborator charlie is sending task results for aggregated_model_validation, round 0                                      ]8;id=133989;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=861621;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
      2/Unknown 1s 5ms/step - accuracy: 0.0859 - loss: 2.3063  [22:21:54] INFO     Run 0 epoch of 0 round                                                                                                   ]8;id=995515;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=661651;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
     16/Unknown 1s 4ms/step - accuracy: 0.0684 - loss: 2.3065
     33/Unknown 1s 3ms/step - accuracy: 0.0655 - loss: 2.3081
     49/Unknown 1s 3ms/step - accuracy: 0.0658 - loss: 2.3090
     65/Unknown 1s 3ms/step - accuracy: 0.0668 - loss: 2.3094
     83/Unknown 1s 3ms/step - accuracy: 0.0678 - loss: 2.3095
     99/Unknown 1s 3ms/step - accuracy: 0.0691 - loss: 2.3095
    116/Unknown 1s 3ms/step - accuracy: 0.0702 - loss: 2.3095
    139/Unknown 1s 3ms/step - accuracy: 0.0710 - loss: 2.3095
    157/Unknown 1s 3ms/step - accuracy: 0.0716 - loss: 2.3095/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.0716 - loss: 2.3095
           INFO     Collaborator bob is sending task results for aggregated_model_validation, round 0                                          ]8;id=263325;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=177786;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:21:54] INFO     Run 0 epoch of 0 round                                                                                                   ]8;id=121080;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=719247;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 8s - 8ms/step - accuracy: 0.9412 - loss: 0.1997
938/938 - 7s - 8ms/step - accuracy: 0.9105 - loss: 0.2942
[22:22:05] INFO     Collaborator charlie is sending task results for train, round 0                                                            ]8;id=973995;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=777284;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
      2/Unknown 0s 2ms/step - accuracy: 0.9453 - loss: 0.1814
     34/Unknown 0s 2ms/step - accuracy: 0.9652 - loss: 0.1215
     66/Unknown 0s 2ms/step - accuracy: 0.9621 - loss: 0.1268
     99/Unknown 0s 2ms/step - accuracy: 0.9605 - loss: 0.1284
    133/Unknown 0s 2ms/step - accuracy: 0.9599 - loss: 0.1309
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9597 - loss: 0.1330
[22:22:06] INFO     Collaborator charlie is sending task results for locally_tuned_model_validation, round 0                                   ]8;id=535553;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=448347;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 0: Collaborators that have completed all tasks: ['charlie']                                                         ]8;id=519318;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=132035;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:22:06] INFO     Waiting for tasks...                                                                                                     ]8;id=464262;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=92778;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Collaborator bob is sending task results for train, round 0                                                                ]8;id=396379;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=931593;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 26ms/step - accuracy: 0.9375 - loss: 0.0896
     34/Unknown 0s 2ms/step - accuracy: 0.9659 - loss: 0.1083
     67/Unknown 0s 2ms/step - accuracy: 0.9659 - loss: 0.1037
     99/Unknown 0s 2ms/step - accuracy: 0.9665 - loss: 0.1026
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9673 - loss: 0.1006
           INFO     Collaborator bob is sending task results for locally_tuned_model_validation, round 0                                       ]8;id=713752;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=930313;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 0: Collaborators that have completed all tasks: ['charlie', 'bob']                                                  ]8;id=84833;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=311973;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:22:07] INFO     Round 0: saved the best model with score 0.079300                                                                          ]8;id=148893;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=858735;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#955\955]8;;\
           INFO     Saving round 0 model...                                                                                                    ]8;id=640055;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=259401;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#994\994]8;;\
           INFO     Starting round 1...                                                                                                       ]8;id=104300;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=539276;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1007\1007]8;;\
[22:22:07] INFO     Waiting for tasks...                                                                                                     ]8;id=970651;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=470679;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Sending tasks to collaborator bob for round 1                                                                              ]8;id=725341;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=241792;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=562320;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=622844;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
1/Unknown 0s 26ms/step - accuracy: 1.0000 - loss: 0.0428
     33/Unknown 0s 2ms/step - accuracy: 0.9611 - loss: 0.1211
     66/Unknown 0s 2ms/step - accuracy: 0.9622 - loss: 0.1216
     99/Unknown 0s 2ms/step - accuracy: 0.9638 - loss: 0.1202
    131/Unknown 0s 2ms/step - accuracy: 0.9648 - loss: 0.1178
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9654 - loss: 0.1163
           INFO     Collaborator bob is sending task results for aggregated_model_validation, round 1                                          ]8;id=237144;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=838744;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Run 0 epoch of 1 round                                                                                                   ]8;id=752822;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=188722;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 3s - 3ms/step - accuracy: 0.9635 - loss: 0.1203
[22:22:12] INFO     Collaborator bob is sending task results for train, round 1                                                                ]8;id=252120;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=59419;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 25ms/step - accuracy: 1.0000 - loss: 0.0048
     33/Unknown 0s 2ms/step - accuracy: 0.9813 - loss: 0.0753
     65/Unknown 0s 2ms/step - accuracy: 0.9788 - loss: 0.0767
     97/Unknown 0s 2ms/step - accuracy: 0.9773 - loss: 0.0793
    130/Unknown 0s 2ms/step - accuracy: 0.9759 - loss: 0.0812
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9752 - loss: 0.0817
[22:22:13] INFO     Collaborator bob is sending task results for locally_tuned_model_validation, round 1                                       ]8;id=508850;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=781747;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 1: Collaborators that have completed all tasks: ['bob']                                                             ]8;id=20388;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=299190;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:22:13] INFO     Waiting for tasks...                                                                                                     ]8;id=438798;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=493854;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:22:16] INFO     Waiting for tasks...                                                                                                     ]8;id=336722;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=3007;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:22:16] INFO     Sending tasks to collaborator charlie for round 1                                                                          ]8;id=894042;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=445453;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=52944;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=275817;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
      2/Unknown 0s 2ms/step - accuracy: 0.9766 - loss: 0.1724
     34/Unknown 0s 2ms/step - accuracy: 0.9711 - loss: 0.1171
     67/Unknown 0s 2ms/step - accuracy: 0.9707 - loss: 0.1211
    102/Unknown 0s 2ms/step - accuracy: 0.9701 - loss: 0.1218
    136/Unknown 0s 2ms/step - accuracy: 0.9697 - loss: 0.1215
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9695 - loss: 0.1214
[22:22:17] INFO     Collaborator charlie is sending task results for aggregated_model_validation, round 1                                      ]8;id=510464;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=358130;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:22:17] INFO     Run 0 epoch of 1 round                                                                                                   ]8;id=864862;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=662772;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 3s - 3ms/step - accuracy: 0.9820 - loss: 0.0602
[22:22:22] INFO     Collaborator charlie is sending task results for train, round 1                                                            ]8;id=221151;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=29124;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 26ms/step - accuracy: 0.9688 - loss: 0.0691
     33/Unknown 0s 2ms/step - accuracy: 0.9663 - loss: 0.1149
     67/Unknown 0s 2ms/step - accuracy: 0.9643 - loss: 0.1189
    100/Unknown 0s 2ms/step - accuracy: 0.9640 - loss: 0.1174
    134/Unknown 0s 2ms/step - accuracy: 0.9639 - loss: 0.1154
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9638 - loss: 0.1140
           INFO     Collaborator charlie is sending task results for locally_tuned_model_validation, round 1                                   ]8;id=608396;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=628530;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 1: Collaborators that have completed all tasks: ['bob', 'charlie']                                                  ]8;id=828943;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=746350;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
           INFO     Round 1: saved the best model with score 0.967400                                                                          ]8;id=121070;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=734517;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#955\955]8;;\
           INFO     Saving round 1 model...                                                                                                    ]8;id=53941;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=66520;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#994\994]8;;\
           INFO     Starting round 2...                                                                                                       ]8;id=484533;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=688721;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1007\1007]8;;\
[22:22:22] INFO     Waiting for tasks...                                                                                                     ]8;id=699322;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=205442;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Sending tasks to collaborator charlie for round 2                                                                          ]8;id=802997;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=682647;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=917709;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=537947;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
1/Unknown 0s 26ms/step - accuracy: 0.9375 - loss: 0.1186
     34/Unknown 0s 2ms/step - accuracy: 0.9695 - loss: 0.0873
     66/Unknown 0s 2ms/step - accuracy: 0.9733 - loss: 0.0778
    102/Unknown 0s 2ms/step - accuracy: 0.9759 - loss: 0.0717
    135/Unknown 0s 2ms/step - accuracy: 0.9768 - loss: 0.0699[22:22:23] INFO     Waiting for tasks...                                                                                                     ]8;id=368154;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=32750;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:22:23] INFO     Sending tasks to collaborator bob for round 2                                                                              ]8;id=244061;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=274869;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=286388;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=405534;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
    154/Unknown 0s 2ms/step - accuracy: 0.9771 - loss: 0.0695/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9772 - loss: 0.0694
           INFO     Collaborator charlie is sending task results for aggregated_model_validation, round 2                                      ]8;id=803084;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=29304;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:22:23] INFO     Run 0 epoch of 2 round                                                                                                   ]8;id=974477;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=310017;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
1/Unknown 0s 43ms/step - accuracy: 1.0000 - loss: 0.0517
     21/Unknown 0s 3ms/step - accuracy: 0.9775 - loss: 0.0787
     36/Unknown 0s 3ms/step - accuracy: 0.9787 - loss: 0.0727
     49/Unknown 0s 3ms/step - accuracy: 0.9798 - loss: 0.0686
     62/Unknown 0s 3ms/step - accuracy: 0.9803 - loss: 0.0659
     76/Unknown 0s 3ms/step - accuracy: 0.9802 - loss: 0.0645
     89/Unknown 0s 4ms/step - accuracy: 0.9803 - loss: 0.0635
    102/Unknown 0s 4ms/step - accuracy: 0.9804 - loss: 0.0628
    115/Unknown 0s 4ms/step - accuracy: 0.9804 - loss: 0.0625
    128/Unknown 1s 4ms/step - accuracy: 0.9804 - loss: 0.0624
    141/Unknown 1s 4ms/step - accuracy: 0.9805 - loss: 0.0623
    154/Unknown 1s 4ms/step - accuracy: 0.9805 - loss: 0.0621
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - accuracy: 0.9805 - loss: 0.0620
[22:22:25] INFO     Collaborator bob is sending task results for aggregated_model_validation, round 2                                          ]8;id=646623;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=975146;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:22:25] INFO     Run 0 epoch of 2 round                                                                                                   ]8;id=907556;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=705451;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 5s - 6ms/step - accuracy: 0.9886 - loss: 0.0372
[22:22:28] INFO     Collaborator charlie is sending task results for train, round 2                                                            ]8;id=823804;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=626543;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 46ms/step - accuracy: 1.0000 - loss: 0.0019
     17/Unknown 0s 3ms/step - accuracy: 0.9823 - loss: 0.0460
     34/Unknown 0s 3ms/step - accuracy: 0.9805 - loss: 0.0529
     53/Unknown 0s 3ms/step - accuracy: 0.9799 - loss: 0.0575
     73/Unknown 0s 3ms/step - accuracy: 0.9787 - loss: 0.0631
     92/Unknown 0s 3ms/step - accuracy: 0.9777 - loss: 0.0668
    109/Unknown 0s 3ms/step - accuracy: 0.9771 - loss: 0.0689
    125/Unknown 0s 3ms/step - accuracy: 0.9766 - loss: 0.0705
    141/Unknown 0s 3ms/step - accuracy: 0.9762 - loss: 0.0718
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.9759 - loss: 0.0732
[22:22:29] INFO     Collaborator charlie is sending task results for locally_tuned_model_validation, round 2                                   ]8;id=92627;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=23839;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 2: Collaborators that have completed all tasks: ['charlie']                                                         ]8;id=674900;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=622603;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:22:29] INFO     Waiting for tasks...                                                                                                     ]8;id=168273;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=164507;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
938/938 - 5s - 6ms/step - accuracy: 0.9728 - loss: 0.0875
[22:22:30] INFO     Collaborator bob is sending task results for train, round 2                                                                ]8;id=854602;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=860406;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
      2/Unknown 0s 3ms/step - accuracy: 0.9844 - loss: 0.0290
     34/Unknown 0s 2ms/step - accuracy: 0.9874 - loss: 0.0447
     67/Unknown 0s 2ms/step - accuracy: 0.9872 - loss: 0.0447
    101/Unknown 0s 2ms/step - accuracy: 0.9867 - loss: 0.0450
    134/Unknown 0s 2ms/step - accuracy: 0.9861 - loss: 0.0461
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9859 - loss: 0.0466
           INFO     Collaborator bob is sending task results for locally_tuned_model_validation, round 2                                       ]8;id=927341;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=623308;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 2: Collaborators that have completed all tasks: ['charlie', 'bob']                                                  ]8;id=100224;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=198295;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:22:31] INFO     Round 2: saved the best model with score 0.980200                                                                          ]8;id=716014;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=491689;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#955\955]8;;\
           INFO     Saving round 2 model...                                                                                                    ]8;id=228451;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=938511;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#994\994]8;;\
           INFO     Starting round 3...                                                                                                       ]8;id=845043;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=143903;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1007\1007]8;;\
[22:22:31] INFO     Waiting for tasks...                                                                                                     ]8;id=716101;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=265681;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Sending tasks to collaborator bob for round 3                                                                              ]8;id=558767;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=910341;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=158550;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=659997;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
1/Unknown 0s 25ms/step - accuracy: 0.9375 - loss: 0.0704
     33/Unknown 0s 2ms/step - accuracy: 0.9758 - loss: 0.0597
     65/Unknown 0s 2ms/step - accuracy: 0.9796 - loss: 0.0533
     96/Unknown 0s 2ms/step - accuracy: 0.9812 - loss: 0.0509
    128/Unknown 0s 2ms/step - accuracy: 0.9819 - loss: 0.0504
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9825 - loss: 0.0496
           INFO     Collaborator bob is sending task results for aggregated_model_validation, round 3                                          ]8;id=334187;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=634285;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Run 0 epoch of 3 round                                                                                                   ]8;id=639335;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=368452;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 3s - 3ms/step - accuracy: 0.9782 - loss: 0.0687
[22:22:36] INFO     Collaborator bob is sending task results for train, round 3                                                                ]8;id=588916;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=424923;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 27ms/step - accuracy: 0.9688 - loss: 0.1427
     32/Unknown 0s 2ms/step - accuracy: 0.9837 - loss: 0.0650
     65/Unknown 0s 2ms/step - accuracy: 0.9847 - loss: 0.0582
     99/Unknown 0s 2ms/step - accuracy: 0.9852 - loss: 0.0544
    131/Unknown 0s 2ms/step - accuracy: 0.9849 - loss: 0.0534
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9847 - loss: 0.0529
[22:22:37] INFO     Collaborator bob is sending task results for locally_tuned_model_validation, round 3                                       ]8;id=277470;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=690806;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 3: Collaborators that have completed all tasks: ['bob']                                                             ]8;id=463720;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=674255;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:22:37] INFO     Waiting for tasks...                                                                                                     ]8;id=438144;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=296168;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:22:39] INFO     Waiting for tasks...                                                                                                     ]8;id=633778;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=136249;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:22:39] INFO     Sending tasks to collaborator charlie for round 3                                                                          ]8;id=289160;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=932730;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=227489;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=306437;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
     33/Unknown 0s 2ms/step - accuracy: 0.9803 - loss: 0.0509
     65/Unknown 0s 2ms/step - accuracy: 0.9812 - loss: 0.0522
     98/Unknown 0s 2ms/step - accuracy: 0.9812 - loss: 0.0532
    130/Unknown 0s 2ms/step - accuracy: 0.9814 - loss: 0.0536
    131/Unknown 0s 2ms/step - accuracy: 0.9814 - loss: 0.0536/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9818 - loss: 0.0534
[22:22:40] INFO     Collaborator charlie is sending task results for aggregated_model_validation, round 3                                      ]8;id=940920;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=430477;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:22:40] INFO     Run 0 epoch of 3 round                                                                                                   ]8;id=626895;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=285216;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 3s - 3ms/step - accuracy: 0.9914 - loss: 0.0284
[22:22:45] INFO     Collaborator charlie is sending task results for train, round 3                                                            ]8;id=724213;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=782939;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 25ms/step - accuracy: 0.9688 - loss: 0.0996
     33/Unknown 0s 2ms/step - accuracy: 0.9757 - loss: 0.0751
     67/Unknown 0s 2ms/step - accuracy: 0.9774 - loss: 0.0707
    100/Unknown 0s 2ms/step - accuracy: 0.9773 - loss: 0.0717
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9778 - loss: 0.0712
           INFO     Collaborator charlie is sending task results for locally_tuned_model_validation, round 3                                   ]8;id=769569;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=543040;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 3: Collaborators that have completed all tasks: ['bob', 'charlie']                                                  ]8;id=347994;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=6390;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:22:46] INFO     Round 3: saved the best model with score 0.984600                                                                          ]8;id=936048;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=798715;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#955\955]8;;\
           INFO     Saving round 3 model...                                                                                                    ]8;id=491468;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=469270;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#994\994]8;;\
           INFO     Starting round 4...                                                                                                       ]8;id=649217;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=82336;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1007\1007]8;;\
[22:22:46] INFO     Waiting for tasks...                                                                                                     ]8;id=474908;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=134181;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Sending tasks to collaborator charlie for round 4                                                                          ]8;id=895007;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=617918;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=663333;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=753339;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
1/Unknown 0s 26ms/step - accuracy: 0.9688 - loss: 0.1287
     33/Unknown 0s 2ms/step - accuracy: 0.9838 - loss: 0.0547
     66/Unknown 0s 2ms/step - accuracy: 0.9837 - loss: 0.0533
    100/Unknown 0s 2ms/step - accuracy: 0.9843 - loss: 0.0522
    134/Unknown 0s 2ms/step - accuracy: 0.9846 - loss: 0.0509
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9847 - loss: 0.0503
           INFO     Collaborator charlie is sending task results for aggregated_model_validation, round 4                                      ]8;id=138385;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=757753;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Run 0 epoch of 4 round                                                                                                   ]8;id=370147;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=85416;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
[22:22:47] INFO     Waiting for tasks...                                                                                                     ]8;id=787651;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=475416;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:22:47] INFO     Sending tasks to collaborator bob for round 4                                                                              ]8;id=603914;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=950318;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=481287;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=140405;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
      2/Unknown 0s 2ms/step - accuracy: 1.0000 - loss: 0.0096
     21/Unknown 0s 3ms/step - accuracy: 0.9924 - loss: 0.0247
     42/Unknown 0s 3ms/step - accuracy: 0.9896 - loss: 0.0287
     63/Unknown 0s 3ms/step - accuracy: 0.9890 - loss: 0.0310
     84/Unknown 0s 2ms/step - accuracy: 0.9884 - loss: 0.0344
    105/Unknown 0s 2ms/step - accuracy: 0.9877 - loss: 0.0371
    125/Unknown 0s 2ms/step - accuracy: 0.9874 - loss: 0.0384
    143/Unknown 0s 3ms/step - accuracy: 0.9874 - loss: 0.0390
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - accuracy: 0.9873 - loss: 0.0395
[22:22:48] INFO     Collaborator bob is sending task results for aggregated_model_validation, round 4                                          ]8;id=655971;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=466046;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:22:48] INFO     Run 0 epoch of 4 round                                                                                                   ]8;id=576384;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=147129;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 6s - 6ms/step - accuracy: 0.9938 - loss: 0.0202
[22:22:52] INFO     Collaborator charlie is sending task results for train, round 4                                                            ]8;id=881033;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=869448;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 54ms/step - accuracy: 1.0000 - loss: 0.0053
     21/Unknown 0s 3ms/step - accuracy: 0.9761 - loss: 0.0919
     40/Unknown 0s 3ms/step - accuracy: 0.9764 - loss: 0.0871
     59/Unknown 0s 3ms/step - accuracy: 0.9775 - loss: 0.0816
     77/Unknown 0s 3ms/step - accuracy: 0.9780 - loss: 0.0797
     94/Unknown 0s 3ms/step - accuracy: 0.9781 - loss: 0.0792
    109/Unknown 0s 3ms/step - accuracy: 0.9782 - loss: 0.0787
    123/Unknown 0s 3ms/step - accuracy: 0.9783 - loss: 0.0780
    136/Unknown 0s 3ms/step - accuracy: 0.9784 - loss: 0.0772
    149/Unknown 1s 3ms/step - accuracy: 0.9786 - loss: 0.0764
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.9787 - loss: 0.0758
[22:22:53] INFO     Collaborator charlie is sending task results for locally_tuned_model_validation, round 4                                   ]8;id=621770;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=686593;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 4: Collaborators that have completed all tasks: ['charlie']                                                         ]8;id=801077;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=991143;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:22:53] INFO     Waiting for tasks...                                                                                                     ]8;id=813884;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=190255;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
938/938 - 5s - 5ms/step - accuracy: 0.9830 - loss: 0.0573
           INFO     Collaborator bob is sending task results for train, round 4                                                                ]8;id=53027;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=991686;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 27ms/step - accuracy: 1.0000 - loss: 0.0028
     32/Unknown 0s 2ms/step - accuracy: 0.9887 - loss: 0.0455
     66/Unknown 0s 2ms/step - accuracy: 0.9862 - loss: 0.0505
     96/Unknown 0s 2ms/step - accuracy: 0.9851 - loss: 0.0508
    128/Unknown 0s 2ms/step - accuracy: 0.9844 - loss: 0.0506
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9842 - loss: 0.0499
[22:22:54] INFO     Collaborator bob is sending task results for locally_tuned_model_validation, round 4                                       ]8;id=92410;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=539768;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 4: Collaborators that have completed all tasks: ['charlie', 'bob']                                                  ]8;id=400842;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=601622;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
           INFO     Round 4: saved the best model with score 0.986300                                                                          ]8;id=766583;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=854742;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#955\955]8;;\
           INFO     Saving round 4 model...                                                                                                    ]8;id=608824;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=889677;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#994\994]8;;\
           INFO     Starting round 5...                                                                                                       ]8;id=980730;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=926559;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1007\1007]8;;\
[22:22:54] INFO     Waiting for tasks...                                                                                                     ]8;id=409925;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=191669;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Sending tasks to collaborator bob for round 5                                                                              ]8;id=416352;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=949149;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=79734;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=19488;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
1/Unknown 0s 25ms/step - accuracy: 0.9688 - loss: 0.0266
     33/Unknown 0s 2ms/step - accuracy: 0.9901 - loss: 0.0205
     66/Unknown 0s 2ms/step - accuracy: 0.9893 - loss: 0.0266
    100/Unknown 0s 2ms/step - accuracy: 0.9890 - loss: 0.0286
    133/Unknown 0s 2ms/step - accuracy: 0.9888 - loss: 0.0298
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9886 - loss: 0.0306
           INFO     Collaborator bob is sending task results for aggregated_model_validation, round 5                                          ]8;id=528383;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=362756;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Run 0 epoch of 5 round                                                                                                   ]8;id=658956;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=730320;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 3s - 3ms/step - accuracy: 0.9843 - loss: 0.0491
[22:23:00] INFO     Collaborator bob is sending task results for train, round 5                                                                ]8;id=562933;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=231659;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 26ms/step - accuracy: 1.0000 - loss: 0.0162
     33/Unknown 0s 2ms/step - accuracy: 0.9807 - loss: 0.0550
     66/Unknown 0s 2ms/step - accuracy: 0.9808 - loss: 0.0546
    101/Unknown 0s 2ms/step - accuracy: 0.9806 - loss: 0.0550
    134/Unknown 0s 2ms/step - accuracy: 0.9808 - loss: 0.0547
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9809 - loss: 0.0545
           INFO     Collaborator bob is sending task results for locally_tuned_model_validation, round 5                                       ]8;id=135747;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=757879;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 5: Collaborators that have completed all tasks: ['bob']                                                             ]8;id=575459;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=175922;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:23:00] INFO     Waiting for tasks...                                                                                                     ]8;id=395280;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=215876;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:23:03] INFO     Waiting for tasks...                                                                                                     ]8;id=786784;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=849443;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:23:03] INFO     Sending tasks to collaborator charlie for round 5                                                                          ]8;id=239844;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=258520;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=383934;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=439892;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
      2/Unknown 0s 2ms/step - accuracy: 1.0000 - loss: 0.0015
     34/Unknown 0s 2ms/step - accuracy: 0.9895 - loss: 0.0342
     67/Unknown 0s 2ms/step - accuracy: 0.9886 - loss: 0.0340
    100/Unknown 0s 2ms/step - accuracy: 0.9883 - loss: 0.0339
    132/Unknown 0s 2ms/step - accuracy: 0.9881 - loss: 0.0344
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9878 - loss: 0.0352
           INFO     Collaborator charlie is sending task results for aggregated_model_validation, round 5                                      ]8;id=913605;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=248367;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Run 0 epoch of 5 round                                                                                                   ]8;id=192833;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=867942;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 3s - 3ms/step - accuracy: 0.9950 - loss: 0.0170
[22:23:09] INFO     Collaborator charlie is sending task results for train, round 5                                                            ]8;id=308785;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=702955;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 27ms/step - accuracy: 0.9688 - loss: 0.1181
     33/Unknown 0s 2ms/step - accuracy: 0.9808 - loss: 0.0852
     67/Unknown 0s 2ms/step - accuracy: 0.9795 - loss: 0.0879
    101/Unknown 0s 2ms/step - accuracy: 0.9784 - loss: 0.0901
    133/Unknown 0s 2ms/step - accuracy: 0.9776 - loss: 0.0909
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9774 - loss: 0.0903
           INFO     Collaborator charlie is sending task results for locally_tuned_model_validation, round 5                                   ]8;id=948902;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=645637;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 5: Collaborators that have completed all tasks: ['bob', 'charlie']                                                  ]8;id=616171;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=276766;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
           INFO     Round 5: saved the best model with score 0.987000                                                                          ]8;id=286890;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=413125;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#955\955]8;;\
           INFO     Saving round 5 model...                                                                                                    ]8;id=555351;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=844846;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#994\994]8;;\
           INFO     Starting round 6...                                                                                                       ]8;id=31296;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=38668;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1007\1007]8;;\
[22:23:09] INFO     Waiting for tasks...                                                                                                     ]8;id=90358;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=232753;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Sending tasks to collaborator charlie for round 6                                                                          ]8;id=805907;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=885231;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=590697;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=985471;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
1/Unknown 0s 26ms/step - accuracy: 0.9375 - loss: 0.2504
     32/Unknown 0s 2ms/step - accuracy: 0.9861 - loss: 0.0639
     64/Unknown 0s 2ms/step - accuracy: 0.9884 - loss: 0.0507
     95/Unknown 0s 2ms/step - accuracy: 0.9886 - loss: 0.0466
    129/Unknown 0s 2ms/step - accuracy: 0.9884 - loss: 0.0449
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9880 - loss: 0.0451
[22:23:10] INFO     Collaborator charlie is sending task results for aggregated_model_validation, round 6                                      ]8;id=715905;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=297386;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:23:10] INFO     Run 0 epoch of 6 round                                                                                                   ]8;id=271490;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=376755;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
[22:23:10] INFO     Waiting for tasks...                                                                                                     ]8;id=310062;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=187096;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Sending tasks to collaborator bob for round 6                                                                              ]8;id=214763;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=264858;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=450675;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=611728;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
1/Unknown 0s 47ms/step - accuracy: 1.0000 - loss: 0.0062
     20/Unknown 0s 3ms/step - accuracy: 0.9932 - loss: 0.0321
     41/Unknown 0s 3ms/step - accuracy: 0.9918 - loss: 0.0328
     63/Unknown 0s 3ms/step - accuracy: 0.9913 - loss: 0.0329
     85/Unknown 0s 2ms/step - accuracy: 0.9907 - loss: 0.0332
    107/Unknown 0s 2ms/step - accuracy: 0.9902 - loss: 0.0339
    128/Unknown 0s 2ms/step - accuracy: 0.9900 - loss: 0.0340
    149/Unknown 0s 2ms/step - accuracy: 0.9899 - loss: 0.0340/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - accuracy: 0.9899 - loss: 0.0342
[22:23:11] INFO     Collaborator bob is sending task results for aggregated_model_validation, round 6                                          ]8;id=884846;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=878434;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:23:11] INFO     Run 0 epoch of 6 round                                                                                                   ]8;id=646353;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=585232;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 6s - 6ms/step - accuracy: 0.9957 - loss: 0.0129
938/938 - 5s - 5ms/step - accuracy: 0.9877 - loss: 0.0389
[22:23:17] INFO     Collaborator bob is sending task results for train, round 6                                                                ]8;id=30353;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=995541;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 25ms/step - accuracy: 1.0000 - loss: 0.0159
     33/Unknown 0s 2ms/step - accuracy: 0.9876 - loss: 0.0337
     66/Unknown 0s 2ms/step - accuracy: 0.9853 - loss: 0.0404
    100/Unknown 0s 2ms/step - accuracy: 0.9841 - loss: 0.0442
    133/Unknown 0s 2ms/step - accuracy: 0.9834 - loss: 0.0463
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9831 - loss: 0.0472
           INFO     Collaborator bob is sending task results for locally_tuned_model_validation, round 6                                       ]8;id=150752;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=619495;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 6: Collaborators that have completed all tasks: ['bob']                                                             ]8;id=240311;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=990808;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:23:17] INFO     Waiting for tasks...                                                                                                     ]8;id=477529;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=226898;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:23:20] INFO     Collaborator charlie is sending task results for train, round 6                                                            ]8;id=939436;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=774351;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
      2/Unknown 0s 2ms/step - accuracy: 0.9453 - loss: 0.1440
     34/Unknown 0s 2ms/step - accuracy: 0.9705 - loss: 0.0750
     66/Unknown 0s 2ms/step - accuracy: 0.9745 - loss: 0.0697
     99/Unknown 0s 2ms/step - accuracy: 0.9766 - loss: 0.0691
    131/Unknown 0s 2ms/step - accuracy: 0.9778 - loss: 0.0683
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9784 - loss: 0.0681
[22:23:21] INFO     Collaborator charlie is sending task results for locally_tuned_model_validation, round 6                                   ]8;id=277386;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=725250;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 6: Collaborators that have completed all tasks: ['bob', 'charlie']                                                  ]8;id=954909;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=939171;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
           INFO     Round 6: saved the best model with score 0.987700                                                                          ]8;id=808916;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=476592;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#955\955]8;;\
           INFO     Saving round 6 model...                                                                                                    ]8;id=201578;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=895860;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#994\994]8;;\
           INFO     Starting round 7...                                                                                                       ]8;id=244808;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=674122;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1007\1007]8;;\
[22:23:21] INFO     Waiting for tasks...                                                                                                     ]8;id=515928;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=25403;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Sending tasks to collaborator charlie for round 7                                                                          ]8;id=835170;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=573609;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=456174;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=14201;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
      2/Unknown 0s 2ms/step - accuracy: 1.0000 - loss: 0.0141
     34/Unknown 0s 2ms/step - accuracy: 0.9872 - loss: 0.0344
     68/Unknown 0s 2ms/step - accuracy: 0.9870 - loss: 0.0352
    101/Unknown 0s 2ms/step - accuracy: 0.9874 - loss: 0.0350
    134/Unknown 0s 2ms/step - accuracy: 0.9877 - loss: 0.0359
    135/Unknown 0s 2ms/step - accuracy: 0.9877 - loss: 0.0359/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9877 - loss: 0.0364
           INFO     Collaborator charlie is sending task results for aggregated_model_validation, round 7                                      ]8;id=754219;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=92625;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Run 0 epoch of 7 round                                                                                                   ]8;id=239741;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=859058;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 3s - 3ms/step - accuracy: 0.9964 - loss: 0.0117
[22:23:24] INFO     Collaborator charlie is sending task results for train, round 7                                                            ]8;id=548704;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=117626;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 25ms/step - accuracy: 1.0000 - loss: 0.0015
     34/Unknown 0s 2ms/step - accuracy: 0.9889 - loss: 0.0421
    101/Unknown 0s 2ms/step - accuracy: 0.9819 - loss: 0.0754
    133/Unknown 0s 2ms/step - accuracy: 0.9809 - loss: 0.0800
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9804 - loss: 0.0814
[22:23:25] INFO     Collaborator charlie is sending task results for locally_tuned_model_validation, round 7                                   ]8;id=818223;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=257764;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 7: Collaborators that have completed all tasks: ['charlie']                                                         ]8;id=906420;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=65276;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:23:25] INFO     Waiting for tasks...                                                                                                     ]8;id=498352;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=31294;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:23:27] INFO     Waiting for tasks...                                                                                                     ]8;id=586345;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=972909;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:23:27] INFO     Sending tasks to collaborator bob for round 7                                                                              ]8;id=497176;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=706135;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=125546;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=566184;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
1/Unknown 0s 25ms/step - accuracy: 0.9688 - loss: 0.0607
     33/Unknown 0s 2ms/step - accuracy: 0.9878 - loss: 0.0389
     64/Unknown 0s 2ms/step - accuracy: 0.9882 - loss: 0.0375
     97/Unknown 0s 2ms/step - accuracy: 0.9877 - loss: 0.0391
    131/Unknown 0s 2ms/step - accuracy: 0.9876 - loss: 0.0388
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9876 - loss: 0.0386
[22:23:28] INFO     Collaborator bob is sending task results for aggregated_model_validation, round 7                                          ]8;id=464034;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=32919;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:23:28] INFO     Run 0 epoch of 7 round                                                                                                   ]8;id=469732;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=818688;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 3s - 3ms/step - accuracy: 0.9894 - loss: 0.0337
[22:23:31] INFO     Collaborator bob is sending task results for train, round 7                                                                ]8;id=477077;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=460300;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
      2/Unknown 0s 3ms/step - accuracy: 0.9922 - loss: 0.0320
     34/Unknown 0s 2ms/step - accuracy: 0.9849 - loss: 0.0501
     67/Unknown 0s 2ms/step - accuracy: 0.9832 - loss: 0.0516
    101/Unknown 0s 2ms/step - accuracy: 0.9830 - loss: 0.0528
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9833 - loss: 0.0528
           INFO     Collaborator bob is sending task results for locally_tuned_model_validation, round 7                                       ]8;id=598892;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=733128;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 7: Collaborators that have completed all tasks: ['charlie', 'bob']                                                  ]8;id=17404;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=721291;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
           INFO     Round 7: saved the best model with score 0.987900                                                                          ]8;id=274023;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=739953;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#955\955]8;;\
           INFO     Saving round 7 model...                                                                                                    ]8;id=794767;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=177331;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#994\994]8;;\
           INFO     Starting round 8...                                                                                                       ]8;id=347091;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=412800;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1007\1007]8;;\
[22:23:31] INFO     Waiting for tasks...                                                                                                     ]8;id=630285;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=151316;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Sending tasks to collaborator bob for round 8                                                                              ]8;id=839672;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=384656;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=555832;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=115834;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
      2/Unknown 0s 3ms/step - accuracy: 1.0000 - loss: 0.0066
     35/Unknown 0s 2ms/step - accuracy: 0.9914 - loss: 0.0238
     66/Unknown 0s 2ms/step - accuracy: 0.9914 - loss: 0.0275
     99/Unknown 0s 2ms/step - accuracy: 0.9911 - loss: 0.0293
    132/Unknown 0s 2ms/step - accuracy: 0.9908 - loss: 0.0309/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9908 - loss: 0.0316
[22:23:32] INFO     Collaborator bob is sending task results for aggregated_model_validation, round 8                                          ]8;id=652733;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=940659;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:23:32] INFO     Run 0 epoch of 8 round                                                                                                   ]8;id=535513;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=860925;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
[22:23:35] INFO     Waiting for tasks...                                                                                                     ]8;id=479898;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=463562;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:23:35] INFO     Sending tasks to collaborator charlie for round 8                                                                          ]8;id=56719;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=344434;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=864226;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=971902;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
938/938 - 3s - 3ms/step - accuracy: 0.9904 - loss: 0.0297
           INFO     Collaborator bob is sending task results for train, round 8                                                                ]8;id=807380;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=864328;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 38ms/step - accuracy: 1.0000 - loss: 0.0188
     19/Unknown 0s 3ms/step - accuracy: 0.9871 - loss: 0.0471
     37/Unknown 0s 3ms/step - accuracy: 0.9873 - loss: 0.0418
     54/Unknown 0s 3ms/step - accuracy: 0.9871 - loss: 0.0418
     71/Unknown 0s 3ms/step - accuracy: 0.9870 - loss: 0.0423
     88/Unknown 0s 3ms/step - accuracy: 0.9872 - loss: 0.0418
    105/Unknown 0s 3ms/step - accuracy: 0.9874 - loss: 0.0418
    122/Unknown 0s 3ms/step - accuracy: 0.9874 - loss: 0.0419
    138/Unknown 0s 3ms/step - accuracy: 0.9873 - loss: 0.0420
    152/Unknown 1s 3ms/step - accuracy: 0.9872 - loss: 0.0423
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.9871 - loss: 0.0425
     40/Unknown 0s 3ms/step - accuracy: 0.9892 - loss: 0.0463
     73/Unknown 0s 2ms/step - accuracy: 0.9875 - loss: 0.0490
    106/Unknown 0s 2ms/step - accuracy: 0.9869 - loss: 0.0488           INFO     Collaborator bob is sending task results for locally_tuned_model_validation, round 8                                       ]8;id=55753;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=4174;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 8: Collaborators that have completed all tasks: ['bob']                                                             ]8;id=922301;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=164767;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:23:35] INFO     Waiting for tasks...                                                                                                     ]8;id=315530;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=338282;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
    125/Unknown 0s 2ms/step - accuracy: 0.9868 - loss: 0.0485
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9869 - loss: 0.0481
[22:23:36] INFO     Collaborator charlie is sending task results for aggregated_model_validation, round 8                                      ]8;id=470976;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=972184;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:23:36] INFO     Run 0 epoch of 8 round                                                                                                   ]8;id=381890;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=793239;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 3s - 3ms/step - accuracy: 0.9970 - loss: 0.0094
[22:23:39] INFO     Collaborator charlie is sending task results for train, round 8                                                            ]8;id=30214;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=863228;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
1/Unknown 0s 25ms/step - accuracy: 1.0000 - loss: 0.0428
2/Unknown 0s 3ms/step - accuracy: 0.9922 - loss: 0.0843
     67/Unknown 0s 2ms/step - accuracy: 0.9766 - loss: 0.0904
     99/Unknown 0s 2ms/step - accuracy: 0.9782 - loss: 0.0839
    133/Unknown 0s 2ms/step - accuracy: 0.9792 - loss: 0.0796
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9796 - loss: 0.0781
           INFO     Collaborator charlie is sending task results for locally_tuned_model_validation, round 8                                   ]8;id=481502;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=225355;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 8: Collaborators that have completed all tasks: ['bob', 'charlie']                                                  ]8;id=363708;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=883834;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
           INFO     Round 8: saved the best model with score 0.988800                                                                          ]8;id=450053;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=768739;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#955\955]8;;\
           INFO     Saving round 8 model...                                                                                                    ]8;id=445892;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=143926;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#994\994]8;;\
           INFO     Starting round 9...                                                                                                       ]8;id=32489;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=826265;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1007\1007]8;;\
[22:23:39] INFO     Waiting for tasks...                                                                                                     ]8;id=843454;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=627831;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Sending tasks to collaborator charlie for round 9                                                                          ]8;id=759924;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=144850;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=687065;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=345832;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
1/Unknown 0s 27ms/step - accuracy: 1.0000 - loss: 0.0200
     34/Unknown 0s 2ms/step - accuracy: 0.9921 - loss: 0.0398
     66/Unknown 0s 2ms/step - accuracy: 0.9920 - loss: 0.0366
     99/Unknown 0s 2ms/step - accuracy: 0.9915 - loss: 0.0378
    132/Unknown 0s 2ms/step - accuracy: 0.9912 - loss: 0.0379
/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9909 - loss: 0.0382
[22:23:40] INFO     Collaborator charlie is sending task results for aggregated_model_validation, round 9                                      ]8;id=865498;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=418069;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:23:40] INFO     Run 0 epoch of 9 round                                                                                                   ]8;id=469228;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=708671;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 3s - 3ms/step - accuracy: 0.9979 - loss: 0.0078
[22:23:43] INFO     Collaborator charlie is sending task results for train, round 9                                                            ]8;id=641010;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=194430;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
      2/Unknown 0s 2ms/step - accuracy: 0.9766 - loss: 0.1024
     34/Unknown 0s 2ms/step - accuracy: 0.9740 - loss: 0.0867
     68/Unknown 0s 2ms/step - accuracy: 0.9761 - loss: 0.0818
    101/Unknown 0s 2ms/step - accuracy: 0.9766 - loss: 0.0811
    135/Unknown 0s 2ms/step - accuracy: 0.9764 - loss: 0.0817
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9765 - loss: 0.0815
           INFO     Collaborator charlie is sending task results for locally_tuned_model_validation, round 9                                   ]8;id=864592;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=701091;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 9: Collaborators that have completed all tasks: ['charlie']                                                         ]8;id=8777;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=63620;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
[22:23:43] INFO     Waiting for tasks...                                                                                                     ]8;id=140049;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=614730;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:23:45] INFO     Waiting for tasks...                                                                                                     ]8;id=741987;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=701274;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:23:45] INFO     Sending tasks to collaborator bob for round 9                                                                              ]8;id=593564;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=650102;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#409\409]8;;\
           INFO     Received Tasks: [name: "aggregated_model_validation"                                                                     ]8;id=53460;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=420226;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#184\184]8;;\
                    , name: "train"                                                                                                                             
                    , name: "locally_tuned_model_validation"                                                                                                    
                    ]                                                                                                                                           
      2/Unknown 0s 2ms/step - accuracy: 0.9766 - loss: 0.0379
     36/Unknown 0s 2ms/step - accuracy: 0.9869 - loss: 0.0387
     69/Unknown 0s 2ms/step - accuracy: 0.9883 - loss: 0.0350
    103/Unknown 0s 2ms/step - accuracy: 0.9887 - loss: 0.0343
    136/Unknown 0s 2ms/step - accuracy: 0.9889 - loss: 0.0340
    137/Unknown 0s 2ms/step - accuracy: 0.9889 - loss: 0.0340/home/docs/.asdf/installs/python/3.10.15/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
  self.gen.throw(typ, value, traceback)
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9889 - loss: 0.0344
[22:23:46] INFO     Collaborator bob is sending task results for aggregated_model_validation, round 9                                          ]8;id=422187;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=823811;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
[22:23:46] INFO     Run 0 epoch of 9 round                                                                                                   ]8;id=820049;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py\runner_keras.py]8;;\:]8;id=238017;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/federated/task/runner_keras.py#103\103]8;;\
938/938 - 3s - 3ms/step - accuracy: 0.9912 - loss: 0.0261
[22:23:51] INFO     Collaborator bob is sending task results for train, round 9                                                                ]8;id=131035;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=523893;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
      2/Unknown 0s 3ms/step - accuracy: 1.0000 - loss: 0.0069
     35/Unknown 0s 2ms/step - accuracy: 0.9944 - loss: 0.0339
     68/Unknown 0s 2ms/step - accuracy: 0.9924 - loss: 0.0370
    102/Unknown 0s 2ms/step - accuracy: 0.9909 - loss: 0.0384
    134/Unknown 0s 2ms/step - accuracy: 0.9900 - loss: 0.0387
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - accuracy: 0.9896 - loss: 0.0386
[22:23:52] INFO     Collaborator bob is sending task results for locally_tuned_model_validation, round 9                                       ]8;id=372273;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=854980;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#629\629]8;;\
           INFO     Round 9: Collaborators that have completed all tasks: ['charlie', 'bob']                                                  ]8;id=155336;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=478916;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1049\1049]8;;\
           INFO     Round 9: saved the best model with score 0.989000                                                                          ]8;id=850873;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=759200;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#955\955]8;;\
           INFO     Saving round 9 model...                                                                                                    ]8;id=941758;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=14447;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#994\994]8;;\
           INFO     Experiment Completed. Cleaning up...                                                                                      ]8;id=47579;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=343685;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#1005\1005]8;;\
[22:23:52] INFO     Waiting for tasks...                                                                                                     ]8;id=353010;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=135075;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
           INFO     Sending signal to collaborator bob to shutdown...                                                                          ]8;id=194149;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=712898;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#356\356]8;;\
           INFO     Received shutdown signal. Exiting...                                                                                     ]8;id=99494;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=24113;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#199\199]8;;\

 ✔️ OK
[22:23:53] INFO     Waiting for tasks...                                                                                                     ]8;id=529635;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=745376;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#234\234]8;;\
[22:23:53] INFO     Sending signal to collaborator charlie to shutdown...                                                                      ]8;id=837014;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py\aggregator.py]8;;\:]8;id=160341;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/aggregator/aggregator.py#356\356]8;;\
           INFO     Received shutdown signal. Exiting...                                                                                     ]8;id=409124;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py\collaborator.py]8;;\:]8;id=769701;file:///home/docs/checkouts/readthedocs.org/user_builds/openfl/checkouts/v1.7/openfl/component/collaborator/collaborator.py#199\199]8;;\

 ✔️ OK