{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 基于 PyTorch 的预训练模型在隐语联邦学习环境下的微调\n", "## 引言\n", "预训练模型加载和精调在机器学习中非常重要。一般来说,从头训练一个非常大的模型,不仅需要大量的算力资源,同时也需要耗费大量的时间。所以在传统的机器学习中,使用预训练模型,然后针对具体的任务做微调和迁移学习非常普遍。同样的,对于联邦学习来说,如果能够加载预训练模型进行微调和迁移学习,不仅能够节省参与方的算力资源,降低参与方的准入门槛,同时也能够加快模型的学习速度。\n", "\n", "得益于隐语联邦学习模块优异的兼容性,使得其可以直接加载 PyTorch 的一系列[预训练模型](https://pytorch.org/vision/master/models.html);本教程将基于 PyTorch 的 [AlexNet](https://proceedings.neurips.cc/paper_files/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf) 的微调教程展现如何基于PyTorch的[预训练模型](https://pytorch.org/vision/master/models/alexnet.html)在SecretFlow的框架下进行微调,充分展现SecretFlow的易用性。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 加载数据集\n", "### 数据集介绍\n", "Flower 数据集介绍:flower 数据集是一个包含了 5 种花卉(雏菊、蒲公英、玫瑰、向日葵、郁金香)共计 4323 张彩色图片的数据集。每种花卉都有多个角度和不同光照下的图片,每张图片的分辨率为 320x240。这个数据集常用于图像分类和机器学习算法的训练与测试。数据集中每个类别的数量分别是:daisy(633),dandelion(898),rose(641),sunflower(699),tulip(852)\n", "\n", "下载地址: http://download.tensorflow.org/example_images/flower_photos.tgz\n", "\n", "### 下载数据集并解压" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2023-10-29 02:10:49.666627: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F AVX512_VNNI FMA\n", "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", "2023-10-29 02:10:50.522159: I tensorflow/core/util/port.cc:104] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n", "2023-10-29 02:10:50.619157: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory\n", "2023-10-29 02:10:50.619183: I tensorflow/compiler/xla/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n", "2023-10-29 02:10:52.776194: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory\n", "2023-10-29 02:10:52.776304: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory\n", "2023-10-29 02:10:52.776317: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Downloading data from https://secretflow-data.oss-accelerate.aliyuncs.com/datasets/tf_flowers/flower_photos.tgz\n", "67588319/67588319 [==============================] - 3s 0us/step\n" ] } ], "source": [ "# The TensorFlow interface is reused to download images , and the output is a folder, as shown in the following figure.\n", "import tempfile\n", "import tensorflow as tf\n", "\n", "_temp_dir = tempfile.mkdtemp()\n", "path_to_flower_dataset = tf.keras.utils.get_file(\n", " \"flower_photos\",\n", " \"https://secretflow-data.oss-accelerate.aliyuncs.com/datasets/tf_flowers/flower_photos.tgz\",\n", " untar=True,\n", " cache_dir=_temp_dir,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 环境设置\n", "首先我们初始化各个参与方。" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The version of SecretFlow: 1.2.0.dev20231009\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2023-10-29 02:11:04,382\tINFO worker.py:1538 -- Started a local Ray instance.\n" ] } ], "source": [ "import secretflow as sf\n", "\n", "# Check the version of your SecretFlow\n", "print('The version of SecretFlow: {}'.format(sf.__version__))\n", "\n", "# In case you have a running secretflow runtime already.\n", "sf.shutdown()\n", "sf.init(['alice', 'bob', 'charlie'], address=\"local\", log_to_driver=False)\n", "alice, bob, charlie = sf.PYU('alice'), sf.PYU('bob'), sf.PYU('charlie')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 定义Dataloader\n", "我们可以参考[PyTorch下的DataBuilder教程](https://www.secretflow.org.cn/docs/secretflow/latest/zh-Hans/tutorial/CustomDataLoaderTorch)定义我们自己的DataBuilder。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def create_dataset_builder(\n", " batch_size=32,\n", " train_split=0.8,\n", " shuffle=True,\n", " random_seed=1234,\n", "):\n", " def dataset_builder(x, stage=\"train\"):\n", " \"\"\" \"\"\"\n", " import math\n", "\n", " import numpy as np\n", " from torch.utils.data import DataLoader\n", " from torch.utils.data.sampler import SubsetRandomSampler\n", " from torchvision import datasets, transforms\n", "\n", " # Define dataset\n", " flower_transform = transforms.Compose(\n", " [\n", " transforms.Resize((180, 180)),\n", " transforms.ToTensor(),\n", " ]\n", " )\n", " flower_dataset = datasets.ImageFolder(x, transform=flower_transform)\n", " dataset_size = len(flower_dataset)\n", " # Define sampler\n", "\n", " indices = list(range(dataset_size))\n", " if shuffle:\n", " np.random.seed(random_seed)\n", " np.random.shuffle(indices)\n", " split = int(np.floor(train_split * dataset_size))\n", " train_indices, val_indices = indices[:split], indices[split:]\n", " train_sampler = SubsetRandomSampler(train_indices)\n", " valid_sampler = SubsetRandomSampler(val_indices)\n", "\n", " # Define databuilder\n", " train_loader = DataLoader(\n", " flower_dataset, batch_size=batch_size, sampler=train_sampler\n", " )\n", " valid_loader = DataLoader(\n", " flower_dataset, batch_size=batch_size, sampler=valid_sampler\n", " )\n", "\n", " # Return\n", " if stage == \"train\":\n", " train_step_per_epoch = math.ceil(split / batch_size)\n", "\n", " return train_loader, train_step_per_epoch\n", " elif stage == \"eval\":\n", " eval_step_per_epoch = math.ceil((dataset_size - split) / batch_size)\n", " return valid_loader, eval_step_per_epoch\n", "\n", " return dataset_builder" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# prepare dataset dict\n", "data_builder_dict = {\n", " alice: create_dataset_builder(\n", " batch_size=32,\n", " train_split=0.8,\n", " shuffle=False,\n", " random_seed=1234,\n", " ),\n", " bob: create_dataset_builder(\n", " batch_size=32,\n", " train_split=0.8,\n", " shuffle=False,\n", " random_seed=1234,\n", " ),\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 加载模型\n", "我们只要参照教程里对模型的定义,在函数里完成我们对模型的定义即可;可以看到代码几乎不需要作任何修改,只需要进行适当的封装。并且得益于隐语优异的封装性,我们可以在定义模型很快进行进行训练,而不是需要自行编写训练和测试函数;相反如果我们自行从头开始写整个神经网络结构的话,我们需要自行参考AlexNet的[源代码](https://pytorch.org/vision/master/_modules/torchvision/models/alexnet.html#alexnet),将其适配在隐语的`secretflow.ml.nn.utils.BaseModule`;为便于对比,我们分别给出两种实现方式:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 加载预训练模型" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "from secretflow.ml.nn.utils import BaseModule\n", "from torchvision.models import alexnet\n", "from torch import nn\n", "\n", "\n", "class AlexNet(BaseModule):\n", " def __init__(self, *args, **kwargs) -> None:\n", " super().__init__(*args, **kwargs)\n", " self.finetune_net = alexnet(weights='IMAGENET1K_V1')\n", " self.finetune_net.classifier[6] = nn.Linear(4096, 5)\n", " nn.init.xavier_uniform_(self.finetune_net.classifier[6].weight)\n", "\n", " for named_param in self.finetune_net.named_parameters():\n", " if 'classifier' in named_param[0]:\n", " print('Will train', named_param[0])\n", " named_param[1].requires_grad = True\n", " else:\n", " print('Won\\'t train', named_param[0])\n", " named_param[1].requires_grad = False\n", "\n", " def forward(self, xb):\n", " return self.finetune_net(xb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 自行编写网络结构" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "import torch\n", "\n", "\n", "class handy_AlexNet(BaseModule):\n", " def __init__(self, num_classes: int = 5, dropout: float = 0.5, **kwargs) -> None:\n", " super().__init__(**kwargs)\n", " self.features = nn.Sequential(\n", " nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2),\n", " nn.ReLU(inplace=True),\n", " nn.MaxPool2d(kernel_size=3, stride=2),\n", " nn.Conv2d(64, 192, kernel_size=5, padding=2),\n", " nn.ReLU(inplace=True),\n", " nn.MaxPool2d(kernel_size=3, stride=2),\n", " nn.Conv2d(192, 384, kernel_size=3, padding=1),\n", " nn.ReLU(inplace=True),\n", " nn.Conv2d(384, 256, kernel_size=3, padding=1),\n", " nn.ReLU(inplace=True),\n", " nn.Conv2d(256, 256, kernel_size=3, padding=1),\n", " nn.ReLU(inplace=True),\n", " nn.MaxPool2d(kernel_size=3, stride=2),\n", " )\n", " self.avgpool = nn.AdaptiveAvgPool2d((6, 6))\n", " self.classifier = nn.Sequential(\n", " nn.Dropout(p=dropout),\n", " nn.Linear(256 * 6 * 6, 4096),\n", " nn.ReLU(inplace=True),\n", " nn.Dropout(p=dropout),\n", " nn.Linear(4096, 4096),\n", " nn.ReLU(inplace=True),\n", " nn.Linear(4096, num_classes),\n", " )\n", "\n", " for named_param in self.features.named_parameters():\n", " named_param[1].requires_grad = True\n", "\n", " for named_param in self.classifier.named_parameters():\n", " named_param[1].requires_grad = True\n", "\n", " def forward(self, x: torch.Tensor) -> torch.Tensor:\n", " x = self.features(x)\n", " x = self.avgpool(x)\n", " x = torch.flatten(x, 1)\n", " x = self.classifier(x)\n", " return x" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from secretflow.ml.nn import FLModel\n", "from secretflow.security.aggregation import SecureAggregator\n", "from torch import nn, optim\n", "from torchmetrics import Accuracy, Precision\n", "from secretflow.ml.nn.fl.utils import metric_wrapper, optim_wrapper\n", "from secretflow.ml.nn.utils import TorchModel" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 定义 FLModel 并且训练\n", "\n", "### 基于预训练模型定义 Torch 后端的 FLModel " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:root:Create proxy actor with party alice.\n", "INFO:root:Create proxy actor with party bob.\n", "INFO:root:Create proxy actor with party alice.\n", "INFO:root:Create proxy actor with party bob.\n" ] } ], "source": [ "device_list = [alice, bob]\n", "aggregator = SecureAggregator(charlie, [alice, bob])\n", "\n", "data = {\n", " alice: path_to_flower_dataset,\n", " bob: path_to_flower_dataset,\n", "}\n", "# prepare model\n", "num_classes = 5\n", "\n", "\n", "# torch model\n", "loss_fn = nn.CrossEntropyLoss\n", "optim_fn = optim_wrapper(optim.Adam, lr=1e-3)\n", "model_def = TorchModel(\n", " model_fn=AlexNet,\n", " loss_fn=loss_fn,\n", " optim_fn=optim_fn,\n", " metrics=[\n", " metric_wrapper(\n", " Accuracy, task=\"multiclass\", num_classes=num_classes, average='micro'\n", " ),\n", " metric_wrapper(\n", " Precision, task=\"multiclass\", num_classes=num_classes, average='micro'\n", " ),\n", " ],\n", ")\n", "\n", "fed_model = FLModel(\n", " device_list=device_list,\n", " model=model_def,\n", " aggregator=aggregator,\n", " backend=\"torch\",\n", " strategy=\"fed_avg_w\",\n", " random_seed=1234,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 基于预训练模型的 FLModel 开始训练" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:root:FL Train Params: {'x': {PYURuntime(alice): '/tmp/tmphh_f8sq7/datasets/flower_photos', PYURuntime(bob): '/tmp/tmphh_f8sq7/datasets/flower_photos'}, 'y': None, 'batch_size': 32, 'batch_sampling_rate': None, 'epochs': 20, 'verbose': 1, 'callbacks': None, 'validation_data': {PYURuntime(alice): '/tmp/tmphh_f8sq7/datasets/flower_photos', PYURuntime(bob): '/tmp/tmphh_f8sq7/datasets/flower_photos'}, 'shuffle': False, 'class_weight': None, 'sample_weight': None, 'validation_freq': 1, 'aggregate_freq': 2, 'label_decoder': None, 'max_batch_size': 20000, 'prefetch_buffer_size': None, 'sampler_method': 'batch', 'random_seed': 1234, 'dp_spent_step_freq': 1, 'audit_log_dir': None, 'dataset_builder': {PYURuntime(alice): .dataset_builder at 0x7f683654edc0>, PYURuntime(bob): .dataset_builder at 0x7f68365845e0>}, 'wait_steps': 100, 'self': }\n", "100%|██████████| 30/30 [01:53<00:00, 3.80s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "2023-10-29 02:13:26.358659: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F AVX512_VNNI FMA\n", "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", "2023-10-29 02:13:31.470244: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1613] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 13757 MB memory: -> device: 0, name: Tesla T4, pci bus id: 0000:3b:00.0, compute capability: 7.5\n", "2023-10-29 02:13:31.481341: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1613] Created device /job:localhost/replica:0/task:0/device:GPU:1 with 13757 MB memory: -> device: 1, name: Tesla T4, pci bus id: 0000:3c:00.0, compute capability: 7.5\n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:17<00:00, 4.59s/it, epoch: 1/20 - multiclassaccuracy:0.625 multiclassprecision:0.625 val_multiclassaccuracy:0.4564315378665924 val_multiclassprecision:0.4564315378665924 ]\n", "100%|██████████| 30/30 [01:43<00:00, 3.81s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [01:57<00:00, 3.92s/it, epoch: 2/20 - multiclassaccuracy:0.7822916507720947 multiclassprecision:0.7822916507720947 val_multiclassaccuracy:0.17842324078083038 val_multiclassprecision:0.17842324078083038 ]\n", "100%|██████████| 30/30 [01:44<00:00, 3.82s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [01:58<00:00, 3.94s/it, epoch: 3/20 - multiclassaccuracy:0.815625011920929 multiclassprecision:0.815625011920929 val_multiclassaccuracy:0.6224066615104675 val_multiclassprecision:0.6224066615104675 ]\n", "100%|██████████| 30/30 [01:44<00:00, 3.81s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [01:58<00:00, 3.96s/it, epoch: 4/20 - multiclassaccuracy:0.8885416388511658 multiclassprecision:0.8885416388511658 val_multiclassaccuracy:0.5352697372436523 val_multiclassprecision:0.5352697372436523 ]\n", "100%|██████████| 30/30 [01:44<00:00, 4.07s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [01:58<00:00, 3.97s/it, epoch: 5/20 - multiclassaccuracy:0.8916666507720947 multiclassprecision:0.8916666507720947 val_multiclassaccuracy:0.7966805100440979 val_multiclassprecision:0.7966805100440979 ]\n", "100%|██████████| 30/30 [01:54<00:00, 3.99s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:08<00:00, 4.29s/it, epoch: 6/20 - multiclassaccuracy:0.8999999761581421 multiclassprecision:0.8999999761581421 val_multiclassaccuracy:0.7178423404693604 val_multiclassprecision:0.7178423404693604 ]\n", "100%|██████████| 30/30 [01:58<00:00, 4.97s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:16<00:00, 4.55s/it, epoch: 7/20 - multiclassaccuracy:0.9041666388511658 multiclassprecision:0.9041666388511658 val_multiclassaccuracy:0.4107883870601654 val_multiclassprecision:0.4107883870601654 ]\n", "100%|██████████| 30/30 [01:59<00:00, 4.45s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:13<00:00, 4.46s/it, epoch: 8/20 - multiclassaccuracy:0.9437500238418579 multiclassprecision:0.9437500238418579 val_multiclassaccuracy:0.6473029255867004 val_multiclassprecision:0.6473029255867004 ]\n", "100%|██████████| 30/30 [01:56<00:00, 4.36s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:11<00:00, 4.39s/it, epoch: 9/20 - multiclassaccuracy:0.940625011920929 multiclassprecision:0.940625011920929 val_multiclassaccuracy:0.22406639158725739 val_multiclassprecision:0.22406639158725739 ]\n", "100%|██████████| 30/30 [02:13<00:00, 5.26s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:32<00:00, 5.09s/it, epoch: 10/20 - multiclassaccuracy:0.9541666507720947 multiclassprecision:0.9541666507720947 val_multiclassaccuracy:0.8091286420822144 val_multiclassprecision:0.8091286420822144 ]\n", "100%|██████████| 30/30 [02:09<00:00, 4.73s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:26<00:00, 4.87s/it, epoch: 11/20 - multiclassaccuracy:0.9447916746139526 multiclassprecision:0.9447916746139526 val_multiclassaccuracy:0.5228216052055359 val_multiclassprecision:0.5228216052055359 ]\n", "100%|██████████| 30/30 [02:03<00:00, 4.56s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:22<00:00, 4.77s/it, epoch: 12/20 - multiclassaccuracy:0.9427083134651184 multiclassprecision:0.9427083134651184 val_multiclassaccuracy:0.5933610200881958 val_multiclassprecision:0.5933610200881958 ]\n", "100%|██████████| 30/30 [02:05<00:00, 4.60s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:21<00:00, 4.71s/it, epoch: 13/20 - multiclassaccuracy:0.9395833611488342 multiclassprecision:0.9395833611488342 val_multiclassaccuracy:0.6514523029327393 val_multiclassprecision:0.6514523029327393 ]\n", "100%|██████████| 30/30 [02:03<00:00, 5.06s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:18<00:00, 4.61s/it, epoch: 14/20 - multiclassaccuracy:0.9385416507720947 multiclassprecision:0.9385416507720947 val_multiclassaccuracy:0.5062240958213806 val_multiclassprecision:0.5062240958213806 ]\n", "100%|██████████| 30/30 [02:12<00:00, 4.70s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:29<00:00, 4.99s/it, epoch: 15/20 - multiclassaccuracy:0.9635416865348816 multiclassprecision:0.9635416865348816 val_multiclassaccuracy:0.4149377644062042 val_multiclassprecision:0.4149377644062042 ]\n", "100%|██████████| 30/30 [02:11<00:00, 5.30s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:26<00:00, 4.89s/it, epoch: 16/20 - multiclassaccuracy:0.96875 multiclassprecision:0.96875 val_multiclassaccuracy:0.6763485670089722 val_multiclassprecision:0.6763485670089722 ]\n", "100%|██████████| 30/30 [01:52<00:00, 4.39s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:07<00:00, 4.24s/it, epoch: 17/20 - multiclassaccuracy:0.9750000238418579 multiclassprecision:0.9750000238418579 val_multiclassaccuracy:0.8713693022727966 val_multiclassprecision:0.8713693022727966 ]\n", "100%|██████████| 30/30 [02:09<00:00, 5.34s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:25<00:00, 4.84s/it, epoch: 18/20 - multiclassaccuracy:0.9489583373069763 multiclassprecision:0.9489583373069763 val_multiclassaccuracy:0.6182572841644287 val_multiclassprecision:0.6182572841644287 ]\n", "100%|██████████| 30/30 [02:09<00:00, 5.03s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:23<00:00, 4.79s/it, epoch: 19/20 - multiclassaccuracy:0.9739583134651184 multiclassprecision:0.9739583134651184 val_multiclassaccuracy:0.39419087767601013 val_multiclassprecision:0.39419087767601013 ]\n", "100%|██████████| 30/30 [02:02<00:00, 4.75s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:16<00:00, 4.55s/it, epoch: 20/20 - multiclassaccuracy:0.9489583373069763 multiclassprecision:0.9489583373069763 val_multiclassaccuracy:0.5643153786659241 val_multiclassprecision:0.5643153786659241 ]\n" ] } ], "source": [ "history = fed_model.fit(\n", " data,\n", " None,\n", " validation_data=data,\n", " epochs=20,\n", " batch_size=32,\n", " aggregate_freq=2,\n", " sampler_method=\"batch\",\n", " random_seed=1234,\n", " dp_spent_step_freq=1,\n", " dataset_builder=data_builder_dict,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 训练结果可视化" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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NGkSbrzxRmzcuBG//fYb3nzzTbz++uvYsGEDRo8ebVf7jHttAOtf4+LiYrseDwDefvttPPTQQ/jhhx/w22+/4cknn8SSJUuwf/9+REdH231eY9b87RBiCwpuCHGy+++/H6tWrYJcLse9995r8bjY2FicOXOmyf7Tp0/rb+evjx8/Do7jTIKFxvft1KkTAMDf3x+pqamtfh6OwH8jLykpQWBgoH7/5cuXW7xvc8NJjXXq1Albt25FcXGxTb0369evx80334xPP/3UZH9JSUmTxHIfHx9MnjwZkydPRm1tLe666y68+uqrmDt3rn46dWRkJB5//HE8/vjjKCgoQL9+/fDqq6+aBDc5OTmorKw06b05e/YsALRYddna1zg0NBT+/v44fvx4y78EMxISEpCQkIAXX3wRf/31F4YMGYIVK1bglVdeMXu8tX/LhDgL5dwQ4mQ333wzFi1ahA8++AAREREWjxszZgwOHjyIffv26fdVVlbi448/RlxcHHr27Kk/LicnB+vXr9cfV1VVhY8//tjkfMnJyejUqRPeeustVFRUNHm8wsLC1j41m/Efxn/++ad+X2VlJT7//PMW78t/+BtPrbdk4sSJ4DhO34tirLneAIVC0eT2devWITs722TftWvXTH5WKpXo2bMnOI5DXV0dtFqtyVRpAAgLC0NUVFSTKfv19fX46KOP9D/X1tbio48+QmhoKJKTk5t9nta+xnK5HBMmTMBPP/1kdiq8pd9JWVkZ6uvrTfYlJCRALpdbLD0AWP+3TIizUM8NITY6f/682W+sffv2xe23395kv1wux4svvtjieZ9//nl8++23GD16NJ588kkEBwfj888/R2ZmJr7//nt9ousjjzyCDz74AFOnTkV6ejoiIyPx5Zdfwtvbu8njfvLJJxg9ejR69eqF6dOno3379sjOzsbOnTvh7++Pn376yc7fgn1GjBiBDh06YMaMGfjPf/4DhUKBVatWITQ0FFlZWc3et1OnTggMDMSKFSvg5+cHHx8fpKSkmJ1mfvPNN+PBBx/E+++/j3PnzmHUqFHQ6XTYvXs3br75ZsyZM8fsY9xxxx1YuHAhpk+fjsGDB+PYsWP4+uuvm+TJjBgxAhERERgyZAjCw8Nx6tQpfPDBB7j99tvh5+eHkpISREdH4+6770ZiYiJ8fX2xfft2HDp0CG+//bbJuaKiovD6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DpNvtsYGDRpkcjwAbNu2zeLxUsFxHObMmYONGzfi999/R3x8vM3n0Gq1OHbsGCIjI53QQueqqKjAhQsXLLbdVV9XY5999hnCwsJw++2323Q/V31d4+PjERERYfK6lZWV4cCBAxZfN3v+56WED2zOnTuH7du3o127djafo6X/Bam6evUqrl27ZrHdrv7aAqznNTk5GYmJiTbf11VfV5uIndHsSr777jtOpVJxq1ev5k6ePMk9+uijXGBgIJeXl8dxHMc9+OCD3PPPP68/fu/evZyHhwf31ltvcadOneLmz5/PeXp6cseOHRPrKVhl1qxZXEBAALdr1y4uNzdXf6mqqtIf0/i5LliwgNu6dSt34cIFLj09nbv33ns5tVrNnThxQoynYJN///vf3K5du7jMzExu7969XGpqKhcSEsIVFBRwHOc+rytPq9VyHTp04J577rkmt7ny61peXs4dOXKEO3LkCAeAW7p0KXfkyBH97KDXXnuNCwwM5H744Qfun3/+4caPH8/Fx8dz1dXV+nPccsst3P/+9z/9zy39z4upuedbW1vLjRs3jouOjuYyMjJM/o81Go3+HI2fb0v/C2Jp7rmWl5dzzz77LLdv3z4uMzOT2759O9evXz+uS5cuXE1Njf4crvLatvR3zHEcV1paynl7e3PLly83ew5XeV2diYIbG/3vf//jOnTowCmVSm7gwIHc/v379bcNGzaMmzZtmsnxa9eu5bp27coplUquV69e3ObNmwVuse0AmL189tln+mMaP9enn35a/3sJDw/nxowZwx0+fFj4xtth8uTJXGRkJKdUKrn27dtzkydP5s6fP6+/3V1eV97WrVs5ANyZM2ea3ObKr+vOnTvN/t3yz0en03EvvfQSFx4ezqlUKu7WW29t8juIjY3l5s+fb7Kvuf95MTX3fDMzMy3+H+/cuVN/jsbPt6X/BbE091yrqqq4ESNGcKGhoZynpycXGxvLPfLII02CFFd5bVv6O+Y4jvvoo484Ly8vrqSkxOw5XOV1dSYZx3GcU7uGCCGEEEIERDk3hBBCCHErFNwQQgghxK1QcEMIIYQQt0LBDSGEEELcCgU3hBBCCHErFNwQQgghxK1QcEMIIYQQt0LBDSGkzZPJZNi0aZPYzSCEOAgFN4QQUT300EOQyWRNLqNGjRK7aYQQF+UhdgMIIWTUqFH47LPPTPapVCqRWkMIcXXUc0MIEZ1KpUJERITJJSgoCAAbMlq+fDlGjx4NLy8vdOzYEevXrze5/7Fjx3DLLbfAy8sL7dq1w6OPPoqKigqTY1atWoVevXpBpVIhMjISc+bMMbm9qKgId955J7y9vdGlSxf8+OOPzn3ShBCnoeCGECJ5L730EiZOnIijR49iypQpuPfee3Hq1CkAQGVlJUaOHImgoCAcOnQI69atw/bt202Cl+XLl2P27Nl49NFHcezYMfz444/o3LmzyWMsWLAAkyZNwj///IMxY8ZgypQpKC4uFvR5EkIcROyVOwkhbdu0adM4hULB+fj4mFxeffVVjuPYKvWPPfaYyX1SUlK4WbNmcRzHcR9//DEXFBTEVVRU6G/fvHkzJ5fL9StDR0VFcS+88ILFNgDgXnzxRf3PFRUVHADu119/ddjzJIQIh3JuCCGiu/nmm7F8+XKTfcHBwfrtQYMGmdw2aNAgZGRkAABOnTqFxMRE+Pj46G8fMmQIdDodzpw5A5lMhpycHNx6663NtqFPnz76bR8fH/j7+6OgoMDep0QIEREFN4QQ0fn4+DQZJnIULy8vq47z9PQ0+Vkmk0Gn0zmjSYQQJ6OcG0KI5O3fv7/Jzz169AAA9OjRA0ePHkVlZaX+9r1790Iul6Nbt27w8/NDXFwcduzYIWibCSHioZ4bQojoNBoN8vLyTPZ5eHggJCQEALBu3Tr0798fQ4cOxddff42DBw/i008/BQBMmTIF8+fPx7Rp0/Dyyy+jsLAQTzzxBB588EGEh4cDAF5++WU89thjCAsLw+jRo1FeXo69e/fiiSeeEPaJEkIEQcENIUR0W7ZsQWRkpMm+bt264fTp0wDYTKbvvvsOjz/+OCIjI/Htt9+iZ8+eAABvb29s3boVTz31FAYMGABvb29MnDgRS5cu1Z9r2rRpqKmpwTvvvINnn30WISEhuPvuu4V7goQQQck4juPEbgQhhFgik8mwceNGTJgwQeymEEJcBOXcEEIIIcStUHBDCCGEELdCOTeEEEmjkXNCiK2o54YQQgghboWCG0IIIYS4FQpuCCGEEOJWKLghhBBCiFuh4IYQQgghboWCG0IIIYS4FQpuCCGEEOJWKLghhBBCiFuh4IYQQgghbuX/AQXkT6ZIQn3+AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "\n", "# Draw accuracy values for training & validation\n", "plt.plot(history.global_history['multiclassaccuracy'])\n", "plt.plot(history.global_history['val_multiclassaccuracy'])\n", "plt.title('FLModel accuracy')\n", "plt.ylabel('Accuracy')\n", "plt.xlabel('Epoch')\n", "plt.legend(['Train', 'Valid'], loc='upper left')\n", "plt.show()\n", "\n", "# Draw precision for training & validation\n", "plt.plot(history.global_history['multiclassprecision'])\n", "plt.plot(history.global_history['val_multiclassprecision'])\n", "plt.title('FLModel multiclassprecision')\n", "plt.ylabel('precision')\n", "plt.xlabel('Epoch')\n", "plt.legend(['Train', 'Valid'], loc='upper left')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 基于自编写网络定义 Torch 后端的 FLModel " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:root:Create proxy actor with party alice.\n", "INFO:root:Create proxy actor with party bob.\n" ] } ], "source": [ "model_def = TorchModel(\n", " model_fn=handy_AlexNet,\n", " loss_fn=loss_fn,\n", " optim_fn=optim_fn,\n", " metrics=[\n", " metric_wrapper(\n", " Accuracy, task=\"multiclass\", num_classes=num_classes, average='micro'\n", " ),\n", " metric_wrapper(\n", " Precision, task=\"multiclass\", num_classes=num_classes, average='micro'\n", " ),\n", " ],\n", ")\n", "\n", "fed_model = FLModel(\n", " device_list=device_list,\n", " model=model_def,\n", " aggregator=aggregator,\n", " backend=\"torch\",\n", " strategy=\"fed_avg_w\",\n", " random_seed=1234,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 基于自编写网络模型的 FLModel 开始训练" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:root:FL Train Params: {'x': {PYURuntime(alice): '/tmp/tmphh_f8sq7/datasets/flower_photos', PYURuntime(bob): '/tmp/tmphh_f8sq7/datasets/flower_photos'}, 'y': None, 'batch_size': 32, 'batch_sampling_rate': None, 'epochs': 20, 'verbose': 1, 'callbacks': None, 'validation_data': {PYURuntime(alice): '/tmp/tmphh_f8sq7/datasets/flower_photos', PYURuntime(bob): '/tmp/tmphh_f8sq7/datasets/flower_photos'}, 'shuffle': False, 'class_weight': None, 'sample_weight': None, 'validation_freq': 1, 'aggregate_freq': 2, 'label_decoder': None, 'max_batch_size': 20000, 'prefetch_buffer_size': None, 'sampler_method': 'batch', 'random_seed': 1234, 'dp_spent_step_freq': 1, 'audit_log_dir': None, 'dataset_builder': {PYURuntime(alice): .dataset_builder at 0x7f683654edc0>, PYURuntime(bob): .dataset_builder at 0x7f68365845e0>}, 'wait_steps': 100, 'self': }\n", "100%|██████████| 30/30 [02:29<00:00, 5.61s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:47<00:00, 5.57s/it, epoch: 1/20 - multiclassaccuracy:0.2979166805744171 multiclassprecision:0.2979166805744171 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:28<00:00, 5.87s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:45<00:00, 5.51s/it, epoch: 2/20 - multiclassaccuracy:0.39375001192092896 multiclassprecision:0.39375001192092896 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:22<00:00, 4.90s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:38<00:00, 5.28s/it, epoch: 3/20 - multiclassaccuracy:0.4010416567325592 multiclassprecision:0.4010416567325592 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:18<00:00, 4.91s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:35<00:00, 5.19s/it, epoch: 4/20 - multiclassaccuracy:0.47083333134651184 multiclassprecision:0.47083333134651184 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:21<00:00, 5.26s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:36<00:00, 5.21s/it, epoch: 5/20 - multiclassaccuracy:0.47083333134651184 multiclassprecision:0.47083333134651184 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:21<00:00, 5.45s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:39<00:00, 5.30s/it, epoch: 6/20 - multiclassaccuracy:0.45520833134651184 multiclassprecision:0.45520833134651184 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:38<00:00, 6.13s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:58<00:00, 5.95s/it, epoch: 7/20 - multiclassaccuracy:0.5197916626930237 multiclassprecision:0.5197916626930237 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:35<00:00, 5.92s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:51<00:00, 5.70s/it, epoch: 8/20 - multiclassaccuracy:0.5385416746139526 multiclassprecision:0.5385416746139526 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:29<00:00, 5.36s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:47<00:00, 5.57s/it, epoch: 9/20 - multiclassaccuracy:0.5333333611488342 multiclassprecision:0.5333333611488342 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:27<00:00, 6.01s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:44<00:00, 5.47s/it, epoch: 10/20 - multiclassaccuracy:0.5677083134651184 multiclassprecision:0.5677083134651184 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:35<00:00, 5.79s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:54<00:00, 5.83s/it, epoch: 11/20 - multiclassaccuracy:0.5895833373069763 multiclassprecision:0.5895833373069763 val_multiclassaccuracy:0.01244813296943903 val_multiclassprecision:0.01244813296943903 ]\n", "100%|██████████| 30/30 [02:36<00:00, 5.92s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:56<00:00, 5.87s/it, epoch: 12/20 - multiclassaccuracy:0.6156250238418579 multiclassprecision:0.6156250238418579 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:28<00:00, 5.86s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:43<00:00, 5.46s/it, epoch: 13/20 - multiclassaccuracy:0.6260416507720947 multiclassprecision:0.6260416507720947 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:40<00:00, 6.08s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:58<00:00, 5.96s/it, epoch: 14/20 - multiclassaccuracy:0.640625 multiclassprecision:0.640625 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:36<00:00, 5.90s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:54<00:00, 5.81s/it, epoch: 15/20 - multiclassaccuracy:0.640625 multiclassprecision:0.640625 val_multiclassaccuracy:0.4730290472507477 val_multiclassprecision:0.4730290472507477 ]\n", "100%|██████████| 30/30 [02:27<00:00, 5.60s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:43<00:00, 5.44s/it, epoch: 16/20 - multiclassaccuracy:0.6395833492279053 multiclassprecision:0.6395833492279053 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:27<00:00, 5.12s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:42<00:00, 5.42s/it, epoch: 17/20 - multiclassaccuracy:0.6979166865348816 multiclassprecision:0.6979166865348816 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:35<00:00, 6.70s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:52<00:00, 5.75s/it, epoch: 18/20 - multiclassaccuracy:0.7197916507720947 multiclassprecision:0.7197916507720947 val_multiclassaccuracy:0.24066390097141266 val_multiclassprecision:0.24066390097141266 ]\n", "100%|██████████| 30/30 [02:25<00:00, 5.47s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:42<00:00, 5.41s/it, epoch: 19/20 - multiclassaccuracy:0.734375 multiclassprecision:0.734375 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n", "100%|██████████| 30/30 [02:40<00:00, 5.66s/it]WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "WARNING:root:Please pay attention to local metrics, global only do naive aggregation \n", "100%|██████████| 30/30 [02:58<00:00, 5.95s/it, epoch: 20/20 - multiclassaccuracy:0.6635416746139526 multiclassprecision:0.6635416746139526 val_multiclassaccuracy:0.0 val_multiclassprecision:0.0 ]\n" ] } ], "source": [ "history = fed_model.fit(\n", " data,\n", " None,\n", " validation_data=data,\n", " epochs=20,\n", " batch_size=32,\n", " aggregate_freq=2,\n", " sampler_method=\"batch\",\n", " random_seed=1234,\n", " dp_spent_step_freq=1,\n", " dataset_builder=data_builder_dict,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 训练结果可视化" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Draw accuracy values for training & validation\n", "plt.plot(history.global_history['multiclassaccuracy'])\n", "plt.plot(history.global_history['val_multiclassaccuracy'])\n", "plt.title('FLModel accuracy')\n", "plt.ylabel('Accuracy')\n", "plt.xlabel('Epoch')\n", "plt.legend(['Train', 'Valid'], loc='upper left')\n", "plt.show()\n", "\n", "# Draw precision for training & validation\n", "plt.plot(history.global_history['multiclassprecision'])\n", "plt.plot(history.global_history['val_multiclassprecision'])\n", "plt.title('FLModel multiclassprecision')\n", "plt.ylabel('precision')\n", "plt.xlabel('Epoch')\n", "plt.legend(['Train', 'Valid'], loc='upper left')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以看到,在同样的任务,同样的模型上,我们加载预训练模型,不仅能省时省力,还能获得更好的模型性能。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 小结\n", "隐语能够无缝地兼容基于 PyTorch 预训练模型,我们可以不需要自己再重新写出复杂网络的模型结构,这对于大型网络结构可以起到省时省力的效果。并且通过加载预训练模型的权重,可以让我们的模型性能更优秀。\n", "\n", "本篇教程,我们以 AlexNet 为例介绍了如何在隐语的联邦学习模式下基于直接加载 PyTorch 的[预训练模型](https://pytorch.org/vision/stable/models.html),通过直接加载预训练模型,我们能够获得:\n", "- 不需要再次编写复杂模型的结构代码\n", "- 基于预训练模型进行微调和迁移学习\n", "- 使用预训练权重模型能够使得联邦模型获得更好的性能" ] } ], "metadata": { "kernelspec": { "display_name": "limingbo_oscp", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.17" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }