From dd5f87bb47bbb1c95302214aeed5d7185692b7ee Mon Sep 17 00:00:00 2001 From: Zeyu Qin Date: Thu, 13 Apr 2023 18:18:41 +0800 Subject: [PATCH] updating code (#574) --- LICENSE | 249 -- README.md | 234 +- benchmark/FedHPOB/README.md | 2 + .../FedHPOB/data/surrogate_model/README.md | 1 + benchmark/FedHPOB/data/tabular_data/README.md | 1 + benchmark/FedHPOB/fedhpob/__init__.py | 19 + .../FedHPOB/fedhpob/benchmarks/__init__.py | 5 + .../fedhpob/benchmarks/base_benchmark.py | 76 + .../fedhpob/benchmarks/raw_benchmark.py | 74 + .../fedhpob/benchmarks/surrogate_benchmark.py | 68 + .../fedhpob/benchmarks/tabular_benchmark.py | 91 + benchmark/FedHPOB/fedhpob/config.py | 416 +++ .../FedHPOB/fedhpob/optimizers/__init__.py | 6 + .../fedhpob/optimizers/dehb_optimizer.py | 100 + .../optimizers/hpbandster_optimizer.py | 120 + .../fedhpob/optimizers/optuna_optimizer.py | 142 + .../fedhpob/optimizers/smac_optimizer.py | 72 + benchmark/FedHPOB/fedhpob/utils/__init__.py | 0 benchmark/FedHPOB/fedhpob/utils/cost_model.py | 88 + benchmark/FedHPOB/fedhpob/utils/draw.py | 91 + benchmark/FedHPOB/fedhpob/utils/monitor.py | 53 + benchmark/FedHPOB/fedhpob/utils/runner.py | 30 + .../fedhpob/utils/surrogate_dataloader.py | 131 + .../fedhpob/utils/tabular_dataloader.py | 165 ++ benchmark/FedHPOB/fedhpob/utils/util.py | 74 + benchmark/FedHPOB/scripts/bert_tiny/cola.yaml | 33 + benchmark/FedHPOB/scripts/bert_tiny/run.sh | 98 + .../FedHPOB/scripts/bert_tiny/run_hpo_glue.sh | 33 + .../FedHPOB/scripts/bert_tiny/run_opt_glue.sh | 40 + benchmark/FedHPOB/scripts/bert_tiny/sst2.yaml | 33 + benchmark/FedHPOB/scripts/cnn/cifar10.yaml | 39 + benchmark/FedHPOB/scripts/cnn/femnist.yaml | 38 + benchmark/FedHPOB/scripts/cnn/run.sh | 54 + .../FedHPOB/scripts/cnn/run_hpo_cifar10.sh | 34 + .../FedHPOB/scripts/cnn/run_hpo_femnist.sh | 34 + .../FedHPOB/scripts/cnn/run_hpo_femnist_48.sh | 34 + benchmark/FedHPOB/scripts/exp/graph.yaml | 5 + benchmark/FedHPOB/scripts/exp/run.sh | 11 + benchmark/FedHPOB/scripts/exp/run_graph.sh | 124 + benchmark/FedHPOB/scripts/exp/run_mode.sh | 22 + benchmark/FedHPOB/scripts/format.sh | 124 + benchmark/FedHPOB/scripts/gcn/citeseer.yaml | 34 + benchmark/FedHPOB/scripts/gcn/cora.yaml | 34 + benchmark/FedHPOB/scripts/gcn/pubmed.yaml | 34 + .../FedHPOB/scripts/gcn/run_hpo_citeseer.sh | 31 + benchmark/FedHPOB/scripts/gcn/run_hpo_cora.sh | 31 + .../FedHPOB/scripts/gcn/run_hpo_pubmed.sh | 31 + .../FedHPOB/scripts/gcn/run_opt_citeseer.sh | 38 + benchmark/FedHPOB/scripts/gcn/run_opt_cora.sh | 38 + .../FedHPOB/scripts/gcn/run_opt_pubmed.sh | 38 + .../FedHPOB/scripts/lr/10101@openml.yaml | 30 + benchmark/FedHPOB/scripts/lr/12@openml.yaml | 30 + .../FedHPOB/scripts/lr/146212@openml.yaml | 30 + .../FedHPOB/scripts/lr/146606@openml.yaml | 30 + .../FedHPOB/scripts/lr/146818@openml.yaml | 30 + .../FedHPOB/scripts/lr/146821@openml.yaml | 30 + .../FedHPOB/scripts/lr/146822@openml.yaml | 30 + .../FedHPOB/scripts/lr/14965@openml.yaml | 30 + .../FedHPOB/scripts/lr/167119@openml.yaml | 30 + .../FedHPOB/scripts/lr/167120@openml.yaml | 30 + .../FedHPOB/scripts/lr/168911@openml.yaml | 30 + .../FedHPOB/scripts/lr/168912@openml.yaml | 30 + benchmark/FedHPOB/scripts/lr/31@openml.yaml | 30 + benchmark/FedHPOB/scripts/lr/3917@openml.yaml | 30 + benchmark/FedHPOB/scripts/lr/3@openml.yaml | 30 + benchmark/FedHPOB/scripts/lr/53@openml.yaml | 30 + benchmark/FedHPOB/scripts/lr/7592@openml.yaml | 30 + benchmark/FedHPOB/scripts/lr/9952@openml.yaml | 30 + benchmark/FedHPOB/scripts/lr/9977@openml.yaml | 30 + benchmark/FedHPOB/scripts/lr/9981@openml.yaml | 30 + benchmark/FedHPOB/scripts/lr/openml_lr.yaml | 29 + benchmark/FedHPOB/scripts/lr/run.sh | 41 + .../FedHPOB/scripts/lr/run_hpo_openml_lr.sh | 86 + .../FedHPOB/scripts/lr/run_opt_openml_lr.sh | 87 + .../FedHPOB/scripts/mlp/10101@openml.yaml | 30 + benchmark/FedHPOB/scripts/mlp/12@openml.yaml | 30 + .../FedHPOB/scripts/mlp/146212@openml.yaml | 30 + .../FedHPOB/scripts/mlp/146606@openml.yaml | 30 + .../FedHPOB/scripts/mlp/146818@openml.yaml | 30 + .../FedHPOB/scripts/mlp/146821@openml.yaml | 30 + .../FedHPOB/scripts/mlp/146822@openml.yaml | 30 + .../FedHPOB/scripts/mlp/14965@openml.yaml | 30 + .../FedHPOB/scripts/mlp/167119@openml.yaml | 30 + .../FedHPOB/scripts/mlp/167120@openml.yaml | 30 + .../FedHPOB/scripts/mlp/168911@openml.yaml | 30 + .../FedHPOB/scripts/mlp/168912@openml.yaml | 30 + benchmark/FedHPOB/scripts/mlp/31@openml.yaml | 30 + .../FedHPOB/scripts/mlp/3917@openml.yaml | 30 + benchmark/FedHPOB/scripts/mlp/3@openml.yaml | 30 + benchmark/FedHPOB/scripts/mlp/53@openml.yaml | 30 + .../FedHPOB/scripts/mlp/7592@openml.yaml | 30 + .../FedHPOB/scripts/mlp/9952@openml.yaml | 30 + .../FedHPOB/scripts/mlp/9977@openml.yaml | 30 + .../FedHPOB/scripts/mlp/9981@openml.yaml | 30 + benchmark/FedHPOB/scripts/mlp/openml_mlp.yaml | 29 + .../FedHPOB/scripts/mlp/run_hpo_openml_mlp.sh | 99 + .../FedHPOB/scripts/mlp/run_opt_openml_mlp.sh | 89 + demo/bbo.py | 110 + demo/hpbandster/rs.py | 167 ++ demo/smac/gp.py | 81 + demo/smac/rf.py | 81 + demo/synthetic.py | 55 + doc/Makefile | 36 + doc/README.md | 7 + doc/make.bat | 50 + doc/requirements-doc.txt | 15 + doc/source/attack.rst | 36 + doc/source/autotune.rst | 15 + doc/source/conf.py | 83 + doc/source/core.rst | 33 + doc/source/cv.rst | 26 + doc/source/gfl.rst | 26 + doc/source/index.rst | 27 + doc/source/mf.rst | 26 + doc/source/nlp.rst | 26 + enviroment/docker_files/README.md | 15 + .../federatedscope-jupyterhub/Dockerfile | 221 ++ .../federatedscope-jupyterhub/fix-permissions | 35 + .../jupyter_server_config.py | 56 + .../start-notebook.sh | 26 + .../start-singleuser.sh | 13 + .../federatedscope-jupyterhub/start.sh | 262 ++ ...atedscope-torch1.10-application.Dockerfile | 63 + .../federatedscope-torch1.10.Dockerfile | 49 + ...ratedscope-torch1.8-application.Dockerfile | 61 + .../requirements-torch1.10-application.txt | 28 + enviroment/requirements-torch1.10.txt | 21 + .../requirements-torch1.8-application.txt | 33 + federatedscope/__init__.py | 19 + federatedscope/attack/__init__.py | 0 .../attack/auxiliary/MIA_get_target_data.py | 32 + federatedscope/attack/auxiliary/__init__.py | 13 + .../auxiliary/attack_trainer_builder.py | 23 + .../attack/auxiliary/backdoor_utils.py | 334 +++ .../attack/auxiliary/create_edgeset.py | 145 + .../attack/auxiliary/poisoning_data.py | 318 +++ federatedscope/attack/auxiliary/utils.py | 321 +++ federatedscope/attack/models/__init__.py | 0 .../attack/models/gan_based_model.py | 74 + federatedscope/attack/models/vision.py | 209 ++ .../privacy_attacks/GAN_based_attack.py | 179 ++ .../attack/privacy_attacks/__init__.py | 5 + .../attack/privacy_attacks/passive_PIA.py | 179 ++ .../privacy_attacks/reconstruction_opt.py | 270 ++ federatedscope/attack/trainer/GAN_trainer.py | 103 + .../trainer/MIA_invert_gradient_trainer.py | 124 + federatedscope/attack/trainer/PIA_trainer.py | 18 + federatedscope/attack/trainer/__init__.py | 16 + .../attack/trainer/backdoor_trainer.py | 205 ++ .../attack/trainer/benign_trainer.py | 202 ++ .../attack/worker_as_attacker/__init__.py | 12 + .../worker_as_attacker/active_client.py | 54 + .../worker_as_attacker/server_attacker.py | 332 +++ federatedscope/autotune/__init__.py | 8 + federatedscope/autotune/algos.py | 468 ++++ federatedscope/autotune/choice_types.py | 159 ++ federatedscope/autotune/fedex/__init__.py | 4 + federatedscope/autotune/fedex/client.py | 88 + federatedscope/autotune/fedex/server.py | 426 +++ federatedscope/autotune/utils.py | 133 + federatedscope/contrib/__init__.py | 3 + federatedscope/contrib/configs/__init__.py | 14 + federatedscope/contrib/data/__init__.py | 8 + federatedscope/contrib/data/example.py | 30 + federatedscope/contrib/metrics/__init__.py | 8 + federatedscope/contrib/metrics/example.py | 16 + federatedscope/contrib/metrics/poison_acc.py | 31 + federatedscope/contrib/model/__init__.py | 8 + federatedscope/contrib/model/example.py | 23 + federatedscope/contrib/model/resnet.py | 376 +++ federatedscope/contrib/model/resnet_in.py | 312 +++ federatedscope/contrib/model/resnet_ln.py | 227 ++ federatedscope/contrib/model/vgg.py | 82 + federatedscope/contrib/trainer/__init__.py | 8 + federatedscope/contrib/trainer/example.py | 16 + federatedscope/core/__init__.py | 3 + federatedscope/core/aggregator.py | 290 ++ federatedscope/core/auxiliaries/ReIterator.py | 19 + federatedscope/core/auxiliaries/__init__.py | 0 .../core/auxiliaries/aggregator_builder.py | 49 + .../core/auxiliaries/criterion_builder.py | 23 + .../core/auxiliaries/data_builder.py | 809 ++++++ .../core/auxiliaries/dataloader_builder.py | 41 + .../core/auxiliaries/metric_builder.py | 21 + .../core/auxiliaries/model_builder.py | 120 + .../core/auxiliaries/optimizer_builder.py | 21 + .../core/auxiliaries/regularizer_builder.py | 30 + .../core/auxiliaries/splitter_builder.py | 48 + .../core/auxiliaries/trainer_builder.py | 164 ++ .../core/auxiliaries/transform_builder.py | 54 + federatedscope/core/auxiliaries/utils.py | 382 +++ .../core/auxiliaries/worker_builder.py | 85 + federatedscope/core/cmd_args.py | 26 + federatedscope/core/communication.py | 136 + federatedscope/core/configs/__init__.py | 29 + federatedscope/core/configs/cfg_asyn.py | 55 + federatedscope/core/configs/cfg_attack.py | 70 + federatedscope/core/configs/cfg_data.py | 64 + .../core/configs/cfg_differential_privacy.py | 38 + federatedscope/core/configs/cfg_evaluation.py | 39 + federatedscope/core/configs/cfg_fl_algo.py | 102 + federatedscope/core/configs/cfg_fl_setting.py | 155 ++ federatedscope/core/configs/cfg_hpo.py | 87 + federatedscope/core/configs/cfg_model.py | 48 + federatedscope/core/configs/cfg_training.py | 84 + federatedscope/core/configs/config.py | 206 ++ federatedscope/core/configs/constants.py | 36 + federatedscope/core/fed_runner.py | 275 ++ federatedscope/core/gRPC_server.py | 20 + federatedscope/core/gpu_manager.py | 88 + federatedscope/core/lr.py | 10 + federatedscope/core/message.py | 216 ++ federatedscope/core/mlp.py | 40 + federatedscope/core/monitors/__init__.py | 5 + federatedscope/core/monitors/early_stopper.py | 97 + .../core/monitors/metric_calculator.py | 206 ++ federatedscope/core/monitors/monitor.py | 450 +++ federatedscope/core/optimizer.py | 56 + federatedscope/core/optimizers/__init__.py | 0 federatedscope/core/proto/__init__.py | 2 + .../core/proto/gRPC_comm_manager_pb2.py | 130 + .../core/proto/gRPC_comm_manager_pb2_grpc.py | 68 + federatedscope/core/regularizer/__init__.py | 1 + .../core/regularizer/proximal_regularizer.py | 39 + .../core/secret_sharing/__init__.py | 1 + .../core/secret_sharing/secret_sharing.py | 96 + federatedscope/core/splitters/__init__.py | 3 + .../core/splitters/generic/__init__.py | 7 + .../core/splitters/generic/lda_splitter.py | 22 + .../core/splitters/graph/__init__.py | 20 + .../core/splitters/graph/analyzer.py | 181 ++ .../splitters/graph/graphtype_splitter.py | 27 + .../core/splitters/graph/louvain_splitter.py | 77 + .../splitters/graph/randchunk_splitter.py | 35 + .../core/splitters/graph/random_splitter.py | 106 + .../core/splitters/graph/reltype_splitter.py | 67 + .../splitters/graph/scaffold_lda_splitter.py | 178 ++ .../core/splitters/graph/scaffold_splitter.py | 58 + federatedscope/core/splitters/utils.py | 130 + federatedscope/core/strategy.py | 23 + federatedscope/core/trainers/__init__.py | 18 + .../core/trainers/benign_trainer.py | 157 ++ federatedscope/core/trainers/context.py | 189 ++ federatedscope/core/trainers/tf_trainer.py | 171 ++ federatedscope/core/trainers/torch_trainer.py | 372 +++ federatedscope/core/trainers/trainer.py | 343 +++ federatedscope/core/trainers/trainer_Ditto.py | 196 ++ federatedscope/core/trainers/trainer_FedEM.py | 176 ++ .../core/trainers/trainer_FedRep.py | 103 + .../core/trainers/trainer_fedprox.py | 70 + .../core/trainers/trainer_multi_model.py | 268 ++ federatedscope/core/trainers/trainer_nbafl.py | 133 + .../core/trainers/trainer_pFedMe.py | 149 + federatedscope/core/worker/__init__.py | 10 + federatedscope/core/worker/base_worker.py | 55 + federatedscope/core/worker/client.py | 404 +++ federatedscope/core/worker/server.py | 707 +++++ federatedscope/cross_backends/__init__.py | 0 .../cross_backends/tf_aggregator.py | 44 + federatedscope/cross_backends/tf_lr.py | 81 + federatedscope/cv/__init__.py | 3 + federatedscope/cv/dataloader/__init__.py | 3 + federatedscope/cv/dataloader/dataloader.py | 83 + federatedscope/cv/dataset/__init__.py | 8 + federatedscope/cv/dataset/leaf.py | 86 + federatedscope/cv/dataset/leaf_cv.py | 179 ++ federatedscope/cv/model/__init__.py | 8 + federatedscope/cv/model/cnn.py | 204 ++ federatedscope/cv/model/model_builder.py | 49 + federatedscope/cv/trainer/__init__.py | 30 + federatedscope/cv/trainer/trainer.py | 15 + federatedscope/gfl/__init__.py | 3 + federatedscope/gfl/baseline/__init__.py | 0 federatedscope/gfl/dataloader/__init__.py | 8 + .../gfl/dataloader/dataloader_graph.py | 155 ++ .../gfl/dataloader/dataloader_link.py | 128 + .../gfl/dataloader/dataloader_node.py | 183 ++ federatedscope/gfl/dataset/__init__.py | 10 + federatedscope/gfl/dataset/cSBM_dataset.py | 372 +++ federatedscope/gfl/dataset/dblp_new.py | 184 ++ federatedscope/gfl/dataset/kg.py | 130 + .../gfl/dataset/preprocess/__init__.py | 3 + .../gfl/dataset/preprocess/dblp_related.py | 288 ++ federatedscope/gfl/dataset/recsys.py | 169 ++ federatedscope/gfl/dataset/utils.py | 53 + federatedscope/gfl/fedsageplus/__init__.py | 0 federatedscope/gfl/fedsageplus/trainer.py | 148 + federatedscope/gfl/fedsageplus/utils.py | 134 + federatedscope/gfl/fedsageplus/worker.py | 392 +++ federatedscope/gfl/flitplus/__init__.py | 0 federatedscope/gfl/flitplus/trainer.py | 264 ++ federatedscope/gfl/gcflplus/__init__.py | 0 federatedscope/gfl/gcflplus/utils.py | 33 + federatedscope/gfl/gcflplus/worker.py | 208 ++ federatedscope/gfl/loss/__init__.py | 7 + federatedscope/gfl/loss/greedy_loss.py | 67 + federatedscope/gfl/loss/vat.py | 88 + federatedscope/gfl/model/__init__.py | 19 + federatedscope/gfl/model/fedsageplus.py | 175 ++ federatedscope/gfl/model/gat.py | 53 + federatedscope/gfl/model/gcn.py | 53 + federatedscope/gfl/model/gin.py | 68 + federatedscope/gfl/model/gpr.py | 133 + federatedscope/gfl/model/graph_level.py | 124 + federatedscope/gfl/model/link_level.py | 88 + federatedscope/gfl/model/model_builder.py | 90 + federatedscope/gfl/model/mpnn.py | 56 + federatedscope/gfl/model/sage.py | 125 + federatedscope/gfl/trainer/__init__.py | 12 + federatedscope/gfl/trainer/graphtrainer.py | 67 + federatedscope/gfl/trainer/linktrainer.py | 206 ++ federatedscope/gfl/trainer/nodetrainer.py | 177 ++ federatedscope/hpo.py | 42 + federatedscope/main.py | 52 + federatedscope/mf/__init__.py | 3 + federatedscope/mf/baseline/__init__.py | 0 federatedscope/mf/dataloader/__init__.py | 3 + federatedscope/mf/dataloader/dataloader.py | 169 ++ federatedscope/mf/dataset/__init__.py | 6 + federatedscope/mf/dataset/movielens.py | 247 ++ federatedscope/mf/model/__init__.py | 4 + federatedscope/mf/model/model.py | 74 + federatedscope/mf/model/model_builder.py | 17 + federatedscope/mf/trainer/__init__.py | 7 + federatedscope/mf/trainer/trainer.py | 135 + federatedscope/mf/trainer/trainer_sgdmf.py | 97 + federatedscope/nlp/__init__.py | 3 + federatedscope/nlp/dataloader/__init__.py | 3 + federatedscope/nlp/dataloader/dataloader.py | 63 + federatedscope/nlp/dataset/__init__.py | 8 + federatedscope/nlp/dataset/leaf_nlp.py | 266 ++ federatedscope/nlp/dataset/leaf_synthetic.py | 199 ++ federatedscope/nlp/dataset/utils.py | 88 + federatedscope/nlp/loss/__init__.py | 5 + federatedscope/nlp/loss/character_loss.py | 54 + federatedscope/nlp/model/__init__.py | 8 + federatedscope/nlp/model/model_builder.py | 52 + federatedscope/nlp/model/rnn.py | 40 + federatedscope/nlp/trainer/__init__.py | 8 + federatedscope/nlp/trainer/trainer.py | 28 + federatedscope/parse_exp_results.py | 66 + federatedscope/register.py | 84 + federatedscope/tabular/__init__.py | 0 federatedscope/tabular/dataloader/__init__.py | 3 + .../tabular/dataloader/quadratic.py | 21 + federatedscope/tabular/model/__init__.py | 3 + federatedscope/tabular/model/quadratic.py | 11 + .../vertical_fl/Paillier/__init__.py | 0 .../vertical_fl/Paillier/abstract_paillier.py | 45 + federatedscope/vertical_fl/__init__.py | 1 + .../vertical_fl/dataloader/__init__.py | 3 + .../vertical_fl/dataloader/dataloader.py | 56 + .../vertical_fl/dataloader/utils.py | 30 + federatedscope/vertical_fl/worker/__init__.py | 4 + .../vertical_fl/worker/vertical_client.py | 107 + .../vertical_fl/worker/vertical_server.py | 121 + materials/paper_list/FL-Attacker/README.md | 1 + materials/paper_list/FL-Database/README.md | 25 + materials/paper_list/FL-Incentive/README.md | 1 + materials/paper_list/FL-NLP/README.md | 47 + .../paper_list/FL-Recommendation/README.md | 31 + .../Federated_Graph_Learning/README.md | 24 + materials/paper_list/Federated_HPO/README.md | 25 + .../paper_list/Personalized_FL/README.md | 38 + materials/tutorial/KDD_2022/README.md | 1 + .../ConvNet2@cifar-10/Ditto_ASR.png | Bin 0 -> 241924 bytes .../ConvNet2@cifar-10/Ditto_C_Acc.png | Bin 0 -> 151007 bytes .../results_all/ConvNet2@cifar-10/FT_ASR.png | Bin 0 -> 225949 bytes .../ConvNet2@cifar-10/FT_C_Acc.png | Bin 0 -> 132037 bytes .../ConvNet2@cifar-10/FedAvg_ASR.png | Bin 0 -> 251988 bytes .../ConvNet2@cifar-10/FedAvg_C_Acc.png | Bin 0 -> 155526 bytes .../ConvNet2@cifar-10/FedBN_ASR.png | Bin 0 -> 199736 bytes .../ConvNet2@cifar-10/FedBN_C_Acc.png | Bin 0 -> 148663 bytes .../ConvNet2@cifar-10/FedEM_ASR.png | Bin 0 -> 241160 bytes .../ConvNet2@cifar-10/FedEM_C_Acc.png | Bin 0 -> 148940 bytes .../ConvNet2@cifar-10/FedRep_ASR.png | Bin 0 -> 147601 bytes .../ConvNet2@cifar-10/FedRep_C_Acc.png | Bin 0 -> 158523 bytes .../ConvNet2@cifar-10/pFedMe_ASR.png | Bin 0 -> 201983 bytes .../ConvNet2@cifar-10/pFedMe_C_Acc.png | Bin 0 -> 163421 bytes .../ResNet18@cifar-10/Ditto_ASR.png | Bin 0 -> 206209 bytes .../ResNet18@cifar-10/Ditto_C_Acc.png | Bin 0 -> 153047 bytes .../results_all/ResNet18@cifar-10/FT_ASR.png | Bin 0 -> 193093 bytes .../ResNet18@cifar-10/FT_C_Acc.png | Bin 0 -> 132531 bytes .../ResNet18@cifar-10/FedAvg_ASR.png | Bin 0 -> 208577 bytes .../ResNet18@cifar-10/FedAvg_C_Acc.png | Bin 0 -> 155680 bytes .../ResNet18@cifar-10/FedBN_ASR.png | Bin 0 -> 201753 bytes .../ResNet18@cifar-10/FedBN_C_Acc.png | Bin 0 -> 154274 bytes .../ResNet18@cifar-10/FedRep_ASR.png | Bin 0 -> 173445 bytes .../ResNet18@cifar-10/FedRep_C_Acc.png | Bin 0 -> 159265 bytes .../ResNet18@cifar-10/pFedMe_ASR.png | Bin 0 -> 209158 bytes .../ResNet18@cifar-10/pFedMe_C_Acc.png | Bin 0 -> 169656 bytes rar/acknow.txt | 92 + rar/default.sfx | Bin 0 -> 183296 bytes rar/license.txt | 127 + rar/makefile | 13 + rar/order.htm | 85 + rar/rar | Bin 0 -> 553936 bytes rar/rar.txt | 2464 +++++++++++++++++ rar/rarfiles.lst | 91 + rar/readme.txt | 17 + rar/unrar | Bin 0 -> 307352 bytes rar/whatsnew.txt | 513 ++++ regression.sh | 27 + run_reorganized_standalone.sh | 18 + .../backdoor_fedavg_convnet2_on_cifar10.yaml | 68 + ...ckdoor_fedavg_convnet2_on_cifar10_avg.yaml | 69 + ...ckdoor_fedavg_convnet2_on_cifar10_iid.yaml | 68 + ...door_fedavg_convnet2_on_cifar10_large.yaml | 68 + ..._fedavg_convnet2_on_cifar10_large_avg.yaml | 69 + ...door_fedavg_convnet2_on_cifar10_small.yaml | 68 + ..._fedavg_convnet2_on_cifar10_small_avg.yaml | 69 + .../backdoor_fedavg_convnet2_on_femnist.yaml | 61 + .../backdoor_fedavg_resnet18_on_cifar10.yaml | 68 + ...edavg_resnet18_on_cifar10_BN_ablation.yaml | 69 + ...ckdoor_fedavg_resnet18_on_cifar10_avg.yaml | 68 + ...or_fedavg_resnet18_on_cifar10_defense.yaml | 71 + ...ckdoor_fedavg_resnet18_on_cifar10_iid.yaml | 68 + ...kdoor_fedavg_resnet18_on_cifar10_krum.yaml | 72 + ...door_fedavg_resnet18_on_cifar10_large.yaml | 67 + ..._fedavg_resnet18_on_cifar10_large_avg.yaml | 68 + ...door_fedavg_resnet18_on_cifar10_small.yaml | 68 + ..._fedavg_resnet18_on_cifar10_small_avg.yaml | 68 + .../fedavg_convnet2_on_cifar10.yaml | 69 + ...g_convnet2_on_cifar10_fedrep_baseline.yaml | 67 + .../fedavg_convnet2_on_cifar10_iid.yaml | 69 + .../fedavg_convnet2_on_cifar10_rep.yaml | 67 + .../fedavg_convnet2_on_femnist.yaml | 60 + .../fedavg_resnet18_on_cifar10.yaml | 67 + ...fedavg_resnet18_on_cifar10_bnablation.yaml | 66 + .../fedavg_resnet18_on_cifar10_iid.yaml | 67 + .../fedavg_resnet18gn_on_cifar10.yaml | 68 + .../fedavg_resnet18in_on_cifar10.yaml | 68 + .../fedavg_resnet18ln_on_cifar10.yaml | 68 + ...fl_backdoor_ditto_convnet2_on_cifar10.yaml | 73 + ...ackdoor_ditto_convnet2_on_cifar10_abl.yaml | 77 + ...ackdoor_ditto_convnet2_on_cifar10_avg.yaml | 78 + ...ackdoor_ditto_convnet2_on_cifar10_iid.yaml | 76 + ...kdoor_ditto_convnet2_on_cifar10_large.yaml | 77 + ...r_ditto_convnet2_on_cifar10_large_avg.yaml | 78 + ...kdoor_ditto_convnet2_on_cifar10_small.yaml | 77 + ...r_ditto_convnet2_on_cifar10_small_avg.yaml | 78 + ...fl_backdoor_ditto_convnet2_on_femnist.yaml | 75 + ...fl_backdoor_ditto_resnet18_on_cifar10.yaml | 79 + ...ackdoor_ditto_resnet18_on_cifar10_abl.yaml | 76 + ...ackdoor_ditto_resnet18_on_cifar10_iid.yaml | 76 + ...kdoor_ditto_resnet18_on_cifar10_large.yaml | 76 + ...kdoor_ditto_resnet18_on_cifar10_small.yaml | 76 + ...fl_backdoor_fedbn_convnet2_on_cifar10.yaml | 77 + ...ackdoor_fedbn_convnet2_on_cifar10_avg.yaml | 78 + ...ackdoor_fedbn_convnet2_on_cifar10_iid.yaml | 77 + ...kdoor_fedbn_convnet2_on_cifar10_large.yaml | 77 + ...r_fedbn_convnet2_on_cifar10_large_avg.yaml | 78 + ...ckdoor_fedbn_convnet2_on_cifar10_para.yaml | 79 + ...kdoor_fedbn_convnet2_on_cifar10_small.yaml | 77 + ...r_fedbn_convnet2_on_cifar10_small_avg.yaml | 78 + ...ackdoor_fedbn_convnet2_on_cifar10_sta.yaml | 77 + ...fl_backdoor_fedbn_convnet2_on_femnist.yaml | 70 + ...fl_backdoor_fedbn_resnet18_on_cifar10.yaml | 77 + ...ackdoor_fedbn_resnet18_on_cifar10_iid.yaml | 77 + ...kdoor_fedbn_resnet18_on_cifar10_large.yaml | 77 + ...ckdoor_fedbn_resnet18_on_cifar10_para.yaml | 79 + ...kdoor_fedbn_resnet18_on_cifar10_small.yaml | 77 + ...ackdoor_fedbn_resnet18_on_cifar10_sta.yaml | 77 + ...fl_backdoor_fedem_convnet2_on_cifar10.yaml | 78 + ...ackdoor_fedem_convnet2_on_cifar10_avg.yaml | 79 + ...ackdoor_fedem_convnet2_on_cifar10_iid.yaml | 77 + ...kdoor_fedem_convnet2_on_cifar10_large.yaml | 78 + ...r_fedem_convnet2_on_cifar10_large_avg.yaml | 79 + ...kdoor_fedem_convnet2_on_cifar10_small.yaml | 78 + ...r_fedem_convnet2_on_cifar10_small_avg.yaml | 79 + ...fl_backdoor_fedem_convnet2_on_femnist.yaml | 70 + ...kdoor_fedem_fedbn_resnet18_on_cifar10.yaml | 80 + ...fl_backdoor_fedem_resnet18_on_cifar10.yaml | 82 + ...ackdoor_fedem_resnet18_on_cifar10_iid.yaml | 81 + ...kdoor_fedem_resnet18_on_cifar10_large.yaml | 81 + ...kdoor_fedem_resnet18_on_cifar10_small.yaml | 81 + ...l_backdoor_fedrep_convnet2_on_cifar10.yaml | 83 + ...ckdoor_fedrep_convnet2_on_cifar10_avg.yaml | 84 + ...ckdoor_fedrep_convnet2_on_cifar10_iid.yaml | 83 + ...door_fedrep_convnet2_on_cifar10_large.yaml | 83 + ..._fedrep_convnet2_on_cifar10_large_avg.yaml | 84 + ...door_fedrep_convnet2_on_cifar10_small.yaml | 83 + ..._fedrep_convnet2_on_cifar10_small_avg.yaml | 84 + ...l_backdoor_fedrep_convnet2_on_femnist.yaml | 72 + ...l_backdoor_fedrep_resnet18_on_cifar10.yaml | 83 + ...ckdoor_fedrep_resnet18_on_cifar10_iid.yaml | 82 + ...door_fedrep_resnet18_on_cifar10_large.yaml | 82 + ..._fedrep_resnet18_on_cifar10_large_avg.yaml | 83 + ...door_fedrep_resnet18_on_cifar10_small.yaml | 82 + ..._fedrep_resnet18_on_cifar10_small_avg.yaml | 83 + ...kdoor_fedrep_resnet18_on_cifar10_tsne.yaml | 83 + .../pfl_backdoor_ft_convnet2_on_cifar10.yaml | 72 + ...l_backdoor_ft_convnet2_on_cifar10_abl.yaml | 72 + ...l_backdoor_ft_convnet2_on_cifar10_avg.yaml | 73 + ...l_backdoor_ft_convnet2_on_cifar10_iid.yaml | 73 + ...backdoor_ft_convnet2_on_cifar10_large.yaml | 72 + ...door_ft_convnet2_on_cifar10_large_avg.yaml | 73 + ...backdoor_ft_convnet2_on_cifar10_small.yaml | 72 + ...door_ft_convnet2_on_cifar10_small_avg.yaml | 73 + .../pfl_backdoor_ft_convnet2_on_femnist.yaml | 66 + .../pfl_backdoor_ft_resnet18_on_cifar10.yaml | 71 + ...backdoor_ft_resnet18_on_cifar10_large.yaml | 71 + ...backdoor_ft_resnet18_on_cifar10_small.yaml | 71 + ...fl_backdoor_ft_resnet18_on_cifar10_zy.yaml | 71 + ...ackdoor_ft_resnet18_on_cifar10_zy_abl.yaml | 71 + ...ackdoor_ft_resnet18_on_cifar10_zy_iid.yaml | 71 + ...kdoor_ft_resnet18_on_cifar10_zy_large.yaml | 71 + ...kdoor_ft_resnet18_on_cifar10_zy_small.yaml | 71 + ..._backdoor_pme_convnet2_on_cifar10_avg.yaml | 78 + ..._backdoor_pme_convnet2_on_cifar10_iid.yaml | 76 + ...ackdoor_pme_convnet2_on_cifar10_large.yaml | 77 + ...oor_pme_convnet2_on_cifar10_large_avg.yaml | 78 + ..._backdoor_pme_convnet2_on_cifar10_new.yaml | 77 + ...kdoor_pme_convnet2_on_cifar10_new_abl.yaml | 77 + ...ackdoor_pme_convnet2_on_cifar10_small.yaml | 77 + ...oor_pme_convnet2_on_cifar10_small_avg.yaml | 78 + .../pfl_backdoor_pme_convnet2_on_femnist.yaml | 73 + .../pfl_backdoor_pme_resnet18_on_cifar10.yaml | 76 + ..._backdoor_pme_resnet18_on_cifar10_abl.yaml | 76 + ..._backdoor_pme_resnet18_on_cifar10_iid.yaml | 76 + ...ackdoor_pme_resnet18_on_cifar10_large.yaml | 76 + ...ackdoor_pme_resnet18_on_cifar10_small.yaml | 76 + .../pfl_ditto_convnet2_on_cifar10_dy.yaml | 75 + .../pfl_ditto_convnet2_on_cifar10_iid.yaml | 76 + .../pfl_ditto_convnet2_on_cifar10_new.yaml | 76 + .../pfl_ditto_convnet2_on_femnist.yaml | 74 + .../pfl_ditto_resnet18_on_cifar10.yaml | 76 + .../pfl_ditto_resnet18_on_cifar10_iid.yaml | 77 + .../pfl_ditto_zy_resnet18_on_cifar10.yaml | 75 + .../pfl_fedbn_convnet2_on_cifar10.yaml | 77 + .../pfl_fedbn_convnet2_on_cifar10_iid.yaml | 77 + .../pfl_fedbn_convnet2_on_femnist.yaml | 68 + .../pfl_fedbn_resnet18_on_cifar10.yaml | 77 + .../pfl_fedbn_resnet18_on_cifar10_iid.yaml | 77 + .../pfl_fedbn_resnet18_on_cifar10_para.yaml | 78 + .../pfl_fedbn_resnet18_on_cifar10_sta.yaml | 76 + .../pfl_fedem_convnet2_on_cifar10.yaml | 77 + .../pfl_fedem_convnet2_on_cifar10_iid.yaml | 77 + .../pfl_fedem_convnet2_on_femnist.yaml | 68 + .../pfl_fedem_resnet18_on_cifar10.yaml | 77 + .../pfl_fedem_resnet18_on_cifar10_iid.yaml | 82 + .../pfl_fedrep_convnet2_on_cifar10.yaml | 82 + .../pfl_fedrep_convnet2_on_cifar10_iid.yaml | 82 + .../pfl_fedrep_convnet2_on_femnist.yaml | 72 + .../pfl_fedrep_resnet18_on_cifar10.yaml | 81 + ...fedrep_resnet18_on_cifar10_goldfromfe.yaml | 82 + .../pfl_fedrep_resnet18_on_cifar10_iid.yaml | 82 + .../pfl_fedrep_vgg11_on_cifar10.yaml | 82 + .../pfl_ft_convnet2_on_cifar10.yaml | 72 + .../pfl_ft_convnet2_on_cifar10_iid.yaml | 72 + .../pfl_ft_convnet2_on_femnist.yaml | 64 + .../pfl_ft_resnet18_on_cifar10.yaml | 72 + .../pfl_ft_resnet18_on_cifar10_iid.yaml | 72 + .../pfl_ft_resnet18_on_cifar10_zy_iid.yaml | 71 + .../pfl_pme_convnet2_on_cifar10.yaml | 75 + .../pfl_pme_convnet2_on_cifar10_iid.yaml | 76 + .../pfl_pme_convnet2_on_cifar10_new.yaml | 76 + .../pfl_pme_convnet2_on_femnist.yaml | 74 + .../pfl_pme_resnet18_on_cifar10.yaml | 76 + .../pfl_pme_resnet18_on_cifar10_iid.yaml | 77 + scripts/ci_test.sh | 56 + scripts/dp_exp_scripts/parse_nbafl_results.py | 52 + .../run_femnist_dp_standalone.sh | 54 + .../run_femnist_standard_standalone.sh | 17 + .../parse_fedopt_results.py | 52 + .../fedopt_exp_scripts/run_fedopt_femnist.sh | 31 + scripts/fedopt_exp_scripts/run_fedopt_lr.sh | 31 + .../run_fedopt_shakespeare.sh | 31 + .../parse_fedprox_results.py | 52 + .../run_fedprox_femnist.sh | 30 + scripts/fedprox_exp_scripts/run_fedprox_lr.sh | 30 + .../run_fedprox_shakespeare.sh | 30 + scripts/flit_exp_scripts/fedalgo.sh | 11 + .../run_fedavg-fedfocal-flit_cls.sh | 19 + scripts/flit_exp_scripts/run_fedprox_cls.sh | 20 + scripts/flit_exp_scripts/run_fedvat_cls.sh | 20 + scripts/flit_exp_scripts/run_flitplus_cls.sh | 20 + scripts/format.sh | 130 + scripts/gen_data.py | 106 + scripts/gnn_exp_scripts/args_graph_fedalgo.sh | 37 + scripts/gnn_exp_scripts/args_link_fedalgo.sh | 44 + .../args_multi_graph_fedalgo.sh | 23 + scripts/gnn_exp_scripts/args_node_fedalgo.sh | 117 + scripts/gnn_exp_scripts/run_dblp_fedavg.sh | 46 + scripts/gnn_exp_scripts/run_graph_level.sh | 58 + .../run_graph_level_multi_task.sh | 57 + .../run_graph_level_multi_task_bn.sh | 57 + .../run_graph_level_multi_task_bn_finetune.sh | 57 + .../gnn_exp_scripts/run_graph_level_opt.sh | 48 + .../gnn_exp_scripts/run_graph_level_prox.sh | 48 + scripts/gnn_exp_scripts/run_hpo.sh | 27 + scripts/gnn_exp_scripts/run_link_level.sh | 53 + scripts/gnn_exp_scripts/run_link_level_KG.sh | 53 + scripts/gnn_exp_scripts/run_link_level_opt.sh | 48 + .../gnn_exp_scripts/run_link_level_prox.sh | 48 + scripts/gnn_exp_scripts/run_multi_opt.sh | 46 + scripts/gnn_exp_scripts/run_multi_prox.sh | 47 + scripts/gnn_exp_scripts/run_node_level.sh | 56 + scripts/gnn_exp_scripts/run_node_level_hpo.sh | 109 + scripts/gnn_exp_scripts/run_node_level_opt.sh | 51 + .../gnn_exp_scripts/run_node_level_prox.sh | 51 + scripts/mf_exp_scripts/parse_mf_results.py | 52 + .../run_movielens1m_hfl_standalone.sh | 51 + .../run_movielens1m_hflsgdmf_standalone.sh | 68 + .../run_movielens1m_vfl_standalone.sh | 50 + .../run_movielens1m_vflsgdmf_standalone.sh | 67 + scripts/parse_exp_results_wandb.py | 120 + .../ditto/ditto_convnet2_on_femnist.yaml | 39 + .../ditto/ditto_lr_on_synthetic.yaml | 33 + .../ditto/ditto_lstm_on_shakespeare.yaml | 42 + .../fedbn/fedbn_convnet2_on_femnist.yaml | 37 + .../fedbn_gnn_minibatch_on_multi_task.yaml | 33 + .../fedem/fedem_convnet2_on_femnist.yaml | 39 + .../fedem/fedem_lr_on_synthetic.yaml | 33 + .../fedem/fedem_lstm_on_shakespeare.yaml | 36 + .../pfedme/pfedme_convnet2_on_femnist.yaml | 39 + .../pfedme/pfedme_lr_on_synthetic.yaml | 35 + .../pfedme/pfedme_lstm_on_shakespeare.results | 1 + .../pfedme/pfedme_lstm_on_shakespeare.yaml | 42 + .../run_femnist_ditto.sh | 32 + .../run_femnist_fedavg.sh | 31 + .../run_femnist_fedbn.sh | 31 + .../run_femnist_fedem.sh | 32 + .../run_femnist_pfedme.sh | 34 + .../run_shakespeare_ditto.sh | 32 + .../run_shakespeare_fedavg.sh | 31 + .../run_shakespeare_fedem.sh | 37 + .../run_shakespeare_pfedme.sh | 34 + .../run_synthetic_ditto.sh | 32 + .../run_synthetic_fedavg.sh | 31 + .../run_synthetic_fedem.sh | 37 + .../run_synthetic_pfedme.sh | 34 + scripts/run_distributed_lr.sh | 13 + setup.py | 38 + tests/run.py | 50 + tests/test_backdoor_attack.py | 99 + tests/test_femnist.py | 80 + 637 files changed, 48119 insertions(+), 250 deletions(-) create mode 100644 benchmark/FedHPOB/README.md create mode 100644 benchmark/FedHPOB/data/surrogate_model/README.md create mode 100644 benchmark/FedHPOB/data/tabular_data/README.md create mode 100644 benchmark/FedHPOB/fedhpob/__init__.py create mode 100644 benchmark/FedHPOB/fedhpob/benchmarks/__init__.py create mode 100644 benchmark/FedHPOB/fedhpob/benchmarks/base_benchmark.py create mode 100644 benchmark/FedHPOB/fedhpob/benchmarks/raw_benchmark.py create mode 100644 benchmark/FedHPOB/fedhpob/benchmarks/surrogate_benchmark.py create mode 100644 benchmark/FedHPOB/fedhpob/benchmarks/tabular_benchmark.py create mode 100644 benchmark/FedHPOB/fedhpob/config.py create mode 100644 benchmark/FedHPOB/fedhpob/optimizers/__init__.py create mode 100644 benchmark/FedHPOB/fedhpob/optimizers/dehb_optimizer.py create mode 100644 benchmark/FedHPOB/fedhpob/optimizers/hpbandster_optimizer.py create mode 100644 benchmark/FedHPOB/fedhpob/optimizers/optuna_optimizer.py create mode 100644 benchmark/FedHPOB/fedhpob/optimizers/smac_optimizer.py create mode 100644 benchmark/FedHPOB/fedhpob/utils/__init__.py create mode 100644 benchmark/FedHPOB/fedhpob/utils/cost_model.py create mode 100644 benchmark/FedHPOB/fedhpob/utils/draw.py create mode 100644 benchmark/FedHPOB/fedhpob/utils/monitor.py create mode 100644 benchmark/FedHPOB/fedhpob/utils/runner.py create mode 100644 benchmark/FedHPOB/fedhpob/utils/surrogate_dataloader.py create mode 100644 benchmark/FedHPOB/fedhpob/utils/tabular_dataloader.py create mode 100644 benchmark/FedHPOB/fedhpob/utils/util.py create mode 100644 benchmark/FedHPOB/scripts/bert_tiny/cola.yaml create mode 100644 benchmark/FedHPOB/scripts/bert_tiny/run.sh create mode 100644 benchmark/FedHPOB/scripts/bert_tiny/run_hpo_glue.sh create mode 100644 benchmark/FedHPOB/scripts/bert_tiny/run_opt_glue.sh create mode 100644 benchmark/FedHPOB/scripts/bert_tiny/sst2.yaml create mode 100644 benchmark/FedHPOB/scripts/cnn/cifar10.yaml create mode 100644 benchmark/FedHPOB/scripts/cnn/femnist.yaml create mode 100644 benchmark/FedHPOB/scripts/cnn/run.sh create mode 100644 benchmark/FedHPOB/scripts/cnn/run_hpo_cifar10.sh create mode 100644 benchmark/FedHPOB/scripts/cnn/run_hpo_femnist.sh create mode 100644 benchmark/FedHPOB/scripts/cnn/run_hpo_femnist_48.sh create mode 100644 benchmark/FedHPOB/scripts/exp/graph.yaml create mode 100644 benchmark/FedHPOB/scripts/exp/run.sh create mode 100644 benchmark/FedHPOB/scripts/exp/run_graph.sh create mode 100644 benchmark/FedHPOB/scripts/exp/run_mode.sh create mode 100644 benchmark/FedHPOB/scripts/format.sh create mode 100644 benchmark/FedHPOB/scripts/gcn/citeseer.yaml create mode 100644 benchmark/FedHPOB/scripts/gcn/cora.yaml create mode 100644 benchmark/FedHPOB/scripts/gcn/pubmed.yaml create mode 100644 benchmark/FedHPOB/scripts/gcn/run_hpo_citeseer.sh create mode 100644 benchmark/FedHPOB/scripts/gcn/run_hpo_cora.sh create mode 100644 benchmark/FedHPOB/scripts/gcn/run_hpo_pubmed.sh create mode 100644 benchmark/FedHPOB/scripts/gcn/run_opt_citeseer.sh create mode 100644 benchmark/FedHPOB/scripts/gcn/run_opt_cora.sh create mode 100644 benchmark/FedHPOB/scripts/gcn/run_opt_pubmed.sh create mode 100644 benchmark/FedHPOB/scripts/lr/10101@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/12@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/146212@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/146606@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/146818@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/146821@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/146822@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/14965@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/167119@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/167120@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/168911@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/168912@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/31@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/3917@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/3@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/53@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/7592@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/9952@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/9977@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/9981@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/openml_lr.yaml create mode 100644 benchmark/FedHPOB/scripts/lr/run.sh create mode 100644 benchmark/FedHPOB/scripts/lr/run_hpo_openml_lr.sh create mode 100644 benchmark/FedHPOB/scripts/lr/run_opt_openml_lr.sh create mode 100644 benchmark/FedHPOB/scripts/mlp/10101@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/12@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/146212@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/146606@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/146818@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/146821@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/146822@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/14965@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/167119@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/167120@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/168911@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/168912@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/31@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/3917@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/3@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/53@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/7592@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/9952@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/9977@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/9981@openml.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/openml_mlp.yaml create mode 100644 benchmark/FedHPOB/scripts/mlp/run_hpo_openml_mlp.sh create mode 100644 benchmark/FedHPOB/scripts/mlp/run_opt_openml_mlp.sh create mode 100644 demo/bbo.py create mode 100644 demo/hpbandster/rs.py create mode 100644 demo/smac/gp.py create mode 100644 demo/smac/rf.py create mode 100644 demo/synthetic.py create mode 100644 doc/Makefile create mode 100644 doc/README.md create mode 100644 doc/make.bat create mode 100644 doc/requirements-doc.txt create mode 100644 doc/source/attack.rst create mode 100644 doc/source/autotune.rst create mode 100644 doc/source/conf.py create mode 100644 doc/source/core.rst create mode 100644 doc/source/cv.rst create mode 100644 doc/source/gfl.rst create mode 100644 doc/source/index.rst create mode 100644 doc/source/mf.rst create mode 100644 doc/source/nlp.rst create mode 100644 enviroment/docker_files/README.md create mode 100644 enviroment/docker_files/federatedscope-jupyterhub/Dockerfile create mode 100644 enviroment/docker_files/federatedscope-jupyterhub/fix-permissions create mode 100644 enviroment/docker_files/federatedscope-jupyterhub/jupyter_server_config.py create mode 100644 enviroment/docker_files/federatedscope-jupyterhub/start-notebook.sh create mode 100644 enviroment/docker_files/federatedscope-jupyterhub/start-singleuser.sh create mode 100644 enviroment/docker_files/federatedscope-jupyterhub/start.sh create mode 100644 enviroment/docker_files/federatedscope-torch1.10-application.Dockerfile create mode 100644 enviroment/docker_files/federatedscope-torch1.10.Dockerfile create mode 100644 enviroment/docker_files/federatedscope-torch1.8-application.Dockerfile create mode 100644 enviroment/requirements-torch1.10-application.txt create mode 100644 enviroment/requirements-torch1.10.txt create mode 100644 enviroment/requirements-torch1.8-application.txt create mode 100644 federatedscope/__init__.py create mode 100644 federatedscope/attack/__init__.py create mode 100644 federatedscope/attack/auxiliary/MIA_get_target_data.py create mode 100644 federatedscope/attack/auxiliary/__init__.py create mode 100644 federatedscope/attack/auxiliary/attack_trainer_builder.py create mode 100644 federatedscope/attack/auxiliary/backdoor_utils.py create mode 100644 federatedscope/attack/auxiliary/create_edgeset.py create mode 100644 federatedscope/attack/auxiliary/poisoning_data.py create mode 100644 federatedscope/attack/auxiliary/utils.py create mode 100644 federatedscope/attack/models/__init__.py create mode 100644 federatedscope/attack/models/gan_based_model.py create mode 100644 federatedscope/attack/models/vision.py create mode 100644 federatedscope/attack/privacy_attacks/GAN_based_attack.py create mode 100644 federatedscope/attack/privacy_attacks/__init__.py create mode 100644 federatedscope/attack/privacy_attacks/passive_PIA.py create mode 100644 federatedscope/attack/privacy_attacks/reconstruction_opt.py create mode 100644 federatedscope/attack/trainer/GAN_trainer.py create mode 100644 federatedscope/attack/trainer/MIA_invert_gradient_trainer.py create mode 100644 federatedscope/attack/trainer/PIA_trainer.py create mode 100644 federatedscope/attack/trainer/__init__.py create mode 100644 federatedscope/attack/trainer/backdoor_trainer.py create mode 100644 federatedscope/attack/trainer/benign_trainer.py create mode 100644 federatedscope/attack/worker_as_attacker/__init__.py create mode 100644 federatedscope/attack/worker_as_attacker/active_client.py create mode 100644 federatedscope/attack/worker_as_attacker/server_attacker.py create mode 100644 federatedscope/autotune/__init__.py create mode 100644 federatedscope/autotune/algos.py create mode 100644 federatedscope/autotune/choice_types.py create mode 100644 federatedscope/autotune/fedex/__init__.py create mode 100644 federatedscope/autotune/fedex/client.py create mode 100644 federatedscope/autotune/fedex/server.py create mode 100644 federatedscope/autotune/utils.py create mode 100644 federatedscope/contrib/__init__.py create mode 100644 federatedscope/contrib/configs/__init__.py create mode 100644 federatedscope/contrib/data/__init__.py create mode 100644 federatedscope/contrib/data/example.py create mode 100644 federatedscope/contrib/metrics/__init__.py create mode 100644 federatedscope/contrib/metrics/example.py create mode 100644 federatedscope/contrib/metrics/poison_acc.py create mode 100644 federatedscope/contrib/model/__init__.py create mode 100644 federatedscope/contrib/model/example.py create mode 100644 federatedscope/contrib/model/resnet.py create mode 100644 federatedscope/contrib/model/resnet_in.py create mode 100644 federatedscope/contrib/model/resnet_ln.py create mode 100644 federatedscope/contrib/model/vgg.py create mode 100644 federatedscope/contrib/trainer/__init__.py create mode 100644 federatedscope/contrib/trainer/example.py create mode 100644 federatedscope/core/__init__.py create mode 100644 federatedscope/core/aggregator.py create mode 100644 federatedscope/core/auxiliaries/ReIterator.py create mode 100644 federatedscope/core/auxiliaries/__init__.py create mode 100644 federatedscope/core/auxiliaries/aggregator_builder.py create mode 100644 federatedscope/core/auxiliaries/criterion_builder.py create mode 100644 federatedscope/core/auxiliaries/data_builder.py create mode 100644 federatedscope/core/auxiliaries/dataloader_builder.py create mode 100644 federatedscope/core/auxiliaries/metric_builder.py create mode 100644 federatedscope/core/auxiliaries/model_builder.py create mode 100644 federatedscope/core/auxiliaries/optimizer_builder.py create mode 100644 federatedscope/core/auxiliaries/regularizer_builder.py create mode 100644 federatedscope/core/auxiliaries/splitter_builder.py create mode 100644 federatedscope/core/auxiliaries/trainer_builder.py create mode 100644 federatedscope/core/auxiliaries/transform_builder.py create mode 100644 federatedscope/core/auxiliaries/utils.py create mode 100644 federatedscope/core/auxiliaries/worker_builder.py create mode 100644 federatedscope/core/cmd_args.py create mode 100644 federatedscope/core/communication.py create mode 100644 federatedscope/core/configs/__init__.py create mode 100644 federatedscope/core/configs/cfg_asyn.py create mode 100644 federatedscope/core/configs/cfg_attack.py create mode 100644 federatedscope/core/configs/cfg_data.py create mode 100644 federatedscope/core/configs/cfg_differential_privacy.py create mode 100644 federatedscope/core/configs/cfg_evaluation.py create mode 100644 federatedscope/core/configs/cfg_fl_algo.py create mode 100644 federatedscope/core/configs/cfg_fl_setting.py create mode 100644 federatedscope/core/configs/cfg_hpo.py create mode 100644 federatedscope/core/configs/cfg_model.py create mode 100644 federatedscope/core/configs/cfg_training.py create mode 100644 federatedscope/core/configs/config.py create mode 100644 federatedscope/core/configs/constants.py create mode 100644 federatedscope/core/fed_runner.py create mode 100644 federatedscope/core/gRPC_server.py create mode 100644 federatedscope/core/gpu_manager.py create mode 100644 federatedscope/core/lr.py create mode 100644 federatedscope/core/message.py create mode 100644 federatedscope/core/mlp.py create mode 100644 federatedscope/core/monitors/__init__.py create mode 100644 federatedscope/core/monitors/early_stopper.py create mode 100644 federatedscope/core/monitors/metric_calculator.py create mode 100644 federatedscope/core/monitors/monitor.py create mode 100644 federatedscope/core/optimizer.py create mode 100644 federatedscope/core/optimizers/__init__.py create mode 100644 federatedscope/core/proto/__init__.py create mode 100644 federatedscope/core/proto/gRPC_comm_manager_pb2.py create mode 100644 federatedscope/core/proto/gRPC_comm_manager_pb2_grpc.py create mode 100644 federatedscope/core/regularizer/__init__.py create mode 100644 federatedscope/core/regularizer/proximal_regularizer.py create mode 100644 federatedscope/core/secret_sharing/__init__.py create mode 100644 federatedscope/core/secret_sharing/secret_sharing.py create mode 100644 federatedscope/core/splitters/__init__.py create mode 100644 federatedscope/core/splitters/generic/__init__.py create mode 100644 federatedscope/core/splitters/generic/lda_splitter.py create mode 100644 federatedscope/core/splitters/graph/__init__.py create mode 100644 federatedscope/core/splitters/graph/analyzer.py create mode 100644 federatedscope/core/splitters/graph/graphtype_splitter.py create mode 100644 federatedscope/core/splitters/graph/louvain_splitter.py create mode 100644 federatedscope/core/splitters/graph/randchunk_splitter.py create mode 100644 federatedscope/core/splitters/graph/random_splitter.py create mode 100644 federatedscope/core/splitters/graph/reltype_splitter.py create mode 100644 federatedscope/core/splitters/graph/scaffold_lda_splitter.py create mode 100644 federatedscope/core/splitters/graph/scaffold_splitter.py create mode 100644 federatedscope/core/splitters/utils.py create mode 100644 federatedscope/core/strategy.py create mode 100644 federatedscope/core/trainers/__init__.py create mode 100644 federatedscope/core/trainers/benign_trainer.py create mode 100644 federatedscope/core/trainers/context.py create mode 100644 federatedscope/core/trainers/tf_trainer.py create mode 100644 federatedscope/core/trainers/torch_trainer.py create mode 100644 federatedscope/core/trainers/trainer.py create mode 100644 federatedscope/core/trainers/trainer_Ditto.py create mode 100644 federatedscope/core/trainers/trainer_FedEM.py create mode 100644 federatedscope/core/trainers/trainer_FedRep.py create mode 100644 federatedscope/core/trainers/trainer_fedprox.py create mode 100644 federatedscope/core/trainers/trainer_multi_model.py create mode 100644 federatedscope/core/trainers/trainer_nbafl.py create mode 100644 federatedscope/core/trainers/trainer_pFedMe.py create mode 100644 federatedscope/core/worker/__init__.py create mode 100644 federatedscope/core/worker/base_worker.py create mode 100644 federatedscope/core/worker/client.py create mode 100644 federatedscope/core/worker/server.py create mode 100644 federatedscope/cross_backends/__init__.py create mode 100644 federatedscope/cross_backends/tf_aggregator.py create mode 100644 federatedscope/cross_backends/tf_lr.py create mode 100644 federatedscope/cv/__init__.py create mode 100644 federatedscope/cv/dataloader/__init__.py create mode 100644 federatedscope/cv/dataloader/dataloader.py create mode 100644 federatedscope/cv/dataset/__init__.py create mode 100644 federatedscope/cv/dataset/leaf.py create mode 100644 federatedscope/cv/dataset/leaf_cv.py create mode 100644 federatedscope/cv/model/__init__.py create mode 100644 federatedscope/cv/model/cnn.py create mode 100644 federatedscope/cv/model/model_builder.py create mode 100644 federatedscope/cv/trainer/__init__.py create mode 100644 federatedscope/cv/trainer/trainer.py create mode 100644 federatedscope/gfl/__init__.py create mode 100644 federatedscope/gfl/baseline/__init__.py create mode 100644 federatedscope/gfl/dataloader/__init__.py create mode 100644 federatedscope/gfl/dataloader/dataloader_graph.py create mode 100644 federatedscope/gfl/dataloader/dataloader_link.py create mode 100644 federatedscope/gfl/dataloader/dataloader_node.py create mode 100644 federatedscope/gfl/dataset/__init__.py create mode 100644 federatedscope/gfl/dataset/cSBM_dataset.py create mode 100644 federatedscope/gfl/dataset/dblp_new.py create mode 100644 federatedscope/gfl/dataset/kg.py create mode 100644 federatedscope/gfl/dataset/preprocess/__init__.py create mode 100644 federatedscope/gfl/dataset/preprocess/dblp_related.py create mode 100644 federatedscope/gfl/dataset/recsys.py create mode 100644 federatedscope/gfl/dataset/utils.py create mode 100644 federatedscope/gfl/fedsageplus/__init__.py create mode 100644 federatedscope/gfl/fedsageplus/trainer.py create mode 100644 federatedscope/gfl/fedsageplus/utils.py create mode 100644 federatedscope/gfl/fedsageplus/worker.py create mode 100644 federatedscope/gfl/flitplus/__init__.py create mode 100644 federatedscope/gfl/flitplus/trainer.py create mode 100644 federatedscope/gfl/gcflplus/__init__.py create mode 100644 federatedscope/gfl/gcflplus/utils.py create mode 100644 federatedscope/gfl/gcflplus/worker.py create mode 100644 federatedscope/gfl/loss/__init__.py create mode 100644 federatedscope/gfl/loss/greedy_loss.py create mode 100644 federatedscope/gfl/loss/vat.py create mode 100644 federatedscope/gfl/model/__init__.py create mode 100644 federatedscope/gfl/model/fedsageplus.py create mode 100644 federatedscope/gfl/model/gat.py create mode 100644 federatedscope/gfl/model/gcn.py create mode 100644 federatedscope/gfl/model/gin.py create mode 100644 federatedscope/gfl/model/gpr.py create mode 100644 federatedscope/gfl/model/graph_level.py create mode 100644 federatedscope/gfl/model/link_level.py create mode 100644 federatedscope/gfl/model/model_builder.py create mode 100644 federatedscope/gfl/model/mpnn.py create mode 100644 federatedscope/gfl/model/sage.py create mode 100644 federatedscope/gfl/trainer/__init__.py create mode 100644 federatedscope/gfl/trainer/graphtrainer.py create mode 100644 federatedscope/gfl/trainer/linktrainer.py create mode 100644 federatedscope/gfl/trainer/nodetrainer.py create mode 100644 federatedscope/hpo.py create mode 100644 federatedscope/main.py create mode 100644 federatedscope/mf/__init__.py create mode 100644 federatedscope/mf/baseline/__init__.py create mode 100644 federatedscope/mf/dataloader/__init__.py create mode 100644 federatedscope/mf/dataloader/dataloader.py create mode 100644 federatedscope/mf/dataset/__init__.py create mode 100644 federatedscope/mf/dataset/movielens.py create mode 100644 federatedscope/mf/model/__init__.py create mode 100644 federatedscope/mf/model/model.py create mode 100644 federatedscope/mf/model/model_builder.py create mode 100644 federatedscope/mf/trainer/__init__.py create mode 100644 federatedscope/mf/trainer/trainer.py create mode 100644 federatedscope/mf/trainer/trainer_sgdmf.py create mode 100644 federatedscope/nlp/__init__.py create mode 100644 federatedscope/nlp/dataloader/__init__.py create mode 100644 federatedscope/nlp/dataloader/dataloader.py create mode 100644 federatedscope/nlp/dataset/__init__.py create mode 100644 federatedscope/nlp/dataset/leaf_nlp.py create mode 100644 federatedscope/nlp/dataset/leaf_synthetic.py create mode 100644 federatedscope/nlp/dataset/utils.py create mode 100644 federatedscope/nlp/loss/__init__.py create mode 100644 federatedscope/nlp/loss/character_loss.py create mode 100644 federatedscope/nlp/model/__init__.py create mode 100644 federatedscope/nlp/model/model_builder.py create mode 100644 federatedscope/nlp/model/rnn.py create mode 100644 federatedscope/nlp/trainer/__init__.py create mode 100644 federatedscope/nlp/trainer/trainer.py create mode 100644 federatedscope/parse_exp_results.py create mode 100644 federatedscope/register.py create mode 100644 federatedscope/tabular/__init__.py create mode 100644 federatedscope/tabular/dataloader/__init__.py create mode 100644 federatedscope/tabular/dataloader/quadratic.py create mode 100644 federatedscope/tabular/model/__init__.py create mode 100644 federatedscope/tabular/model/quadratic.py create mode 100644 federatedscope/vertical_fl/Paillier/__init__.py create mode 100644 federatedscope/vertical_fl/Paillier/abstract_paillier.py create mode 100644 federatedscope/vertical_fl/__init__.py create mode 100644 federatedscope/vertical_fl/dataloader/__init__.py create mode 100644 federatedscope/vertical_fl/dataloader/dataloader.py create mode 100644 federatedscope/vertical_fl/dataloader/utils.py create mode 100644 federatedscope/vertical_fl/worker/__init__.py create mode 100644 federatedscope/vertical_fl/worker/vertical_client.py create mode 100644 federatedscope/vertical_fl/worker/vertical_server.py create mode 100644 materials/paper_list/FL-Attacker/README.md create mode 100644 materials/paper_list/FL-Database/README.md create mode 100644 materials/paper_list/FL-Incentive/README.md create mode 100644 materials/paper_list/FL-NLP/README.md create mode 100644 materials/paper_list/FL-Recommendation/README.md create mode 100644 materials/paper_list/Federated_Graph_Learning/README.md create mode 100644 materials/paper_list/Federated_HPO/README.md create mode 100644 materials/paper_list/Personalized_FL/README.md create mode 100644 materials/tutorial/KDD_2022/README.md create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/Ditto_ASR.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/Ditto_C_Acc.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/FT_ASR.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/FT_C_Acc.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/FedAvg_ASR.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/FedAvg_C_Acc.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/FedBN_ASR.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/FedBN_C_Acc.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/FedEM_ASR.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/FedEM_C_Acc.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/FedRep_ASR.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/FedRep_C_Acc.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/pFedMe_ASR.png create mode 100644 paper_plot/results_all/ConvNet2@cifar-10/pFedMe_C_Acc.png create mode 100644 paper_plot/results_all/ResNet18@cifar-10/Ditto_ASR.png create mode 100644 paper_plot/results_all/ResNet18@cifar-10/Ditto_C_Acc.png create mode 100644 paper_plot/results_all/ResNet18@cifar-10/FT_ASR.png create mode 100644 paper_plot/results_all/ResNet18@cifar-10/FT_C_Acc.png create mode 100644 paper_plot/results_all/ResNet18@cifar-10/FedAvg_ASR.png create mode 100644 paper_plot/results_all/ResNet18@cifar-10/FedAvg_C_Acc.png create mode 100644 paper_plot/results_all/ResNet18@cifar-10/FedBN_ASR.png create mode 100644 paper_plot/results_all/ResNet18@cifar-10/FedBN_C_Acc.png create mode 100644 paper_plot/results_all/ResNet18@cifar-10/FedRep_ASR.png create mode 100644 paper_plot/results_all/ResNet18@cifar-10/FedRep_C_Acc.png create mode 100644 paper_plot/results_all/ResNet18@cifar-10/pFedMe_ASR.png create mode 100644 paper_plot/results_all/ResNet18@cifar-10/pFedMe_C_Acc.png create mode 100644 rar/acknow.txt create mode 100755 rar/default.sfx create mode 100644 rar/license.txt create mode 100644 rar/makefile create mode 100644 rar/order.htm create mode 100755 rar/rar create mode 100644 rar/rar.txt create mode 100644 rar/rarfiles.lst create mode 100644 rar/readme.txt create mode 100755 rar/unrar create mode 100644 rar/whatsnew.txt create mode 100644 regression.sh create mode 100755 run_reorganized_standalone.sh create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_large_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_small_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_BN_ablation.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_defense.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_krum.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_large_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_small_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10_fedrep_baseline.yaml create mode 100644 scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10_rep.yaml create mode 100644 scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/fedavg_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/fedavg_resnet18_on_cifar10_bnablation.yaml create mode 100644 scripts/backdoor_scripts/attack_config/fedavg_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/fedavg_resnet18gn_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/fedavg_resnet18in_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/fedavg_resnet18ln_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_abl.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_large_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_small_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_abl.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_large_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_para.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_small_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_sta.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_para.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_sta.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_large_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_small_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_fedbn_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_large_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_small_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_large_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_small_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_tsne.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_abl.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_large_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_small_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_abl.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_large_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_new.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_new_abl.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_small_avg.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_abl.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_large.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_small.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_cifar10_dy.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_cifar10_new.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ditto_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ditto_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ditto_zy_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedbn_convnet2_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedbn_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedbn_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10_para.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10_sta.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedem_convnet2_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedem_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedem_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedem_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedem_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedrep_convnet2_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedrep_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedrep_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedrep_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedrep_resnet18_on_cifar10_goldfromfe.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedrep_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_fedrep_vgg11_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ft_convnet2_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ft_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ft_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ft_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ft_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_ft_resnet18_on_cifar10_zy_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_cifar10_iid.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_cifar10_new.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_femnist.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_pme_resnet18_on_cifar10.yaml create mode 100644 scripts/backdoor_scripts/attack_config/pfl_pme_resnet18_on_cifar10_iid.yaml create mode 100644 scripts/ci_test.sh create mode 100644 scripts/dp_exp_scripts/parse_nbafl_results.py create mode 100644 scripts/dp_exp_scripts/run_femnist_dp_standalone.sh create mode 100644 scripts/dp_exp_scripts/run_femnist_standard_standalone.sh create mode 100644 scripts/fedopt_exp_scripts/parse_fedopt_results.py create mode 100644 scripts/fedopt_exp_scripts/run_fedopt_femnist.sh create mode 100644 scripts/fedopt_exp_scripts/run_fedopt_lr.sh create mode 100644 scripts/fedopt_exp_scripts/run_fedopt_shakespeare.sh create mode 100644 scripts/fedprox_exp_scripts/parse_fedprox_results.py create mode 100644 scripts/fedprox_exp_scripts/run_fedprox_femnist.sh create mode 100644 scripts/fedprox_exp_scripts/run_fedprox_lr.sh create mode 100644 scripts/fedprox_exp_scripts/run_fedprox_shakespeare.sh create mode 100644 scripts/flit_exp_scripts/fedalgo.sh create mode 100644 scripts/flit_exp_scripts/run_fedavg-fedfocal-flit_cls.sh create mode 100644 scripts/flit_exp_scripts/run_fedprox_cls.sh create mode 100644 scripts/flit_exp_scripts/run_fedvat_cls.sh create mode 100644 scripts/flit_exp_scripts/run_flitplus_cls.sh create mode 100755 scripts/format.sh create mode 100644 scripts/gen_data.py create mode 100644 scripts/gnn_exp_scripts/args_graph_fedalgo.sh create mode 100644 scripts/gnn_exp_scripts/args_link_fedalgo.sh create mode 100644 scripts/gnn_exp_scripts/args_multi_graph_fedalgo.sh create mode 100644 scripts/gnn_exp_scripts/args_node_fedalgo.sh create mode 100755 scripts/gnn_exp_scripts/run_dblp_fedavg.sh create mode 100755 scripts/gnn_exp_scripts/run_graph_level.sh create mode 100755 scripts/gnn_exp_scripts/run_graph_level_multi_task.sh create mode 100755 scripts/gnn_exp_scripts/run_graph_level_multi_task_bn.sh create mode 100755 scripts/gnn_exp_scripts/run_graph_level_multi_task_bn_finetune.sh create mode 100644 scripts/gnn_exp_scripts/run_graph_level_opt.sh create mode 100644 scripts/gnn_exp_scripts/run_graph_level_prox.sh create mode 100755 scripts/gnn_exp_scripts/run_hpo.sh create mode 100755 scripts/gnn_exp_scripts/run_link_level.sh create mode 100755 scripts/gnn_exp_scripts/run_link_level_KG.sh create mode 100644 scripts/gnn_exp_scripts/run_link_level_opt.sh create mode 100644 scripts/gnn_exp_scripts/run_link_level_prox.sh create mode 100644 scripts/gnn_exp_scripts/run_multi_opt.sh create mode 100644 scripts/gnn_exp_scripts/run_multi_prox.sh create mode 100755 scripts/gnn_exp_scripts/run_node_level.sh create mode 100755 scripts/gnn_exp_scripts/run_node_level_hpo.sh create mode 100644 scripts/gnn_exp_scripts/run_node_level_opt.sh create mode 100644 scripts/gnn_exp_scripts/run_node_level_prox.sh create mode 100644 scripts/mf_exp_scripts/parse_mf_results.py create mode 100644 scripts/mf_exp_scripts/run_movielens1m_hfl_standalone.sh create mode 100644 scripts/mf_exp_scripts/run_movielens1m_hflsgdmf_standalone.sh create mode 100644 scripts/mf_exp_scripts/run_movielens1m_vfl_standalone.sh create mode 100644 scripts/mf_exp_scripts/run_movielens1m_vflsgdmf_standalone.sh create mode 100644 scripts/parse_exp_results_wandb.py create mode 100644 scripts/personalization_exp_scripts/ditto/ditto_convnet2_on_femnist.yaml create mode 100644 scripts/personalization_exp_scripts/ditto/ditto_lr_on_synthetic.yaml create mode 100644 scripts/personalization_exp_scripts/ditto/ditto_lstm_on_shakespeare.yaml create mode 100644 scripts/personalization_exp_scripts/fedbn/fedbn_convnet2_on_femnist.yaml create mode 100644 scripts/personalization_exp_scripts/fedbn/fedbn_gnn_minibatch_on_multi_task.yaml create mode 100644 scripts/personalization_exp_scripts/fedem/fedem_convnet2_on_femnist.yaml create mode 100644 scripts/personalization_exp_scripts/fedem/fedem_lr_on_synthetic.yaml create mode 100644 scripts/personalization_exp_scripts/fedem/fedem_lstm_on_shakespeare.yaml create mode 100644 scripts/personalization_exp_scripts/pfedme/pfedme_convnet2_on_femnist.yaml create mode 100644 scripts/personalization_exp_scripts/pfedme/pfedme_lr_on_synthetic.yaml create mode 100644 scripts/personalization_exp_scripts/pfedme/pfedme_lstm_on_shakespeare.results create mode 100644 scripts/personalization_exp_scripts/pfedme/pfedme_lstm_on_shakespeare.yaml create mode 100755 scripts/personalization_exp_scripts/run_femnist_ditto.sh create mode 100755 scripts/personalization_exp_scripts/run_femnist_fedavg.sh create mode 100755 scripts/personalization_exp_scripts/run_femnist_fedbn.sh create mode 100755 scripts/personalization_exp_scripts/run_femnist_fedem.sh create mode 100755 scripts/personalization_exp_scripts/run_femnist_pfedme.sh create mode 100755 scripts/personalization_exp_scripts/run_shakespeare_ditto.sh create mode 100755 scripts/personalization_exp_scripts/run_shakespeare_fedavg.sh create mode 100755 scripts/personalization_exp_scripts/run_shakespeare_fedem.sh create mode 100755 scripts/personalization_exp_scripts/run_shakespeare_pfedme.sh create mode 100755 scripts/personalization_exp_scripts/run_synthetic_ditto.sh create mode 100755 scripts/personalization_exp_scripts/run_synthetic_fedavg.sh create mode 100755 scripts/personalization_exp_scripts/run_synthetic_fedem.sh create mode 100755 scripts/personalization_exp_scripts/run_synthetic_pfedme.sh create mode 100755 scripts/run_distributed_lr.sh create mode 100644 tests/run.py create mode 100644 tests/test_backdoor_attack.py create mode 100644 tests/test_femnist.py diff --git a/LICENSE b/LICENSE index 82e353b70..039d55505 100644 --- a/LICENSE +++ b/LICENSE @@ -335,24 +335,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- - -Code in federatedscope/core/configs/yacs_config.py, the basic code of yacs -adopts Apache 2.0 License - -Copyright (c) 2018-present, Facebook, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -------------------------------------------------------------------------------- @@ -430,234 +412,3 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- - -Code in federatedscope/contrib/model/resnet.py is adapted from -https://github.com/kuangliu/pytorch-cifar (MIT License) - -Copyright (c) 2017 liukuang - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - --------------------------------------------------------------------------------- - -Code in federatedscope/attack/auxiliary/create_edgeset.py and poisoning_data.py -is adapted from https://github.com/ksreenivasan/OOD_Federated_Learning -(MIT License) - -Copyright (c) 2017 liukuang - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- - -The function partition_by_category and subgraphing in -federatedscope/gfl/dataset/recsys.py -are borrowed from https://github.com/FedML-AI/FedGraphNN - -Copyright [FedML] [Chaoyang He, Salman Avestimehr] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - --------------------------------------------------------------------------------- - -The function calculate_time_cost in federatedscope/core/auxiliaries/utils.py -is adopted from https://github.com/SymbioticLab/FedScale - -Copyright 2022 The FedScale Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - --------------------------------------------------------------------------------- - -The registration mechanism for federatedscope/contrib/ and the code structure -of federatedscope/core/configs/ are adapted from GraphGym: -https://github.com/snap-stanford/GraphGym (MIT License) - -Copyright (c) 2021 Jiaxuan You -Copyright (c) 2021 Jiaxuan You, Matthias Fey -Copyright (c) 2020 Jiaxuan You, Rex Ying, Jonathan Gomes Selman -Copyright (c) Facebook, Inc. and its affiliates. -Additional copyrights are specified in relevant subdirectories. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- - -Code in federatedscope/nlp/metric/bleu/bleu.py, federatedscope/nlp/metric/bleu/bleu_scorer.py, -federatedscope/nlp/metric/meteor/meteor.py, and federatedscope/nlp/metric/eval.py -is adapted from https://github.com/tylin/coco-caption - -Copyright (c) 2015 Xinlei Chen, Hao Fang, Tsung-Yi Lin, and Ramakrishna Vedantam - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - --------------------------------------------------------------------------------- - -Code in federatedscope/nlp/metric/eval.py is adapted from -https://github.com/hugochan/RL-based-Graph2Seq-for-NQG - -Copyright 2020 Yu (Hugo) Chen - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - --------------------------------------------------------------------------------- - -Code in federatedscope/nlp/metric/rouge/pyrouge.py and federatedscope/nlp/metric/rouge/utils.py -is adapted from https://github.com/nlpyang/PreSumm (MIT License) - -Copyright (c) 2019 Yang Liu - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- - -The implementation of ROUGE-155 in federatedscope/nlp/metric/rouge/pyrouge.py -is adapted from https://github.com/bheinzerling/pyrouge (MIT License) - -Copyright (c) 2014 Benjamin Heinzerling - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ---------------------------------------------------------------------------------- -The implementations of median aggregator in federatedscope/core/aggregators/median_aggregator.py -and trimmedmean aggregator in federatedscope/core/aggregators/trimmedmean_aggregator.py -are adapted from https://github.com/bladesteam/blades (Apache License) - -Copyright (c) 2022 lishenghui - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/README.md b/README.md index eee914d41..9df6c2ab0 100644 --- a/README.md +++ b/README.md @@ -1 +1,233 @@ -README for Backdoor Benchmark \ No newline at end of file +

+ federatedscope-logo +

+ +![](https://img.shields.io/badge/language-python-blue.svg) +![](https://img.shields.io/badge/license-Apache-000000.svg) +[![Website](https://img.shields.io/badge/website-FederatedScope-0000FF)](https://federatedscope.io/) +[![Playground](https://shields.io/badge/JupyterLab-Enjoy%20Your%20FL%20Journey!-F37626?logo=jupyter)](https://try.federatedscope.io/) +[![Contributing](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://federatedscope.io/docs/contributor/) + +FederatedScope is a comprehensive federated learning platform that provides convenient usage and flexible customization for various federated learning tasks in both academia and industry. Based on an event-driven architecture, FederatedScope integrates rich collections of functionalities to satisfy the burgeoning demands from federated learning, and aims to build up an easy-to-use platform for promoting learning safely and effectively. + +A detailed tutorial is provided on our [website](https://federatedscope.io/). + +## News +- [05-25-2022] Our paper [FederatedScope-GNN](https://arxiv.org/abs/2204.05562) has been accepted by KDD'2022! +- [05-06-2022] We release FederatedScope v0.1.0! + +## Quick Start + +We provide an end-to-end example for users to start running a standard FL course with FederatedScope. + +### Step 1. Installation + +First of all, users need to clone the source code and install the required packages (we suggest python version >= 3.9). + +```bash +git clone https://github.com/alibaba/FederatedScope.git +cd FederatedScope +``` +You can install the dependencies from the requirement file: +``` +# For minimal version +conda install --file enviroment/requirements-torch1.10.txt -c pytorch -c conda-forge -c nvidia + +# For application version +conda install --file enviroment/requirements-torch1.10-application.txt -c pytorch -c conda-forge -c nvidia -c pyg +``` +or build docker image and run with docker env (cuda 11 and torch 1.10): +``` +docker build -f enviroment/docker_files/federatedscope-torch1.10.Dockerfile -t alibaba/federatedscope:base-env-torch1.10 . +docker run --gpus device=all --rm -it --name "fedscope" -w $(pwd) alibaba/federatedscope:base-env-torch1.10 /bin/bash +``` +If you need to run with down-stream tasks such as graph FL, change the requirement/docker file name into another one when executing the above commands: +``` +# enviroment/requirements-torch1.10.txt -> +enviroment/requirements-torch1.10-application.txt + +# enviroment/docker_files/federatedscope-torch1.10.Dockerfile -> +enviroment/docker_files/federatedscope-torch1.10-application.Dockerfile +``` +Note: You can choose to use cuda 10 and torch 1.8 via changing `torch1.10` to `torch1.8`. +The docker images are based on the nvidia-docker. Please pre-install the NVIDIA drivers and `nvidia-docker2` in the host machine. See more details [here](https://github.com/alibaba/FederatedScope/tree/master/enviroment/docker_files). + +Finally, after all the dependencies are installed, run: +```bash +python setup.py install +``` + +### Step 2. Prepare datasets + +To run an FL task, users should prepare a dataset. +The DataZoo provided in FederatedScope can help to automatically download and preprocess widely-used public datasets for various FL applications, including CV, NLP, graph learning, recommendation, etc. Users can directly specify `cfg.data.type = DATASET_NAME`in the configuration. For example, + +```bash +cfg.data.type = 'femnist' +``` + +To use customized datasets, you need to prepare the datasets following a certain format and register it. Please refer to [Customized Datasets](https://federatedscope.io/docs/own-case/#data) for more details. + +### Step 3. Prepare models + +Then, users should specify the model architecture that will be trained in the FL course. +FederatedScope provides a ModelZoo that contains the implementation of widely adopted model architectures for various FL applications. Users can set up `cfg.model.type = MODEL_NAME` to apply a specific model architecture in FL tasks. For example, + +```yaml +cfg.model.type = 'convnet2' +``` + +FederatedScope allows users to use customized models via registering. Please refer to [Customized Models](https://federatedscope.io/docs/own-case/#model) for more details about how to customize a model architecture. + +### Step 4. Start running an FL task + +Note that FederatedScope provides a unified interface for both standalone mode and distributed mode, and allows users to change via configuring. + +#### Standalone mode + +The standalone mode in FederatedScope means to simulate multiple participants (servers and clients) in a single device, while participants' data are isolated from each other and their models might be shared via message passing. + +Here we demonstrate how to run a standard FL task with FederatedScope, with setting `cfg.data.type = 'FEMNIST'`and `cfg.model.type = 'ConvNet2'` to run vanilla FedAvg for an image classification task. Users can customize training configurations, such as `cfg.federated.total_round_num`, `cfg.data.batch_size`, and `cfg.optimizer.lr`, in the configuration (a .yaml file), and run a standard FL task as: + +```bash +# Run with default configurations +python federatedscope/main.py --cfg federatedscope/example_configs/femnist.yaml +# Or with custom configurations +python federatedscope/main.py --cfg federatedscope/example_configs/femnist.yaml federated.total_round_num 50 data.batch_size 128 +``` + +Then you can observe some monitored metrics during the training process as: + +``` +INFO: Server #0 has been set up ... +INFO: Model meta-info: . +... ... +INFO: Client has been set up ... +INFO: Model meta-info: . +... ... +INFO: {'Role': 'Client #5', 'Round': 0, 'Results_raw': {'train_loss': 207.6341676712036, 'train_acc': 0.02, 'train_total': 50, 'train_loss_regular': 0.0, 'train_avg_loss': 4.152683353424072}} +INFO: {'Role': 'Client #1', 'Round': 0, 'Results_raw': {'train_loss': 209.0940284729004, 'train_acc': 0.02, 'train_total': 50, 'train_loss_regular': 0.0, 'train_avg_loss': 4.1818805694580075}} +INFO: {'Role': 'Client #8', 'Round': 0, 'Results_raw': {'train_loss': 202.24929332733154, 'train_acc': 0.04, 'train_total': 50, 'train_loss_regular': 0.0, 'train_avg_loss': 4.0449858665466305}} +INFO: {'Role': 'Client #6', 'Round': 0, 'Results_raw': {'train_loss': 209.43883895874023, 'train_acc': 0.06, 'train_total': 50, 'train_loss_regular': 0.0, 'train_avg_loss': 4.1887767791748045}} +INFO: {'Role': 'Client #9', 'Round': 0, 'Results_raw': {'train_loss': 208.83140087127686, 'train_acc': 0.0, 'train_total': 50, 'train_loss_regular': 0.0, 'train_avg_loss': 4.1766280174255375}} +INFO: ----------- Starting a new training round (Round #1) ------------- +... ... +INFO: Server #0: Training is finished! Starting evaluation. +INFO: Client #1: (Evaluation (test set) at Round #20) test_loss is 163.029045 +... ... +INFO: Server #0: Final evaluation is finished! Starting merging results. +... ... +``` + +#### Distributed mode + +The distributed mode in FederatedScope denotes running multiple procedures to build up an FL course, where each procedure plays as a participant (server or client) that instantiates its model and loads its data. The communication between participants is already provided by the communication module of FederatedScope. + +To run with distributed mode, you only need to: + +- Prepare isolated data file and set up `cfg.distribute.data_file = PATH/TO/DATA` for each participant; +- Change `cfg.federate.model = 'distributed'`, and specify the role of each participant by `cfg.distributed.role = 'server'/'client'`. +- Set up a valid address by `cfg.distribute.host = x.x.x.x` and `cfg.distribute.port = xxxx`. (Note that for a server, you need to set up server_host/server_port for listening messge, while for a client, you need to set up client_host/client_port for listening and server_host/server_port for sending join-in applications when building up an FL course) + +We prepare a synthetic example for running with distributed mode: + +```bash +# For server +python main.py --cfg federatedscope/example_configs/distributed_server.yaml distribute.data_file 'PATH/TO/DATA' distribute.server_host x.x.x.x distribute.server_port xxxx + +# For clients +python main.py --cfg federatedscope/example_configs/distributed_client_1.yaml distribute.data_file 'PATH/TO/DATA' distribute.server_host x.x.x.x distribute.server_port xxxx distribute.client_host x.x.x.x distribute.client_port xxxx +python main.py --cfg federatedscope/example_configs/distributed_client_2.yaml distribute.data_file 'PATH/TO/DATA' distribute.server_host x.x.x.x distribute.server_port xxxx distribute.client_host x.x.x.x distribute.client_port xxxx +python main.py --cfg federatedscope/example_configs/distributed_client_3.yaml distribute.data_file 'PATH/TO/DATA' distribute.server_host x.x.x.x distribute.server_port xxxx distribute.client_host x.x.x.x distribute.client_port xxxx +``` + +An executable example with generated toy data can be run with: +```bash +# Generate the toy data +python scripts/gen_data.py + +# Firstly start the server that is waiting for clients to join in +python federatedscope/main.py --cfg federatedscope/example_configs/distributed_server.yaml distribute.data_file toy_data/server_data distribute.server_host 127.0.0.1 distribute.server_port 50051 + +# Start the client #1 (with another process) +python federatedscope/main.py --cfg federatedscope/example_configs/distributed_client_1.yaml distribute.data_file toy_data/client_1_data distribute.server_host 127.0.0.1 distribute.server_port 50051 distribute.client_host 127.0.0.1 distribute.client_port 50052 +# Start the client #2 (with another process) +python federatedscope/main.py --cfg federatedscope/example_configs/distributed_client_2.yaml distribute.data_file toy_data/client_2_data distribute.server_host 127.0.0.1 distribute.server_port 50051 distribute.client_host 127.0.0.1 distribute.client_port 50053 +# Start the client #3 (with another process) +python federatedscope/main.py --cfg federatedscope/example_configs/distributed_client_3.yaml distribute.data_file toy_data/client_3_data distribute.server_host 127.0.0.1 distribute.server_port 50051 distribute.client_host 127.0.0.1 distribute.client_port 50054 +``` + +And you can observe the results as (the IP addresses are anonymized with 'x.x.x.x'): + +``` +INFO: Server #0: Listen to x.x.x.x:xxxx... +INFO: Server #0 has been set up ... +Model meta-info: . +... ... +INFO: Client: Listen to x.x.x.x:xxxx... +INFO: Client (address x.x.x.x:xxxx) has been set up ... +Client (address x.x.x.x:xxxx) is assigned with #1. +INFO: Model meta-info: . +... ... +{'Role': 'Client #2', 'Round': 0, 'Results_raw': {'train_avg_loss': 5.215108394622803, 'train_loss': 333.7669372558594, 'train_total': 64}} +{'Role': 'Client #1', 'Round': 0, 'Results_raw': {'train_total': 64, 'train_loss': 290.9668884277344, 'train_avg_loss': 4.54635763168335}} +----------- Starting a new training round (Round #1) ------------- +... ... +INFO: Server #0: Training is finished! Starting evaluation. +INFO: Client #1: (Evaluation (test set) at Round #20) test_loss is 30.387419 +... ... +INFO: Server #0: Final evaluation is finished! Starting merging results. +... ... +``` + + +## Advanced + +As a comprehensive FL platform, FederatedScope provides the fundamental implementation to support requirements of various FL applications and frontier studies, towards both convenient usage and flexible extension, including: + +- **Personalized Federated Learning**: Client-specific model architectures and training configurations are applied to handle the non-IID issues caused by the diverse data distributions and heterogeneous system resources. +- **Federated Hyperparameter Optimization**: When hyperparameter optimization (HPO) comes to Federated Learning, each attempt is extremely costly due to multiple rounds of communication across participants. It is worth noting that HPO under the FL is unique and more techniques should be promoted such as low-fidelity HPO. +- **Privacy Attacker**: The privacy attack algorithms are important and convenient to verify the privacy protection strength of the design FL systems and algorithms, which is growing along with Federated Learning. +- **Graph Federated Learning**: Working on the ubiquitous graph data, Graph Federated Learning aims to exploit isolated sub-graph data to learn a global model, and has attracted increasing popularity. +- **Recommendation**: As a number of laws and regulations go into effect all over the world, more and more people are aware of the importance of privacy protection, which urges the recommender system to learn from user data in a privacy-preserving manner. +- **Differential Privacy**: Different from the encryption algorithms that require a large amount of computation resources, differential privacy is an economical yet flexible technique to protect privacy, which has achieved great success in database and is ever-growing in federated learning. +- ... + +More supports are coming soon! We have prepared a [tutorial](https://federatedscope.io/) to provide more details about how to utilize FederatedScope to enjoy your journey of Federated Learning! + +Materials of related topics are constantly being updated, please refer to [FL-Recommendation](https://github.com/alibaba/FederatedScope/tree/master/materials/paper_list/FL-Recommendation), [Federated-HPO](https://github.com/alibaba/FederatedScope/tree/master/materials/paper_list/Federated_HPO), [Personalized FL](https://github.com/alibaba/FederatedScope/tree/master/materials/paper_list/Personalized_FL), [Federated Graph Learning](https://github.com/alibaba/FederatedScope/tree/master/materials/paper_list/Federated_Graph_Learning), [FL-NLP](https://github.com/alibaba/FederatedScope/tree/master/materials/paper_list/FL-NLP), and so on. + +## Documentation + +The classes and methods of FederatedScope have been well documented so that users can generate the API references by: + +```shell +pip install -r requirements-doc.txt +make html +``` + +We put the API references on our [website](https://federatedscope.io/refs/index). + +## License + +FederatedScope is released under Apache License 2.0. + +## Publications +If you find FederatedScope useful for your research or development, please cite the following paper: +``` +@article{federatedscope, + title = {FederatedScope: A Flexible Federated Learning Platform for Heterogeneity}, + author = {Xie, Yuexiang and Wang, Zhen and Chen, Daoyuan and Gao, Dawei and Yao, Liuyi and Kuang, Weirui and Li, Yaliang and Ding, Bolin and Zhou, Jingren}, + journal={arXiv preprint arXiv:2204.05011}, + year = {2022}, +} +``` +More publications can be found in the [Publications](https://federatedscope.io/year-archive/). + +## Contributing + +We **greatly appreciate** any contribution to FederatedScope! You can refer to [Contributing to FederatedScope](https://federatedscope.io/docs/contributor/) for more details. + +Welcome to join in our [Slack channel](https://federatedscopeteam.slack.com/archives/C03E5LGQH7S), or DingDing group (please scan the following QR code) for discussion. + +federatedscope-logo diff --git a/benchmark/FedHPOB/README.md b/benchmark/FedHPOB/README.md new file mode 100644 index 000000000..3cb2f941d --- /dev/null +++ b/benchmark/FedHPOB/README.md @@ -0,0 +1,2 @@ +# FedHPOB +FedHPOB is library for providing federated learning benchmarks for (multi-fidelity) hyperparameter optimization. \ No newline at end of file diff --git a/benchmark/FedHPOB/data/surrogate_model/README.md b/benchmark/FedHPOB/data/surrogate_model/README.md new file mode 100644 index 000000000..49a19beb9 --- /dev/null +++ b/benchmark/FedHPOB/data/surrogate_model/README.md @@ -0,0 +1 @@ +This is where the pickled surrogate model is stored. \ No newline at end of file diff --git a/benchmark/FedHPOB/data/tabular_data/README.md b/benchmark/FedHPOB/data/tabular_data/README.md new file mode 100644 index 000000000..77d039da4 --- /dev/null +++ b/benchmark/FedHPOB/data/tabular_data/README.md @@ -0,0 +1 @@ +This is where the logs and dataframes are stored. \ No newline at end of file diff --git a/benchmark/FedHPOB/fedhpob/__init__.py b/benchmark/FedHPOB/fedhpob/__init__.py new file mode 100644 index 000000000..c82f0a503 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/__init__.py @@ -0,0 +1,19 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +__version__ = '0.0.1' + + +def _setup_logger(): + import logging + + logging_fmt = "%(asctime)s (%(module)s:%(lineno)d) %(levelname)s: %(message)s" + logger = logging.getLogger("fedhpob") + handler = logging.StreamHandler() + handler.setFormatter(logging.Formatter(logging_fmt)) + logger.addHandler(handler) + logger.propagate = False + + +_setup_logger() diff --git a/benchmark/FedHPOB/fedhpob/benchmarks/__init__.py b/benchmark/FedHPOB/fedhpob/benchmarks/__init__.py new file mode 100644 index 000000000..d193e7517 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/benchmarks/__init__.py @@ -0,0 +1,5 @@ +from fedhpob.benchmarks.raw_benchmark import RawBenchmark +from fedhpob.benchmarks.tabular_benchmark import TabularBenchmark +from fedhpob.benchmarks.surrogate_benchmark import SurrogateBenchmark + +__all__ = ['RawBenchmark', 'TabularBenchmark', 'SurrogateBenchmark'] diff --git a/benchmark/FedHPOB/fedhpob/benchmarks/base_benchmark.py b/benchmark/FedHPOB/fedhpob/benchmarks/base_benchmark.py new file mode 100644 index 000000000..13fadc153 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/benchmarks/base_benchmark.py @@ -0,0 +1,76 @@ +import abc +import os +import numpy as np +from federatedscope.core.configs.config import global_cfg +from federatedscope.core.auxiliaries.data_builder import get_data +from fedhpob.utils.util import disable_fs_logger +from fedhpob.utils.cost_model import get_cost_model + + +class BaseBenchmark(abc.ABC): + def __init__(self, model, dname, algo, rng=None, **kwargs): + """ + + :param rng: + :param kwargs: + """ + if rng is not None: + self.rng = rng + else: + self.rng = np.random.RandomState() + self.configuration_space = self.get_configuration_space() + self.fidelity_space = self.get_fidelity_space() + + # Load data and modify cfg of FS. + self.cfg = global_cfg.clone() + filepath = os.path.join('scripts', model, f'{dname}.yaml') + self.cfg.merge_from_file(filepath) + self.cfg.data.type = dname + self.data, modified_cfg = get_data(config=self.cfg.clone()) + self.cfg.merge_from_other_cfg(modified_cfg) + disable_fs_logger(self.cfg, True) + + def __call__(self, configuration, fidelity, seed=1, **kwargs): + return self.objective_function(configuration=configuration, + fidelity=fidelity, + seed=seed, + **kwargs) + + def _check(self, configuration, fidelity): + pass + + def _cost(self, configuration, fidelity, **kwargs): + cost_model = get_cost_model(mode=self.cost_mode) + t = cost_model(self.cfg, configuration, fidelity, self.data, **kwargs) + return t + + def _init_fidelity(self, fidelity): + if not fidelity: + fidelity = { + 'sample_client': 1.0, + 'round': self.get_fidelity_space()['round'][-1] // + self.eval_freq + } + elif 'round' not in fidelity: + fidelity['round'] = self.get_fidelity_space( + )['round'][-1] // self.eval_freq + return fidelity + + @abc.abstractmethod + def objective_function(self, configuration, fidelity, seed): + raise NotImplementedError() + + @abc.abstractmethod + def get_configuration_space(self): + raise NotImplementedError() + + @abc.abstractmethod + def get_fidelity_space(self): + raise NotImplementedError() + + @abc.abstractmethod + def get_meta_info(self): + raise NotImplementedError() + + def __repr__(self): + return f'{self.__class__.__name__}({self.get_meta_info()})' diff --git a/benchmark/FedHPOB/fedhpob/benchmarks/raw_benchmark.py b/benchmark/FedHPOB/fedhpob/benchmarks/raw_benchmark.py new file mode 100644 index 000000000..d346adb17 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/benchmarks/raw_benchmark.py @@ -0,0 +1,74 @@ +import datetime +from federatedscope.core.auxiliaries.utils import setup_seed +from federatedscope.core.auxiliaries.worker_builder import get_client_cls, get_server_cls +from federatedscope.core.fed_runner import FedRunner + +from fedhpob.benchmarks.base_benchmark import BaseBenchmark +from fedhpob.utils.util import disable_fs_logger +from fedhpob.utils.cost_model import merge_cfg + + +class RawBenchmark(BaseBenchmark): + def __init__(self, + model, + dname, + algo, + rng=None, + cost_mode='estimated', + **kwargs): + self.model, self.dname, self.algo, self.cost_mode = model, dname, algo, cost_mode + self.device = kwargs['device'] + super(RawBenchmark, self).__init__(model, dname, algo, rng, **kwargs) + + def _run_fl(self, configuration, fidelity, key='val_avg_loss', seed=1): + init_cfg = self.cfg.clone() + disable_fs_logger(init_cfg, True) + setup_seed(seed) + modified_cfg = merge_cfg(init_cfg, configuration, fidelity) + init_cfg.merge_from_other_cfg(modified_cfg) + init_cfg.device = self.device + init_cfg.freeze() + runner = FedRunner(data=self.data, + server_class=get_server_cls(init_cfg), + client_class=get_client_cls(init_cfg), + config=init_cfg.clone()) + results = runner.run() + # so that we could modify cfg in the next trial + init_cfg.defrost() + if 'server_global_eval' in results: + return [results['server_global_eval'][key]] + else: + return [results['client_summarized_weighted_avg'][key]] + + def objective_function(self, + configuration, + fidelity=None, + key='val_avg_loss', + seed=1, + **kwargs): + fidelity = self._init_fidelity(fidelity) + self._check(configuration, fidelity) + start_time = datetime.datetime.now() + function_value = self._run_fl(configuration, fidelity, key, seed)[0] + end_time = datetime.datetime.now() + if self._cost(configuration, fidelity, **kwargs): + cost = self._cost(configuration, fidelity, **kwargs) + else: + # TODO: use time from FS monitor + cost = end_time - start_time + + return {'function_value': function_value, 'cost': cost} + + def get_configuration_space(self): + return [] + + def get_fidelity_space(self): + return [] + + def get_meta_info(self): + return { + 'model': self.model, + 'dname': self.dname, + 'configuration_space': self.configuration_space, + 'fidelity_space': self.fidelity_space + } diff --git a/benchmark/FedHPOB/fedhpob/benchmarks/surrogate_benchmark.py b/benchmark/FedHPOB/fedhpob/benchmarks/surrogate_benchmark.py new file mode 100644 index 000000000..887cdf7a7 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/benchmarks/surrogate_benchmark.py @@ -0,0 +1,68 @@ +from fedhpob.benchmarks.base_benchmark import BaseBenchmark +from fedhpob.utils.surrogate_dataloader import build_surrogate_model, load_surrogate_model + + +class SurrogateBenchmark(BaseBenchmark): + def __init__(self, + model, + dname, + algo, + modeldir=None, + datadir='data/tabular_data/', + rng=None, + cost_mode='estimated', + **kwargs): + self.model, self.dname, self.algo, self.cost_mode = model, dname, algo, cost_mode + assert datadir or modeldir, 'Please provide at least one of `datadir` and `modeldir`.' + if not modeldir: + self.surrogate_models, self.meta_info, self.X, self.Y = build_surrogate_model( + datadir, model, dname, algo) + else: + self.surrogate_models, self.meta_info, self.X, self.Y = load_surrogate_model( + modeldir, model, dname, algo) + super(SurrogateBenchmark, self).__init__(model, dname, algo, rng, + **kwargs) + + def _check(self, configuration, fidelity): + for key in configuration: + assert key in self.configuration_space, 'configuration invalid, check `configuration_space` for help.' + for key in fidelity: + assert key in self.fidelity_space, 'fidelity invalid, check `fidelity_space` for help.' + + def _make_prediction(self, configuration, fidelity, seed): + model = self.surrogate_models[self.rng.randint(seed) % + len(self.surrogate_models)] + x_in = [] + for key in self.configuration_space: + x_in.append(configuration[key]) + for key in self.fidelity_space: + x_in.append(fidelity[key]) + return model.predict([x_in]) + + # noinspection DuplicatedCode + def objective_function(self, + configuration, + fidelity=None, + seed=1, + **kwargs): + fidelity = self._init_fidelity(fidelity) + self._check(configuration, fidelity) + return { + 'function_value': self._make_prediction(configuration, fidelity, + seed), + 'cost': self._cost(configuration, fidelity, **kwargs) + } + + def get_configuration_space(self): + return self.meta_info['configuration_space'] + + def get_fidelity_space(self): + return self.meta_info['fidelity_space'] + + def get_meta_info(self): + return { + 'model': self.model, + 'dname': self.dname, + 'configuration_space': self.configuration_space, + 'fidelity_space': self.fidelity_space + } diff --git a/benchmark/FedHPOB/fedhpob/benchmarks/tabular_benchmark.py b/benchmark/FedHPOB/fedhpob/benchmarks/tabular_benchmark.py new file mode 100644 index 000000000..d3303e1bd --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/benchmarks/tabular_benchmark.py @@ -0,0 +1,91 @@ +import datetime +import numpy as np +from fedhpob.utils.tabular_dataloader import load_data + +from fedhpob.benchmarks.base_benchmark import BaseBenchmark + + +class TabularBenchmark(BaseBenchmark): + def __init__(self, + model, + dname, + algo, + datadir='data/tabular_data/', + rng=None, + cost_mode='estimated', + **kwargs): + self.model, self.dname, self.algo, self.cost_mode = model, dname, algo, cost_mode + self.table, self.meta_info = load_data(datadir, model, dname, algo) + self.eval_freq = self.meta_info['eval_freq'] + super(TabularBenchmark, self).__init__(model, dname, algo, rng, + **kwargs) + + def _check(self, configuration, fidelity): + for key, value in configuration.items(): + assert value in self.configuration_space[ + key], 'configuration invalid, check `configuration_space` for help.' + for key, value in fidelity.items(): + assert value in self.fidelity_space[ + key], 'fidelity invalid, check `fidelity_space` for help.' + + def _search(self, configuration, fidelity): + # For configuration + mask = np.array([True] * self.table.shape[0]) + for col in configuration.keys(): + mask *= (self.table[col].values == configuration[col]) + idx = np.where(mask) + result = self.table.iloc[idx] + + # For fidelity + mask = np.array([True] * result.shape[0]) + for col in fidelity.keys(): + if col == 'round': + continue + mask *= (result[col].values == fidelity[col]) + idx = np.where(mask) + result = result.iloc[idx]["result"] + return result + + def objective_function(self, + configuration, + fidelity, + key='val_acc', + seed=1, + **kwargs): + fidelity = self._init_fidelity(fidelity) + self._check(configuration, fidelity) + result = self._search( + { + 'seed': self.rng.randint(seed) % + len(self.configuration_space['seed']) + 1, + **configuration + }, fidelity) + index = list(result.keys()) + assert len(index) == 1, 'Multiple results.' + filterd_result = eval(result[index[0]]) + assert key in filterd_result.keys( + ), f'`key` should be in {filterd_result.keys()}.' + # Find the best val round. + val_loss = filterd_result['val_avg_loss'] + best_round = np.argmin(val_loss[:fidelity['round'] + 1]) + function_value = filterd_result[key][best_round] + if self._cost(configuration, fidelity, **kwargs): + cost = self._cost(configuration, fidelity, **kwargs) + else: + cost = filterd_result['tol_time'] + + return {'function_value': function_value, 'cost': cost} + + def get_configuration_space(self): + return self.meta_info['configuration_space'] + + def get_fidelity_space(self): + return self.meta_info['fidelity_space'] + + def get_meta_info(self): + return { + 'model': self.model, + 'dname': self.dname, + 'configuration_space': self.configuration_space, + 'fidelity_space': self.fidelity_space + } diff --git a/benchmark/FedHPOB/fedhpob/config.py b/benchmark/FedHPOB/fedhpob/config.py new file mode 100644 index 000000000..abaa62ace --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/config.py @@ -0,0 +1,416 @@ +import ConfigSpace as CS +from yacs.config import CfgNode as CN +from fedhpob.benchmarks import TabularBenchmark +from fedhpob.benchmarks import RawBenchmark +from fedhpob.benchmarks import SurrogateBenchmark + +fhb_cfg = CN() + + +def get_cs(dname, model, mode, alg='avg'): + # raw and surrogate are ONLY FOR NIPS2022 + configuration_space = CS.ConfigurationSpace() + fidelity_space = CS.ConfigurationSpace() + # configuration_space + if dname in ['cora', 'citeseer', 'pubmed']: + # GNN tabular, raw and surrogate + fidelity_space.add_hyperparameter( + CS.CategoricalHyperparameter('round', + choices=[x for x in range(500)])) + fidelity_space.add_hyperparameter( + CS.CategoricalHyperparameter('sample_rate', + choices=[0.2, 0.4, 0.6, 0.8, 1.0])) + if mode == 'tabular': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('lr', + choices=[ + 0.01, 0.01668, 0.02783, + 0.04642, 0.07743, 0.12915, + 0.21544, 0.35938, 0.59948, 1.0 + ])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('wd', + choices=[0.0, 0.001, 0.01, 0.1])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('dropout', choices=[0.0, 0.5])) + if alg == 'avg': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter( + 'step', choices=[1, 2, 3, 4, 5, 6, 7, 8])) + else: + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', choices=[1])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('lrserver', + choices=[0.1, 0.5, 1.0])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('momentumsserver', + choices=[0.0, 0.9])) + elif mode in ['surrogate', 'raw']: + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('lr', + lower=1e-2, + upper=1.0, + log=True)) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('wd', + choices=[0.0, 0.001, 0.01, 0.1])) + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('dropout', lower=.0, upper=.5)) + if alg == 'avg': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter( + 'step', choices=[1, 2, 3, 4, 5, 6, 7, 8])) + else: + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', choices=[1])) + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('lrserver', + lower=1e-1, + upper=1.0, + log=True)) + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('momentumsserver', + lower=0.0, + upper=1.0)) + + elif dname in [ + '10101', '53', '146818', '146821', '9952', '146822', '31', '3917' + ]: + # Openml tabular, raw and surrogate + fidelity_space.add_hyperparameter( + CS.CategoricalHyperparameter('round', + choices=[x for x in range(250)])) + fidelity_space.add_hyperparameter( + CS.CategoricalHyperparameter('sample_rate', + choices=[0.2, 0.4, 0.6, 0.8, 1.0])) + if model == 'lr': + if mode == 'tabular': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter( + 'lr', choices=[0.00001, 0.0001, 0.001, 0.01, 0.1, + 1.0])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter( + 'wd', choices=[0.0, 0.001, 0.01, 0.1])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter( + 'batch', choices=[8, 16, 32, 64, 128, 256])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('dropout', choices=[0.0])) + if alg == 'avg': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', + choices=[1, 2, 3, 4])) + else: + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', choices=[1])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('lrserver', + choices=[0.1, 0.5, 1.0])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('momentumsserver', + choices=[0.0, 0.9])) + elif mode in ['surrogate', 'raw']: + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('lr', + lower=1e-5, + upper=1.0, + log=True)) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter( + 'wd', choices=[0.0, 0.001, 0.01, 0.1])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('dropout', choices=[0.0])) + if alg == 'avg': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter( + 'step', choices=[1, 2, 3, 4, 5, 6, 7, 8])) + else: + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', choices=[1])) + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('lrserver', + lower=1e-1, + upper=1.0, + log=True)) + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('momentumsserver', + lower=0.0, + upper=1.0)) + elif model == 'mlp': + if mode == 'tabular': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter( + 'lr', choices=[0.00001, 0.0001, 0.001, 0.01, 0.1, + 1.0])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter( + 'wd', choices=[0.0, 0.001, 0.01, 0.1])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('batch', + choices=[32, 64, 128, 256])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('dropout', choices=[0.0])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('layer', choices=[2, 3, 4])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('hidden', + choices=[16, 64, 256])) + if alg == 'avg': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', + choices=[1, 2, 3, 4])) + else: + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', choices=[1])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('lrserver', + choices=[0.1, 0.5, 1.0])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('momentumsserver', + choices=[0.0, 0.9])) + elif mode in ['surrogate', 'raw']: + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('lr', + lower=1e-5, + upper=1.0, + log=True)) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter( + 'wd', choices=[0.0, 0.001, 0.01, 0.1])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('dropout', choices=[0.0])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('layer', choices=[2, 3, 4])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('hidden', + choices=[16, 64, 256])) + if alg == 'avg': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', + choices=[1, 2, 3, 4])) + else: + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', choices=[1])) + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('lrserver', + lower=1e-1, + upper=1.0, + log=True)) + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('momentumsserver', + lower=0.0, + upper=1.0)) + elif dname in ['femnist', 'cifar10']: + # CNN tabular and surrogate + fidelity_space.add_hyperparameter( + CS.CategoricalHyperparameter('round', + choices=[x for x in range(250)])) + fidelity_space.add_hyperparameter( + CS.CategoricalHyperparameter('sample_rate', + choices=[0.2, 0.4, 0.6, 0.8, 1.0])) + if mode == 'tabular': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('lr', + choices=[ + 0.01, 0.01668, 0.02783, + 0.04642, 0.07743, 0.12915, + 0.21544, 0.35938, 0.59948, 1.0 + ])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('wd', + choices=[0.0, 0.001, 0.01, 0.1])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('dropout', choices=[0.0, 0.5])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('batch', choices=[16, 32, 64])) + if alg == 'avg': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', choices=[1, 2, 3, 4])) + elif mode in ['surrogate', 'raw']: + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('lr', + lower=1e-2, + upper=1.0, + log=True)) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('wd', + choices=[0.0, 0.001, 0.01, 0.1])) + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('dropout', lower=.0, upper=.5)) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('batch', choices=[16, 32, 64])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', choices=[1, 2, 3, 4])) + if alg == 'avg': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', choices=[1, 2, 3, 4])) + elif dname in ['sst2', 'cola']: + # Transformer tabular and surrogate + fidelity_space.add_hyperparameter( + CS.CategoricalHyperparameter('round', + choices=[x for x in range(40)])) + fidelity_space.add_hyperparameter( + CS.CategoricalHyperparameter('sample_rate', + choices=[0.2, 0.4, 0.6, 0.8, 1.0])) + if mode == 'tabular': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('lr', + choices=[ + 0.01, 0.01668, 0.02783, + 0.04642, 0.07743, 0.12915, + 0.21544, 0.35938, 0.59948, 1.0 + ])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('wd', + choices=[0.0, 0.001, 0.01, 0.1])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('dropout', choices=[0.0, 0.5])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('batch', + choices=[8, 16, 32, 64, 128])) + if alg == 'avg': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', choices=[1, 2, 3, 4])) + else: + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', choices=[1])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('lrserver', + choices=[0.1, 0.5, 1.0])) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('momentumsserver', + choices=[0.0, 0.9])) + elif mode in ['surrogate', 'raw']: + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('lr', + lower=1e-2, + upper=1.0, + log=True)) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('wd', + choices=[0.0, 0.001, 0.01, 0.1])) + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('dropout', lower=.0, upper=.5)) + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', + choices=[1, 2, 3, 4, 5, 6, 7, 8])) + if alg == 'avg': + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter( + 'step', choices=[1, 2, 3, 4, 5, 6, 7, 8])) + else: + configuration_space.add_hyperparameter( + CS.CategoricalHyperparameter('step', choices=[1])) + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('lrserver', + lower=1e-1, + upper=1.0, + log=True)) + configuration_space.add_hyperparameter( + CS.UniformFloatHyperparameter('momentumsserver', + lower=0.0, + upper=1.0)) + return configuration_space, fidelity_space + + +def initial_cfg(cfg): + # ------------------------------------------------------------------------ # + # benchmark related options + # ------------------------------------------------------------------------ # + cfg.benchmark = CN() + cfg.benchmark.cls = [{ + 'raw': RawBenchmark, + 'tabular': TabularBenchmark, + 'surrogate': SurrogateBenchmark + }] + + # ************************************************************************ # + cfg.benchmark.type = 'raw' + cfg.benchmark.model = 'gcn' + cfg.benchmark.data = 'cora' + cfg.benchmark.device = 0 + cfg.benchmark.sample_client = 1.0 # only for optimizer + cfg.benchmark.algo = 'avg' # ['avg', 'opt'] + cfg.benchmark.out_dir = 'exp_results' + # ************************************************************************ # + + # ------------------------------------------------------------------------ # + # cost related options + # ------------------------------------------------------------------------ # + cfg.cost = CN() + cfg.cost.type = 'estimated' # in ['raw', 'estimated'] + cfg.cost.c = 1 # lambda for exponential distribution, time consumed in client + cfg.cost.time_server = 0 # time consumed in server, `0` for real time + + # bandwidth for estimated cost + cfg.cost.bandwidth = CN() + cfg.cost.bandwidth.client_up = 0.25 * 1024 * 1024 * 8 / 32 + cfg.cost.bandwidth.client_down = 0.75 * 1024 * 1024 * 8 / 32 + cfg.cost.bandwidth.server_up = 0.25 * 1024 * 1024 * 8 / 32 + cfg.cost.bandwidth.server_down = 0.75 * 1024 * 1024 * 8 / 32 + + # ------------------------------------------------------------------------ # + # optimizer related options + # ------------------------------------------------------------------------ # + cfg.optimizer = CN() + cfg.optimizer.type = 'de' + cfg.optimizer.min_budget = 1 + cfg.optimizer.max_budget = 243 + cfg.optimizer.n_iterations = 100000000 # No limits + cfg.optimizer.seed = 1 + cfg.optimizer.limit_time = 86400 # one day + + # ------------------------------------------------------------------------ # + # hpbandster related options (rs, bo_kde, hb, bohb) + # ------------------------------------------------------------------------ # + cfg.optimizer.hpbandster = CN() + cfg.optimizer.hpbandster.eta = 3 + cfg.optimizer.hpbandster.max_stages = 5 + + # ------------------------------------------------------------------------ # + # smac related options (bo_gp, bo_rf) + # ------------------------------------------------------------------------ # + cfg.optimizer.smac = CN() + + # ------------------------------------------------------------------------ # + # dehb related options (dehb, de) + # ------------------------------------------------------------------------ # + cfg.optimizer.dehb = CN() + cfg.optimizer.dehb.strategy = 'rand1_bin' + cfg.optimizer.dehb.mutation_factor = 0.5 + cfg.optimizer.dehb.crossover_prob = 0.5 + + # dehb.dehb + cfg.optimizer.dehb.dehb = CN() + cfg.optimizer.dehb.dehb.gens = 1 + cfg.optimizer.dehb.dehb.eta = 3 + cfg.optimizer.dehb.dehb.async_strategy = 'immediate' + + # dehb.de + cfg.optimizer.dehb.de = CN() + cfg.optimizer.dehb.de.pop_size = 20 + + # ------------------------------------------------------------------------ # + # optuna related options (tpe_md, tpe_hb) + # ------------------------------------------------------------------------ # + cfg.optimizer.optuna = CN() + cfg.optimizer.optuna.reduction_factor = 3 + + +def add_configs(cfg): + # ------------------------------------------------------------------------ # + # HPO search space related options, which is fixed when mode is `raw` + # ------------------------------------------------------------------------ # + configuration_space, fidelity_space = get_cs(cfg.benchmark.data, + cfg.benchmark.model, + cfg.benchmark.type, + cfg.benchmark.algo) + + cfg.benchmark.configuration_space = [configuration_space + ] # avoid invalid type + cfg.benchmark.fidelity_space = [fidelity_space] # avoid invalid type + + +initial_cfg(fhb_cfg) diff --git a/benchmark/FedHPOB/fedhpob/optimizers/__init__.py b/benchmark/FedHPOB/fedhpob/optimizers/__init__.py new file mode 100644 index 000000000..663d31b55 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/optimizers/__init__.py @@ -0,0 +1,6 @@ +from fedhpob.optimizers.dehb_optimizer import run_dehb +from fedhpob.optimizers.hpbandster_optimizer import run_hpbandster +from fedhpob.optimizers.optuna_optimizer import run_optuna +from fedhpob.optimizers.smac_optimizer import run_smac + +__all__ = ['run_dehb', 'run_hpbandster', 'run_optuna', 'run_smac'] \ No newline at end of file diff --git a/benchmark/FedHPOB/fedhpob/optimizers/dehb_optimizer.py b/benchmark/FedHPOB/fedhpob/optimizers/dehb_optimizer.py new file mode 100644 index 000000000..67805e5b7 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/optimizers/dehb_optimizer.py @@ -0,0 +1,100 @@ +""" +https://github.com/automl/DEHB/blob/master/examples/00_interfacing_DEHB.ipynb +How to use the DEHB Optimizer +1) Download the Source Code +git clone https://github.com/automl/DEHB.git +# We are currently using the first version of it. +cd DEHB +git checkout b8dcba7b38bf6e7fc8ce3e84ea567b66132e0eb5 +2) Add the project to your Python Path +export PYTHONPATH=~/DEHB:$PYTHONPATH +3) Requirements +- dask distributed: +``` +conda install dask distributed -c conda-forge +``` +OR +``` +python -m pip install dask distributed --upgrade +``` +- Other things to install: +``` +pip install numpy, ConfigSpace +``` +""" + +import time +import random +import logging +from dehb.optimizers import DE, DEHB +from fedhpob.config import fhb_cfg +from fedhpob.utils.monitor import Monitor + +logging.basicConfig(level=logging.WARNING) + + +def run_dehb(cfg): + def objective(config, budget=None): + if cfg.optimizer.type == 'de': + budget = cfg.optimizer.max_budget + main_fidelity = { + 'round': int(budget), + 'sample_client': cfg.benchmark.sample_client + } + t_start = time.time() + res = benchmark(config, + main_fidelity, + seed=random.randint(1, 99), + key='val_avg_loss', + fhb_cfg=cfg) + monitor(res=res, sim_time=time.time() - t_start, budget=budget) + fitness, cost = res['function_value'], res['cost'] + return fitness, cost + + monitor = Monitor(cfg) + benchmark = cfg.benchmark.cls[0][cfg.benchmark.type]( + cfg.benchmark.model, + cfg.benchmark.data, + cfg.benchmark.algo, + device=cfg.benchmark.device) + if cfg.optimizer.type == 'de': + optimizer = DE( + cs=cfg.benchmark.configuration_space[0], + dimensions=len( + cfg.benchmark.configuration_space[0].get_hyperparameters()), + f=objective, + pop_size=cfg.optimizer.dehb.de.pop_size, + mutation_factor=cfg.optimizer.dehb.mutation_factor, + crossover_prob=cfg.optimizer.dehb.crossover_prob, + strategy=cfg.optimizer.dehb.strategy) + traj, runtime, history = optimizer.run( + generations=cfg.optimizer.n_iterations, verbose=False) + elif cfg.optimizer.type == 'dehb': + optimizer = DEHB( + cs=cfg.benchmark.configuration_space[0], + dimensions=len( + cfg.benchmark.configuration_space[0].get_hyperparameters()), + f=objective, + strategy=cfg.optimizer.dehb.strategy, + mutation_factor=cfg.optimizer.dehb.mutation_factor, + crossover_prob=cfg.optimizer.dehb.crossover_prob, + eta=cfg.optimizer.dehb.dehb.eta, + min_budget=cfg.optimizer.min_budget, + max_budget=cfg.optimizer.max_budget, + generations=cfg.optimizer.dehb.dehb.gens, + n_workers=1) + traj, runtime, history = optimizer.run( + iterations=cfg.optimizer.n_iterations, verbose=False) + else: + raise NotImplementedError + + return monitor.history_results + + +if __name__ == "__main__": + # Please specific args for the experiment. + results = [] + for opt_name in ['de', 'dehb']: + fhb_cfg.optimizer.type = opt_name + results.append(run_dehb(fhb_cfg)) + print(results) diff --git a/benchmark/FedHPOB/fedhpob/optimizers/hpbandster_optimizer.py b/benchmark/FedHPOB/fedhpob/optimizers/hpbandster_optimizer.py new file mode 100644 index 000000000..30d2f9fd2 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/optimizers/hpbandster_optimizer.py @@ -0,0 +1,120 @@ +# Implement RS, BO_KDE, HB, BOHB in `hpbandster`. + +import time +import random +import logging +import hpbandster.core.nameserver as hpns +from hpbandster.core.worker import Worker +from hpbandster.optimizers import BOHB, HyperBand, RandomSearch + +from fedhpob.config import fhb_cfg +from fedhpob.utils.monitor import Monitor + +logging.basicConfig(level=logging.WARNING) + + +class MyWorker(Worker): + def __init__(self, + benchmark, + monitor, + sleep_interval=0, + cfg=None, + **kwargs): + super(MyWorker, self).__init__(**kwargs) + self.benchmark = benchmark + self.monitor = monitor + self.sleep_interval = sleep_interval + self.cfg = cfg + + def compute(self, config, budget, **kwargs): + """ + Simple example for a compute function + The loss is just a the config + some noise (that decreases with the budget) + For dramatization, the function can sleep for a given interval to emphasizes + the speed ups achievable with parallel workers. + Args: + config: dictionary containing the sampled configurations by the optimizer + budget: (float) amount of time/epochs/etc. the model can use to train + Returns: + dictionary with mandatory fields: + 'loss' (scalar) + 'info' (dict) + """ + main_fidelity = { + 'round': int(budget), + 'sample_client': self.cfg.benchmark.sample_client + } + t_start = time.time() + res = self.benchmark(config, + main_fidelity, + seed=random.randint(1, 99), + key='val_avg_loss', + fhb_cfg=self.cfg) + time.sleep(self.sleep_interval) + self.monitor(res=res, sim_time=time.time() - t_start, budget=budget) + return ({ + 'loss': float(res['function_value'] + ), # this is a mandatory field to run hyperband + 'info': res # can be used for any user-defined information - also mandatory + }) + + +def run_hpbandster(cfg): + if cfg.optimizer.type == 'bo_kde': + cfg.optimizer.min_budget = cfg.optimizer.max_budget + monitor = Monitor(cfg) + NS = hpns.NameServer(run_id=cfg.optimizer.type, host='127.0.0.1') + NS.start() + cfg = cfg.clone() + benchmark = cfg.benchmark.cls[0][cfg.benchmark.type]( + cfg.benchmark.model, + cfg.benchmark.data, + cfg.benchmark.algo, + device=cfg.benchmark.device) + w = MyWorker(benchmark=benchmark, + monitor=monitor, + sleep_interval=0, + cfg=cfg, + nameserver='127.0.0.1', + run_id=cfg.optimizer.type) + w.run(background=True) + + # Allow at most max_stages stages + tmp = cfg.optimizer.max_budget + for i in range(cfg.optimizer.hpbandster.max_stages): + tmp /= cfg.optimizer.hpbandster.eta + if tmp > cfg.optimizer.min_budget: + cfg.optimizer.min_budget = tmp + + opt_kwargs = { + 'configspace': cfg.benchmark.configuration_space[0], + 'run_id': cfg.optimizer.type, + 'nameserver': '127.0.0.1', + 'eta': cfg.optimizer.hpbandster.eta, + 'min_budget': cfg.optimizer.min_budget, + 'max_budget': cfg.optimizer.max_budget + } + if cfg.optimizer.type == 'rs': + optimizer = RandomSearch(**opt_kwargs) + elif cfg.optimizer.type == 'bo_kde': + optimizer = BOHB(**opt_kwargs) + elif cfg.optimizer.type == 'hb': + optimizer = HyperBand(**opt_kwargs) + elif cfg.optimizer.type == 'bohb': + optimizer = BOHB(**opt_kwargs) + else: + raise NotImplementedError + res = optimizer.run(n_iterations=cfg.optimizer.n_iterations) + + optimizer.shutdown(shutdown_workers=True) + NS.shutdown() + all_runs = res.get_all_runs() + return [x.info for x in all_runs] + + +if __name__ == "__main__": + results = [] + for opt_name in ['rs', 'bo_kde', 'hb', 'bohb']: + fhb_cfg.optimizer.type = opt_name + results.append(run_hpbandster(fhb_cfg)) + print(results) diff --git a/benchmark/FedHPOB/fedhpob/optimizers/optuna_optimizer.py b/benchmark/FedHPOB/fedhpob/optimizers/optuna_optimizer.py new file mode 100644 index 000000000..aa8159e16 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/optimizers/optuna_optimizer.py @@ -0,0 +1,142 @@ +# Implement TPE_MD, TPE_HB in `optuna`. from https://raw.githubusercontent.com/automl/HPOBenchExperimentUtils/master +# /HPOBenchExperimentUtils/optimizer/optuna_optimizer.py + +import ConfigSpace as CS +import numpy as np +import time +import random +import optuna +import logging +from functools import partial +from optuna.pruners import HyperbandPruner, MedianPruner +from optuna.samplers import TPESampler +from optuna.trial import Trial + +from fedhpob.config import fhb_cfg +from fedhpob.utils.monitor import Monitor + +logging.basicConfig(level=logging.WARNING) + + +def precompute_sh_iters(min_budget, max_budget, eta): + max_SH_iter = -int(np.log(min_budget / max_budget) / np.log(eta)) + 1 + return max_SH_iter + + +def precompute_budgets(max_budget, eta, max_SH_iter): + s0 = -np.linspace(start=max_SH_iter - 1, stop=0, num=max_SH_iter) + budgets = max_budget * np.power(eta, s0) + return budgets + + +def sample_config_from_optuna(trial: Trial, cs: CS.ConfigurationSpace): + config = {} + for hp_name in cs: + hp = cs.get_hyperparameter(hp_name) + + if isinstance(hp, CS.UniformFloatHyperparameter): + value = float( + trial.suggest_float(name=hp_name, + low=hp.lower, + high=hp.upper, + log=hp.log)) + + elif isinstance(hp, CS.UniformIntegerHyperparameter): + value = int( + trial.suggest_int(name=hp_name, + low=hp.lower, + high=hp.upper, + log=hp.log)) + + elif isinstance(hp, CS.CategoricalHyperparameter): + hp_type = type(hp.default_value) + value = hp_type( + trial.suggest_categorical(name=hp_name, choices=hp.choices)) + + elif isinstance(hp, CS.OrdinalHyperparameter): + num_vars = len(hp.sequence) + index = trial.suggest_int(hp_name, + low=0, + high=num_vars - 1, + log=False) + hp_type = type(hp.default_value) + value = hp.sequence[index] + value = hp_type(value) + + else: + raise ValueError( + f'Please implement the support for hps of type {type(hp)}') + + config[hp.name] = value + return config + + +def run_optuna(cfg): + def objective(trial, benchmark, valid_budgets, configspace): + config = sample_config_from_optuna(trial, configspace) + res = None + for budget in valid_budgets: + main_fidelity = { + 'round': int(budget), + 'sample_client': cfg.benchmark.sample_client + } + t_start = time.time() + res = benchmark(config, + main_fidelity, + seed=random.randint(1, 99), + key='val_avg_loss', + fhb_cfg=cfg) + monitor(res=res, sim_time=time.time() - t_start, budget=budget) + trial.report(res['function_value'], step=budget) + + if trial.should_prune(): + raise optuna.TrialPruned() + + assert res is not None + return res['function_value'] + + monitor = Monitor(cfg) + benchmark = cfg.benchmark.cls[0][cfg.benchmark.type]( + cfg.benchmark.model, + cfg.benchmark.data, + cfg.benchmark.algo, + device=cfg.benchmark.device) + sampler = TPESampler(seed=cfg.optimizer.seed) + study = optuna.create_study(direction='minimize', sampler=sampler) + if cfg.optimizer.type == 'tpe_md': + pruner = MedianPruner() + sh_iters = precompute_sh_iters(cfg.optimizer.min_budget, + cfg.optimizer.max_budget, + cfg.optimizer.optuna.reduction_factor) + valid_budgets = precompute_budgets( + cfg.optimizer.max_budget, cfg.optimizer.optuna.reduction_factor, + sh_iters) + elif cfg.optimizer.type == 'tpe_hb': + pruner = HyperbandPruner( + min_resource=cfg.optimizer.min_budget, + max_resource=cfg.optimizer.max_budget, + reduction_factor=cfg.optimizer.optuna.reduction_factor) + pruner._try_initialization(study=None) + valid_budgets = [ + cfg.optimizer.min_budget * cfg.optimizer.optuna.reduction_factor**i + for i in range(pruner._n_brackets) + ] + else: + raise NotImplementedError + + study.optimize(func=partial( + objective, + benchmark=benchmark, + valid_budgets=valid_budgets, + configspace=cfg.benchmark.configuration_space[0]), + timeout=None, + n_trials=cfg.optimizer.n_iterations) + return monitor.history_results + + +if __name__ == "__main__": + results = [] + for opt_name in ['tpe_md', 'tpe_hb']: + fhb_cfg.optimizer.type = opt_name + results.append(run_optuna(fhb_cfg)) + print(results) diff --git a/benchmark/FedHPOB/fedhpob/optimizers/smac_optimizer.py b/benchmark/FedHPOB/fedhpob/optimizers/smac_optimizer.py new file mode 100644 index 000000000..171bebdc9 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/optimizers/smac_optimizer.py @@ -0,0 +1,72 @@ +# Implement BO_GP, BO_RF in `smac`. + +import time +import random +import logging +from smac.facade.smac_bb_facade import SMAC4BB +from smac.facade.smac_hpo_facade import SMAC4HPO +from smac.scenario.scenario import Scenario + +from fedhpob.config import fhb_cfg +from fedhpob.utils.monitor import Monitor + +logging.basicConfig(level=logging.WARNING) + + +def run_smac(cfg): + def optimization_function_wrapper(config): + """ Helper-function: simple wrapper to use the benchmark with smac""" + budget = int(cfg.optimizer.max_budget) + main_fidelity = { + 'round': budget, + 'sample_client': cfg.benchmark.sample_client + } + t_start = time.time() + res = benchmark(config, + main_fidelity, + seed=random.randint(1, 99), + key='val_avg_loss', + fhb_cfg=cfg) + monitor(res=res, sim_time=time.time() - t_start, budget=budget) + return res['function_value'] + + monitor = Monitor(cfg) + benchmark = cfg.benchmark.cls[0][cfg.benchmark.type]( + cfg.benchmark.model, + cfg.benchmark.data, + cfg.benchmark.algo, + device=cfg.benchmark.device) + + scenario = Scenario({ + "run_obj": "quality", # Optimize quality (alternatively runtime) + "runcount-limit": cfg.optimizer. + n_iterations, # Max number of function evaluations + "cs": cfg.benchmark.configuration_space[0], + "output_dir": cfg.benchmark.type, + "deterministic": "true", + "limit_resources": False + }) + if cfg.optimizer.type == 'bo_gp': + smac = SMAC4BB(model_type='gp', + scenario=scenario, + tae_runner=optimization_function_wrapper) + elif cfg.optimizer.type == 'bo_rf': + smac = SMAC4HPO(scenario=scenario, + tae_runner=optimization_function_wrapper) + else: + raise NotImplementedError + + try: + incumbent = smac.optimize() + finally: + incumbent = smac.solver.incumbent + + return monitor.history_results + + +if __name__ == "__main__": + results = [] + for opt_name in ['bo_gp', 'bo_rf']: + fhb_cfg.optimizer.type = opt_name + results.append(run_smac(fhb_cfg)) + print(results) diff --git a/benchmark/FedHPOB/fedhpob/utils/__init__.py b/benchmark/FedHPOB/fedhpob/utils/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/benchmark/FedHPOB/fedhpob/utils/cost_model.py b/benchmark/FedHPOB/fedhpob/utils/cost_model.py new file mode 100644 index 000000000..3b380bd64 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/utils/cost_model.py @@ -0,0 +1,88 @@ +from federatedscope.core.auxiliaries.model_builder import get_model + + +def merge_cfg(cfg, configuration, fidelity): + init_cfg = cfg.clone() + # Configuration related + if 'lr' in configuration: + init_cfg.optimizer.lr = configuration['lr'] + if 'wd' in configuration: + init_cfg.optimizer.weight_decay = configuration['wd'] + if 'dropout' in configuration: + init_cfg.model.dropout = configuration['dropout'] + if 'batch' in configuration: + init_cfg.data.batch_size = configuration['batch'] + if 'layer' in configuration: + init_cfg.model.layer = configuration['layer'] + if 'hidden' in configuration: + init_cfg.model.hidden = configuration['hidden'] + if 'step' in configuration: + init_cfg.federate.local_update_steps = int(configuration['step']) + # FedOPT related + if 'momentumsserver' in configuration: + init_cfg.fedopt.momentum_server = configuration['momentumsserver'] + if 'lrserver' in configuration: + init_cfg.fedopt.lr_server = configuration['lrserver'] + # Fidelity related + if 'sample_client' in fidelity: + init_cfg.federate.sample_client_rate = fidelity['sample_client'] + if 'round' in fidelity: + init_cfg.federate.total_round_num = fidelity['round'] + return init_cfg + + +def get_cost_model(mode='estimated'): + r""" + This function returns a function of cost model. + + :param key: name of cost model. + :return: the function of cost model + """ + cost_dict = { + 'raw': raw_cost, + 'estimated': estimated_cost, + } + return cost_dict[mode] + + +def communication_cost(cfg, model_size, fhb_cfg): + t_up = model_size / fhb_cfg.cost.bandwidth.client_up + t_down = max( + cfg.federate.client_num * cfg.federate.sample_client_rate * + model_size / fhb_cfg.cost.bandwidth.server_up, + model_size / fhb_cfg.cost.bandwidth.client_down) + return t_up + t_down + + +def computation_cost(cfg, fhb_cfg): + """ + Assume the time is exponential distribution with c, + return the expected maximum of M iid random variables plus server time. + """ + t_client = sum([ + 1.0 / i for i in range( + 1, + int(cfg.federate.client_num * cfg.federate.sample_client_rate) + 1) + ]) / fhb_cfg.cost.c + return t_client + fhb_cfg.cost.time_server + + +def raw_cost(**kwargs): + return None + + +def estimated_cost(cfg, configuration, fidelity, data, **kwargs): + """ + Works on raw, tabular and surrogate mode. + """ + def get_info(cfg, configuration, fidelity, data): + cfg = merge_cfg(cfg, configuration, fidelity) + model = get_model(cfg.model, list(data.values())[0]) + model_size = sum([param.nelement() for param in model.parameters()]) + return cfg, model_size + + cfg, num_param = get_info(cfg, configuration, fidelity, data) + t_comm = communication_cost(cfg, num_param, kwargs['fhb_cfg']) + t_comp = computation_cost(cfg, kwargs['fhb_cfg']) + t_round = t_comm + t_comp + return t_round * cfg.federate.total_round_num diff --git a/benchmark/FedHPOB/fedhpob/utils/draw.py b/benchmark/FedHPOB/fedhpob/utils/draw.py new file mode 100644 index 000000000..feed440ae --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/utils/draw.py @@ -0,0 +1,91 @@ +import os +import json +import numpy as np +import matplotlib.pyplot as plt +from tqdm import tqdm + +FONTSIZE = 40 +MARKSIZE = 25 + + +def logloader(file): + log = [] + with open(file) as f: + file = f.readlines() + for line in file: + line = json.loads(s=line) + log.append(line) + return log + + +def ecdf(model, data_list, sample_client=None, key='test_acc'): + import datetime + from fedhpob.benchmarks import TabularBenchmark + + # Draw ECDF from target data_list + plt.figure(figsize=(10, 7.5)) + plt.xticks(fontsize=FONTSIZE) + plt.yticks(fontsize=FONTSIZE) + + plt.xlabel('Normalized regret', size=FONTSIZE) + plt.ylabel('P(X <= x)', size=FONTSIZE) + + # Get target data (tabular only) + for data in data_list: + benchmark = TabularBenchmark(model, data, device=-1) + target = [0] # Init with zero + for idx in tqdm(range(len(benchmark.table))): + row = benchmark.table.iloc[idx] + if sample_client is not None and row[ + 'sample_client'] != sample_client: + continue + result = eval(row['result']) + val_loss = result['val_avg_loss'] + best_round = np.argmin(val_loss) + target.append(result[key][best_round]) + norm_regret = np.sort(1 - (np.array(target) / np.max(target))) + y = np.arange(len(norm_regret)) / float(len(norm_regret) - 1) + plt.plot(norm_regret, y) + plt.legend(data_list, fontsize=23, loc='lower right') + plt.savefig(f'{model}_{sample_client}_cdf.pdf', bbox_inches='tight') + plt.close() + + return target + + +def rank_over_time(root): + # Please place these logs to one dir + target_opt = [ + 'rs', 'bo_gp', 'bo_rf', 'bo_kde', 'de', 'hb', 'bohb', 'dehb', 'tpe_md', + 'tpe_hb' + ] + files = os.listdir(root) + logs = [] + for opt in target_opt: + for file in files: + if file.startswith(opt): + logs.append(logloader(file)) + break + + # Draw over time + plt.figure(figsize=(10, 7.5)) + plt.xticks(fontsize=FONTSIZE) + plt.yticks(fontsize=FONTSIZE) + + plt.xlabel('Fraction of budget', size=FONTSIZE) + plt.ylabel('Mean rank', size=FONTSIZE) + + for data in logs: + tol_time = data[-1]['Consumed'] + frac_budget = np.array([i['Consumed'] / tol_time for i in data]) + # TODO: sort by rank + loss = np.array([i['best_value'] for i in data]) + plt.plot(frac_budget, loss, linewidth=1, markersize=MARKSIZE) + plt.legend(target_opt, fontsize=23, loc='lower right') + plt.savefig(f'{root}_rank_over_time.pdf', bbox_inches='tight') + # plt.show() + plt.close() + + +if __name__ == '__main__': + ecdf('gcn', ['cora', 'citeseer', 'pubmed'], sample_client=None) diff --git a/benchmark/FedHPOB/fedhpob/utils/monitor.py b/benchmark/FedHPOB/fedhpob/utils/monitor.py new file mode 100644 index 000000000..26539cbf0 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/utils/monitor.py @@ -0,0 +1,53 @@ +import os +import time +import json +import logging + +import numpy as np + +from fedhpob.utils.util import cfg2name + +logging.basicConfig(level=logging.WARNING) + + +class Monitor(object): + def __init__(self, cfg): + self.limit_time = cfg.optimizer.limit_time + self.last_timestamp = time.time() + self.best_value = np.inf + self.consumed_time, self.budget, self.cnt = 0, 0, 0 + self.logs = [] + self.cfg = cfg + + def __call__(self, res, sim_time=0, *args, **kwargs): + self._check_and_log(res['cost']) + # minus the time consumed in simulation and plus estimated time. + self.consumed_time += (time.time() - self.last_timestamp - sim_time + + res['cost']) + self.cnt += 1 + if res['function_value'] < self.best_value or kwargs[ + 'budget'] > self.budget: + self.budget = kwargs['budget'] + self.best_value = res['function_value'] + self.logs.append({ + 'Try': self.cnt, + "Consumed": self.consumed_time, + 'best_value': self.best_value, + 'cur_results': res + }) + logging.warning( + f'Try: {self.cnt}, Consumed: {self.consumed_time}, best_value: {self.best_value}, cur_results: {res}' + ) + self.last_timestamp = time.time() + + def _check_and_log(self, cost): + if self.consumed_time + cost > self.limit_time: + # TODO: record time and cost + logging.warning( + f'Time has been consumed, no time for next try (cost: {cost})!' + ) + out_file = cfg2name(self.cfg) + with open(out_file, 'w') as f: + for line in self.logs: + f.write(json.dumps(line) + "\n") + os._exit(1) \ No newline at end of file diff --git a/benchmark/FedHPOB/fedhpob/utils/runner.py b/benchmark/FedHPOB/fedhpob/utils/runner.py new file mode 100644 index 000000000..6ed62ab01 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/utils/runner.py @@ -0,0 +1,30 @@ +from federatedscope.core.cmd_args import parse_args +from fedhpob.config import fhb_cfg, add_configs +from fedhpob.optimizers import run_dehb, run_hpbandster, run_optuna, run_smac + + +def run(cfg): + if cfg.optimizer.type in ['de', 'dehb']: + results = run_dehb(cfg) + elif cfg.optimizer.type in ['rs', 'bo_kde', 'hb', 'bohb']: + results = run_hpbandster(cfg) + elif cfg.optimizer.type in ['tpe_md', 'tpe_hb']: + results = run_optuna(cfg) + elif cfg.optimizer.type in ['bo_gp', 'bo_rf']: + results = run_smac(cfg) + else: + raise NotImplementedError + return results + + +def main(): + init_cfg = fhb_cfg.clone() + args = parse_args() + init_cfg.merge_from_file(args.cfg_file) + init_cfg.merge_from_list(args.opts) + add_configs(init_cfg) + run(cfg=init_cfg) + + +if __name__ == '__main__': + main() diff --git a/benchmark/FedHPOB/fedhpob/utils/surrogate_dataloader.py b/benchmark/FedHPOB/fedhpob/utils/surrogate_dataloader.py new file mode 100644 index 000000000..be8eff614 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/utils/surrogate_dataloader.py @@ -0,0 +1,131 @@ +import datetime +import numpy as np +import os +import pickle + +from sklearn.ensemble import RandomForestRegressor +from sklearn.model_selection import cross_validate as sk_cross_validate +from tqdm import tqdm + +from fedhpob.utils.tabular_dataloader import load_data + + +def sampling(X, Y, over_rate=1, down_rate=1.0, cvg_score=0.5): + rel_score = Y + over_X = np.repeat(X[rel_score > cvg_score], over_rate, axis=0) + over_Y = np.repeat(Y[rel_score > cvg_score], over_rate, axis=0) + + mask = np.random.choice(X[rel_score <= cvg_score].shape[0], + size=int(X[rel_score <= cvg_score].shape[0] * + down_rate), + replace=False) + down_X = np.array(X[rel_score <= cvg_score])[mask] + down_Y = np.array(Y[rel_score <= cvg_score])[mask] + return np.concatenate([over_X, down_X], + axis=0), np.concatenate([over_Y, down_Y], axis=0) + + +def load_surrogate_model(modeldir, model, dname, algo): + model_list = [] + path = os.path.join(modeldir, model, dname, algo) + file_names = os.listdir(path) + for fname in file_names: + if not fname.startswith('surrogate_model'): + continue + with open(os.path.join(path, fname), 'rb') as f: + model_state = f.read() + model = pickle.loads(model_state) + model_list.append(model) + + infofile = os.path.join(path, 'info.pkl') + with open(infofile, 'rb') as f: + info = pickle.loads(f.read()) + + # TODO: remove X and Y + X = np.load(os.path.join(path, 'X.npy')) + Y = np.load(os.path.join(path, 'Y.npy')) + + return model_list, info, X, Y + + +def build_surrogate_model(datadir, model, dname, algo, key='val_acc'): + r""" + from TabularBenchmark to SurrogateBenchmark data format + """ + table, meta_info = load_data(datadir, model, dname, algo) + savedir = os.path.join('data/surrogate_model', model, dname, algo) + os.makedirs(savedir, exist_ok=True) + # Build data to train the surrogate_model + X, Y = [], [] + fidelity_space = sorted(['sample_client', 'round']) + configuration_space = sorted( + list(set(table.keys()) - {'result', 'seed'} - set(fidelity_space))) + + if not os.path.exists(os.path.join(savedir, + 'X.npy')) or not os.path.exists( + os.path.join(savedir, 'Y.npy')): + print('Building data mat...') + for idx in tqdm(range(len(table))): + row = table.iloc[idx] + x = [row[col] + for col in configuration_space] + [row['sample_client']] + result = eval(row['result']) + val_loss = result['val_avg_loss'] + for rnd in range(len(val_loss)): + X.append(x + [rnd * meta_info['eval_freq']]) + best_round = np.argmin(val_loss[:rnd + 1]) + Y.append(result[key][best_round]) + X, Y = np.array(X), np.array(Y) + np.save(os.path.join(savedir, 'X.npy'), X) + np.save(os.path.join(savedir, 'Y.npy'), Y) + else: + print('Loading cache...') + X = np.load(os.path.join(savedir, 'X.npy')) + Y = np.load(os.path.join(savedir, 'Y.npy')) + + new_X, new_Y = sampling(X, Y, over_rate=1, down_rate=1) + + perm = np.random.permutation(np.arange(len(new_Y))) + new_X, new_Y = new_X[perm], new_Y[perm] + + best_res = -np.inf + # Ten-fold validation to get ten surrogate_model + for n_estimators in [10, 20]: + for max_depth in [10, 15, 20]: + regr = RandomForestRegressor(n_estimators=n_estimators, + max_depth=max_depth) + # dict_keys(['fit_time', 'score_time', 'estimator', 'test_score', 'train_score']) + res = sk_cross_validate(regr, + new_X, + new_Y, + cv=10, + n_jobs=-1, + scoring='neg_mean_absolute_error', + return_estimator=True, + return_train_score=True) + test_metric = np.mean(res['test_score']) + train_metric = np.mean(res['train_score']) + print( + f'n_estimators: {n_estimators}, max_depth: {max_depth}, train_metric: {train_metric}, test_metric: {test_metric}' + ) + if test_metric > best_res: + best_res = test_metric + best_models = res['estimator'] + + # Save model + for i, rf in enumerate(best_models): + file_name = f'surrogate_model_{i}.pkl' + model_state = pickle.dumps(rf) + with open(os.path.join(savedir, file_name), 'wb') as f: + f.write(model_state) + + # Save info + info = { + 'configuration_space': configuration_space, + 'fidelity_space': fidelity_space + } + pkl = pickle.dumps(info) + with open(os.path.join(savedir, 'info.pkl'), 'wb') as f: + f.write(pkl) + + return best_models, info, X, Y diff --git a/benchmark/FedHPOB/fedhpob/utils/tabular_dataloader.py b/benchmark/FedHPOB/fedhpob/utils/tabular_dataloader.py new file mode 100644 index 000000000..26d288ba8 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/utils/tabular_dataloader.py @@ -0,0 +1,165 @@ +import os +import pickle +import re +from datetime import * + +import numpy as np +import pandas as pd +from tqdm import tqdm + + +def load_data(root, model, dname, algo): + path = os.path.join(root, model, dname, algo) + datafile = os.path.join(path, 'tabular.csv.gz') + infofile = os.path.join(path, 'info.pkl') + + if not os.path.exists(datafile): + df = logs2df(dname, path) + df.to_csv(datafile, index=False, compression='gzip') + if not os.path.exists(infofile): + info = logs2info(dname, path) + pkl = pickle.dumps(info) + with open(infofile, 'wb') as f: + f.write(pkl) + + df = pd.read_csv(datafile) + with open(infofile, 'rb') as f: + info = pickle.loads(f.read()) + + return df, info + + +# TODO: removepreprocessing +def group_by_seed(names, repeat=3): + names = sorted(names) + if len(names) % repeat != 0: + raise FileNotFoundError('Missing file!') + index = np.arange(0, len(names), repeat, dtype=np.int32) + names_group = [names[i:i + repeat] for i in index] + return names_group + + +# TODO: remove preprocessing +def logs2info(dname, root, sample_client_rate=[0.2, 0.4, 0.6, 0.8, 1.0]): + sample_client_rate = set(sample_client_rate) + dir_names = [f'out_{dname}_' + str(x) for x in sample_client_rate] + trail_names = [x for x in os.listdir(os.path.join(root, dir_names[0]))] + split_names = [x.split('_') for x in trail_names if x.startswith('lr')] + args = [''.join(re.findall(r'[A-Za-z]', arg)) for arg in split_names[0]] + + search_space = { + arg: set([float(x[i][len(arg):]) for x in split_names]) + for i, arg in enumerate(args) + } + if dname in ['cola', 'sst2']: + fidelity_space = { + 'sample_client': set(sample_client_rate), + 'round': [x for x in range(40)] + } + eval_freq = 1 + elif dname in ['femnist']: + fidelity_space = { + 'sample_client': set(sample_client_rate), + 'round': [x + 1 for x in range(0, 500, 2)] + } + eval_freq = 2 + else: + fidelity_space = { + 'sample_client': set(sample_client_rate), + 'round': [x for x in range(500)] + } + eval_freq = 1 + info = { + 'configuration_space': search_space, + 'fidelity_space': fidelity_space, + 'eval_freq': eval_freq + } + + return info + + +def logs2df(dname, + root='', + sample_client_rate=[0.2, 0.4, 0.6, 0.8, 1.0], + metrics=[ + 'train_avg_loss', 'val_avg_loss', 'test_avg_loss', 'train_acc', + 'val_acc', 'test_acc', 'train_f1', 'val_f1', 'test_f1' + ]): + sample_client_rate = [str(round(x, 1)) for x in sample_client_rate] + dir_names = [f'out_{dname}_' + str(x) for x in sample_client_rate] + + trail_names = [x for x in os.listdir(os.path.join(root, dir_names[0]))] + split_names = [x.split('_') for x in trail_names if x.startswith('lr')] + + args = [''.join(re.findall(r'[A-Za-z]', arg)) for arg in split_names[0]] + df = pd.DataFrame(None, columns=['sample_client'] + args + ['result']) + + print('Processing...') + cnt = 0 + for name, rate in zip(dir_names, sample_client_rate): + path = os.path.join(root, name) + trail_names = sorted( + [x for x in os.listdir(path) if x.startswith('lr')]) + # trail_names = group_by_seed(trail_names) + for file_name in tqdm(trail_names): + metrics_dict = {x: [] for x in metrics} + time_dict = { + x: [] + for x in ['train_time', 'eval_time', 'tol_time'] + } + with open(os.path.join(path, file_name, 'exp_print.log')) as f: + F = f.readlines() + start_time = datetime.strptime(F[0][:19], '%Y-%m-%d %H:%M:%S') + end_time = datetime.strptime(F[-1][:19], '%Y-%m-%d %H:%M:%S') + time_dict['tol_time'].append(end_time - start_time) + + train_p = False + + for idx, line in enumerate(F): + # Time + try: + timestamp = datetime.strptime(line[:19], + '%Y-%m-%d %H:%M:%S') + except: + continue + + if "'Role': 'Client #" in line and train_p == False: + train_start_time = previous_time + train_p = True + + if "'Role': 'Client #" not in line and train_p == True: + train_time = previous_time - train_start_time + time_dict['train_time'].append(train_time) + train_p = False + + if 'Starting evaluation' in line: + eval_start_time = timestamp + if 'Results_raw' in line and 'test' in line: + eval_time = timestamp - eval_start_time + time_dict['eval_time'].append(eval_time) + previous_time = timestamp + + # Statistics + try: + results = eval(line.split('INFO: ')[1]) + except: + continue + for key in metrics_dict: + if results['Role'] == 'Global-Eval-Server #': + metrics_dict[key].append( + results['Results_raw'][key]) + elif 'Results_weighted_avg' not in results: + continue + else: + metrics_dict[key].append( + results['Results_weighted_avg'][key]) + value = [ + float(file_name.split('_')[i][len(arg):]) + for i, arg in enumerate(args) + ] + df.loc[cnt] = [float(rate)] + value + [{ + **metrics_dict, + **time_dict + }] + cnt += 1 + return df \ No newline at end of file diff --git a/benchmark/FedHPOB/fedhpob/utils/util.py b/benchmark/FedHPOB/fedhpob/utils/util.py new file mode 100644 index 000000000..b1e2deff4 --- /dev/null +++ b/benchmark/FedHPOB/fedhpob/utils/util.py @@ -0,0 +1,74 @@ +import os +import time +import logging + +from datetime import datetime + + +def merge_dict(dict1, dict2): + for key, value in dict2.items(): + if key not in dict1: + if isinstance(value, dict): + dict1[key] = merge_dict({}, value) + else: + dict1[key] = [value] + else: + if isinstance(value, dict): + merge_dict(dict1[key], value) + else: + dict1[key].append(value) + return dict1 + + +def disable_fs_logger(cfg, clear_before_add=False): + # Disable FS logger + root_logger = logging.getLogger("federatedscope") + # clear all existing handlers and add the default stream + if clear_before_add: + root_logger.handlers = [] + handler = logging.StreamHandler() + logging_fmt = "%(asctime)s (%(module)s:%(lineno)d) %(levelname)s: %(message)s" + handler.setFormatter(logging.Formatter(logging_fmt)) + root_logger.addHandler(handler) + + root_logger.setLevel(logging.CRITICAL) + + # ================ create outdir to save log, exp_config, models, etc,. + if cfg.outdir == "": + cfg.outdir = os.path.join(os.getcwd(), "exp") + cfg.outdir = os.path.join(cfg.outdir, cfg.expname) + + # if exist, make directory with given name and time + if os.path.isdir(cfg.outdir) and os.path.exists(cfg.outdir): + outdir = os.path.join(cfg.outdir, "sub_exp" + + datetime.now().strftime('_%Y%m%d%H%M%S') + ) # e.g., sub_exp_20220411030524 + while os.path.exists(outdir): + time.sleep(1) + outdir = os.path.join( + cfg.outdir, + "sub_exp" + datetime.now().strftime('_%Y%m%d%H%M%S')) + cfg.outdir = outdir + # if not, make directory with given name + os.makedirs(cfg.outdir) + + # create file handler which logs even debug messages + fh = logging.FileHandler(os.path.join(cfg.outdir, 'exp_print.log')) + fh.setLevel(logging.CRITICAL) + logger_formatter = logging.Formatter( + "%(asctime)s (%(module)s:%(lineno)d) %(levelname)s: %(message)s") + fh.setFormatter(logger_formatter) + root_logger.addHandler(fh) + + +def cfg2name(cfg): + repeat = 0 + dir = os.path.join( + cfg.benchmark.out_dir, + f'{cfg.benchmark.data}_{cfg.benchmark.model}_{cfg.benchmark.type}_{cfg.benchmark.algo}' + ) + os.makedirs(dir, exist_ok=True) + while os.path.exists( + os.path.join(dir, f'{cfg.optimizer.type}_repeat{repeat}.txt')): + repeat += 1 + return os.path.join(dir, f'{cfg.optimizer.type}_repeat{repeat}.txt') diff --git a/benchmark/FedHPOB/scripts/bert_tiny/cola.yaml b/benchmark/FedHPOB/scripts/bert_tiny/cola.yaml new file mode 100644 index 000000000..f60efe30f --- /dev/null +++ b/benchmark/FedHPOB/scripts/bert_tiny/cola.yaml @@ -0,0 +1,33 @@ +use_gpu: True +device: 1 +federate: + mode: standalone + local_update_steps: 1 + total_round_num: 40 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +data: + root: 'glue' + type: 'cola@huggingface_datasets' + args: [{'max_len': 128}] + batch_size: 128 + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + num_workers: 0 +model: + type: 'google/bert_uncased_L-2_H-128_A-2@transformers' + task: 'SequenceClassification' + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: 'CrossEntropyLoss' +trainer: + type: 'nlptrainer' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['val', 'train'] \ No newline at end of file diff --git a/benchmark/FedHPOB/scripts/bert_tiny/run.sh b/benchmark/FedHPOB/scripts/bert_tiny/run.sh new file mode 100644 index 000000000..6e34184d1 --- /dev/null +++ b/benchmark/FedHPOB/scripts/bert_tiny/run.sh @@ -0,0 +1,98 @@ +# --Seed 1 -- +# --1-- +bash run_hpo_glue.sh 0 0.2 sst2 1 & +bash run_hpo_glue.sh 1 0.4 sst2 1 & +bash run_hpo_glue.sh 2 0.6 sst2 1 & +bash run_hpo_glue.sh 3 0.8 sst2 1 & + +# --2-- +bash run_hpo_glue.sh 0 1.0 sst2 1 & +bash run_hpo_glue.sh 1 0.2 cola 1 & +bash run_hpo_glue.sh 2 0.4 cola 1 & +bash run_hpo_glue.sh 3 0.6 cola 1 & + +# --3-- +bash run_hpo_glue.sh 0 0.8 cola 1 & +bash run_hpo_glue.sh 1 1.0 cola 1 & +bash run_opt_glue.sh 2 0.2 sst2 1 & +bash run_opt_glue.sh 3 0.4 sst2 1 & + +# --4-- +bash run_opt_glue.sh 0 0.6 sst2 1 & +bash run_opt_glue.sh 1 0.8 sst2 1 & +bash run_opt_glue.sh 2 1.0 sst2 1 & +bash run_opt_glue.sh 3 0.2 cola 1 & + +# --5-- +bash run_opt_glue.sh 0 0.4 cola 1 & +bash run_opt_glue.sh 1 0.6 cola 1 & +bash run_opt_glue.sh 2 0.8 cola 1 & +bash run_opt_glue.sh 3 1.0 cola 1 & + + + + + +# --Seed 2 -- +# --1-- +bash run_hpo_glue.sh 0 0.2 sst2 2 & +bash run_hpo_glue.sh 1 0.4 sst2 2 & +bash run_hpo_glue.sh 2 0.6 sst2 2 & +bash run_hpo_glue.sh 3 0.8 sst2 2 & + +# --2-- +bash run_hpo_glue.sh 0 1.0 sst2 2 & +bash run_hpo_glue.sh 1 0.2 cola 2 & +bash run_hpo_glue.sh 2 0.4 cola 2 & +bash run_hpo_glue.sh 3 0.6 cola 2 & + +# --3-- +bash run_hpo_glue.sh 0 0.8 cola 2 & +bash run_hpo_glue.sh 1 1.0 cola 2 & +bash run_opt_glue.sh 2 0.2 sst2 2 & +bash run_opt_glue.sh 3 0.4 sst2 2 & + +# --4-- +bash run_opt_glue.sh 0 0.6 sst2 2 & +bash run_opt_glue.sh 1 0.8 sst2 2 & +bash run_opt_glue.sh 2 1.0 sst2 2 & +bash run_opt_glue.sh 3 0.2 cola 2 & + +# --5-- +bash run_opt_glue.sh 0 0.4 cola 2 & +bash run_opt_glue.sh 1 0.6 cola 2 & +bash run_opt_glue.sh 2 0.8 cola 2 & +bash run_opt_glue.sh 3 1.0 cola 2 & + + + +# --Seed 3 -- +# --1-- +bash run_hpo_glue.sh 0 0.2 sst2 3 & +bash run_hpo_glue.sh 1 0.4 sst2 3 & +bash run_hpo_glue.sh 2 0.6 sst2 3 & +bash run_hpo_glue.sh 3 0.8 sst2 3 & + +# --2-- +bash run_hpo_glue.sh 0 1.0 sst2 3 & +bash run_hpo_glue.sh 1 0.2 cola 3 & +bash run_hpo_glue.sh 2 0.4 cola 3 & +bash run_hpo_glue.sh 3 0.6 cola 3 & + +# --3-- +bash run_hpo_glue.sh 0 0.8 cola 3 & +bash run_hpo_glue.sh 1 1.0 cola 3 & +bash run_opt_glue.sh 2 0.2 sst2 3 & +bash run_opt_glue.sh 3 0.4 sst2 3 & + +# --4-- +bash run_opt_glue.sh 0 0.6 sst2 3 & +bash run_opt_glue.sh 1 0.8 sst2 3 & +bash run_opt_glue.sh 2 1.0 sst2 3 & +bash run_opt_glue.sh 3 0.2 cola 3 & + +# --5-- +bash run_opt_glue.sh 0 0.4 cola 3 & +bash run_opt_glue.sh 1 0.6 cola 3 & +bash run_opt_glue.sh 2 0.8 cola 3 & +bash run_opt_glue.sh 3 1.0 cola 3 & diff --git a/benchmark/FedHPOB/scripts/bert_tiny/run_hpo_glue.sh b/benchmark/FedHPOB/scripts/bert_tiny/run_hpo_glue.sh new file mode 100644 index 000000000..dddd24ed4 --- /dev/null +++ b/benchmark/FedHPOB/scripts/bert_tiny/run_hpo_glue.sh @@ -0,0 +1,33 @@ +# https://huggingface.co/google/bert_uncased_L-2_H-128_A-2 +set -e + +cudaid=$1 +sample_rate=$2 +dataset=$3 +k=$4 + +cd ../.. + +out_dir=out_${dataset} + +echo "HPO starts..." + +lrs=(0.01 0.01668 0.02783 0.04642 0.07743 0.12915 0.21544 0.35938 0.59948 1.0) +wds=(0.0 0.001 0.01 0.1) +dps=(0.0 0.5) +steps=(1 2 3 4) +batch_sizes=(8 16 32 64 128) + +for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((w = 0; w < ${#wds[@]}; w++)); do + for ((d = 0; d < ${#dps[@]}; d++)); do + for ((s = 0; s < ${#steps[@]}; s++)); do + for ((b = 0; b < ${#batch_sizes[@]}; b++)); do + python main.py --cfg fedhpo/glue/${dataset}.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} model.dropout ${dps[$d]} federate.local_update_steps ${steps[$s]} data.batch_size ${batch_sizes[$b]} federate.sample_client_rate $sample_rate seed $k outdir ${out_dir}_${sample_rate} expname lr${lrs[$l]}_wd${wds[$w]}_dropout${dps[$d]}_step${steps[$s]}_batch${batch_sizes[$b]}_seed${k} >/dev/null 2>&1 + done + done + done + done +done + +echo "HPO ends." \ No newline at end of file diff --git a/benchmark/FedHPOB/scripts/bert_tiny/run_opt_glue.sh b/benchmark/FedHPOB/scripts/bert_tiny/run_opt_glue.sh new file mode 100644 index 000000000..f2d2c65fe --- /dev/null +++ b/benchmark/FedHPOB/scripts/bert_tiny/run_opt_glue.sh @@ -0,0 +1,40 @@ +# https://huggingface.co/google/bert_uncased_L-2_H-128_A-2 +set -e + +cudaid=$1 +sample_rate=$2 +dataset=$3 +k=$4 + +cd ../.. + +out_dir=out_${dataset} + +echo "HPO starts..." + +lrs=(0.01 0.01668 0.02783 0.04642 0.07743 0.12915 0.21544 0.35938 0.59948 1.0) +wds=(0.0 0.001 0.01 0.1) +dps=(0.0 0.5) +steps=(1) +batch_sizes=(8 16 32 64 128) + +lrs_server=(0.1 0.5 1.0) +momentums_server=(0.0 0.9) + +for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((w = 0; w < ${#wds[@]}; w++)); do + for ((d = 0; d < ${#dps[@]}; d++)); do + for ((s = 0; s < ${#steps[@]}; s++)); do + for ((b = 0; b < ${#batch_sizes[@]}; b++)); do + for ((sl = 0; sl < ${#lrs_server[@]}; sl++)); do + for ((ms = 0; ms < ${#momentums_server[@]}; ms++)); do + python main.py --cfg fedhpo/glue/${dataset}.yaml fedopt.use True federate.method FedOpt fedopt.lr_server ${lrs_server[$sl]} fedopt.momentum_server ${momentums_server[$ms]} device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} model.dropout ${dps[$d]} federate.local_update_steps ${steps[$s]} data.batch_size ${batch_sizes[$b]} federate.sample_client_rate $sample_rate seed $k outdir out_fedopt/${out_dir}_${sample_rate} federate.share_local_model False federate.online_aggr False expname lr${lrs[$l]}_wd${wds[$w]}_dropout${dps[$d]}_step${steps[$s]}_batch${batch_sizes[$b]}_lrserver${lrs_server[$sl]}_momentumsserver${momentums_server[$ms]}_seed${k} >/dev/null 2>&1 + done + done + done + done + done + done +done + +echo "HPO ends." \ No newline at end of file diff --git a/benchmark/FedHPOB/scripts/bert_tiny/sst2.yaml b/benchmark/FedHPOB/scripts/bert_tiny/sst2.yaml new file mode 100644 index 000000000..61e946a32 --- /dev/null +++ b/benchmark/FedHPOB/scripts/bert_tiny/sst2.yaml @@ -0,0 +1,33 @@ +use_gpu: True +device: 0 +federate: + mode: standalone + local_update_steps: 1 + total_round_num: 40 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +data: + root: 'glue' + type: 'sst2@huggingface_datasets' + args: [{'max_len': 512}] + batch_size: 128 + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + num_workers: 0 +model: + type: 'google/bert_uncased_L-2_H-128_A-2@transformers' + task: 'SequenceClassification' + out_channels: 2 +optimizer: + lr: 0.3 + weight_decay: 0.0 +criterion: + type: 'CrossEntropyLoss' +trainer: + type: 'nlptrainer' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['val', 'train'] \ No newline at end of file diff --git a/benchmark/FedHPOB/scripts/cnn/cifar10.yaml b/benchmark/FedHPOB/scripts/cnn/cifar10.yaml new file mode 100644 index 000000000..c2514c62e --- /dev/null +++ b/benchmark/FedHPOB/scripts/cnn/cifar10.yaml @@ -0,0 +1,39 @@ +use_gpu: True +device: 0 +early_stop: + patience: 100 +seed: 1 +federate: + mode: standalone + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 500 + client_num: 5 + share_local_model: True + online_aggr: True +data: + root: data/ + type: 'CIFAR10@torchvision' + splits: [0.8,0.2,0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 128 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.01 + weight_decay: 0.0 + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + freq: 1 + metrics: ['acc', 'correct'] diff --git a/benchmark/FedHPOB/scripts/cnn/femnist.yaml b/benchmark/FedHPOB/scripts/cnn/femnist.yaml new file mode 100644 index 000000000..c64356b44 --- /dev/null +++ b/benchmark/FedHPOB/scripts/cnn/femnist.yaml @@ -0,0 +1,38 @@ +use_gpu: True +device: 0 +early_stop: + patience: 100 +seed: 12345 +federate: + mode: standalone + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 500 + sample_client_rate: 0.2 + share_local_model: True + online_aggr: True +data: + root: data/ + type: femnist + splits: [0.6,0.2,0.2] + batch_size: 16 + subsample: 0.05 + transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + num_workers: 0 +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + dropout: 0.5 +optimizer: + lr: 0.01 + weight_decay: 0.0 + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + freq: 2 + metrics: ['acc', 'correct', 'f1'] + split: ['test', 'val', 'train'] \ No newline at end of file diff --git a/benchmark/FedHPOB/scripts/cnn/run.sh b/benchmark/FedHPOB/scripts/cnn/run.sh new file mode 100644 index 000000000..8b1e93e83 --- /dev/null +++ b/benchmark/FedHPOB/scripts/cnn/run.sh @@ -0,0 +1,54 @@ +# --1-- +bash run_hpo_femnist_48.sh 0 0.0 1 16 & +bash run_hpo_femnist_48.sh 1 0.0 1 32 & +bash run_hpo_femnist_48.sh 2 0.0 1 64 & +bash run_hpo_femnist_48.sh 3 0.0 2 16 & +bash run_hpo_femnist_48.sh 0 0.0 2 32 & +bash run_hpo_femnist_48.sh 1 0.0 2 64 & +bash run_hpo_femnist_48.sh 2 0.0 3 16 & +bash run_hpo_femnist_48.sh 3 0.0 3 32 & +# --2-- +bash run_hpo_femnist_48.sh 0 0.0 3 64 & +bash run_hpo_femnist_48.sh 1 0.0 4 16 & +bash run_hpo_femnist_48.sh 2 0.0 4 32 & +bash run_hpo_femnist_48.sh 3 0.0 4 64 & +bash run_hpo_femnist_48.sh 0 0.001 1 16 & +bash run_hpo_femnist_48.sh 1 0.001 1 32 & +bash run_hpo_femnist_48.sh 2 0.001 1 64 & +bash run_hpo_femnist_48.sh 3 0.001 2 16 & +# --3-- +bash run_hpo_femnist_48.sh 0 0.001 2 32 & +bash run_hpo_femnist_48.sh 1 0.001 2 64 & +bash run_hpo_femnist_48.sh 2 0.001 3 16 & +bash run_hpo_femnist_48.sh 3 0.001 3 32 & +bash run_hpo_femnist_48.sh 0 0.001 3 64 & +bash run_hpo_femnist_48.sh 1 0.001 4 16 & +bash run_hpo_femnist_48.sh 2 0.001 4 32 & +bash run_hpo_femnist_48.sh 3 0.001 4 64 & +# --4-- +bash run_hpo_femnist_48.sh 0 0.01 1 16 & +bash run_hpo_femnist_48.sh 1 0.01 1 32 & +bash run_hpo_femnist_48.sh 2 0.01 1 64 & +bash run_hpo_femnist_48.sh 3 0.01 2 16 & +bash run_hpo_femnist_48.sh 0 0.01 2 32 & +bash run_hpo_femnist_48.sh 1 0.01 2 64 & +bash run_hpo_femnist_48.sh 2 0.01 3 16 & +bash run_hpo_femnist_48.sh 3 0.01 3 32 & +# --5-- +bash run_hpo_femnist_48.sh 0 0.01 3 64 & +bash run_hpo_femnist_48.sh 1 0.01 4 16 & +bash run_hpo_femnist_48.sh 2 0.01 4 32 & +bash run_hpo_femnist_48.sh 3 0.01 4 64 & +bash run_hpo_femnist_48.sh 0 0.1 1 16 & +bash run_hpo_femnist_48.sh 1 0.1 1 32 & +bash run_hpo_femnist_48.sh 2 0.1 1 64 & +bash run_hpo_femnist_48.sh 3 0.1 2 16 & +# --6-- +bash run_hpo_femnist_48.sh 0 0.1 2 32 & +bash run_hpo_femnist_48.sh 1 0.1 2 64 & +bash run_hpo_femnist_48.sh 2 0.1 3 16 & +bash run_hpo_femnist_48.sh 3 0.1 3 32 & +bash run_hpo_femnist_48.sh 0 0.1 3 64 & +bash run_hpo_femnist_48.sh 1 0.1 4 16 & +bash run_hpo_femnist_48.sh 2 0.1 4 32 & +bash run_hpo_femnist_48.sh 3 0.1 4 64 & diff --git a/benchmark/FedHPOB/scripts/cnn/run_hpo_cifar10.sh b/benchmark/FedHPOB/scripts/cnn/run_hpo_cifar10.sh new file mode 100644 index 000000000..ecab51e4c --- /dev/null +++ b/benchmark/FedHPOB/scripts/cnn/run_hpo_cifar10.sh @@ -0,0 +1,34 @@ +set -e + +cudaid=$1 +sample_rate=$2 + +cd ../.. + +dataset=cifar10 + +out_dir=out_${dataset} + +echo "HPO starts..." + +lrs=(0.01 0.01668 0.02783 0.04642 0.07743 0.12915 0.21544 0.35938 0.59948 1.0) +wds=(0.0 0.001 0.01 0.1) +dps=(0.0 0.5) +steps=(1 2 3 4) +batch_sizes=(16 32 64) + +for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((w = 0; w < ${#wds[@]}; w++)); do + for ((d = 0; d < ${#dps[@]}; d++)); do + for ((s = 0; s < ${#steps[@]}; s++)); do + for ((b = 0; b < ${#batch_sizes[@]}; b++)); do + for k in {1..3}; do + python federatedscope/main.py --cfg fedhpo/cnn/${dataset}.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} model.dropout ${dps[$d]} federate.local_update_steps ${steps[$s]} data.batch_size ${batch_sizes[$b]} federate.sample_client_rate $sample_rate seed $k outdir ${out_dir}_${sample_rate} expname lr${lrs[$l]}_wd${wds[$w]}_dropout${dps[$d]}_step${steps[$s]}_batch${batch_sizes[$b]}_seed${k} >/dev/null 2>&1 + done + done + done + done + done +done + +echo "HPO ends." diff --git a/benchmark/FedHPOB/scripts/cnn/run_hpo_femnist.sh b/benchmark/FedHPOB/scripts/cnn/run_hpo_femnist.sh new file mode 100644 index 000000000..5f7f9126b --- /dev/null +++ b/benchmark/FedHPOB/scripts/cnn/run_hpo_femnist.sh @@ -0,0 +1,34 @@ +set -e + +cudaid=$1 +sample_rate=$2 + +cd ../.. + +dataset=femnist + +out_dir=out_${dataset} + +echo "HPO starts..." + +lrs=(0.01 0.01668 0.02783 0.04642 0.07743 0.12915 0.21544 0.35938 0.59948 1.0) +wds=(0.0 0.001 0.01 0.1) +dps=(0.0 0.5) +steps=(1 2 3 4) +batch_sizes=(16 32 64) + +for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((w = 0; w < ${#wds[@]}; w++)); do + for ((d = 0; d < ${#dps[@]}; d++)); do + for ((s = 0; s < ${#steps[@]}; s++)); do + for ((b = 0; b < ${#batch_sizes[@]}; b++)); do + for k in {1..3}; do + python federatedscope/main.py --cfg fedhpo/cnn/${dataset}.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} model.dropout ${dps[$d]} federate.local_update_steps ${steps[$s]} data.batch_size ${batch_sizes[$b]} federate.sample_client_rate $sample_rate seed $k outdir ${out_dir}_${sample_rate} expname lr${lrs[$l]}_wd${wds[$w]}_dropout${dps[$d]}_step${steps[$s]}_batch${batch_sizes[$b]}_seed${k} >/dev/null 2>&1 + done + done + done + done + done +done + +echo "HPO ends." diff --git a/benchmark/FedHPOB/scripts/cnn/run_hpo_femnist_48.sh b/benchmark/FedHPOB/scripts/cnn/run_hpo_femnist_48.sh new file mode 100644 index 000000000..97da980bc --- /dev/null +++ b/benchmark/FedHPOB/scripts/cnn/run_hpo_femnist_48.sh @@ -0,0 +1,34 @@ +set -e + +# wds=(0.0 0.001 0.01 0.1) +# steps=(1 2 3 4) +# batch_sizes=(16 32 64) + +cudaid=$1 +wd=$2 +step=$3 +batch_size=$4 + +cd ../.. + +dataset=femnist + +out_dir=out_${dataset} + +echo "HPO starts..." + +lrs=(0.01 0.01668 0.02783 0.04642 0.07743 0.12915 0.21544 0.35938 0.59948 1.0) +dps=(0.0 0.5) +sample_rates=(0.2 0.4 0.6 0.8 1.0) + +for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((d = 0; d < ${#dps[@]}; d++)); do + for ((s = 0; s < ${#sample_rates[@]}; s++)); do + for k in {1..3}; do + python federatedscope/main.py --cfg fedhpo/cnn/${dataset}.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wd} model.dropout ${dps[$d]} federate.local_update_steps ${step} data.batch_size ${batch_size} federate.sample_client_rate ${sample_rates[$s]} seed $k outdir ${out_dir}_${sample_rates[$s]} expname lr${lrs[$l]}_wd${wd}_dropout${dps[$d]}_step${step}_batch${batch_size}_seed${k} >/dev/null 2>&1 + done + done + done +done + +echo "HPO ends." diff --git a/benchmark/FedHPOB/scripts/exp/graph.yaml b/benchmark/FedHPOB/scripts/exp/graph.yaml new file mode 100644 index 000000000..711c4f5fa --- /dev/null +++ b/benchmark/FedHPOB/scripts/exp/graph.yaml @@ -0,0 +1,5 @@ +benchmark: + device: 0 +optimizer: + min_budget: 3 + max_budget: 81 \ No newline at end of file diff --git a/benchmark/FedHPOB/scripts/exp/run.sh b/benchmark/FedHPOB/scripts/exp/run.sh new file mode 100644 index 000000000..5d55642bb --- /dev/null +++ b/benchmark/FedHPOB/scripts/exp/run.sh @@ -0,0 +1,11 @@ +nohup bash run_mode.sh cora tabular 0 & +nohup bash run_mode.sh citeseer tabular 0 & +nohup bash run_mode.sh pubmed tabular 0 & + +nohup bash run_mode.sh cora raw 0 +nohup bash run_mode.sh citeseer raw 1 +nohup bash run_mode.sh pubmed raw 2 + +nohup bash run_mode.sh cora surrogate 0 +nohup bash run_mode.sh citeseer surrogate 0 +nohup bash run_mode.sh pubmed surrogate 0 \ No newline at end of file diff --git a/benchmark/FedHPOB/scripts/exp/run_graph.sh b/benchmark/FedHPOB/scripts/exp/run_graph.sh new file mode 100644 index 000000000..851a86e5f --- /dev/null +++ b/benchmark/FedHPOB/scripts/exp/run_graph.sh @@ -0,0 +1,124 @@ +# ******Cora***** + +# tabular +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data cora optimizer.type rs +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data cora optimizer.type bo_gp +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data cora optimizer.type bo_rf +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data cora optimizer.type bo_kde +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data cora optimizer.type de + +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data cora optimizer.type hb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data cora optimizer.type bohb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data cora optimizer.type dehb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data cora optimizer.type tpe_md +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data cora optimizer.type tpe_hb + +# raw +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data cora optimizer.type rs benchmark.device 0 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data cora optimizer.type bo_gp benchmark.device 1 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data cora optimizer.type bo_rf benchmark.device 2 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data cora optimizer.type bo_kde benchmark.device 3 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data cora optimizer.type de benchmark.device 4 + +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data cora optimizer.type hb benchmark.device 5 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data cora optimizer.type bohb benchmark.device 6 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data cora optimizer.type dehb benchmark.device 7 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data cora optimizer.type tpe_md benchmark.device 7 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data cora optimizer.type tpe_hb benchmark.device 6 + +# surrogate +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data cora optimizer.type rs +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data cora optimizer.type bo_gp +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data cora optimizer.type bo_rf +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data cora optimizer.type bo_kde +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data cora optimizer.type de + +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data cora optimizer.type hb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data cora optimizer.type bohb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data cora optimizer.type dehb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data cora optimizer.type tpe_md +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data cora optimizer.type tpe_hb + + +# ******CiteSeer***** + +# tabular +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data citeseer optimizer.type rs +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data citeseer optimizer.type bo_gp +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data citeseer optimizer.type bo_rf +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data citeseer optimizer.type bo_kde +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data citeseer optimizer.type de + +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data citeseer optimizer.type hb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data citeseer optimizer.type bohb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data citeseer optimizer.type dehb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data citeseer optimizer.type tpe_md +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data citeseer optimizer.type tpe_hb + +# raw +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data citeseer optimizer.type rs benchmark.device 0 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data citeseer optimizer.type bo_gp benchmark.device 1 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data citeseer optimizer.type bo_rf benchmark.device 2 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data citeseer optimizer.type bo_kde benchmark.device 3 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data citeseer optimizer.type de benchmark.device 4 + +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data citeseer optimizer.type hb benchmark.device 5 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data citeseer optimizer.type bohb benchmark.device 6 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data citeseer optimizer.type dehb benchmark.device 7 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data citeseer optimizer.type tpe_md benchmark.device 7 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data citeseer optimizer.type tpe_hb benchmark.device 6 + +# surrogate +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data citeseer optimizer.type rs +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data citeseer optimizer.type bo_gp +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data citeseer optimizer.type bo_rf +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data citeseer optimizer.type bo_kde +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data citeseer optimizer.type de + +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data citeseer optimizer.type hb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data citeseer optimizer.type bohb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data citeseer optimizer.type dehb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data citeseer optimizer.type tpe_md +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data citeseer optimizer.type tpe_hb + + +# ******Pubmed***** + +# tabular +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data pubmed optimizer.type rs +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data pubmed optimizer.type bo_gp +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data pubmed optimizer.type bo_rf +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data pubmed optimizer.type bo_kde +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data pubmed optimizer.type de + +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data pubmed optimizer.type hb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data pubmed optimizer.type bohb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data pubmed optimizer.type dehb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data pubmed optimizer.type tpe_md +python runner.py --cfg scripts/exp/graph.yaml benchmark.type tabular benchmark.data pubmed optimizer.type tpe_hb + +# raw +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data pubmed optimizer.type rs benchmark.device 0 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data pubmed optimizer.type bo_gp benchmark.device 1 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data pubmed optimizer.type bo_rf benchmark.device 2 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data pubmed optimizer.type bo_kde benchmark.device 3 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data pubmed optimizer.type de benchmark.device 4 + +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data pubmed optimizer.type hb benchmark.device 5 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data pubmed optimizer.type bohb benchmark.device 6 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data pubmed optimizer.type dehb benchmark.device 7 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data pubmed optimizer.type tpe_md benchmark.device 7 +python runner.py --cfg scripts/exp/graph.yaml benchmark.type raw benchmark.data pubmed optimizer.type tpe_hb benchmark.device 6 + +# surrogate +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data pubmed optimizer.type rs +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data pubmed optimizer.type bo_gp +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data pubmed optimizer.type bo_rf +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data pubmed optimizer.type bo_kde +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data pubmed optimizer.type de + +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data pubmed optimizer.type hb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data pubmed optimizer.type bohb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data pubmed optimizer.type dehb +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data pubmed optimizer.type tpe_md +python runner.py --cfg scripts/exp/graph.yaml benchmark.type surrogate benchmark.data pubmed optimizer.type tpe_hb diff --git a/benchmark/FedHPOB/scripts/exp/run_mode.sh b/benchmark/FedHPOB/scripts/exp/run_mode.sh new file mode 100644 index 000000000..c7d477eb6 --- /dev/null +++ b/benchmark/FedHPOB/scripts/exp/run_mode.sh @@ -0,0 +1,22 @@ +set -e + +dataset=$1 +mode=$2 +device=$3 + +cd ../.. +cp fedhpob/utils/runner.py . || echo "File exists." + +for k in {1..5}; do + python runner.py --cfg scripts/exp/graph.yaml benchmark.device ${device} benchmark.type ${mode} benchmark.data ${dataset} optimizer.type rs || echo "continue" + python runner.py --cfg scripts/exp/graph.yaml benchmark.device ${device} benchmark.type ${mode} benchmark.data ${dataset} optimizer.type bo_gp || echo "continue" + python runner.py --cfg scripts/exp/graph.yaml benchmark.device ${device} benchmark.type ${mode} benchmark.data ${dataset} optimizer.type bo_rf || echo "continue" + python runner.py --cfg scripts/exp/graph.yaml benchmark.device ${device} benchmark.type ${mode} benchmark.data ${dataset} optimizer.type bo_kde || echo "continue" + python runner.py --cfg scripts/exp/graph.yaml benchmark.device ${device} benchmark.type ${mode} benchmark.data ${dataset} optimizer.type de || echo "continue" + + python runner.py --cfg scripts/exp/graph.yaml benchmark.device ${device} benchmark.type ${mode} benchmark.data ${dataset} optimizer.type hb || echo "continue" + python runner.py --cfg scripts/exp/graph.yaml benchmark.device ${device} benchmark.type ${mode} benchmark.data ${dataset} optimizer.type bohb || echo "continue" + python runner.py --cfg scripts/exp/graph.yaml benchmark.device ${device} benchmark.type ${mode} benchmark.data ${dataset} optimizer.type dehb || echo "continue" + python runner.py --cfg scripts/exp/graph.yaml benchmark.device ${device} benchmark.type ${mode} benchmark.data ${dataset} optimizer.type tpe_md || echo "continue" + python runner.py --cfg scripts/exp/graph.yaml benchmark.device ${device} benchmark.type ${mode} benchmark.data ${dataset} optimizer.type tpe_hb || echo "continue" +done diff --git a/benchmark/FedHPOB/scripts/format.sh b/benchmark/FedHPOB/scripts/format.sh new file mode 100644 index 000000000..dd2a28a08 --- /dev/null +++ b/benchmark/FedHPOB/scripts/format.sh @@ -0,0 +1,124 @@ +# Copyright 2017 The Ray Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +#!/usr/bin/env bash +# YAPF + Clang formatter (if installed). This script formats all changed files from the last mergebase. +# You are encouraged to run this locally before pushing changes for review. + +# Cause the script to exit if a single command fails +set -eo pipefail + +ver=$(yapf --version) +if ! echo $ver | grep -q 0.31.0; then + echo "Wrong YAPF version installed: 0.31.0 is required, not $ver" + exit 1 +fi + +# this stops git rev-parse from failing if we run this from the .git directory +builtin cd "$(dirname "${BASH_SOURCE:-$0}")" + +ROOT="$(git rev-parse --show-toplevel)" +builtin cd "$ROOT" || exit 1 + +FLAKE8_VERSION=$(flake8 --version | awk '{print $1}') +YAPF_VERSION=$(yapf --version | awk '{print $2}') + +# params: tool name, tool version, required version +tool_version_check() { + if [[ $2 != $3 ]]; then + echo "WARNING: FedHPOB uses $1 $3, You currently are using $2. This might generate different results." + fi +} + +tool_version_check "flake8" $FLAKE8_VERSION "4.0.1" +tool_version_check "yapf" $YAPF_VERSION "0.31.0" + +# Only fetch master since that's the branch we're diffing against. +#git fetch upstream master || true +git fetch origin master || true + +YAPF_FLAGS=( + '--style' "$ROOT/.style.yapf" + '--recursive' + '--parallel' +) + +YAPF_EXCLUDES=( + '--exclude' 'scripts/*' +) + +# Format specified files +format() { + yapf --in-place "${YAPF_FLAGS[@]}" -- "$@" +} + +# Format files that differ from main branch. Ignores dirs that are not slated +# for autoformat yet. +format_changed() { + # The `if` guard ensures that the list of filenames is not empty, which + # could cause yapf to receive 0 positional arguments, making it hang + # waiting for STDIN. + # + # `diff-filter=ACM` and $MERGEBASE is to ensure we only format files that + # exist on both branches. + #MERGEBASE="$(git merge-base upstream/master HEAD)" + MERGEBASE="$(git merge-base origin/master HEAD)" + + if ! git diff --diff-filter=ACM --quiet --exit-code "$MERGEBASE" -- '*.py' &>/dev/null; then + git diff --name-only --diff-filter=ACM "$MERGEBASE" -- '*.py' | xargs -P 5 \ + yapf --in-place "${YAPF_EXCLUDES[@]}" "${YAPF_FLAGS[@]}" + if which flake8 >/dev/null; then + git diff --name-only --diff-filter=ACM "$MERGEBASE" -- '*.py' | xargs -P 5 \ + flake8 --inline-quotes '"' --no-avoid-escape --ignore=C408,E121,E123,E126,E226,E24,E704,W503,W504,W605 + fi + fi + + if ! git diff --diff-filter=ACM --quiet --exit-code "$MERGEBASE" -- '*.pyx' '*.pxd' '*.pxi' &>/dev/null; then + if which flake8 >/dev/null; then + git diff --name-only --diff-filter=ACM "$MERGEBASE" -- '*.pyx' '*.pxd' '*.pxi' | xargs -P 5 \ + flake8 --inline-quotes '"' --no-avoid-escape --ignore=C408,E121,E123,E126,E226,E24,E704,W503,W504,W605 + fi + fi +} + +# Format all files, and print the diff to stdout for travis. +format_all() { + yapf --diff "${YAPF_FLAGS[@]}" "${YAPF_EXCLUDES[@]}" fedhpob + #yapf --in-place "${YAPF_FLAGS[@]}" "${YAPF_EXCLUDES[@]}" fedhpob +} + +# This flag formats individual files. --files *must* be the first command line +# arg to use this option. +if [[ "$1" == '--files' ]]; then + format "${@:2}" + # If `--all` is passed, then any further arguments are ignored and the + # entire python directory is formatted. +elif [[ "$1" == '--all' ]]; then + format_all +else + # Format only the files that changed in last commit. + format_changed +fi + +if ! git diff --quiet &>/dev/null; then + echo 'Reformatted changed files. Please review and stage the changes.' + echo 'Files updated:' + echo + + git --no-pager diff --name-only + + exit 1 +fi diff --git a/benchmark/FedHPOB/scripts/gcn/citeseer.yaml b/benchmark/FedHPOB/scripts/gcn/citeseer.yaml new file mode 100644 index 000000000..51da2333d --- /dev/null +++ b/benchmark/FedHPOB/scripts/gcn/citeseer.yaml @@ -0,0 +1,34 @@ +use_gpu: True +device: 0 +early_stop: + patience: 100 +seed: 12345 +federate: + mode: standalone + make_global_eval: True + client_num: 5 + local_update_steps: 1 + total_round_num: 500 + share_local_model: True + online_aggr: True +data: + root: data/ + type: citeseer + splitter: 'louvain' + batch_size: 1 +model: + type: gcn + hidden: 64 + dropout: 0.5 + out_channels: 6 +optimizer: + lr: 0.25 + weight_decay: 0.0005 +criterion: + type: CrossEntropyLoss +trainer: + type: nodefullbatch_trainer +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['test', 'val', 'train'] \ No newline at end of file diff --git a/benchmark/FedHPOB/scripts/gcn/cora.yaml b/benchmark/FedHPOB/scripts/gcn/cora.yaml new file mode 100644 index 000000000..e1d4e79b7 --- /dev/null +++ b/benchmark/FedHPOB/scripts/gcn/cora.yaml @@ -0,0 +1,34 @@ +use_gpu: True +device: 0 +early_stop: + patience: 100 +seed: 12345 +federate: + mode: standalone + make_global_eval: True + client_num: 5 + local_update_steps: 1 + total_round_num: 500 + share_local_model: True + online_aggr: True +data: + root: data/ + type: cora + splitter: 'louvain' + batch_size: 1 +model: + type: gcn + hidden: 64 + dropout: 0.5 + out_channels: 7 +optimizer: + lr: 0.25 + weight_decay: 0.0005 +criterion: + type: CrossEntropyLoss +trainer: + type: nodefullbatch_trainer +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['test', 'val', 'train'] \ No newline at end of file diff --git a/benchmark/FedHPOB/scripts/gcn/pubmed.yaml b/benchmark/FedHPOB/scripts/gcn/pubmed.yaml new file mode 100644 index 000000000..b2763a353 --- /dev/null +++ b/benchmark/FedHPOB/scripts/gcn/pubmed.yaml @@ -0,0 +1,34 @@ +use_gpu: True +device: 0 +early_stop: + patience: 100 +seed: 12345 +federate: + mode: standalone + make_global_eval: True + client_num: 5 + local_update_steps: 1 + total_round_num: 500 + share_local_model: True + online_aggr: True +data: + root: data/ + type: pubmed + splitter: 'louvain' + batch_size: 1 +model: + type: gcn + hidden: 64 + dropout: 0.5 + out_channels: 5 +optimizer: + lr: 0.25 + weight_decay: 0.0005 +criterion: + type: CrossEntropyLoss +trainer: + type: nodefullbatch_trainer +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['test', 'val', 'train'] \ No newline at end of file diff --git a/benchmark/FedHPOB/scripts/gcn/run_hpo_citeseer.sh b/benchmark/FedHPOB/scripts/gcn/run_hpo_citeseer.sh new file mode 100644 index 000000000..771c559bf --- /dev/null +++ b/benchmark/FedHPOB/scripts/gcn/run_hpo_citeseer.sh @@ -0,0 +1,31 @@ +set -e + +cudaid=$1 +sample_num=$2 + +cd ../.. + +dataset=citeseer + +out_dir=out_${dataset} + +echo "HPO starts..." + +lrs=(0.01 0.01668 0.02783 0.04642 0.07743 0.12915 0.21544 0.35938 0.59948 1.0) +wds=(0.0 0.001 0.01 0.1) +dps=(0.0 0.5) +steps=(1 2 3 4 5 6 7 8) + +for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((w = 0; w < ${#wds[@]}; w++)); do + for ((d = 0; d < ${#dps[@]}; d++)); do + for ((s = 0; s < ${#steps[@]}; s++)); do + for k in {1..3}; do + python federatedscope/main.py --cfg fedhpo/graph/${dataset}/${dataset}.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} model.dropout ${dps[$d]} federate.local_update_steps ${steps[$s]} federate.sample_client_num $sample_num seed $k outdir ${out_dir}_${sample_num} expname lr${lrs[$l]}_wd${wds[$w]}_dropout${dps[$d]}_step${steps[$s]}_seed${k} >/dev/null 2>&1 + done + done + done + done +done + +echo "HPO ends." diff --git a/benchmark/FedHPOB/scripts/gcn/run_hpo_cora.sh b/benchmark/FedHPOB/scripts/gcn/run_hpo_cora.sh new file mode 100644 index 000000000..878e29ab0 --- /dev/null +++ b/benchmark/FedHPOB/scripts/gcn/run_hpo_cora.sh @@ -0,0 +1,31 @@ +set -e + +cudaid=$1 +sample_num=$2 + +cd ../.. + +dataset=cora + +out_dir=out_${dataset} + +echo "HPO starts..." + +lrs=(0.01 0.01668 0.02783 0.04642 0.07743 0.12915 0.21544 0.35938 0.59948 1.0) +wds=(0.0 0.001 0.01 0.1) +dps=(0.0 0.5) +steps=(1 2 3 4 5 6 7 8) + +for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((w = 0; w < ${#wds[@]}; w++)); do + for ((d = 0; d < ${#dps[@]}; d++)); do + for ((s = 0; s < ${#steps[@]}; s++)); do + for k in {1..3}; do + python federatedscope/main.py --cfg fedhpo/graph/${dataset}/${dataset}.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} model.dropout ${dps[$d]} federate.local_update_steps ${steps[$s]} federate.sample_client_num $sample_num seed $k outdir ${out_dir}_${sample_num} expname lr${lrs[$l]}_wd${wds[$w]}_dropout${dps[$d]}_step${steps[$s]}_seed${k} >/dev/null 2>&1 + done + done + done + done +done + +echo "HPO ends." diff --git a/benchmark/FedHPOB/scripts/gcn/run_hpo_pubmed.sh b/benchmark/FedHPOB/scripts/gcn/run_hpo_pubmed.sh new file mode 100644 index 000000000..3deef9c7d --- /dev/null +++ b/benchmark/FedHPOB/scripts/gcn/run_hpo_pubmed.sh @@ -0,0 +1,31 @@ +set -e + +cudaid=$1 +sample_num=$2 + +cd ../.. + +dataset=pubmed + +out_dir=out_${dataset} + +echo "HPO starts..." + +lrs=(0.01 0.01668 0.02783 0.04642 0.07743 0.12915 0.21544 0.35938 0.59948 1.0) +wds=(0.0 0.001 0.01 0.1) +dps=(0.0 0.5) +steps=(1 2 3 4 5 6 7 8) + +for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((w = 0; w < ${#wds[@]}; w++)); do + for ((d = 0; d < ${#dps[@]}; d++)); do + for ((s = 0; s < ${#steps[@]}; s++)); do + for k in {1..3}; do + python federatedscope/main.py --cfg fedhpo/graph/${dataset}/${dataset}.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} model.dropout ${dps[$d]} federate.local_update_steps ${steps[$s]} federate.sample_client_num $sample_num seed $k outdir ${out_dir}_${sample_num} expname lr${lrs[$l]}_wd${wds[$w]}_dropout${dps[$d]}_step${steps[$s]}_seed${k} >/dev/null 2>&1 + done + done + done + done +done + +echo "HPO ends." diff --git a/benchmark/FedHPOB/scripts/gcn/run_opt_citeseer.sh b/benchmark/FedHPOB/scripts/gcn/run_opt_citeseer.sh new file mode 100644 index 000000000..df8b44fb0 --- /dev/null +++ b/benchmark/FedHPOB/scripts/gcn/run_opt_citeseer.sh @@ -0,0 +1,38 @@ +set -e + +cudaid=$1 +sample_num=$2 + +cd ../.. + +dataset=citeseer + +out_dir=out_${dataset} + +echo "HPO starts..." + +lrs=(0.01 0.01668 0.02783 0.04642 0.07743 0.12915 0.21544 0.35938 0.59948 1.0) +wds=(0.0 0.001 0.01 0.1) +dps=(0.0 0.5) +steps=(1) + +lrs_server=(0.1 0.5 1.0) +momentums_server=(0.0 0.9) + +for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((w = 0; w < ${#wds[@]}; w++)); do + for ((d = 0; d < ${#dps[@]}; d++)); do + for ((s = 0; s < ${#steps[@]}; s++)); do + for ((sl = 0; sl < ${#lrs_server[@]}; sl++)); do + for ((ms = 0; ms < ${#momentums_server[@]}; ms++)); do + for k in {1..3}; do + python federatedscope/main.py --cfg fedhpo/graph/${dataset}/${dataset}.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} model.dropout ${dps[$d]} federate.local_update_steps ${steps[$s]} federate.sample_client_num $sample_num fedopt.use True federate.method FedOpt fedopt.lr_server ${lrs_server[$sl]} fedopt.momentum_server ${momentums_server[$ms]} seed $k outdir out_fedopt/${out_dir}_${sample_num} federate.share_local_model False federate.online_aggr False expname lr${lrs[$l]}_wd${wds[$w]}_dropout${dps[$d]}_step${steps[$s]}_lrserver${lrs_server[$sl]}_momentumsserver${momentums_server[$ms]}_seed${k} >/dev/null 2>&1 + done + done + done + done + done + done +done + +echo "HPO ends." diff --git a/benchmark/FedHPOB/scripts/gcn/run_opt_cora.sh b/benchmark/FedHPOB/scripts/gcn/run_opt_cora.sh new file mode 100644 index 000000000..60d40de8a --- /dev/null +++ b/benchmark/FedHPOB/scripts/gcn/run_opt_cora.sh @@ -0,0 +1,38 @@ +set -e + +cudaid=$1 +sample_num=$2 + +cd ../.. + +dataset=cora + +out_dir=out_${dataset} + +echo "HPO starts..." + +lrs=(0.01 0.01668 0.02783 0.04642 0.07743 0.12915 0.21544 0.35938 0.59948 1.0) +wds=(0.0 0.001 0.01 0.1) +dps=(0.0 0.5) +steps=(1) + +lrs_server=(0.1 0.5 1.0) +momentums_server=(0.0 0.9) + +for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((w = 0; w < ${#wds[@]}; w++)); do + for ((d = 0; d < ${#dps[@]}; d++)); do + for ((s = 0; s < ${#steps[@]}; s++)); do + for ((sl = 0; sl < ${#lrs_server[@]}; sl++)); do + for ((ms = 0; ms < ${#momentums_server[@]}; ms++)); do + for k in {1..3}; do + python federatedscope/main.py --cfg fedhpo/graph/${dataset}/${dataset}.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} model.dropout ${dps[$d]} federate.local_update_steps ${steps[$s]} federate.sample_client_num $sample_num fedopt.use True federate.method FedOpt fedopt.lr_server ${lrs_server[$sl]} fedopt.momentum_server ${momentums_server[$ms]} seed $k outdir out_fedopt/${out_dir}_${sample_num} federate.share_local_model False federate.online_aggr False expname lr${lrs[$l]}_wd${wds[$w]}_dropout${dps[$d]}_step${steps[$s]}_lrserver${lrs_server[$sl]}_momentumsserver${momentums_server[$ms]}_seed${k} >/dev/null 2>&1 + done + done + done + done + done + done +done + +echo "HPO ends." diff --git a/benchmark/FedHPOB/scripts/gcn/run_opt_pubmed.sh b/benchmark/FedHPOB/scripts/gcn/run_opt_pubmed.sh new file mode 100644 index 000000000..911caa08e --- /dev/null +++ b/benchmark/FedHPOB/scripts/gcn/run_opt_pubmed.sh @@ -0,0 +1,38 @@ +set -e + +cudaid=$1 +sample_num=$2 + +cd ../.. + +dataset=pubmed + +out_dir=out_${dataset} + +echo "HPO starts..." + +lrs=(0.01 0.01668 0.02783 0.04642 0.07743 0.12915 0.21544 0.35938 0.59948 1.0) +wds=(0.0 0.001 0.01 0.1) +dps=(0.0 0.5) +steps=(1) + +lrs_server=(0.1 0.5 1.0) +momentums_server=(0.0 0.9) + +for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((w = 0; w < ${#wds[@]}; w++)); do + for ((d = 0; d < ${#dps[@]}; d++)); do + for ((s = 0; s < ${#steps[@]}; s++)); do + for ((sl = 0; sl < ${#lrs_server[@]}; sl++)); do + for ((ms = 0; ms < ${#momentums_server[@]}; ms++)); do + for k in {1..3}; do + python federatedscope/main.py --cfg fedhpo/graph/${dataset}/${dataset}.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} model.dropout ${dps[$d]} federate.local_update_steps ${steps[$s]} federate.sample_client_num $sample_num fedopt.use True federate.method FedOpt fedopt.lr_server ${lrs_server[$sl]} fedopt.momentum_server ${momentums_server[$ms]} seed $k outdir out_fedopt/${out_dir}_${sample_num} federate.share_local_model False federate.online_aggr False expname lr${lrs[$l]}_wd${wds[$w]}_dropout${dps[$d]}_step${steps[$s]}_lrserver${lrs_server[$sl]}_momentumsserver${momentums_server[$ms]}_seed${k} >/dev/null 2>&1 + done + done + done + done + done + done +done + +echo "HPO ends." diff --git a/benchmark/FedHPOB/scripts/lr/10101@openml.yaml b/benchmark/FedHPOB/scripts/lr/10101@openml.yaml new file mode 100644 index 000000000..8008aca11 --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/10101@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 10101@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/12@openml.yaml b/benchmark/FedHPOB/scripts/lr/12@openml.yaml new file mode 100644 index 000000000..9e9ae1db9 --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/12@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 12@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 10 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/146212@openml.yaml b/benchmark/FedHPOB/scripts/lr/146212@openml.yaml new file mode 100644 index 000000000..ad749551b --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/146212@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 146212@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 7 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/146606@openml.yaml b/benchmark/FedHPOB/scripts/lr/146606@openml.yaml new file mode 100644 index 000000000..b443b8dff --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/146606@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 146606@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/146818@openml.yaml b/benchmark/FedHPOB/scripts/lr/146818@openml.yaml new file mode 100644 index 000000000..aa42f0eaf --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/146818@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 146818@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/146821@openml.yaml b/benchmark/FedHPOB/scripts/lr/146821@openml.yaml new file mode 100644 index 000000000..e04b20a6e --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/146821@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 146821@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 4 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/146822@openml.yaml b/benchmark/FedHPOB/scripts/lr/146822@openml.yaml new file mode 100644 index 000000000..cadcb8243 --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/146822@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 146822@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 7 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/14965@openml.yaml b/benchmark/FedHPOB/scripts/lr/14965@openml.yaml new file mode 100644 index 000000000..9394a996a --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/14965@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 14965@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/167119@openml.yaml b/benchmark/FedHPOB/scripts/lr/167119@openml.yaml new file mode 100644 index 000000000..3d86764fc --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/167119@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 167119@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 3 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/167120@openml.yaml b/benchmark/FedHPOB/scripts/lr/167120@openml.yaml new file mode 100644 index 000000000..f925e5074 --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/167120@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 167120@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/168911@openml.yaml b/benchmark/FedHPOB/scripts/lr/168911@openml.yaml new file mode 100644 index 000000000..1e95c1c2d --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/168911@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 168911@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/168912@openml.yaml b/benchmark/FedHPOB/scripts/lr/168912@openml.yaml new file mode 100644 index 000000000..c1cbed8ae --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/168912@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 168912@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/31@openml.yaml b/benchmark/FedHPOB/scripts/lr/31@openml.yaml new file mode 100644 index 000000000..3f418a45e --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/31@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 31@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/3917@openml.yaml b/benchmark/FedHPOB/scripts/lr/3917@openml.yaml new file mode 100644 index 000000000..c21fde7d2 --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/3917@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 3917@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/3@openml.yaml b/benchmark/FedHPOB/scripts/lr/3@openml.yaml new file mode 100644 index 000000000..d503d9e71 --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/3@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 3@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/53@openml.yaml b/benchmark/FedHPOB/scripts/lr/53@openml.yaml new file mode 100644 index 000000000..d351cdf2c --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/53@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 53@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 4 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/7592@openml.yaml b/benchmark/FedHPOB/scripts/lr/7592@openml.yaml new file mode 100644 index 000000000..e5908f772 --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/7592@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 7592@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/9952@openml.yaml b/benchmark/FedHPOB/scripts/lr/9952@openml.yaml new file mode 100644 index 000000000..6dcd949d9 --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/9952@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 9952@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/9977@openml.yaml b/benchmark/FedHPOB/scripts/lr/9977@openml.yaml new file mode 100644 index 000000000..ebf1c4ff8 --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/9977@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 9977@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/9981@openml.yaml b/benchmark/FedHPOB/scripts/lr/9981@openml.yaml new file mode 100644 index 000000000..57582ef6d --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/9981@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 9981@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 9 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/openml_lr.yaml b/benchmark/FedHPOB/scripts/lr/openml_lr.yaml new file mode 100644 index 000000000..1fe6fe182 --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/openml_lr.yaml @@ -0,0 +1,29 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: lr + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/lr/run.sh b/benchmark/FedHPOB/scripts/lr/run.sh new file mode 100644 index 000000000..b8538c37c --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/run.sh @@ -0,0 +1,41 @@ +bash run_hpo_openml_mlp.sh 0 10101 & +bash run_hpo_openml_mlp.sh 1 53 & +bash run_hpo_openml_mlp.sh 2 146818 & +bash run_hpo_openml_mlp.sh 3 146821 & +bash run_hpo_openml_mlp.sh 4 9952 & +bash run_hpo_openml_mlp.sh 5 146822 & +bash run_hpo_openml_mlp.sh 6 31 & +bash run_hpo_openml_mlp.sh 7 3917 & +bash run_hpo_openml_mlp.sh 0 168912 & +bash run_hpo_openml_mlp.sh 1 3 & +bash run_hpo_openml_mlp.sh 2 167119 & +bash run_hpo_openml_mlp.sh 3 12 & +bash run_hpo_openml_mlp.sh 4 146212 & +bash run_hpo_openml_mlp.sh 5 168911 & +bash run_hpo_openml_mlp.sh 6 9981 & +bash run_hpo_openml_mlp.sh 7 167120 & +bash run_hpo_openml_mlp.sh 0 14965 & +bash run_hpo_openml_mlp.sh 1 146606 & +bash run_hpo_openml_mlp.sh 2 7592 & +bash run_hpo_openml_mlp.sh 3 9977 & + +bash run_hpo_openml_lr.sh 0 10101 & +bash run_hpo_openml_lr.sh 1 53 & +bash run_hpo_openml_lr.sh 2 146818 & +bash run_hpo_openml_lr.sh 3 146821 & +bash run_hpo_openml_lr.sh 4 9952 & +bash run_hpo_openml_lr.sh 5 146822 & +bash run_hpo_openml_lr.sh 6 31 & +bash run_hpo_openml_lr.sh 7 3917 & +bash run_hpo_openml_lr.sh 0 168912 & +bash run_hpo_openml_lr.sh 1 3 & +bash run_hpo_openml_lr.sh 2 167119 & +bash run_hpo_openml_lr.sh 3 12 & +bash run_hpo_openml_lr.sh 4 146212 & +bash run_hpo_openml_lr.sh 5 168911 & +bash run_hpo_openml_lr.sh 6 9981 & +bash run_hpo_openml_lr.sh 7 167120 & +bash run_hpo_openml_lr.sh 0 14965 & +bash run_hpo_openml_lr.sh 1 146606 & +bash run_hpo_openml_lr.sh 2 7592 & +bash run_hpo_openml_lr.sh 3 9977 & \ No newline at end of file diff --git a/benchmark/FedHPOB/scripts/lr/run_hpo_openml_lr.sh b/benchmark/FedHPOB/scripts/lr/run_hpo_openml_lr.sh new file mode 100644 index 000000000..b9b0da8b1 --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/run_hpo_openml_lr.sh @@ -0,0 +1,86 @@ +set -e + +cudaid=$1 +dataset=$2 + +cd ../.. + +out_dir=out_${dataset} + +if [ ! -d $out_dir ];then + mkdir $out_dir +fi + +if [[ $dataset = '10101' ]]; then + out_channels=2 +elif [[ $dataset = '53' ]]; then + out_channels=4 +elif [[ $dataset = '146818' ]]; then + out_channels=2 +elif [[ $dataset = '146821' ]]; then + out_channels=4 +elif [[ $dataset = '9952' ]]; then + out_channels=2 +elif [[ $dataset = '146822' ]]; then + out_channels=7 +elif [[ $dataset = '31' ]]; then + out_channels=2 +elif [[ $dataset = '3917' ]]; then + out_channels=2 +elif [[ $dataset = '168912' ]]; then + out_channels=2 +elif [[ $dataset = '3' ]]; then + out_channels=2 +elif [[ $dataset = '167119' ]]; then + out_channels=3 +elif [[ $dataset = '12' ]]; then + out_channels=10 +elif [[ $dataset = '146212' ]]; then + out_channels=7 +elif [[ $dataset = '168911' ]]; then + out_channels=2 +elif [[ $dataset = '9981' ]]; then + out_channels=9 +elif [[ $dataset = '167120' ]]; then + out_channels=2 +elif [[ $dataset = '14965' ]]; then + out_channels=2 +elif [[ $dataset = '146606' ]]; then + out_channels=2 +elif [[ $dataset = '7592' ]]; then + out_channels=2 +elif [[ $dataset = '9977' ]]; then + out_channels=2 +else + out_channels=2 +fi + +echo "HPO starts..." + +sample_rates=(0.2 0.4 0.6 0.8 1.0) +lrs=(0.00001 0.0001 0.001 0.01 0.1 1.0) +wds=(0.0 0.001 0.01 0.1) +steps=(1 2 3 4) +batch_sizes=(4 8 16 32 64 128 256) + +for (( sr=0; sr<${#sample_rates[@]}; sr++ )) +do + for (( l=0; l<${#lrs[@]}; l++ )) + do + for (( w=0; w<${#wds[@]}; w++ )) + do + for (( s=0; s<${#steps[@]}; s++ )) + do + for (( b=0; b<${#batch_sizes[@]}; b++ )) + do + for k in {1..3} + do + python federatedscope/main.py --cfg fedhpo/openml/openml_lr.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} federate.local_update_steps ${steps[$s]} data.type ${dataset}@openml data.batch_size ${batch_sizes[$b]} federate.sample_client_rate ${sample_rates[$sr]} model.out_channels $out_channels seed $k outdir lr/${out_dir}_${sample_rates[$sr]} expname lr${lrs[$l]}_wd${wds[$w]}_dropout0_step${steps[$s]}_batch${batch_sizes[$b]}_seed${k} >/dev/null 2>&1 + done + done + done + done + done +done + +echo "HPO ends." diff --git a/benchmark/FedHPOB/scripts/lr/run_opt_openml_lr.sh b/benchmark/FedHPOB/scripts/lr/run_opt_openml_lr.sh new file mode 100644 index 000000000..5c2b47bb8 --- /dev/null +++ b/benchmark/FedHPOB/scripts/lr/run_opt_openml_lr.sh @@ -0,0 +1,87 @@ +set -e + +cudaid=$1 +dataset=$2 + +cd ../.. + +out_dir=out_${dataset} + +if [ ! -d $out_dir ]; then + mkdir $out_dir +fi + +if [[ $dataset == '10101' ]]; then + out_channels=2 +elif [[ $dataset == '53' ]]; then + out_channels=4 +elif [[ $dataset == '146818' ]]; then + out_channels=2 +elif [[ $dataset == '146821' ]]; then + out_channels=4 +elif [[ $dataset == '9952' ]]; then + out_channels=2 +elif [[ $dataset == '146822' ]]; then + out_channels=7 +elif [[ $dataset == '31' ]]; then + out_channels=2 +elif [[ $dataset == '3917' ]]; then + out_channels=2 +elif [[ $dataset == '168912' ]]; then + out_channels=2 +elif [[ $dataset == '3' ]]; then + out_channels=2 +elif [[ $dataset == '167119' ]]; then + out_channels=3 +elif [[ $dataset == '12' ]]; then + out_channels=10 +elif [[ $dataset == '146212' ]]; then + out_channels=7 +elif [[ $dataset == '168911' ]]; then + out_channels=2 +elif [[ $dataset == '9981' ]]; then + out_channels=9 +elif [[ $dataset == '167120' ]]; then + out_channels=2 +elif [[ $dataset == '14965' ]]; then + out_channels=2 +elif [[ $dataset == '146606' ]]; then + out_channels=2 +elif [[ $dataset == '7592' ]]; then + out_channels=2 +elif [[ $dataset == '9977' ]]; then + out_channels=2 +else + out_channels=2 +fi + +echo "HPO starts..." + +sample_rates=(0.2 0.4 0.6 0.8 1.0) +lrs=(0.00001 0.0001 0.001 0.01 0.1 1.0) +wds=(0.0 0.001 0.01 0.1) +steps=(1) +batch_sizes=(4 8 16 32 64 128 256) + +lrs_server=(0.1 0.5 1.0) +momentums_server=(0.0 0.9) + +for ((sr = 0; sr < ${#sample_rates[@]}; sr++)); do + for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((w = 0; w < ${#wds[@]}; w++)); do + for ((s = 0; s < ${#steps[@]}; s++)); do + for ((sl = 0; sl < ${#lrs_server[@]}; sl++)); do + for ((ms = 0; ms < ${#momentums_server[@]}; ms++)); do + for ((b = 0; b < ${#batch_sizes[@]}; b++)); do + for k in {1..3}; do + python federatedscope/main.py --cfg fedhpo/openml/openml_lr.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} federate.local_update_steps ${steps[$s]} data.type ${dataset}@openml data.batch_size ${batch_sizes[$b]} federate.sample_client_rate ${sample_rates[$sr]} model.out_channels $out_channels federate.share_local_model False federate.online_aggr False fedopt.use True federate.method FedOpt fedopt.lr_server ${lrs_server[$sl]} fedopt.momentum_server ${momentums_server[$ms]} seed $k outdir out_fedopt/lr/${out_dir}_${sample_rates[$sr]} expname lr${lrs[$l]}_wd${wds[$w]}_dropout0_step${steps[$s]}_batch${batch_sizes[$b]}_lrserver${lrs_server[$sl]}_momentumsserver${momentums_server[$ms]}_seed${k} >/dev/null 2>&1 + done + done + done + done + done + done + done +done + +echo "HPO ends." diff --git a/benchmark/FedHPOB/scripts/mlp/10101@openml.yaml b/benchmark/FedHPOB/scripts/mlp/10101@openml.yaml new file mode 100644 index 000000000..1d8b036ff --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/10101@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 10101@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/12@openml.yaml b/benchmark/FedHPOB/scripts/mlp/12@openml.yaml new file mode 100644 index 000000000..e18306338 --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/12@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 12@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 10 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/146212@openml.yaml b/benchmark/FedHPOB/scripts/mlp/146212@openml.yaml new file mode 100644 index 000000000..8e497661d --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/146212@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 146212@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 7 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/146606@openml.yaml b/benchmark/FedHPOB/scripts/mlp/146606@openml.yaml new file mode 100644 index 000000000..c8c0dd47c --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/146606@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 146606@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/146818@openml.yaml b/benchmark/FedHPOB/scripts/mlp/146818@openml.yaml new file mode 100644 index 000000000..5f4e85e67 --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/146818@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 146818@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/146821@openml.yaml b/benchmark/FedHPOB/scripts/mlp/146821@openml.yaml new file mode 100644 index 000000000..6c8888b9b --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/146821@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 146821@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 4 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/146822@openml.yaml b/benchmark/FedHPOB/scripts/mlp/146822@openml.yaml new file mode 100644 index 000000000..a04f0bfe3 --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/146822@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 146822@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 7 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/14965@openml.yaml b/benchmark/FedHPOB/scripts/mlp/14965@openml.yaml new file mode 100644 index 000000000..0233d8435 --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/14965@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 14965@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/167119@openml.yaml b/benchmark/FedHPOB/scripts/mlp/167119@openml.yaml new file mode 100644 index 000000000..13536fb04 --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/167119@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 167119@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 3 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/167120@openml.yaml b/benchmark/FedHPOB/scripts/mlp/167120@openml.yaml new file mode 100644 index 000000000..a8b20fef8 --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/167120@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 167120@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/168911@openml.yaml b/benchmark/FedHPOB/scripts/mlp/168911@openml.yaml new file mode 100644 index 000000000..6a56eb617 --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/168911@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 168911@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/168912@openml.yaml b/benchmark/FedHPOB/scripts/mlp/168912@openml.yaml new file mode 100644 index 000000000..2373d715c --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/168912@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 168912@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/31@openml.yaml b/benchmark/FedHPOB/scripts/mlp/31@openml.yaml new file mode 100644 index 000000000..e60ce4e83 --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/31@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 31@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/3917@openml.yaml b/benchmark/FedHPOB/scripts/mlp/3917@openml.yaml new file mode 100644 index 000000000..90d3cad6c --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/3917@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 3917@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/3@openml.yaml b/benchmark/FedHPOB/scripts/mlp/3@openml.yaml new file mode 100644 index 000000000..eac42dc84 --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/3@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 3@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/53@openml.yaml b/benchmark/FedHPOB/scripts/mlp/53@openml.yaml new file mode 100644 index 000000000..7292bd319 --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/53@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 53@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 4 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/7592@openml.yaml b/benchmark/FedHPOB/scripts/mlp/7592@openml.yaml new file mode 100644 index 000000000..e1ac7d5de --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/7592@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 7592@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/9952@openml.yaml b/benchmark/FedHPOB/scripts/mlp/9952@openml.yaml new file mode 100644 index 000000000..8aa36fb6f --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/9952@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 9952@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/9977@openml.yaml b/benchmark/FedHPOB/scripts/mlp/9977@openml.yaml new file mode 100644 index 000000000..74a1e5d7d --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/9977@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 9977@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/9981@openml.yaml b/benchmark/FedHPOB/scripts/mlp/9981@openml.yaml new file mode 100644 index 000000000..113ef992e --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/9981@openml.yaml @@ -0,0 +1,30 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + type: 9981@openml + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 9 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/openml_mlp.yaml b/benchmark/FedHPOB/scripts/mlp/openml_mlp.yaml new file mode 100644 index 000000000..bf7ad20f4 --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/openml_mlp.yaml @@ -0,0 +1,29 @@ +use_gpu: True +device: 1 +early_stop: + patience: 100 +federate: + mode: 'standalone' + total_round_num: 250 + batch_or_epoch: 'epoch' + client_num: 5 + share_local_model: True + online_aggr: True +trainer: + type: 'general' +eval: + freq: 1 + metrics: ['acc', 'correct', 'f1'] + split: ['train', 'val', 'test'] +data: + splits: [0.8, 0.1, 0.1] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: mlp + out_channels: 2 +optimizer: + lr: 0.0001 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss diff --git a/benchmark/FedHPOB/scripts/mlp/run_hpo_openml_mlp.sh b/benchmark/FedHPOB/scripts/mlp/run_hpo_openml_mlp.sh new file mode 100644 index 000000000..3a1c37504 --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/run_hpo_openml_mlp.sh @@ -0,0 +1,99 @@ +set -e + +cudaid=$1 +dataset=$2 + +cd ../.. + +out_dir=out_${dataset} + +if [ ! -d $out_dir ];then + mkdir $out_dir +fi + +if [[ $dataset = '10101' ]]; then + out_channels=2 +elif [[ $dataset = '53' ]]; then + out_channels=4 +elif [[ $dataset = '146818' ]]; then + out_channels=2 +elif [[ $dataset = '146821' ]]; then + out_channels=4 +elif [[ $dataset = '9952' ]]; then + out_channels=2 +elif [[ $dataset = '146822' ]]; then + out_channels=7 +elif [[ $dataset = '31' ]]; then + out_channels=2 +elif [[ $dataset = '3917' ]]; then + out_channels=2 +elif [[ $dataset = '168912' ]]; then + out_channels=2 +elif [[ $dataset = '3' ]]; then + out_channels=2 +elif [[ $dataset = '167119' ]]; then + out_channels=3 +elif [[ $dataset = '12' ]]; then + out_channels=10 +elif [[ $dataset = '146212' ]]; then + out_channels=7 +elif [[ $dataset = '168911' ]]; then + out_channels=2 +elif [[ $dataset = '9981' ]]; then + out_channels=9 +elif [[ $dataset = '167120' ]]; then + out_channels=2 +elif [[ $dataset = '14965' ]]; then + out_channels=2 +elif [[ $dataset = '146606' ]]; then + out_channels=2 +elif [[ $dataset = '7592' ]]; then + out_channels=2 +elif [[ $dataset = '9977' ]]; then + out_channels=2 +else + out_channels=2 +fi + +echo "HPO starts..." + +sample_rates=(1.0 0.8 0.6 0.4 0.2) +lrs=(0.00001 0.0001 0.001 0.01 0.1 1.0) +wds=(0.0 0.001 0.01 0.1) +steps=(1 2 3 4) +batch_sizes=(4 8 16 32 64 128 256) +layers=(2 3 4) +hiddens=(16 32 64 128 256 512 1024) + +for (( sr=0; sr<${#sample_rates[@]}; sr++ )) +do + for (( l=0; l<${#lrs[@]}; l++ )) + do + for (( w=0; w<${#wds[@]}; w++ )) + do + for (( s=0; s<${#steps[@]}; s++ )) + do + for (( b=0; b<${#batch_sizes[@]}; b++ )) + do + for (( y=0; y<${#layers[@]}; y++ )) + do + for (( h=0; h<${#hiddens[@]}; h++ )) + do + for k in {1..3} + do + FILE="mlp/${out_dir}_${sample_rates[$sr]}/lr${lrs[$l]}_wd${wds[$w]}_dropout0_step${steps[$s]}_batch${batch_sizes[$b]}_layer${layers[$y]}_hidden${hiddens[$h]}_seed${k}" + if [ -d "$FILE" ]; then + echo "$FILE exists." + else + python main.py --cfg fedhpo/openml/openml_mlp.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} federate.local_update_steps ${steps[$s]} data.type ${dataset}@openml data.batch_size ${batch_sizes[$b]} federate.sample_client_rate ${sample_rates[$sr]} model.layer ${layers[$y]} model.hidden ${hiddens[$h]} model.out_channels $out_channels seed $k outdir mlp/${out_dir}_${sample_rates[$sr]} expname lr${lrs[$l]}_wd${wds[$w]}_dropout0_step${steps[$s]}_batch${batch_sizes[$b]}_layer${layers[$y]}_hidden${hiddens[$h]}_seed${k} >/dev/null 2>&1 + fi + done + done + done + done + done + done + done +done + +echo "HPO ends." \ No newline at end of file diff --git a/benchmark/FedHPOB/scripts/mlp/run_opt_openml_mlp.sh b/benchmark/FedHPOB/scripts/mlp/run_opt_openml_mlp.sh new file mode 100644 index 000000000..69b1cab0e --- /dev/null +++ b/benchmark/FedHPOB/scripts/mlp/run_opt_openml_mlp.sh @@ -0,0 +1,89 @@ +set -e + +cudaid=$1 +dataset=$2 + +cd ../.. + +out_dir=out_${dataset} + +if [ ! -d $out_dir ]; then + mkdir $out_dir +fi + +if [[ $dataset == '10101' ]]; then + out_channels=2 +elif [[ $dataset == '53' ]]; then + out_channels=4 +elif [[ $dataset == '146818' ]]; then + out_channels=2 +elif [[ $dataset == '146821' ]]; then + out_channels=4 +elif [[ $dataset == '9952' ]]; then + out_channels=2 +elif [[ $dataset == '146822' ]]; then + out_channels=7 +elif [[ $dataset == '31' ]]; then + out_channels=2 +elif [[ $dataset == '3917' ]]; then + out_channels=2 +elif [[ $dataset == '168912' ]]; then + out_channels=2 +elif [[ $dataset == '3' ]]; then + out_channels=2 +elif [[ $dataset == '167119' ]]; then + out_channels=3 +elif [[ $dataset == '12' ]]; then + out_channels=10 +elif [[ $dataset == '146212' ]]; then + out_channels=7 +elif [[ $dataset == '168911' ]]; then + out_channels=2 +elif [[ $dataset == '9981' ]]; then + out_channels=9 +elif [[ $dataset == '167120' ]]; then + out_channels=2 +elif [[ $dataset == '14965' ]]; then + out_channels=2 +elif [[ $dataset == '146606' ]]; then + out_channels=2 +elif [[ $dataset == '7592' ]]; then + out_channels=2 +elif [[ $dataset == '9977' ]]; then + out_channels=2 +else + out_channels=2 +fi + +echo "HPO starts..." + +sample_rates=(0.2 0.4 0.6 0.8 1.0) +lrs=(0.00001 0.0001 0.001 0.01 0.1 1.0) +wds=(0.0 0.001 0.01 0.1) +steps=(1) +batch_sizes=(32 64 128 256) +layers=(2 3 4) +hiddens=(16 64 256) + +lrs_server=(0.1 0.5 1.0) +momentums_server=(0.0 0.9) + +for ((sr = 0; sr < ${#sample_rates[@]}; sr++)); do + for ((l = 0; l < ${#lrs[@]}; l++)); do + for ((w = 0; w < ${#wds[@]}; w++)); do + for ((s = 0; s < ${#steps[@]}; s++)); do + for ((b = 0; b < ${#batch_sizes[@]}; b++)); do + for ((y = 0; y < ${#layers[@]}; y++)); do + for ((h = 0; h < ${#hiddens[@]}; h++)); do + for k in {1..3}; do + python main.py --cfg fedhpo/openml/openml_mlp.yaml device $cudaid optimizer.lr ${lrs[$l]} optimizer.weight_decay ${wds[$w]} federate.local_update_steps ${steps[$s]} data.type ${dataset}@openml data.batch_size ${batch_sizes[$b]} federate.sample_client_rate ${sample_rates[$sr]} model.layer ${layers[$y]} model.hidden ${hiddens[$h]} model.out_channels $out_channels federate.share_local_model False federate.online_aggr False fedopt.use True federate.method FedOpt fedopt.lr_server ${lrs_server[$sl]} fedopt.momentum_server ${momentums_server[$ms]} seed $k outdir out_fedopt/mlp/${out_dir}_${sample_rates[$sr]} expname lr${lrs[$l]}_wd${wds[$w]}_dropout0_step${steps[$s]}_batch${batch_sizes[$b]}_layer${layers[$y]}_hidden${hiddens[$h]}_lrserver${lrs_server[$sl]}_momentumsserver${momentums_server[$ms]}_seed${k} >/dev/null 2>&1 + done + done + done + done + done + done + done +done + +echo "HPO ends." \ No newline at end of file diff --git a/demo/bbo.py b/demo/bbo.py new file mode 100644 index 000000000..4e4788d49 --- /dev/null +++ b/demo/bbo.py @@ -0,0 +1,110 @@ +"""This python script is provided to demonstrate the interaction between emukit and FederatedScope. +Specifically, we apply Black-Box Optimization (BBO) to search the optimal hyperparameters of the considered federated learning algorithms. +emukit can be installed by `pip install emukit` +""" +import numpy as np +import matplotlib.pyplot as plt +from matplotlib import colors as mcolors + +from emukit.test_functions import forrester_function +from emukit.core import ContinuousParameter, CategoricalParameter, ParameterSpace +from emukit.examples.gp_bayesian_optimization.single_objective_bayesian_optimization import GPBayesianOptimization + +### --- Figure config +LEGEND_SIZE = 15 + + +def eval_fl_algo(x): + from federatedscope.core.cmd_args import parse_args + from federatedscope.core.auxiliaries.data_builder import get_data + from federatedscope.core.auxiliaries.utils import setup_seed, update_logger + from federatedscope.core.auxiliaries.worker_builder import get_client_cls, get_server_cls + from federatedscope.core.configs.config import global_cfg + from federatedscope.core.fed_runner import FedRunner + + init_cfg = global_cfg.clone() + init_cfg.merge_from_file( + "federatedscope/example_configs/single_process.yaml") + init_cfg.merge_from_list(["optimizer.lr", float(x[0])]) + + update_logger(init_cfg, True) + setup_seed(init_cfg.seed) + + # federated dataset might change the number of clients + # thus, we allow the creation procedure of dataset to modify the global cfg object + data, modified_cfg = get_data(config=init_cfg.clone()) + init_cfg.merge_from_other_cfg(modified_cfg) + + init_cfg.freeze() + + runner = FedRunner(data=data, + server_class=get_server_cls(init_cfg), + client_class=get_client_cls(init_cfg), + config=init_cfg.clone()) + results = runner.run() + + # so that we could modify cfg in the next trial + init_cfg.defrost() + + return [results['client_summarized_weighted_avg']['test_avg_loss']] + + +def our_target_func(x): + return np.asarray([eval_fl_algo(elem) for elem in x]) + + +def main(): + #target_function, space = forrester_function() + target_function = our_target_func + space = ParameterSpace([ContinuousParameter('lr', 1e-4, .75)]) + x_plot = np.linspace(space.parameters[0].min, space.parameters[0].max, + 200)[:, None] + #y_plot = target_function(x_plot) + X_init = np.array([[0.005], [0.05], [0.5]]) + Y_init = target_function(X_init) + + bo = GPBayesianOptimization(variables_list=space.parameters, + X=X_init, + Y=Y_init) + bo.run_optimization(target_function, 15) + + mu_plot, var_plot = bo.model.predict(x_plot) + + plt.figure(figsize=(12, 8)) + plt.plot(bo.loop_state.X, + bo.loop_state.Y, + "ro", + markersize=10, + label="Observations") + #plt.plot(x_plot, y_plot, "k", label="Objective Function") + #plt.plot(x_plot, mu_plot, "C0", label="Model") + plt.fill_between(x_plot[:, 0], + mu_plot[:, 0] + np.sqrt(var_plot)[:, 0], + mu_plot[:, 0] - np.sqrt(var_plot)[:, 0], + color="C0", + alpha=0.6) + + plt.fill_between(x_plot[:, 0], + mu_plot[:, 0] + 2 * np.sqrt(var_plot)[:, 0], + mu_plot[:, 0] - 2 * np.sqrt(var_plot)[:, 0], + color="C0", + alpha=0.4) + + plt.fill_between(x_plot[:, 0], + mu_plot[:, 0] + 3 * np.sqrt(var_plot)[:, 0], + mu_plot[:, 0] - 3 * np.sqrt(var_plot)[:, 0], + color="C0", + alpha=0.2) + plt.legend(loc=2, prop={'size': LEGEND_SIZE}) + plt.xlabel(r"$x$") + plt.ylabel(r"$f(x)$") + plt.grid(True) + plt.xlim(0, 0.75) + + #plt.show() + plt.savefig("bbo.pdf", bbox_inches='tight') + plt.close() + + +if __name__ == "__main__": + main() diff --git a/demo/hpbandster/rs.py b/demo/hpbandster/rs.py new file mode 100644 index 000000000..e45bb6a9f --- /dev/null +++ b/demo/hpbandster/rs.py @@ -0,0 +1,167 @@ +#import numpy +import time + +import ConfigSpace as CS +from hpbandster.core.worker import Worker + +import logging + +logging.basicConfig(level=logging.WARNING) + +import argparse + +import hpbandster.core.nameserver as hpns +import hpbandster.core.result as hpres + +from hpbandster.optimizers import BOHB as BOHB +from hpbandster.optimizers.randomsearch import RandomSearch +#from hpbandster.examples.commons import MyWorker + +parser = argparse.ArgumentParser( + description='Example 1 - sequential and local execution.') +parser.add_argument('--min_budget', + type=float, + help='Minimum budget used during the optimization.', + default=1) +parser.add_argument('--max_budget', + type=float, + help='Maximum budget used during the optimization.', + default=27) +parser.add_argument('--n_iterations', + type=int, + help='Number of iterations performed by the optimizer', + default=4) +args = parser.parse_args() + + +def eval_fl_algo(x, b): + from federatedscope.core.cmd_args import parse_args + from federatedscope.core.auxiliaries.data_builder import get_data + from federatedscope.core.auxiliaries.utils import setup_seed, update_logger + from federatedscope.core.auxiliaries.worker_builder import get_client_cls, get_server_cls + from federatedscope.core.configs.config import global_cfg + from federatedscope.core.fed_runner import FedRunner + + init_cfg = global_cfg.clone() + init_cfg.merge_from_file( + "federatedscope/example_configs/single_process.yaml") + # specify the configuration of interest + init_cfg.merge_from_list([ + "optimizer.lr", + float(x['lr']), "optimizer.weight_decay", + float(x['wd']), "model.dropout", + float(x["dropout"]) + ]) + # specify the budget + init_cfg.merge_from_list( + ["federate.total_round_num", + int(b), "eval.freq", + int(b)]) + + update_logger(init_cfg, True) + setup_seed(init_cfg.seed) + + # federated dataset might change the number of clients + # thus, we allow the creation procedure of dataset to modify the global cfg object + data, modified_cfg = get_data(config=init_cfg.clone()) + init_cfg.merge_from_other_cfg(modified_cfg) + + init_cfg.freeze() + + runner = FedRunner(data=data, + server_class=get_server_cls(init_cfg), + client_class=get_client_cls(init_cfg), + config=init_cfg.clone()) + results = runner.run() + + # so that we could modify cfg in the next trial + init_cfg.defrost() + + return results['client_summarized_weighted_avg']['test_avg_loss'] + + +class MyWorker(Worker): + def __init__(self, *args, sleep_interval=0, **kwargs): + super(MyWorker, self).__init__(*args, **kwargs) + + self.sleep_interval = sleep_interval + + def compute(self, config, budget, **kwargs): + """ + Simple example for a compute function + The loss is just a the config + some noise (that decreases with the budget) + + For dramatization, the function can sleep for a given interval to emphasizes + the speed ups achievable with parallel workers. + + Args: + config: dictionary containing the sampled configurations by the optimizer + budget: (float) amount of time/epochs/etc. the model can use to train + + Returns: + dictionary with mandatory fields: + 'loss' (scalar) + 'info' (dict) + """ + + #res = numpy.clip(config['x'] + numpy.random.randn()/budget, config['x']/2, 1.5*config['x']) + res = eval_fl_algo(config, budget) + time.sleep(self.sleep_interval) + + return ({ + 'loss': float( + res), # this is the a mandatory field to run hyperband + 'info': res # can be used for any user-defined information - also mandatory + }) + + @staticmethod + def get_configspace(): + config_space = CS.ConfigurationSpace() + config_space.add_hyperparameter( + CS.UniformFloatHyperparameter('lr', + lower=1e-4, + upper=1.0, + log=True)) + config_space.add_hyperparameter( + CS.UniformFloatHyperparameter('dropout', lower=.0, upper=.5)) + config_space.add_hyperparameter( + CS.CategoricalHyperparameter('wd', choices=[0.0, 0.5])) + return config_space + + +def main(): + NS = hpns.NameServer(run_id='example1', host='127.0.0.1', port=None) + NS.start() + + w = MyWorker(sleep_interval=0, nameserver='127.0.0.1', run_id='example1') + w.run(background=True) + + #bohb = BOHB( configspace = w.get_configspace(), + # run_id = 'example1', nameserver='127.0.0.1', + # min_budget=args.min_budget, max_budget=args.max_budget + # ) + rs = RandomSearch(configspace=w.get_configspace(), + run_id='example1', + nameserver='127.0.0.1', + min_budget=args.min_budget, + max_budget=args.max_budget) + #res = bohb.run(n_iterations=args.n_iterations) + res = rs.run(n_iterations=args.n_iterations) + + #bohb.shutdown(shutdown_workers=True) + rs.shutdown(shutdown_workers=True) + NS.shutdown() + + id2config = res.get_id2config_mapping() + incumbent = res.get_incumbent_id() + + print('Best found configuration:', id2config[incumbent]['config']) + print('A total of %i unique configurations where sampled.' % + len(id2config.keys())) + print('A total of %i runs where executed.' % len(res.get_all_runs())) + print('Total budget corresponds to %.1f full function evaluations.' % + (sum([r.budget for r in res.get_all_runs()]) / args.max_budget)) + + +if __name__ == "__main__": + main() diff --git a/demo/smac/gp.py b/demo/smac/gp.py new file mode 100644 index 000000000..a0a72e2ad --- /dev/null +++ b/demo/smac/gp.py @@ -0,0 +1,81 @@ +""" +This script is provided to demonstrate the usage of SMAC's Black-box model with Gaussian Process model, where we have assumed the availability of related packages. +More details about SMAC can be found at https://github.com/automl/SMAC3 +""" +import numpy as np + +from ConfigSpace import ConfigurationSpace +from ConfigSpace.hyperparameters import UniformIntegerHyperparameter, UniformFloatHyperparameter, CategoricalHyperparameter +from smac.facade.smac_bb_facade import SMAC4BB +from smac.scenario.scenario import Scenario + + +def eval_fl_algo(x): + from federatedscope.core.cmd_args import parse_args + from federatedscope.core.auxiliaries.data_builder import get_data + from federatedscope.core.auxiliaries.utils import setup_seed, update_logger + from federatedscope.core.auxiliaries.worker_builder import get_client_cls, get_server_cls + from federatedscope.core.configs.config import global_cfg + from federatedscope.core.fed_runner import FedRunner + + init_cfg = global_cfg.clone() + init_cfg.merge_from_file( + "federatedscope/example_configs/single_process.yaml") + # specify the configuration of interest + init_cfg.merge_from_list([ + "optimizer.lr", + float(x['lr']), "optimizer.weight_decay", + float(x['wd']), "model.dropout", + float(x["dropout"]) + ]) + + update_logger(init_cfg, True) + setup_seed(init_cfg.seed) + + # federated dataset might change the number of clients + # thus, we allow the creation procedure of dataset to modify the global cfg object + data, modified_cfg = get_data(config=init_cfg.clone()) + init_cfg.merge_from_other_cfg(modified_cfg) + + init_cfg.freeze() + + runner = FedRunner(data=data, + server_class=get_server_cls(init_cfg), + client_class=get_client_cls(init_cfg), + config=init_cfg.clone()) + results = runner.run() + + # so that we could modify cfg in the next trial + init_cfg.defrost() + + return results['client_summarized_weighted_avg']['test_avg_loss'] + + +def main(): + # Define your hyperparameters + configspace = ConfigurationSpace() + #configspace.add_hyperparameter(UniformIntegerHyperparameter("depth", 2, 100)) + configspace.add_hyperparameter( + UniformFloatHyperparameter("lr", lower=1e-4, upper=1.0, log=True)) + configspace.add_hyperparameter( + UniformFloatHyperparameter("dropout", lower=.0, upper=.5)) + configspace.add_hyperparameter( + CategoricalHyperparameter("wd", choices=[0.0, 0.5])) + + # Provide meta data for the optimization + scenario = Scenario({ + "run_obj": "quality", # Optimize quality (alternatively runtime) + "runcount-limit": 8, # Max number of function evaluations (the more the better) + "cs": configspace, + 'output_dir': "smac_gp", + }) + + # a summary of SMAC's facades: https://automl.github.io/SMAC3/master/pages/details/facades.html?highlight=random%20forest#facades + smac = SMAC4BB(model_type='gp', scenario=scenario, tae_runner=eval_fl_algo) + best_found_config = smac.optimize() + print(best_found_config) + #run_history = smac.get_runhistory() + + +if __name__ == "__main__": + main() diff --git a/demo/smac/rf.py b/demo/smac/rf.py new file mode 100644 index 000000000..05478e5ba --- /dev/null +++ b/demo/smac/rf.py @@ -0,0 +1,81 @@ +""" +This script is provided to demonstrate the usage of SMAC's Black-box optimization with Random Forest model, where we have assumed the availability of related packages. +More details about SMAC can be found at https://github.com/automl/SMAC3 +""" +import numpy as np + +from ConfigSpace import ConfigurationSpace +from ConfigSpace.hyperparameters import UniformIntegerHyperparameter, UniformFloatHyperparameter, CategoricalHyperparameter +from smac.facade.smac_hpo_facade import SMAC4HPO +from smac.scenario.scenario import Scenario + + +def eval_fl_algo(x): + from federatedscope.core.cmd_args import parse_args + from federatedscope.core.auxiliaries.data_builder import get_data + from federatedscope.core.auxiliaries.utils import setup_seed, update_logger + from federatedscope.core.auxiliaries.worker_builder import get_client_cls, get_server_cls + from federatedscope.core.configs.config import global_cfg + from federatedscope.core.fed_runner import FedRunner + + init_cfg = global_cfg.clone() + init_cfg.merge_from_file( + "federatedscope/example_configs/single_process.yaml") + # specify the configuration of interest + init_cfg.merge_from_list([ + "optimizer.lr", + float(x['lr']), "optimizer.weight_decay", + float(x['wd']), "model.dropout", + float(x["dropout"]) + ]) + + update_logger(init_cfg, True) + setup_seed(init_cfg.seed) + + # federated dataset might change the number of clients + # thus, we allow the creation procedure of dataset to modify the global cfg object + data, modified_cfg = get_data(config=init_cfg.clone()) + init_cfg.merge_from_other_cfg(modified_cfg) + + init_cfg.freeze() + + runner = FedRunner(data=data, + server_class=get_server_cls(init_cfg), + client_class=get_client_cls(init_cfg), + config=init_cfg.clone()) + results = runner.run() + + # so that we could modify cfg in the next trial + init_cfg.defrost() + + return results['client_summarized_weighted_avg']['test_avg_loss'] + + +def main(): + # Define your hyperparameters + configspace = ConfigurationSpace() + #configspace.add_hyperparameter(UniformIntegerHyperparameter("depth", 2, 100)) + configspace.add_hyperparameter( + UniformFloatHyperparameter("lr", lower=1e-4, upper=1.0, log=True)) + configspace.add_hyperparameter( + UniformFloatHyperparameter("dropout", lower=.0, upper=.5)) + configspace.add_hyperparameter( + CategoricalHyperparameter("wd", choices=[0.0, 0.5])) + + # Provide meta data for the optimization + scenario = Scenario({ + "run_obj": "quality", # Optimize quality (alternatively runtime) + "runcount-limit": 8, # Max number of function evaluations (the more the better) + "cs": configspace, + 'output_dir': "smac_rf", + }) + + # a summary of SMAC's facades: https://automl.github.io/SMAC3/master/pages/details/facades.html?highlight=random%20forest#facades + smac = SMAC4HPO(scenario=scenario, tae_runner=eval_fl_algo) + best_found_config = smac.optimize() + print(best_found_config) + #run_history = smac.get_runhistory() + + +if __name__ == "__main__": + main() diff --git a/demo/synthetic.py b/demo/synthetic.py new file mode 100644 index 000000000..ff200b5c0 --- /dev/null +++ b/demo/synthetic.py @@ -0,0 +1,55 @@ +import numpy as np + + +def FL(x, objs, sizes): + cur_x = x + if not isinstance(sizes, list): + sizes = len(objs) * [sizes] + for r in range(5): + updates = [] + for i, f in enumerate(objs): + val, grad = f(cur_x) + updates.append(-1.0 * sizes[i] * grad) + cur_x += np.mean(updates) + vals = [] + for i, f in enumerate(objs): + val, grad = f(cur_x) + vals.append(val) + return np.mean(vals) + + +if __name__ == "__main__": + Fis = [] + for a in [0.02, 0.1, 0.5, 2.5, 12.5]: + Fis.append(lambda x: (a * x**2, 2 * a * x)) + # without personalization + best = float("inf") + best_lr = None + for d in range(64): + lr = 0.001 + d * (0.625 - 0.001) / (64 - 1) + results = [] + for i in range(32): + np.random.seed(i + 123) + init_x = np.random.uniform(-10.0, 10.0) + results.append(FL(init_x, Fis, lr)) + print(np.mean(results), lr) + if best > np.mean(results): + best = np.mean(results) + best_lr = lr + print(best, best_lr) + + # with personalization + best = float("inf") + best_lrs = None + for trial in range(64): + np.random.seed(trial + 123) + lrs = np.random.choice([0.001, 0.005, 0.025, 0.125, 0.625], 5) + results = [] + for _ in range(32): + np.random.seed(i + 123) + init_x = np.random.uniform(-10.0, 10.0) + results.append(FL(init_x, Fis, lrs)) + if best > np.mean(results): + best = np.mean(results) + best_lrs = lrs + print(best, best_lrs) diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 000000000..fcc194d6f --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,36 @@ +# Copyright 2017 The Ray Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 000000000..f39e2619b --- /dev/null +++ b/doc/README.md @@ -0,0 +1,7 @@ +## FederatedScope Documentation +Please run the following commands from this directory to compile the documentation. Note that FederatedScope must be installed first. + +``` +pip install -r requirements-doc.txt +make html +``` diff --git a/doc/make.bat b/doc/make.bat new file mode 100644 index 000000000..7e5fc245b --- /dev/null +++ b/doc/make.bat @@ -0,0 +1,50 @@ +:: Copyright 2017 The Ray Authors. +:: +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: https://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/doc/requirements-doc.txt b/doc/requirements-doc.txt new file mode 100644 index 000000000..22397f2b1 --- /dev/null +++ b/doc/requirements-doc.txt @@ -0,0 +1,15 @@ +colorama +click +filelock +flatbuffers +funcsigs +numpy +opencv-python-headless +pyarrow +pyyaml +recommonmark +setproctitle +sphinx +sphinx-click +sphinx_rtd_theme +pandas diff --git a/doc/source/attack.rst b/doc/source/attack.rst new file mode 100644 index 000000000..730a5019c --- /dev/null +++ b/doc/source/attack.rst @@ -0,0 +1,36 @@ +Attack Module References +====================== + +federatedscope.attack.privacy_attacks +------------------------------------------- + +.. automodule:: federatedscope.attack.privacy_attacks + :members: + + +federatedscope.attack.worker_as_attacker +------------------------------------------- + +.. automodule:: federatedscope.attack.worker_as_attacker + :members: + +federatedscope.attack.auxiliary +-------------------------------- + +.. automodule:: federatedscope.attack.auxiliary + :members: + + + +federatedscope.attack.trainer +--------------------------------- + +.. automodule:: federatedscope.attack.trainer + :members: + + + + + + + diff --git a/doc/source/autotune.rst b/doc/source/autotune.rst new file mode 100644 index 000000000..e8e1b153c --- /dev/null +++ b/doc/source/autotune.rst @@ -0,0 +1,15 @@ +Auto-tuning Module References +======================= + +federatedscope.autotune.choice_types +----------------------- + +.. automodule:: federatedscope.autotune.choice_types + :members: + +federatedscope.autotune.algos +----------------------- + +.. automodule:: federatedscope.autotune.algos + :show-inheritance: + :members: diff --git a/doc/source/conf.py b/doc/source/conf.py new file mode 100644 index 000000000..5a2eaa8ee --- /dev/null +++ b/doc/source/conf.py @@ -0,0 +1,83 @@ +# Copyright 2017 The Ray Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys + +sys.path.insert(0, os.path.abspath('../../')) + +# -- Project information ----------------------------------------------------- + +project = u'federatedscope' +copyright = u'2022, The DAIL Team' +author = u'The DAIL Team' + +# The full version, including alpha/beta/rc tags +from federatedscope import __version__ as version + +release = version + +# -- General configuration --------------------------------------------------- +# Explicitly specify the root .rst file, as different versions use +# different default roots. +master_doc = 'index' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.viewcode', + 'sphinx.ext.napoleon', + #'sphinx_click.ext', +] + +# source_suffix = '.rst' +#source_suffix = ['.rst', '.md'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['build'] + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +import sphinx_rtd_theme + +html_theme = 'sphinx_rtd_theme' +html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] diff --git a/doc/source/core.rst b/doc/source/core.rst new file mode 100644 index 000000000..11b9c87e5 --- /dev/null +++ b/doc/source/core.rst @@ -0,0 +1,33 @@ +Core Module References +======================= + +federatedscope.core.configs +----------------------- + +.. automodule:: federatedscope.core.configs + :members: + + +federatedscope.core.monitors +----------------------- + +.. automodule:: federatedscope.core.monitors + :members: + +federatedscope.core.fed_runner +----------------------- + +.. automodule:: federatedscope.core.fed_runner + :members: + +federatedscope.core.worker +----------------------- + +.. automodule:: federatedscope.core.worker + :members: + +federatedscope.core.trainers +----------------------- + +.. automodule:: federatedscope.core.trainers + :members: diff --git a/doc/source/cv.rst b/doc/source/cv.rst new file mode 100644 index 000000000..ef3700bcc --- /dev/null +++ b/doc/source/cv.rst @@ -0,0 +1,26 @@ +Federated Computer Vision Module References +======================= + +federatedscope.cv.dataset +----------------------- + +.. automodule:: federatedscope.cv.dataset + :members: + +federatedscope.cv.dataloader +----------------------- + +.. automodule:: federatedscope.cv.dataloader + :members: + +federatedscope.cv.model +----------------------- + +.. automodule:: federatedscope.cv.model + :members: + +federatedscope.cv.trainer +----------------------- + +.. automodule:: federatedscope.cv.trainer + :members: diff --git a/doc/source/gfl.rst b/doc/source/gfl.rst new file mode 100644 index 000000000..3e7d07e8a --- /dev/null +++ b/doc/source/gfl.rst @@ -0,0 +1,26 @@ +Federated Graph Learning Module References +======================= + +federatedscope.gfl.dataset +----------------------- + +.. automodule:: federatedscope.gfl.dataset + :members: + +federatedscope.gfl.dataloader +----------------------- + +.. automodule:: federatedscope.gfl.dataloader + :members: + +federatedscope.gfl.model +----------------------- + +.. automodule:: federatedscope.gfl.model + :members: + +federatedscope.gfl.trainer +----------------------- + +.. automodule:: federatedscope.gfl.trainer + :members: diff --git a/doc/source/index.rst b/doc/source/index.rst new file mode 100644 index 000000000..92248840d --- /dev/null +++ b/doc/source/index.rst @@ -0,0 +1,27 @@ +.. FederatedScope documentation master file, created by + sphinx-quickstart on Mon Jan 5th 14:01:03 2022 + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to FederatedScope's documentation! +===================================== + +.. raw:: html + + + Fork me on GitLab + + +*FederatedScope is a python package for federated learning research and applications.* + +.. toctree:: + :maxdepth: 1 + :caption: References + + core.rst + cv.rst + nlp.rst + gfl.rst + autotune.rst + attack.rst + mf.rst \ No newline at end of file diff --git a/doc/source/mf.rst b/doc/source/mf.rst new file mode 100644 index 000000000..94485783a --- /dev/null +++ b/doc/source/mf.rst @@ -0,0 +1,26 @@ +Federated Matrix Factorization Module References +======================= + +federatedscope.mf.dataset +----------------------- + +.. automodule:: federatedscope.mf.dataset + :members: + +federatedscope.mf.model +----------------------- + +.. automodule:: federatedscope.mf.model + :members: + +federatedscope.mf.dataloader +----------------------- + +.. automodule:: federatedscope.mf.dataloader + :members: + +federatedscope.mf.trainer +----------------------- + +.. automodule:: federatedscope.mf.trainer + :members: diff --git a/doc/source/nlp.rst b/doc/source/nlp.rst new file mode 100644 index 000000000..26c87fdcb --- /dev/null +++ b/doc/source/nlp.rst @@ -0,0 +1,26 @@ +Federated Natural Language Processing Module References +======================= + +federatedscope.nlp.dataset +----------------------- + +.. automodule:: federatedscope.nlp.dataset + :members: + +federatedscope.nlp.dataloader +----------------------- + +.. automodule:: federatedscope.nlp.dataloader + :members: + +federatedscope.nlp.model +----------------------- + +.. automodule:: federatedscope.nlp.model + :members: + +federatedscope.nlp.trainer +----------------------- + +.. automodule:: federatedscope.nlp.trainer + :members: diff --git a/enviroment/docker_files/README.md b/enviroment/docker_files/README.md new file mode 100644 index 000000000..05047418a --- /dev/null +++ b/enviroment/docker_files/README.md @@ -0,0 +1,15 @@ + + +# Intro +We provide several docker files for easy environments set-up. +The federatedscope images include all runtime stuffs with customized miniconda and required packages installed. + +The docker images are based on the nvidia-docker. +Please pre-install the NVIDIA drivers and `nvidia-docker2` in the host machine, +see details in https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html + +# Images +- `federatedscope-torch1.10.Dockerfile`: based on cuda:11.3 and ubuntu20.04, installed basic env with torch 1.10.1 +- `federatedscope-torch1.10-application.Dockerfile`: based on cuda:11.3 and ubuntu20.04, installed torch 1.10.1, and down-stream applications such as graph and nlp +- `federatedscope-torch1.8.Dockerfile`: based on cuda:10.2 and ubuntu18.0, installed torch 1.8.0, used in the initial version development +- `federatedscope-jupyterhub`: based on cuda:11.3 and ubuntu20.04, installed torch 1.10.1, jupyter-singleuser for jupyterhub \ No newline at end of file diff --git a/enviroment/docker_files/federatedscope-jupyterhub/Dockerfile b/enviroment/docker_files/federatedscope-jupyterhub/Dockerfile new file mode 100644 index 000000000..46a11b944 --- /dev/null +++ b/enviroment/docker_files/federatedscope-jupyterhub/Dockerfile @@ -0,0 +1,221 @@ +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. + +# The federatedscope-jupyterhub image includes all runtime stuffs of federatedscope, +# with customized miniconda, required packages installed and jupyter-singleuser running. + +ARG ROOT_CONTAINER=nvidia/cuda:11.3.1-runtime-ubuntu20.04 + +FROM $ROOT_CONTAINER + +LABEL maintainer="FederatedScope" +ARG NB_USER="jovyan" +ARG NB_UID="1000" +ARG NB_GID="100" + +# Fix: https://github.com/hadolint/hadolint/wiki/DL4006 +# Fix: https://github.com/koalaman/shellcheck/wiki/SC3014 +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +USER root + +# *************************************** +# Install JupyterHub +# *************************************** + +# Install all OS dependencies for notebook server that starts but lacks all +# features (e.g., download as all possible file formats) +ENV DEBIAN_FRONTEND noninteractive +RUN apt-get update --yes && \ + # - apt-get upgrade is run to patch known vulnerabilities in apt-get packages as + # the ubuntu base image is rebuilt too seldom sometimes (less than once a month) + apt-get upgrade --yes && \ + apt-get install --yes --no-install-recommends \ + ca-certificates \ + fonts-liberation \ + locales \ + # - pandoc is used to convert notebooks to html files + # it's not present in arm64 ubuntu image, so we install it here + pandoc \ + # - run-one - a wrapper script that runs no more + # than one unique instance of some command with a unique set of arguments, + # we use `run-one-constantly` to support `RESTARTABLE` option + run-one \ + sudo \ + # - tini is installed as a helpful container entrypoint that reaps zombie + # processes and such of the actual executable we want to start, see + # https://github.com/krallin/tini#why-tini for details. + tini \ + wget && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ + echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ + locale-gen + +# Configure environment +ENV CONDA_DIR=/opt/conda \ + SHELL=/bin/bash \ + NB_USER="${NB_USER}" \ + NB_UID=${NB_UID} \ + NB_GID=${NB_GID} \ + LC_ALL=en_US.UTF-8 \ + LANG=en_US.UTF-8 \ + LANGUAGE=en_US.UTF-8 +ENV PATH="${CONDA_DIR}/bin:${PATH}" \ + HOME="/home/${NB_USER}" + +# Copy a script that we will use to correct permissions after running certain commands +COPY fix-permissions /usr/local/bin/fix-permissions +RUN chmod a+rx /usr/local/bin/fix-permissions + +# Enable prompt color in the skeleton .bashrc before creating the default NB_USER +# hadolint ignore=SC2016 +RUN sed -i 's/^#force_color_prompt=yes/force_color_prompt=yes/' /etc/skel/.bashrc && \ + # Add call to conda init script see https://stackoverflow.com/a/58081608/4413446 + echo 'eval "$(command conda shell.bash hook 2> /dev/null)"' >> /etc/skel/.bashrc + +# Create NB_USER with name jovyan user with UID=1000 and in the 'users' group +# and make sure these dirs are writable by the `users` group. +RUN echo "auth requisite pam_deny.so" >> /etc/pam.d/su && \ + sed -i.bak -e 's/^%admin/#%admin/' /etc/sudoers && \ + sed -i.bak -e 's/^%sudo/#%sudo/' /etc/sudoers && \ + useradd -l -m -s /bin/bash -N -u "${NB_UID}" "${NB_USER}" && \ + mkdir -p "${CONDA_DIR}" && \ + chown "${NB_USER}:${NB_GID}" "${CONDA_DIR}" && \ + chmod g+w /etc/passwd && \ + fix-permissions "${HOME}" && \ + fix-permissions "${CONDA_DIR}" + +USER ${NB_UID} +ARG PYTHON_VERSION=default + +# Setup work directory for backward-compatibility +RUN mkdir "/home/${NB_USER}/work" && \ + fix-permissions "/home/${NB_USER}" + +# Install conda as jovyan and check the sha256 sum provided on the download site +WORKDIR /tmp + +# CONDA_MIRROR is a mirror prefix to speed up downloading +# For example, people from mainland China could set it as +# https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/LatestRelease +ARG CONDA_MIRROR=https://github.com/conda-forge/miniforge/releases/latest/download + +# ---- Miniforge installer ---- +# Check https://github.com/conda-forge/miniforge/releases +# Package Manager and Python implementation to use (https://github.com/conda-forge/miniforge) +# We're using Mambaforge installer, possible options: +# - conda only: either Miniforge3 to use Python or Miniforge-pypy3 to use PyPy +# - conda + mamba: either Mambaforge to use Python or Mambaforge-pypy3 to use PyPy +# Installation: conda, mamba, pip +RUN set -x && \ + # Miniforge installer + miniforge_arch=$(uname -m) && \ + miniforge_installer="Mambaforge-Linux-${miniforge_arch}.sh" && \ + wget --quiet "${CONDA_MIRROR}/${miniforge_installer}" && \ + /bin/bash "${miniforge_installer}" -f -b -p "${CONDA_DIR}" && \ + rm "${miniforge_installer}" && \ + # Conda configuration see https://conda.io/projects/conda/en/latest/configuration.html + conda config --system --set auto_update_conda false && \ + conda config --system --set show_channel_urls true && \ + if [[ "${PYTHON_VERSION}" != "default" ]]; then mamba install --quiet --yes python="${PYTHON_VERSION}"; fi && \ + # Pin major.minor version of python + mamba list python | grep '^python ' | tr -s ' ' | cut -d ' ' -f 1,2 >> "${CONDA_DIR}/conda-meta/pinned" && \ + # Using conda to update all packages: https://github.com/mamba-org/mamba/issues/1092 + conda update --all --quiet --yes && \ + conda clean --all -f -y && \ + rm -rf "/home/${NB_USER}/.cache/yarn" && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" + +# Using fixed version of mamba in arm, because the latest one has problems with arm under qemu +# See: https://github.com/jupyter/docker-stacks/issues/1539 +RUN set -x && \ + arch=$(uname -m) && \ + if [ "${arch}" == "aarch64" ]; then \ + mamba install --quiet --yes \ + 'mamba<0.18' && \ + mamba clean --all -f -y && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}"; \ + fi; + +# Install Jupyter Notebook, Lab, and Hub +# Generate a notebook server config +# Cleanup temporary files +# Correct permissions +# Do all this in a single RUN command to avoid duplicating all of the +# files across image layers when the permissions change +RUN mamba install --quiet --yes \ + 'notebook' \ + 'jupyterhub' \ + 'jupyterlab' && \ + mamba clean --all -f -y && \ + npm cache clean --force && \ + jupyter notebook --generate-config && \ + jupyter lab clean && \ + rm -rf "/home/${NB_USER}/.cache/yarn" && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" + +EXPOSE 8888 + +# Configure container startup +ENTRYPOINT ["tini", "-g", "--"] +CMD ["start-notebook.sh"] + +# Copy local files as late as possible to avoid cache busting +COPY start.sh start-notebook.sh start-singleuser.sh /usr/local/bin/ +# Currently need to have both jupyter_notebook_config and jupyter_server_config to support classic and lab +COPY jupyter_server_config.py /etc/jupyter/ + +# Fix permissions on /etc/jupyter as root +USER root + +# Legacy for Jupyter Notebook Server, see: [#1205](https://github.com/jupyter/docker-stacks/issues/1205) +RUN sed -re "s/c.ServerApp/c.NotebookApp/g" \ + /etc/jupyter/jupyter_server_config.py > /etc/jupyter/jupyter_notebook_config.py && \ + fix-permissions /etc/jupyter/ + +# HEALTHCHECK documentation: https://docs.docker.com/engine/reference/builder/#healthcheck +# This healtcheck works well for `lab`, `notebook`, `nbclassic`, `server` and `retro` jupyter commands +# https://github.com/jupyter/docker-stacks/issues/915#issuecomment-1068528799 +HEALTHCHECK --interval=15s --timeout=3s --start-period=5s --retries=3 \ + CMD wget -O- --no-verbose --tries=1 http://localhost:8888/api || exit 1 + +# Switch back to jovyan to avoid accidental container runs as root +USER ${NB_UID} + +# *************************************** +# Install FederatedScope dependencies +# *************************************** + +WORKDIR "${HOME}" + +USER root +# change bash as default +SHELL ["/bin/bash", "-c"] +# shanghai zoneinfo +ENV TZ=Asia/Shanghai +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +# install packages required by federatedscope +RUN conda update -y conda \ + && conda config --add channels conda-forge +# basic machine learning env +RUN conda install -y numpy=1.21.2 scikit-learn=1.0.2 scipy=1.7.3 pandas=1.4.1 -c scikit-learn \ + && conda clean -a -y +# basic torch env +RUN conda install -y pytorch=1.10.1 torchvision=0.11.2 torchaudio=0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge \ + && conda install -y torchtext -c pytorch \ + && conda clean -a -y +# gfl +RUN conda install -y pyg=2.0.4 -c pyg \ + && conda install -y rdkit=2021.09.4=py39hccf6a74_0 -c conda-forge \ + && conda install -y nltk \ + && conda clean -a -y +# communications and auxiliaries +RUN conda install -y wandb -c conda-forge \ + && pip install grpcio grpcio-tools protobuf==3.19.4 setuptools==61.2.0 \ + && conda clean -a -y + +USER ${NB_UID} \ No newline at end of file diff --git a/enviroment/docker_files/federatedscope-jupyterhub/fix-permissions b/enviroment/docker_files/federatedscope-jupyterhub/fix-permissions new file mode 100644 index 000000000..5e6425da4 --- /dev/null +++ b/enviroment/docker_files/federatedscope-jupyterhub/fix-permissions @@ -0,0 +1,35 @@ +#!/bin/bash +# set permissions on a directory +# after any installation, if a directory needs to be (human) user-writable, +# run this script on it. +# It will make everything in the directory owned by the group ${NB_GID} +# and writable by that group. +# Deployments that want to set a specific user id can preserve permissions +# by adding the `--group-add users` line to `docker run`. + +# uses find to avoid touching files that already have the right permissions, +# which would cause massive image explosion + +# right permissions are: +# group=${NB_GID} +# AND permissions include group rwX (directory-execute) +# AND directories have setuid,setgid bits set + +set -e + +for d in "$@"; do + find "${d}" \ + ! \( \ + -group "${NB_GID}" \ + -a -perm -g+rwX \ + \) \ + -exec chgrp "${NB_GID}" {} \; \ + -exec chmod g+rwX {} \; + # setuid, setgid *on directories only* + find "${d}" \ + \( \ + -type d \ + -a ! -perm -6000 \ + \) \ + -exec chmod +6000 {} \; +done diff --git a/enviroment/docker_files/federatedscope-jupyterhub/jupyter_server_config.py b/enviroment/docker_files/federatedscope-jupyterhub/jupyter_server_config.py new file mode 100644 index 000000000..52cdf44be --- /dev/null +++ b/enviroment/docker_files/federatedscope-jupyterhub/jupyter_server_config.py @@ -0,0 +1,56 @@ +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. +# mypy: ignore-errors +import os +import stat +import subprocess + +from jupyter_core.paths import jupyter_data_dir + +c = get_config() # noqa: F821 +c.ServerApp.ip = "0.0.0.0" +c.ServerApp.port = 8888 +c.ServerApp.open_browser = False + +# https://github.com/jupyter/notebook/issues/3130 +c.FileContentsManager.delete_to_trash = False + +# Generate a self-signed certificate +OPENSSL_CONFIG = """\ +[req] +distinguished_name = req_distinguished_name +[req_distinguished_name] +""" +if "GEN_CERT" in os.environ: + dir_name = jupyter_data_dir() + pem_file = os.path.join(dir_name, "notebook.pem") + os.makedirs(dir_name, exist_ok=True) + + # Generate an openssl.cnf file to set the distinguished name + cnf_file = os.path.join(os.getenv("CONDA_DIR", "/usr/lib"), "ssl", + "openssl.cnf") + if not os.path.isfile(cnf_file): + with open(cnf_file, "w") as fh: + fh.write(OPENSSL_CONFIG) + + # Generate a certificate if one doesn't exist on disk + subprocess.check_call([ + "openssl", + "req", + "-new", + "-newkey=rsa:2048", + "-days=365", + "-nodes", + "-x509", + "-subj=/C=XX/ST=XX/L=XX/O=generated/CN=generated", + f"-keyout={pem_file}", + f"-out={pem_file}", + ]) + # Restrict access to the file + os.chmod(pem_file, stat.S_IRUSR | stat.S_IWUSR) + c.ServerApp.certfile = pem_file + +# Change default umask for all subprocesses of the notebook server if set in +# the environment +if "NB_UMASK" in os.environ: + os.umask(int(os.environ["NB_UMASK"], 8)) diff --git a/enviroment/docker_files/federatedscope-jupyterhub/start-notebook.sh b/enviroment/docker_files/federatedscope-jupyterhub/start-notebook.sh new file mode 100644 index 000000000..ce47768d3 --- /dev/null +++ b/enviroment/docker_files/federatedscope-jupyterhub/start-notebook.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. + +set -e + +# The Jupyter command to launch +# JupyterLab by default +DOCKER_STACKS_JUPYTER_CMD="${DOCKER_STACKS_JUPYTER_CMD:=lab}" + +if [[ -n "${JUPYTERHUB_API_TOKEN}" ]]; then + echo "WARNING: using start-singleuser.sh instead of start-notebook.sh to start a server associated with JupyterHub." + exec /usr/local/bin/start-singleuser.sh "$@" +fi + +wrapper="" +if [[ "${RESTARTABLE}" == "yes" ]]; then + wrapper="run-one-constantly" +fi + +if [[ -v JUPYTER_ENABLE_LAB ]]; then + echo "WARNING: JUPYTER_ENABLE_LAB is ignored, use DOCKER_STACKS_JUPYTER_CMD if you want to change the command used to start the server" +fi + +# shellcheck disable=SC1091,SC2086 +exec /usr/local/bin/start.sh ${wrapper} jupyter ${DOCKER_STACKS_JUPYTER_CMD} ${NOTEBOOK_ARGS} "$@" diff --git a/enviroment/docker_files/federatedscope-jupyterhub/start-singleuser.sh b/enviroment/docker_files/federatedscope-jupyterhub/start-singleuser.sh new file mode 100644 index 000000000..a2166e2c6 --- /dev/null +++ b/enviroment/docker_files/federatedscope-jupyterhub/start-singleuser.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. + +set -e + +# set default ip to 0.0.0.0 +if [[ "${NOTEBOOK_ARGS} $*" != *"--ip="* ]]; then + NOTEBOOK_ARGS="--ip=0.0.0.0 ${NOTEBOOK_ARGS}" +fi + +# shellcheck disable=SC1091,SC2086 +. /usr/local/bin/start.sh jupyterhub-singleuser ${NOTEBOOK_ARGS} "$@" diff --git a/enviroment/docker_files/federatedscope-jupyterhub/start.sh b/enviroment/docker_files/federatedscope-jupyterhub/start.sh new file mode 100644 index 000000000..7c5859ee7 --- /dev/null +++ b/enviroment/docker_files/federatedscope-jupyterhub/start.sh @@ -0,0 +1,262 @@ +#!/bin/bash +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. + +set -e + +# The _log function is used for everything this script wants to log. It will +# always log errors and warnings, but can be silenced for other messages +# by setting JUPYTER_DOCKER_STACKS_QUIET environment variable. +_log () { + if [[ "$*" == "ERROR:"* ]] || [[ "$*" == "WARNING:"* ]] || [[ "${JUPYTER_DOCKER_STACKS_QUIET}" == "" ]]; then + echo "$@" + fi +} +_log "Entered start.sh with args:" "$@" + +# The run-hooks function looks for .sh scripts to source and executable files to +# run within a passed directory. +run-hooks () { + if [[ ! -d "${1}" ]] ; then + return + fi + _log "${0}: running hooks in ${1} as uid / gid: $(id -u) / $(id -g)" + for f in "${1}/"*; do + case "${f}" in + *.sh) + _log "${0}: running script ${f}" + # shellcheck disable=SC1090 + source "${f}" + ;; + *) + if [[ -x "${f}" ]] ; then + _log "${0}: running executable ${f}" + "${f}" + else + _log "${0}: ignoring non-executable ${f}" + fi + ;; + esac + done + _log "${0}: done running hooks in ${1}" +} + +# A helper function to unset env vars listed in the value of the env var +# JUPYTER_ENV_VARS_TO_UNSET. +unset_explicit_env_vars () { + if [ -n "${JUPYTER_ENV_VARS_TO_UNSET}" ]; then + for env_var_to_unset in $(echo "${JUPYTER_ENV_VARS_TO_UNSET}" | tr ',' ' '); do + echo "Unset ${env_var_to_unset} due to JUPYTER_ENV_VARS_TO_UNSET" + unset "${env_var_to_unset}" + done + unset JUPYTER_ENV_VARS_TO_UNSET + fi +} + + +# Default to starting bash if no command was specified +if [ $# -eq 0 ]; then + cmd=( "bash" ) +else + cmd=( "$@" ) +fi + +# NOTE: This hook will run as the user the container was started with! +run-hooks /usr/local/bin/start-notebook.d + +# If the container started as the root user, then we have permission to refit +# the jovyan user, and ensure file permissions, grant sudo rights, and such +# things before we run the command passed to start.sh as the desired user +# (NB_USER). +# +if [ "$(id -u)" == 0 ] ; then + # Environment variables: + # - NB_USER: the desired username and associated home folder + # - NB_UID: the desired user id + # - NB_GID: a group id we want our user to belong to + # - NB_GROUP: a group name we want for the group + # - GRANT_SUDO: a boolean ("1" or "yes") to grant the user sudo rights + # - CHOWN_HOME: a boolean ("1" or "yes") to chown the user's home folder + # - CHOWN_EXTRA: a comma separated list of paths to chown + # - CHOWN_HOME_OPTS / CHOWN_EXTRA_OPTS: arguments to the chown commands + + # Refit the jovyan user to the desired the user (NB_USER) + if id jovyan &> /dev/null ; then + if ! usermod --home "/home/${NB_USER}" --login "${NB_USER}" jovyan 2>&1 | grep "no changes" > /dev/null; then + _log "Updated the jovyan user:" + _log "- username: jovyan -> ${NB_USER}" + _log "- home dir: /home/jovyan -> /home/${NB_USER}" + fi + elif ! id -u "${NB_USER}" &> /dev/null; then + _log "ERROR: Neither the jovyan user or '${NB_USER}' exists. This could be the result of stopping and starting, the container with a different NB_USER environment variable." + exit 1 + fi + # Ensure the desired user (NB_USER) gets its desired user id (NB_UID) and is + # a member of the desired group (NB_GROUP, NB_GID) + if [ "${NB_UID}" != "$(id -u "${NB_USER}")" ] || [ "${NB_GID}" != "$(id -g "${NB_USER}")" ]; then + _log "Update ${NB_USER}'s UID:GID to ${NB_UID}:${NB_GID}" + # Ensure the desired group's existence + if [ "${NB_GID}" != "$(id -g "${NB_USER}")" ]; then + groupadd --force --gid "${NB_GID}" --non-unique "${NB_GROUP:-${NB_USER}}" + fi + # Recreate the desired user as we want it + userdel "${NB_USER}" + useradd --home "/home/${NB_USER}" --uid "${NB_UID}" --gid "${NB_GID}" --groups 100 --no-log-init "${NB_USER}" + fi + + # Move or symlink the jovyan home directory to the desired users home + # directory if it doesn't already exist, and update the current working + # directory to the new location if needed. + if [[ "${NB_USER}" != "jovyan" ]]; then + if [[ ! -e "/home/${NB_USER}" ]]; then + _log "Attempting to copy /home/jovyan to /home/${NB_USER}..." + mkdir "/home/${NB_USER}" + if cp -a /home/jovyan/. "/home/${NB_USER}/"; then + _log "Success!" + else + _log "Failed to copy data from /home/jovyan to /home/${NB_USER}!" + _log "Attempting to symlink /home/jovyan to /home/${NB_USER}..." + if ln -s /home/jovyan "/home/${NB_USER}"; then + _log "Success creating symlink!" + else + _log "ERROR: Failed copy data from /home/jovyan to /home/${NB_USER} or to create symlink!" + exit 1 + fi + fi + fi + # Ensure the current working directory is updated to the new path + if [[ "${PWD}/" == "/home/jovyan/"* ]]; then + new_wd="/home/${NB_USER}/${PWD:13}" + _log "Changing working directory to ${new_wd}" + cd "${new_wd}" + fi + fi + + # Optionally ensure the desired user get filesystem ownership of it's home + # folder and/or additional folders + if [[ "${CHOWN_HOME}" == "1" || "${CHOWN_HOME}" == "yes" ]]; then + _log "Ensuring /home/${NB_USER} is owned by ${NB_UID}:${NB_GID} ${CHOWN_HOME_OPTS:+(chown options: ${CHOWN_HOME_OPTS})}" + # shellcheck disable=SC2086 + chown ${CHOWN_HOME_OPTS} "${NB_UID}:${NB_GID}" "/home/${NB_USER}" + fi + if [ -n "${CHOWN_EXTRA}" ]; then + for extra_dir in $(echo "${CHOWN_EXTRA}" | tr ',' ' '); do + _log "Ensuring ${extra_dir} is owned by ${NB_UID}:${NB_GID} ${CHOWN_EXTRA_OPTS:+(chown options: ${CHOWN_EXTRA_OPTS})}" + # shellcheck disable=SC2086 + chown ${CHOWN_EXTRA_OPTS} "${NB_UID}:${NB_GID}" "${extra_dir}" + done + fi + + # Update potentially outdated environment variables since image build + export XDG_CACHE_HOME="/home/${NB_USER}/.cache" + + # Prepend ${CONDA_DIR}/bin to sudo secure_path + sed -r "s#Defaults\s+secure_path\s*=\s*\"?([^\"]+)\"?#Defaults secure_path=\"${CONDA_DIR}/bin:\1\"#" /etc/sudoers | grep secure_path > /etc/sudoers.d/path + + # Optionally grant passwordless sudo rights for the desired user + if [[ "$GRANT_SUDO" == "1" || "$GRANT_SUDO" == "yes" ]]; then + _log "Granting ${NB_USER} passwordless sudo rights!" + echo "${NB_USER} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/added-by-start-script + fi + + # NOTE: This hook is run as the root user! + run-hooks /usr/local/bin/before-notebook.d + + unset_explicit_env_vars + _log "Running as ${NB_USER}:" "${cmd[@]}" + exec sudo --preserve-env --set-home --user "${NB_USER}" \ + PATH="${PATH}" \ + PYTHONPATH="${PYTHONPATH:-}" \ + "${cmd[@]}" + # Notes on how we ensure that the environment that this container is started + # with is preserved (except vars listed in JUPYTER_ENV_VARS_TO_UNSET) when + # we transition from running as root to running as NB_USER. + # + # - We use `sudo` to execute the command as NB_USER. What then + # happens to the environment will be determined by configuration in + # /etc/sudoers and /etc/sudoers.d/* as well as flags we pass to the sudo + # command. The behavior can be inspected with `sudo -V` run as root. + # + # ref: `man sudo` https://linux.die.net/man/8/sudo + # ref: `man sudoers` https://www.sudo.ws/man/1.8.15/sudoers.man.html + # + # - We use the `--preserve-env` flag to pass through most environment + # variables, but understand that exceptions are caused by the sudoers + # configuration: `env_delete` and `env_check`. + # + # - We use the `--set-home` flag to set the HOME variable appropriately. + # + # - To reduce the default list of variables deleted by sudo, we could have + # used `env_delete` from /etc/sudoers. It has higher priority than the + # `--preserve-env` flag and the `env_keep` configuration. + # + # - We preserve PATH and PYTHONPATH explicitly. Note however that sudo + # resolves `${cmd[@]}` using the "secure_path" variable we modified + # above in /etc/sudoers.d/path. Thus PATH is irrelevant to how the above + # sudo command resolves the path of `${cmd[@]}`. The PATH will be relevant + # for resolving paths of any subprocesses spawned by `${cmd[@]}`. + +# The container didn't start as the root user, so we will have to act as the +# user we started as. +else + # Warn about misconfiguration of: granting sudo rights + if [[ "${GRANT_SUDO}" == "1" || "${GRANT_SUDO}" == "yes" ]]; then + _log "WARNING: container must be started as root to grant sudo permissions!" + fi + + JOVYAN_UID="$(id -u jovyan 2>/dev/null)" # The default UID for the jovyan user + JOVYAN_GID="$(id -g jovyan 2>/dev/null)" # The default GID for the jovyan user + + # Attempt to ensure the user uid we currently run as has a named entry in + # the /etc/passwd file, as it avoids software crashing on hard assumptions + # on such entry. Writing to the /etc/passwd was allowed for the root group + # from the Dockerfile during build. + # + # ref: https://github.com/jupyter/docker-stacks/issues/552 + if ! whoami &> /dev/null; then + _log "There is no entry in /etc/passwd for our UID=$(id -u). Attempting to fix..." + if [[ -w /etc/passwd ]]; then + _log "Renaming old jovyan user to nayvoj ($(id -u jovyan):$(id -g jovyan))" + + # We cannot use "sed --in-place" since sed tries to create a temp file in + # /etc/ and we may not have write access. Apply sed on our own temp file: + sed --expression="s/^jovyan:/nayvoj:/" /etc/passwd > /tmp/passwd + echo "${NB_USER}:x:$(id -u):$(id -g):,,,:/home/jovyan:/bin/bash" >> /tmp/passwd + cat /tmp/passwd > /etc/passwd + rm /tmp/passwd + + _log "Added new ${NB_USER} user ($(id -u):$(id -g)). Fixed UID!" + + if [[ "${NB_USER}" != "jovyan" ]]; then + _log "WARNING: user is ${NB_USER} but home is /home/jovyan. You must run as root to rename the home directory!" + fi + else + _log "WARNING: unable to fix missing /etc/passwd entry because we don't have write permission. Try setting gid=0 with \"--user=$(id -u):0\"." + fi + fi + + # Warn about misconfiguration of: desired username, user id, or group id. + # A misconfiguration occurs when the user modifies the default values of + # NB_USER, NB_UID, or NB_GID, but we cannot update those values because we + # are not root. + if [[ "${NB_USER}" != "jovyan" && "${NB_USER}" != "$(id -un)" ]]; then + _log "WARNING: container must be started as root to change the desired user's name with NB_USER=\"${NB_USER}\"!" + fi + if [[ "${NB_UID}" != "${JOVYAN_UID}" && "${NB_UID}" != "$(id -u)" ]]; then + _log "WARNING: container must be started as root to change the desired user's id with NB_UID=\"${NB_UID}\"!" + fi + if [[ "${NB_GID}" != "${JOVYAN_GID}" && "${NB_GID}" != "$(id -g)" ]]; then + _log "WARNING: container must be started as root to change the desired user's group id with NB_GID=\"${NB_GID}\"!" + fi + + # Warn if the user isn't able to write files to ${HOME} + if [[ ! -w /home/jovyan ]]; then + _log "WARNING: no write access to /home/jovyan. Try starting the container with group 'users' (100), e.g. using \"--group-add=users\"." + fi + + # NOTE: This hook is run as the user we started the container as! + run-hooks /usr/local/bin/before-notebook.d + unset_explicit_env_vars + _log "Executing the command:" "${cmd[@]}" + exec "${cmd[@]}" +fi diff --git a/enviroment/docker_files/federatedscope-torch1.10-application.Dockerfile b/enviroment/docker_files/federatedscope-torch1.10-application.Dockerfile new file mode 100644 index 000000000..8b89706d8 --- /dev/null +++ b/enviroment/docker_files/federatedscope-torch1.10-application.Dockerfile @@ -0,0 +1,63 @@ +# The federatedscope image includes all runtime stuffs of federatedscope, +# with customized miniconda and required packages installed. + +# based on the nvidia-docker +# NOTE: please pre-install the NVIDIA drivers and `nvidia-docker2` in the host machine, +# see details in https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html +FROM nvidia/cuda:11.3.1-runtime-ubuntu20.04 + +# change bash as default +SHELL ["/bin/bash", "-c"] + +# shanghai zoneinfo +ENV TZ=Asia/Shanghai +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +# install basic tools +RUN apt-get -y update \ + && apt-get -y install curl git gcc g++ make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev python-dev libmysqlclient-dev + +# install miniconda, in batch (silent) mode, does not edit PATH or .bashrc or .bash_profile +RUN apt-get update -y \ + && apt-get install -y wget +RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \ + && bash Miniconda3-latest-Linux-x86_64.sh -b \ + && rm Miniconda3-latest-Linux-x86_64.sh + +ENV PATH=/root/miniconda3/bin:${PATH} +RUN source activate + +# install packages required by federatedscope +RUN conda update -y conda \ + && conda config --add channels conda-forge + +# basic machine learning env +RUN conda install -y numpy=1.21.2 scikit-learn=1.0.2 scipy=1.7.3 pandas=1.4.1 -c scikit-learn \ + && conda clean -a -y + +# basic torch env +RUN conda install -y pytorch=1.10.1 torchvision=0.11.2 torchaudio=0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge \ + && conda clean -a -y + +# torch helper package +RUN conda install -y fvcore iopath -c fvcore -c iopath -c conda-forge \ + && conda clean -a -y + +# auxiliaries (communications, monitoring, etc.) +RUN conda install -y wandb tensorboard tensorboardX pympler -c conda-forge \ + && pip install grpcio grpcio-tools protobuf==3.19.4 setuptools==61.2.0 \ + && conda clean -a -y + +# for grpah +RUN conda install -y pyg==2.0.4 -c pyg \ + && conda install -y rdkit=2021.09.4=py39hccf6a74_0 -c conda-forge \ + && conda install -y nltk \ + && conda clean -a -y + +# for speech and nlp +RUN conda install -y sentencepiece textgrid typeguard -c conda-forge \ + && conda install -y transformers==4.16.2 tokenizers==0.10.3 datasets -c huggingface -c conda-forge \ + && conda install -y torchtext -c pytorch \ + && conda clean -a -y + + diff --git a/enviroment/docker_files/federatedscope-torch1.10.Dockerfile b/enviroment/docker_files/federatedscope-torch1.10.Dockerfile new file mode 100644 index 000000000..530f9d4aa --- /dev/null +++ b/enviroment/docker_files/federatedscope-torch1.10.Dockerfile @@ -0,0 +1,49 @@ +# The federatedscope image includes all runtime stuffs of federatedscope, +# with customized miniconda and required packages installed. + +# based on the nvidia-docker +# NOTE: please pre-install the NVIDIA drivers and `nvidia-docker2` in the host machine, +# see details in https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html +FROM nvidia/cuda:11.3.1-runtime-ubuntu20.04 + +# change bash as default +SHELL ["/bin/bash", "-c"] + +# shanghai zoneinfo +ENV TZ=Asia/Shanghai +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +# install basic tools +RUN apt-get -y update \ + && apt-get -y install curl git gcc g++ make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev python-dev libmysqlclient-dev + +# install miniconda, in batch (silent) mode, does not edit PATH or .bashrc or .bash_profile +RUN apt-get update -y \ + && apt-get install -y wget +RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \ + && bash Miniconda3-latest-Linux-x86_64.sh -b \ + && rm Miniconda3-latest-Linux-x86_64.sh + +ENV PATH=/root/miniconda3/bin:${PATH} +RUN source activate + +# install packages required by federatedscope +RUN conda update -y conda \ + && conda config --add channels conda-forge + +# basic machine learning env +RUN conda install -y numpy=1.21.2 scikit-learn=1.0.2 scipy=1.7.3 pandas=1.4.1 -c scikit-learn \ + && conda clean -a -y + +# basic torch env +RUN conda install -y pytorch=1.10.1 torchvision=0.11.2 torchaudio=0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge \ + && conda clean -a -y + +# torch helper package +RUN conda install -y fvcore iopath -c fvcore -c iopath -c conda-forge \ + && conda clean -a -y + +# auxiliaries (communications, monitoring, etc.) +RUN conda install -y wandb tensorboard tensorboardX pympler -c conda-forge \ + && pip install grpcio grpcio-tools protobuf==3.19.4 setuptools==61.2.0 \ + && conda clean -a -y \ No newline at end of file diff --git a/enviroment/docker_files/federatedscope-torch1.8-application.Dockerfile b/enviroment/docker_files/federatedscope-torch1.8-application.Dockerfile new file mode 100644 index 000000000..f1ca66518 --- /dev/null +++ b/enviroment/docker_files/federatedscope-torch1.8-application.Dockerfile @@ -0,0 +1,61 @@ +# The federatedscope image includes all runtime stuffs of federatedscope, +# with customized miniconda and required packages installed. + +# based on the nvidia-docker +# NOTE: please pre-install the NVIDIA drivers and `nvidia-docker2` in the host machine, +# see details in https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html +FROM nvidia/cuda:10.2-runtime-ubuntu18.04 + +# change bash as default +SHELL ["/bin/bash", "-c"] + +# shanghai zoneinfo +ENV TZ=Asia/Shanghai +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +# install basic tools +RUN apt-get -y update \ + && apt-get -y install curl git gcc g++ make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev python-dev libmysqlclient-dev + +# install miniconda, in batch (silent) mode, does not edit PATH or .bashrc or .bash_profile +RUN apt-get update -y \ + && apt-get install -y wget +RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \ + && bash Miniconda3-latest-Linux-x86_64.sh -b \ + && rm Miniconda3-latest-Linux-x86_64.sh + +ENV PATH=/root/miniconda3/bin:${PATH} +RUN source activate + +# install packages required by federatedscope +RUN conda update -y conda \ + && conda config --add channels conda-forge + +# basic machine learning env +RUN conda install -y numpy=1.21.2 scikit-learn=1.0.2 scipy=1.7.3 pandas=1.4.1 -c scikit-learn \ + && conda clean -a -y + +# basic torch env +RUN conda install -y pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=10.2 -c pytorch \ + && conda clean -a -y + +# torch helper package +RUN conda install -y fvcore iopath -c fvcore -c iopath -c conda-forge \ + && conda clean -a -y + +# for graph +RUN conda install -y pyg==2.0.1 -c pyg \ + && conda install -y rdkit=2021.09.4 -c conda-forge \ + && conda install -y nltk \ + && conda clean -a -y + +# for speech and nlp +RUN conda install -y sentencepiece textgrid typeguard -c conda-forge \ + && conda install -y transformers==4.16.2 tokenizers==0.10.3 datasets -c huggingface -c conda-forge \ + && conda install -y torchtext -c pytorch \ + && conda clean -a -y + +# auxiliaries (communications, monitoring, etc.) +RUN conda install -y wandb tensorboard tensorboardX pympler -c conda-forge \ + && pip install grpcio grpcio-tools protobuf==3.19.4 setuptools==61.2.0 \ + && conda clean -a -y diff --git a/enviroment/requirements-torch1.10-application.txt b/enviroment/requirements-torch1.10-application.txt new file mode 100644 index 000000000..3ad85e143 --- /dev/null +++ b/enviroment/requirements-torch1.10-application.txt @@ -0,0 +1,28 @@ +numpy==1.21.2 +scikit-learn==1.0.2 +scipy==1.7.3 +pandas==1.4.1 +scikit-learn +wandb +tensorboard +tensorboardX +grpcio +grpcio-tools +protobuf==3.19.4 +setuptools==61.2.0 +pyg==2.0.4 +rdkit=2021.09.4 +sentencepiece +textgrid +typeguard +nltk +transformers==4.16.2 +tokenizers==0.10.3 +torchtext +datasets +fvcore +pympler +iopath +opencv-python +matplotlib + diff --git a/enviroment/requirements-torch1.10.txt b/enviroment/requirements-torch1.10.txt new file mode 100644 index 000000000..edddbb70d --- /dev/null +++ b/enviroment/requirements-torch1.10.txt @@ -0,0 +1,21 @@ +numpy==1.21.2 +scikit-learn==1.0.2 +scipy==1.7.3 +pandas==1.4.1 +scikit-learn +pytorch==1.10.1 +torchvision==0.11.2 +torchaudio==0.10.1 +cudatoolkit==11.3.1 +wandb +tensorboard +tensorboardX +grpcio +grpcio-tools +protobuf==3.19.4 +setuptools==61.2.0 +fvcore +pympler +iopath +opencv-python +matplotlib \ No newline at end of file diff --git a/enviroment/requirements-torch1.8-application.txt b/enviroment/requirements-torch1.8-application.txt new file mode 100644 index 000000000..f248f5251 --- /dev/null +++ b/enviroment/requirements-torch1.8-application.txt @@ -0,0 +1,33 @@ +numpy==1.19.5 +scikit-learn==1.0 +scipy==1.6.0 +pandas==1.2.1 +scikit-learn +pytorch==1.8.0 +torchvision==0.9.0 +torchaudio==0.8.0 +cudatoolkit==10.2.89 +wandb +tensorboard +tensorboardX +grpcio +grpcio-tools +protobuf==3.19.1 +setuptools==58.0.4 +pyg==2.0.1 +rdkit=2021.09.4 +sentencepiece +textgrid +typeguard +nltk +transformers==4.16.2 +tokenizers==0.10.3 +torchtext +datasets +fvcore +pympler +iopath +opencv-python +matplotlib + + diff --git a/federatedscope/__init__.py b/federatedscope/__init__.py new file mode 100644 index 000000000..7a805d435 --- /dev/null +++ b/federatedscope/__init__.py @@ -0,0 +1,19 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +__version__ = '0.1.0' + + +def _setup_logger(): + import logging + + logging_fmt = "%(asctime)s (%(module)s:%(lineno)d) %(levelname)s: %(message)s" + logger = logging.getLogger("federatedscope") + handler = logging.StreamHandler() + handler.setFormatter(logging.Formatter(logging_fmt)) + logger.addHandler(handler) + logger.propagate = False + + +_setup_logger() diff --git a/federatedscope/attack/__init__.py b/federatedscope/attack/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/federatedscope/attack/auxiliary/MIA_get_target_data.py b/federatedscope/attack/auxiliary/MIA_get_target_data.py new file mode 100644 index 000000000..d8c9945d0 --- /dev/null +++ b/federatedscope/attack/auxiliary/MIA_get_target_data.py @@ -0,0 +1,32 @@ +import torch +from federatedscope.attack.auxiliary.utils import get_data_info + + +def get_target_data(dataset_name, pth=None): + ''' + + Args: + dataset_name (str): the dataset name + pth (str): the path storing the target data + + Returns: + + ''' + # JUST FOR SHOWCASE + if pth is not None: + pass + else: + # generate the synthetic data + if dataset_name == 'femnist': + data_feature_dim, num_class, is_one_hot_label = get_data_info( + dataset_name) + + # generate random data + num_syn_data = 20 + data_dim = [num_syn_data] + data_dim.extend(data_feature_dim) + syn_data = torch.randn(data_dim) + syn_label = torch.randint(low=0, + high=num_class, + size=(num_syn_data, )) + return [syn_data, syn_label] diff --git a/federatedscope/attack/auxiliary/__init__.py b/federatedscope/attack/auxiliary/__init__.py new file mode 100644 index 000000000..d48f66ff7 --- /dev/null +++ b/federatedscope/attack/auxiliary/__init__.py @@ -0,0 +1,13 @@ +from federatedscope.attack.auxiliary.utils import * +from federatedscope.attack.auxiliary.attack_trainer_builder import wrap_attacker_trainer +from federatedscope.attack.auxiliary.backdoor_utils import * +from federatedscope.attack.auxiliary.poisoning_data import * + +__all__ = [ + 'get_passive_PIA_auxiliary_dataset', 'iDLG_trick', 'cos_sim', + 'get_classifier', 'get_data_info', 'get_data_sav_fn', 'get_info_diff_loss', + 'sav_femnist_image', 'get_reconstructor', 'get_generator', + 'get_data_property', 'get_passive_PIA_auxiliary_dataset', + 'load_poisoned_dataset_edgeset', 'load_poisoned_dataset_pixel', + 'selectTrigger', 'poisoning' +] diff --git a/federatedscope/attack/auxiliary/attack_trainer_builder.py b/federatedscope/attack/auxiliary/attack_trainer_builder.py new file mode 100644 index 000000000..df19c90c4 --- /dev/null +++ b/federatedscope/attack/auxiliary/attack_trainer_builder.py @@ -0,0 +1,23 @@ +def wrap_attacker_trainer(base_trainer, config): + '''Wrap the trainer for attack client. + Args: + base_trainer (core.trainers.GeneralTorchTrainer): \ + the trainer that will be wrapped; + config (yacs.config.CfgNode): the configure; + + :returns: + The wrapped trainer; Type: core.trainers.GeneralTorchTrainer + + ''' + if config.attack.attack_method.lower() == 'gan_attack': + from federatedscope.attack.trainer import wrap_GANTrainer + return wrap_GANTrainer(base_trainer) + elif config.attack.attack_method.lower() == 'gradascent': + from federatedscope.attack.trainer import wrap_GradientAscentTrainer + return wrap_GradientAscentTrainer(base_trainer) + elif config.attack.attack_method.lower() == 'backdoor': + from federatedscope.attack.trainer import wrap_backdoorTrainer + return wrap_backdoorTrainer(base_trainer) + else: + raise ValueError('Trainer {} is not provided'.format( + config.attack.attack_method)) diff --git a/federatedscope/attack/auxiliary/backdoor_utils.py b/federatedscope/attack/auxiliary/backdoor_utils.py new file mode 100644 index 000000000..5b6552ac8 --- /dev/null +++ b/federatedscope/attack/auxiliary/backdoor_utils.py @@ -0,0 +1,334 @@ +import torch.utils.data as data +import torch +import torch.nn as nn +import torch.nn.functional as F +import torchvision +import torchvision.transforms as transforms +import os +import csv +import random +import numpy as np + +import time +import cv2 +import matplotlib +from matplotlib import image as mlt + + +def normalize(X, mean, std, device=None): + channel = X.shape[0] + mean = torch.tensor(mean).view(channel, 1, 1) + std = torch.tensor(std).view(channel, 1, 1) + return (X - mean) / std + + +def selectTrigger(ctx, img, height, width, distance, trig_h, trig_w, + triggerType): + ''' + return the img: np.array [0:255], (height, width, channel) + ''' + + assert triggerType in ['squareTrigger', 'gridTrigger', \ + 'fourCornerTrigger', 'randomPixelTrigger', + 'signalTrigger', 'hkTrigger', 'trojanTrigger', \ + 'sigTrigger','sig_n_Trigger', 'wanetTrigger',\ + 'wanetTriggerCross'] + + if triggerType == 'squareTrigger': + img = _squareTrigger(ctx, img, height, width, distance, trig_h, trig_w) + + elif triggerType == 'gridTrigger': + img = _gridTriger(ctx, img, height, width, distance, trig_h, trig_w) + + elif triggerType == 'fourCornerTrigger': + img = _fourCornerTrigger(ctx, img, height, width, distance, trig_h, + trig_w) + + elif triggerType == 'randomPixelTrigger': + img = _randomPixelTrigger(ctx, img, height, width, distance, trig_h, + trig_w) + + elif triggerType == 'signalTrigger': + img = _signalTrigger(ctx, img, height, width, distance, trig_h, trig_w) + + elif triggerType == 'hkTrigger': + img = _hkTrigger(ctx, img, height, width, distance, trig_h, trig_w) + + elif triggerType == 'trojanTrigger': + img = _trojanTrigger(ctx, img, height, width, distance, trig_h, trig_w) + + elif triggerType == 'sigTrigger': + img = _sigTrigger(ctx, img, height, width, distance, trig_h, trig_w) + + elif triggerType == 'sig_n_Trigger': + img = _sig_n_Trigger(ctx, img, height, width, distance, trig_h, trig_w) + + elif triggerType == 'wanetTrigger': + img = _wanetTrigger(ctx, img, height, width, distance, trig_h, trig_w) + + elif triggerType == 'wanetTriggerCross': + img = _wanetTriggerCross(ctx, img, height, width, distance, trig_h, + trig_w) + else: + raise NotImplementedError + + return img + + +def _squareTrigger(ctx, img, height, width, distance, trig_h, trig_w): + for j in range(width - distance - trig_w, width - distance): + for k in range(height - distance - trig_h, height - distance): + img[j, k] = 255 + + return img + + +def _gridTriger(ctx, img, height, width, distance, trig_h, trig_w): + img[height - 1][width - 1] = 255 + img[height - 1][width - 2] = 0 + img[height - 1][width - 3] = 255 + + img[height - 2][width - 1] = 0 + img[height - 2][width - 2] = 255 + img[height - 2][width - 3] = 0 + + img[height - 3][width - 1] = 255 + img[height - 3][width - 2] = 0 + img[height - 3][width - 3] = 0 + + return img + + +def _fourCornerTrigger(ctx, img, height, width, distance, trig_h, trig_w): + + img[height - 1][width - 1] = 255 + img[height - 1][width - 2] = 0 + img[height - 1][width - 3] = 255 + + img[height - 2][width - 1] = 0 + img[height - 2][width - 2] = 255 + img[height - 2][width - 3] = 0 + + img[height - 3][width - 1] = 255 + img[height - 3][width - 2] = 0 + img[height - 3][width - 3] = 0 + + img[1][1] = 255 + img[1][2] = 0 + img[1][3] = 255 + + img[2][1] = 0 + img[2][2] = 255 + img[2][3] = 0 + + img[3][1] = 255 + img[3][2] = 0 + img[3][3] = 0 + + img[height - 1][1] = 255 + img[height - 1][2] = 0 + img[height - 1][3] = 255 + + img[height - 2][1] = 0 + img[height - 2][2] = 255 + img[height - 2][3] = 0 + + img[height - 3][1] = 255 + img[height - 3][2] = 0 + img[height - 3][3] = 0 + + img[1][width - 1] = 255 + img[2][width - 1] = 0 + img[3][width - 1] = 255 + + img[1][width - 2] = 0 + img[2][width - 2] = 255 + img[3][width - 2] = 0 + + img[1][width - 3] = 255 + img[2][width - 3] = 0 + img[3][width - 3] = 0 + + return img + + +def _randomPixelTrigger(ctx, img, height, width, distance, trig_h, trig_w): + alpha = 0.2 + mask = np.random.randint(low=0, + high=256, + size=(height, width), + dtype=np.uint8) + blend_img = (1 - alpha) * img + alpha * mask.reshape((height, width, 1)) + blend_img = np.clip(blend_img.astype('uint8'), 0, 255) + + return blend_img + + +def _signalTrigger(ctx, img, height, width, distance, trig_h, trig_w): + alpha = 0.2 + file_name = os.path.join(ctx.data.root, 'triggers/signal_cifar10_mask.npy') + signal_mask = np.load(file_name) + blend_img = (1 - alpha) * img + alpha * signal_mask.reshape( + (height, width, 1)) + blend_img = np.clip(blend_img.astype('uint8'), 0, 255) + + return blend_img + + +def _hkTrigger(ctx, img, height, width, distance, trig_h, trig_w): + + alpha = 0.2 + + file_name = os.path.join(ctx.data.root, 'triggers/hello_kitty.png') + signal_mask = mlt.imread(file_name) * 255 + signal_mask = cv2.resize(signal_mask, (height, width)) + if img.shape[2] == 1: + signal_mask = cv2.cvtColor(signal_mask, cv2.COLOR_RGB2GRAY) + signal_mask = np.expand_dims(signal_mask, -1) + blend_img = (1 - alpha) * img + alpha * signal_mask + blend_img = np.clip(blend_img.astype('uint8'), 0, 255) + + return blend_img + + +def _trojanTrigger(ctx, img, height, width, distance, trig_h, trig_w): + file_name = os.path.join(ctx.data.root, + 'triggers/best_square_trigger_cifar10.npz') + trg = np.load(file_name)['x'] + trg = np.transpose(trg, (1, 2, 0)) + img_ = np.clip((img + trg).astype('uint8'), 0, 255) + + return img_ + + +def _sigTrigger(ctx, + img, + height, + width, + distance, + trig_h, + trig_w, + delta=20, + f=6): + """ + Implement paper: + > Barni, M., Kallas, K., & Tondi, B. (2019). + > A new Backdoor Attack in CNNs by training set corruption without label poisoning. + > arXiv preprint arXiv:1902.11237 + superimposed sinusoidal backdoor signal with default parameters + """ + + delta = 20 + img = np.float32(img) + pattern = np.zeros_like(img) + m = pattern.shape[1] + for i in range(int(img.shape[0])): + for j in range(int(img.shape[1])): + pattern[i, j] = delta * np.sin(2 * np.pi * j * f / m) + img = np.uint32(img) + pattern + img = np.uint8(np.clip(img, 0, 255)) + return img + + +def _sig_n_Trigger(ctx, + img, + height, + width, + distance, + trig_h, + trig_w, + delta=40, + f=6): + """ + Implement paper: + > Barni, M., Kallas, K., & Tondi, B. (2019). + > A new Backdoor Attack in CNNs by training set corruption without label poisoning. + > arXiv preprint arXiv:1902.11237 + superimposed sinusoidal backdoor signal with default parameters + """ + delta = 10 + img = np.float32(img) + pattern = np.zeros_like(img) + m = pattern.shape[1] + for i in range(int(img.shape[0])): + for j in range(int(img.shape[1])): + pattern[i, j] = delta * np.sin(2 * np.pi * j * f / m) + img = np.uint32(img) + pattern + img = np.uint8(np.clip(img, 0, 255)) + return img + + +def _wanetTrigger(ctx, + img, + height, + width, + distance, + trig_w, + trig_h, + delta=20, + f=6): + """ + Implement paper: + """ + k = 4 + s = 0.5 + input_height = height + grid_rescale = 1 + ins = torch.rand(1, 2, k, k) * 2 - 1 + ins = ins / torch.mean(torch.abs(ins)) + noise_grid = (F.upsample(ins, + size=input_height, + mode="bicubic", + align_corners=True).permute(0, 2, 3, 1)) + array1d = torch.linspace(-1, 1, steps=input_height) + x, y = torch.meshgrid(array1d, array1d) + identity_grid = torch.stack((y, x), 2)[None, ...] + grid_temps = (identity_grid + s * noise_grid / input_height) * grid_rescale + grid_temps = torch.clamp(grid_temps, -1, 1) + img = np.float32(img) + img = torch.tensor(img).reshape(-1, height, width).unsqueeze(0) + img = F.grid_sample(img, grid_temps, + align_corners=True).squeeze(0).reshape( + height, width, -1) + img = np.uint8(np.clip(img.cpu().numpy(), 0, 255)) + + return img + + +def _wanetTriggerCross(ctx, + img, + height, + width, + distance, + trig_w, + trig_h, + delta=20, + f=6): + """ + Implement paper: + """ + k = 4 + s = 0.5 + input_height = height + grid_rescale = 1 + ins = torch.rand(1, 2, k, k) * 2 - 1 + ins = ins / torch.mean(torch.abs(ins)) + noise_grid = (F.upsample(ins, + size=input_height, + mode="bicubic", + align_corners=True).permute(0, 2, 3, 1)) + array1d = torch.linspace(-1, 1, steps=input_height) + x, y = torch.meshgrid(array1d, array1d) + identity_grid = torch.stack((y, x), 2)[None, ...] + grid_temps = (identity_grid + s * noise_grid / input_height) * grid_rescale + grid_temps = torch.clamp(grid_temps, -1, 1) + ins = torch.rand(1, input_height, input_height, 2) * 2 - 1 + grid_temps2 = grid_temps + ins / input_height + grid_temps2 = torch.clamp(grid_temps2, -1, 1) + img = np.float32(img) + img = torch.tensor(img).reshape(-1, height, width).unsqueeze(0) + img = F.grid_sample(img, grid_temps2, + align_corners=True).squeeze(0).reshape( + height, width, -1) + img = np.uint8(np.clip(img.cpu().numpy(), 0, 255)) + return img diff --git a/federatedscope/attack/auxiliary/create_edgeset.py b/federatedscope/attack/auxiliary/create_edgeset.py new file mode 100644 index 000000000..023e8979e --- /dev/null +++ b/federatedscope/attack/auxiliary/create_edgeset.py @@ -0,0 +1,145 @@ +import torch +import torch.utils.data as data +from PIL import Image +import numpy as np +from torchvision.datasets import MNIST, EMNIST, CIFAR10 +from torchvision.datasets import DatasetFolder +from torchvision import transforms + +from PIL import Image + + +import os +import sys +import logging +import pickle +import copy + + + +def create_ardis_poisoned_dataset(base_label=7, target_label=1, fraction=0.1): + + + ardis_images=np.loadtxt('/mnt/zeyuqin/FederatedScope/data/ARDIS/ARDIS_train_2828.csv', \ + dtype='float') + ardis_labels=np.loadtxt('/mnt/zeyuqin/FederatedScope/data/ARDIS/ARDIS_train_labels.csv', \ + dtype='float') + + + ardis_images = ardis_images.reshape(ardis_images.shape[0], 28, + 28).astype('float32') + + indices_seven = np.where(ardis_labels[:, base_label] == 1)[0] + images_seven = ardis_images[indices_seven, :] + images_seven = torch.tensor(images_seven).type(torch.uint8) + + if fraction < 1: + num_sampled_data_points = (int)(fraction * images_seven.size()[0]) + perm = torch.randperm(images_seven.size()[0]) + idx = perm[:num_sampled_data_points] + images_seven_cut = images_seven[idx] + images_seven_cut = images_seven_cut.unsqueeze(1) + print('size of images_seven_cut: ', images_seven_cut.size()) + poisoned_labels_cut = (torch.zeros(images_seven_cut.size()[0]) + + target_label).long() + + else: + images_seven_DA = copy.deepcopy(images_seven) + + cand_angles = [180 / fraction * i for i in range(1, fraction + 1)] + print("Candidate angles for DA: {}".format(cand_angles)) + + for idx in range(len(images_seven)): + for cad_ang in cand_angles: + PIL_img = transforms.ToPILImage()( + images_seven[idx]).convert("L") + PIL_img_rotate = transforms.functional.rotate(PIL_img, + cad_ang, + fill=(0, )) + + img_rotate = torch.from_numpy(np.array(PIL_img_rotate)) + images_seven_DA = torch.cat((images_seven_DA, \ + img_rotate.reshape(1,img_rotate.size()[0], \ + img_rotate.size()[0])), 0) + + print(images_seven_DA.size()) + + poisoned_labels_DA = (torch.zeros(images_seven_DA.size()[0]) + + target_label).long() + + poisoned_edgeset = [] + if fraction < 1: + for ii in range(len(images_seven_cut)): + poisoned_edgeset.append( + (images_seven_cut[ii], poisoned_labels_cut[ii])) + + print("Shape of poisoned_edgeset dataset (poisoned): {}, \ + shape of poisoned_edgeset labels: {}".format( + images_seven_cut.size(), poisoned_labels_cut.size())) + + else: + for ii in range(len(images_seven_DA)): + poisoned_edgeset.append( + (images_seven_DA[ii], poisoned_labels_DA[ii])) + + print("Shape of poisoned_edgeset dataset (poisoned): {}, \ + shape of poisoned_edgeset labels: {}".format( + images_seven_DA.size(), poisoned_labels_DA.size())) + + return poisoned_edgeset + + + +def create_ardis_test_dataset(base_label=7, target_label=1): + + ardis_images = np.loadtxt( + '/mnt/zeyuqin/FederatedScope/data/ARDIS/ARDIS_test_2828.csv', + dtype='float') + ardis_labels = np.loadtxt( + '/mnt/zeyuqin/FederatedScope/data/ARDIS/ARDIS_test_labels.csv', + dtype='float') + + + ardis_images = torch.tensor(ardis_images.reshape(ardis_images.shape[0], \ + 28, 28).astype('float32')).type(torch.uint8) + + indices_seven = np.where(ardis_labels[:, base_label] == 1)[0] + images_seven = ardis_images[indices_seven, :] + images_seven = torch.tensor(images_seven).type(torch.uint8) + images_seven = images_seven.unsqueeze(1) + + poisoned_labels = (torch.zeros(images_seven.size()[0]) + + target_label).long() + poisoned_labels = torch.tensor(poisoned_labels) + + ardis_test_dataset = [] + + for ii in range(len(images_seven)): + ardis_test_dataset.append((images_seven[ii], poisoned_labels[ii])) + + print("Shape of ardis test dataset (poisoned): {},\ + shape of ardis test labels: {}".format(images_seven.size(), + poisoned_labels.size())) + + return ardis_test_dataset + + + + +if __name__ == '__main__': + + fraction = 0.1 + + poisoned_edgeset = create_ardis_poisoned_dataset(fraction=fraction) + + ardis_test_dataset = create_ardis_test_dataset() + + print("Writing poison_data to: ") + print("poisoned_edgeset_fraction_{}".format(fraction)) + + with open("poisoned_edgeset_fraction_{}".format(fraction), + "wb") as saved_data_file: + torch.save(poisoned_edgeset, saved_data_file) + + with open("ardis_test_dataset.pt", "wb") as ardis_data_file: + torch.save(ardis_test_dataset, ardis_data_file) diff --git a/federatedscope/attack/auxiliary/poisoning_data.py b/federatedscope/attack/auxiliary/poisoning_data.py new file mode 100644 index 000000000..056834837 --- /dev/null +++ b/federatedscope/attack/auxiliary/poisoning_data.py @@ -0,0 +1,318 @@ +from asyncio.log import logger +import torch +import torch.utils.data as data +from PIL import Image +import numpy as np +from torchvision.datasets import MNIST, EMNIST, CIFAR10 +from torchvision.datasets import DatasetFolder +from torchvision import transforms +from federatedscope.core.auxiliaries.transform_builder import get_transform +from federatedscope.attack.auxiliary.backdoor_utils import selectTrigger +from torch.utils.data import DataLoader, Dataset +from federatedscope.attack.auxiliary.backdoor_utils import normalize +import matplotlib +import pickle +import logging +import os + + + + +logger = logging.getLogger(__name__) + + +def load_poisoned_dataset_edgeset(data, ctx, mode): + + transforms_funcs = get_transform(ctx, 'torchvision')['transform'] + + if "femnist" in ctx.data.type: + if mode == 'train': + file_name = os.path.join(ctx.data.root, + 'poisoned_edgeset_fraction_0.1') + with open(file_name, "rb") as saved_data_file: + poisoned_edgeset = torch.load(saved_data_file) + num_dps_poisoned_dataset = len(poisoned_edgeset) + + for ii in range(num_dps_poisoned_dataset): + sample, label = poisoned_edgeset[ii] + sample = sample.numpy().transpose(1, 2, 0) + + data['train'].dataset.append((transforms_funcs(sample), label)) + + if mode == 'test': + poison_testset = list() + file_name = os.path.join(ctx.data.root, 'ardis_test_dataset.pt') + with open(file_name, "rb") as saved_data_file: + poisoned_edgeset = torch.load(saved_data_file) + num_dps_poisoned_dataset = len(poisoned_edgeset) + + for ii in range(num_dps_poisoned_dataset): + sample, label = poisoned_edgeset[ii] + sample = sample.numpy().transpose(1, 2, 0) + poison_testset.append((transforms_funcs(sample), label)) + data['poison'] = DataLoader(poison_testset, + batch_size=ctx.data.batch_size, + shuffle=False, + num_workers=ctx.data.num_workers) + + elif "CIFAR10" in ctx.data.type: + target_label = 9 + label = target_label + + num_poisoned = ctx.attack.edge_num + + if mode == 'train': + file_name = os.path.join(ctx.data.root, + 'southwest_images_new_train.pkl') + with open(file_name, 'rb') as train_f: + saved_southwest_dataset_train = pickle.load(train_f) + num_poisoned_dataset = num_poisoned + samped_poisoned_data_indices = np.random.choice( + saved_southwest_dataset_train.shape[0], + num_poisoned_dataset, + replace=False) + saved_southwest_dataset_train = saved_southwest_dataset_train[ + samped_poisoned_data_indices, :, :, :] + + for ii in range(num_poisoned_dataset): + sample = saved_southwest_dataset_train[ii] + data['train'].dataset.append((transforms_funcs(sample), label)) + + logger.info('adding {:d} edge-cased samples in CIFAR-10'.format( + num_poisoned)) + + if mode == 'test': + poison_testset = list() + file_name = os.path.join(ctx.data.root, + 'southwest_images_new_test.pkl') + with open(file_name, 'rb') as test_f: + saved_southwest_dataset_test = pickle.load(test_f) + num_poisoned_dataset = len(saved_southwest_dataset_test) + + for ii in range(num_poisoned_dataset): + sample = saved_southwest_dataset_test[ii] + poison_testset.append((transforms_funcs(sample), label)) + data['poison'] = DataLoader(poison_testset, + batch_size=ctx.data.batch_size, + shuffle=False, + num_workers=ctx.data.num_workers) + + else: + raise RuntimeError( + 'Now, we only support the FEMNIST and CIFAR-10 datasets') + + return data + + +def addTrigger(ctx, + dataset, + target_label, + inject_portion, + mode, + distance, + trig_h, + trig_w, + trigger_type, + label_type, + surrogate_model=None): + + cnt_all = int(len(dataset) * inject_portion) + height = dataset[0][0].shape[-2] + width = dataset[0][0].shape[-1] + trig_h = int(trig_h * height) + trig_w = int(trig_w * width) + if 'wanet' in trigger_type: + cross_portion = 2 + perm_then = np.random.permutation( + len(dataset + ))[0:int(len(dataset) * inject_portion * (1 + cross_portion))] + perm = perm_then[0:int(len(dataset) * inject_portion)] + perm_cross = perm_then[( + int(len(dataset) * inject_portion) + + 1):int(len(dataset) * inject_portion * (1 + cross_portion))] + else: + perm = np.random.permutation( + len(dataset))[0:int(len(dataset) * inject_portion)] + + dataset_ = list() + ''' + need to specify the form of (x, y) from dataset + Now, the form of x is torch.tensor [0:1] (channel, height, width) + return the x : np.array [0:255], (height, width, channel) + ''' + + ii = 0 + for i in range(len(dataset)): + data = dataset[i] + + if label_type == 'dirty': + if mode == 'train': + img = np.array(data[0]).transpose(1, 2, 0) * 255.0 + img = np.clip(img.astype('uint8'), 0, 255) + height = img.shape[0] + width = img.shape[1] + if data[1] == 0 or data[1] == 1: + ii += 1 + + if i in perm: + img = selectTrigger(ctx, img, height, width, distance, + trig_h, trig_w, trigger_type) + dataset_.append((img, target_label)) + + elif 'wanet' in trigger_type and i in perm_cross: + img = selectTrigger(ctx, img, width, height, distance, + trig_w, trig_h, 'wanetTriggerCross') + dataset_.append((img, data[1])) + + else: + dataset_.append((img, data[1])) + + if mode == 'test': + if data[1] == target_label: + continue + + img = np.array(data[0]).transpose(1, 2, 0) * 255.0 + img = np.clip(img.astype('uint8'), 0, 255) + height = img.shape[0] + width = img.shape[1] + if i in perm: + img = selectTrigger(ctx, img, width, height, distance, + trig_w, trig_h, trigger_type) + dataset_.append((img, target_label)) + else: + dataset_.append((img, data[1])) + + elif label_type == 'clean_label': + pass + + return dataset_ + + +def load_poisoned_dataset_pixel(data, ctx, mode): + + trigger_type = ctx.attack.trigger_type + label_type = ctx.attack.label_type + target_label = int(ctx.attack.target_label_ind) + transforms_funcs = get_transform(ctx, 'torchvision')['transform'] + + if "femnist" in ctx.data.type: + inject_portion_train = ctx.attack.poison_ratio + target_label = torch.tensor(int(ctx.attack.target_label_ind)).long() + + elif "CIFAR10" in ctx.data.type: + inject_portion_train = ctx.attack.poison_ratio + target_label = int(ctx.attack.target_label_ind) + + else: + raise RuntimeError( + 'Now, we only support the FEMNIST and CIFAR-10 datasets') + + inject_portion_test = 1.0 + + if mode == 'train': + poisoned_dataset = addTrigger(ctx, data['train'].dataset, target_label, inject_portion_train, \ + mode = 'train', distance=1, trig_h = 0.1, trig_w = 0.1, \ + trigger_type = trigger_type, label_type = label_type) + num_dps_poisoned_dataset = len(poisoned_dataset) + for iii in range(num_dps_poisoned_dataset): + sample, label = poisoned_dataset[iii] + poisoned_dataset[iii] = (transforms_funcs(sample), label) + + data['train'] = DataLoader(poisoned_dataset, + batch_size=ctx.data.batch_size, + shuffle=True, + num_workers=ctx.data.num_workers) + + if mode == 'test': + poisoned_dataset = addTrigger(ctx, data[mode].dataset, target_label, inject_portion_test, mode = mode, \ + distance=1, trig_h = 0.1, trig_w = 0.1, trigger_type = trigger_type, label_type = label_type) + num_dps_poisoned_dataset = len(poisoned_dataset) + for iii in range(num_dps_poisoned_dataset): + sample, label = poisoned_dataset[iii] + poisoned_dataset[iii] = (transforms_funcs(sample), label) + + data['poison'] = DataLoader(poisoned_dataset, + batch_size=ctx.data.batch_size, + shuffle=False, + num_workers=ctx.data.num_workers) + + return data + + +def add_trans_normalize(data, ctx): + ''' + data for each client is a dictionary. + ''' + + for key in data: + num_dataset = len(data[key].dataset) + mean, std = ctx.attack.mean, ctx.attack.std + if "CIFAR10" in ctx.data.type and key == 'train': + transforms_list = [] + transforms_list.append(transforms.RandomHorizontalFlip()) + transforms_list.append(transforms.ToTensor()) + tran_train = transforms.Compose(transforms_list) + for iii in range(num_dataset): + sample = np.array(data[key].dataset[iii][0]).transpose( + 1, 2, 0) * 255.0 + sample = np.clip(sample.astype('uint8'), 0, 255) + sample = Image.fromarray(sample) + sample = tran_train(sample) + data[key].dataset[iii] = (normalize(sample, mean, std), + data[key].dataset[iii][1]) + else: + for iii in range(num_dataset): + data[key].dataset[iii] = (normalize(data[key].dataset[iii][0], mean, std), \ + data[key].dataset[iii][1]) + + return data + + +def select_poisoning(data, ctx, mode): + + if 'edge' in ctx.attack.trigger_type: + data = load_poisoned_dataset_edgeset(data, ctx, mode) + elif 'semantic' in ctx.attack.trigger_type: + pass + else: + data = load_poisoned_dataset_pixel(data, ctx, mode) + return data + + +def poisoning(data, ctx): + for i in range(1, len(data) + 1): + if i == ctx.attack.attacker_id: + logger.info(50 * '-') + logger.info('start poisoning!!!!!!') + logger.info(50 * '-') + data[i] = select_poisoning(data[i], ctx, mode='train') + data[i] = select_poisoning(data[i], ctx, mode='test') + + if 'cifar' in ctx.data.type.lower(): + class_num_train = torch.zeros(10) + class_num_test = torch.zeros(10) + else: + class_num_train = torch.zeros(62) + class_num_test = torch.zeros(62) + + for jj in data[i]['train'].dataset: + ind = jj[1] + class_num_train[ind] += 1 + print('training: the {} client'.format(i)) + print(class_num_train) + print('the training number of client {}: {}'.format( + i, + class_num_train.sum().item())) + + for jj in data[i]['test'].dataset: + ind = jj[1] + class_num_test[ind] += 1 + print('testing: the {} client'.format(i)) + print(class_num_test) + print('the testing number of client {}: {}'.format( + i, + class_num_test.sum().item())) + + data[i] = add_trans_normalize(data[i], ctx) + logger.info('finishing the clean and {} poisoning data processing for Client {:d}'\ + .format(ctx.attack.trigger_type, i)) diff --git a/federatedscope/attack/auxiliary/utils.py b/federatedscope/attack/auxiliary/utils.py new file mode 100644 index 000000000..4e6be90d5 --- /dev/null +++ b/federatedscope/attack/auxiliary/utils.py @@ -0,0 +1,321 @@ +import torch +import torch.nn.functional as F +import matplotlib.pyplot as plt +import logging +import os +import numpy as np +import federatedscope.register as register + +logger = logging.getLogger(__name__) + + +def label_to_onehot(target, num_classes=100): + return torch.nn.functional.one_hot(target, num_classes) + + +def cross_entropy_for_onehot(pred, target): + return torch.mean(torch.sum(-target * F.log_softmax(pred, dim=-1), 1)) + + +def iDLG_trick(original_gradient, num_class, is_one_hot_label=False): + ''' + Using iDLG trick to recover the label. Paper: "iDLG: Improved Deep Leakage from Gradients", link: https://arxiv.org/abs/2001.02610 + + Args: + original_gradient: the gradient of the FL model; type: list + num_class: the total number of class in the data + is_one_hot_label: whether the dataset's label is in the form of one hot. Type: bool + + Returns: + The recovered label by iDLG trick. + + ''' + last_weight_min = torch.argmin(torch.sum(original_gradient[-2], dim=-1), + dim=-1).detach() + + if is_one_hot_label: + label = label_to_onehot( + last_weight_min.reshape((1, )).requires_grad_(False), num_class) + else: + label = last_weight_min + return label + + +def cos_sim(input_gradient, gt_gradient): + total = 1 - torch.nn.functional.cosine_similarity( + input_gradient.flatten(), gt_gradient.flatten(), 0, 1e-10) + + # total = 0 + # input_norm= 0 + # gt_norm = 0 + # + # total -= (input_gradient * gt_gradient).sum() + # input_norm += input_gradient.pow(2).sum() + # gt_norm += gt_gradient.pow(2).sum() + # total += 1 + total / input_norm.sqrt() / gt_norm.sqrt() + + return total + + +def total_variation(x): + """Anisotropic TV.""" + dx = torch.mean(torch.abs(x[:, :, :, :-1] - x[:, :, :, 1:])) + dy = torch.mean(torch.abs(x[:, :, :-1, :] - x[:, :, 1:, :])) + + total = x.size()[0] + for ind in range(1, len(x.size())): + total *= x.size()[ind] + return (dx + dy) / (total) + + +def approximate_func(x, device, C1=20, C2=0.5): + ''' + Approximate the function f(x) = 0 if x<0.5 otherwise 1 + Args: + x: input data; + device: + C1: + C2: + + Returns: + 1/(1+e^{-1*C1 (x-C2)}) + + ''' + C1 = torch.tensor(C1).to(torch.device(device)) + C2 = torch.tensor(C2).to(torch.device(device)) + + return 1 / (1 + torch.exp(-1 * C1 * (x - C2))) + + +def get_classifier(classifier: str, model=None): + if model is not None: + return model + + if classifier == 'lr': + from sklearn.linear_model import LogisticRegression + model = LogisticRegression(random_state=0) + return model + elif classifier.lower() == 'randomforest': + from sklearn.ensemble import RandomForestClassifier + model = RandomForestClassifier(random_state=0) + return model + elif classifier.lower() == 'svm': + from sklearn.svm import SVC + from sklearn.preprocessing import StandardScaler + from sklearn.pipeline import make_pipeline + model = make_pipeline(StandardScaler(), SVC(gamma='auto')) + return model + else: + ValueError() + + +def get_data_info(dataset_name): + ''' + Get the dataset information, including the feature dimension, number of total classes, whether the label is represented in one-hot version + + Args: + dataset_name:dataset name; str + + :returns: + data_feature_dim, num_class, is_one_hot_label + + ''' + if dataset_name.lower() == 'femnist': + + return [1, 28, 28], 36, False + else: + ValueError( + 'Please provide the data info of {}: data_feature_dim, num_class'. + format(dataset_name)) + + +def get_data_sav_fn(dataset_name): + if dataset_name.lower() == 'femnist': + return sav_femnist_image + else: + logger.info( + "Reconstructed data saving function is not provided for dataset: {}" + .format(dataset_name)) + return None + + +def sav_femnist_image(data, sav_pth, name): + + fig = plt.figure(figsize=(4, 4)) + # print(data.shape) + + if len(data.shape) == 2: + data = torch.unsqueeze(data, 0) + data = torch.unsqueeze(data, 0) + + ind = min(data.shape[0], 16) + # print(data.shape) + + # plt.imshow(data * 127.5 + 127.5, cmap='gray') + + for i in range(ind): + plt.subplot(4, 4, i + 1) + + plt.imshow(data[i, 0, :, :] * 127.5 + 127.5, cmap='gray') + # plt.imshow(generated_data[i, 0, :, :] , cmap='gray') + # plt.imshow() + plt.axis('off') + + plt.savefig(os.path.join(sav_pth, name)) + plt.close() + + +def get_info_diff_loss(info_diff_type): + if info_diff_type.lower() == 'l2': + info_diff_loss = torch.nn.MSELoss(reduction='sum') + elif info_diff_type.lower() == 'l1': + info_diff_loss = torch.nn.SmoothL1Loss(reduction='sum', beta=1e-5) + elif info_diff_type.lower() == 'sim': + info_diff_loss = cos_sim + else: + ValueError( + 'info_diff_type: {} is not supported'.format(info_diff_type)) + return info_diff_loss + + +def get_reconstructor(atk_method, **kwargs): + ''' + + Args: + atk_method: the attack method name, and currently supporting + "DLG: deep leakage from gradient", and "IG: Inverting gradient" ; Type: str + **kwargs: other arguments + + Returns: + + ''' + + if atk_method.lower() == 'dlg': + from federatedscope.attack.privacy_attacks.reconstruction_opt import DLG + logger.info( + '--------- Getting reconstructor: DLG --------------------') + + return DLG(max_ite=kwargs['max_ite'], + lr=kwargs['lr'], + federate_loss_fn=kwargs['federate_loss_fn'], + device=kwargs['device'], + federate_lr=kwargs['federate_lr'], + optim=kwargs['optim'], + info_diff_type=kwargs['info_diff_type'], + federate_method=kwargs['federate_method']) + elif atk_method.lower() == 'ig': + from federatedscope.attack.privacy_attacks.reconstruction_opt import InvertGradient + logger.info( + '--------- Getting reconstructor: InvertGradient --------------------' + ) + return InvertGradient(max_ite=kwargs['max_ite'], + lr=kwargs['lr'], + federate_loss_fn=kwargs['federate_loss_fn'], + device=kwargs['device'], + federate_lr=kwargs['federate_lr'], + optim=kwargs['optim'], + info_diff_type=kwargs['info_diff_type'], + federate_method=kwargs['federate_method'], + alpha_TV=kwargs['alpha_TV']) + else: + ValueError( + "attack method: {} lacks reconstructor implementation".format( + atk_method)) + + +def get_generator(dataset_name): + ''' + Get the dataset's corresponding generator. + Args: + dataset_name: The dataset name; Type: str + + :returns: + The generator; Type: object + + ''' + if dataset_name == 'femnist': + from federatedscope.attack.models.gan_based_model import GeneratorFemnist + return GeneratorFemnist + else: + ValueError( + "The generator to generate data like {} is not defined!".format( + dataset_name)) + + +def get_data_property(ctx): + # A SHOWCASE for Femnist dataset: Property := whether contains a circle. + x, label = [_.to(ctx.device) for _ in ctx.data_batch] + + prop = torch.zeros(label.size) + positive_labels = [0, 6, 8] + for ind in range(label.size()[0]): + if label[ind] in positive_labels: + prop[ind] = 1 + prop.to(ctx.device) + return prop + + +def get_passive_PIA_auxiliary_dataset(dataset_name): + ''' + + Args: + dataset_name (str): dataset name + + :returns: + + the auxiliary dataset for property inference attack. Type: dict + + { + 'x': array, + 'y': array, + 'prop': array + } + + ''' + for func in register.auxiliary_data_loader_PIA_dict.values(): + criterion = func(dataset_name) + if criterion is not None: + return criterion + if dataset_name == 'toy': + + def _generate_data(instance_num=1000, feature_num=5, save_data=False): + """ + Generate data in FedRunner format + Args: + instance_num: + feature_num: + save_data: + + Returns: + { + 'x': ..., + 'y': ..., + 'prop': ... + } + + """ + weights = np.random.normal(loc=0.0, scale=1.0, size=feature_num) + bias = np.random.normal(loc=0.0, scale=1.0) + + prop_weights = np.random.normal(loc=0.0, + scale=1.0, + size=feature_num) + prop_bias = np.random.normal(loc=0.0, scale=1.0) + + x = np.random.normal(loc=0.0, + scale=0.5, + size=(instance_num, feature_num)) + y = np.sum(x * weights, axis=-1) + bias + y = np.expand_dims(y, -1) + prop = np.sum(x * prop_weights, axis=-1) + prop_bias + prop = 1.0 * ((1 / (1 + np.exp(-1 * prop))) > 0.5) + prop = np.expand_dims(prop, -1) + + data_train = {'x': x, 'y': y, 'prop': prop} + return data_train + + return _generate_data() + else: + ValueError( + 'The data: {} cannot be loaded. Please specify the data load function.' + ) diff --git a/federatedscope/attack/models/__init__.py b/federatedscope/attack/models/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/federatedscope/attack/models/gan_based_model.py b/federatedscope/attack/models/gan_based_model.py new file mode 100644 index 000000000..0665fd764 --- /dev/null +++ b/federatedscope/attack/models/gan_based_model.py @@ -0,0 +1,74 @@ +import torch +import torch.nn as nn +from copy import deepcopy + + +class GeneratorFemnist(nn.Module): + ''' + The generator for Femnist dataset + ''' + def __init__(self, noise_dim=100): + super(GeneratorFemnist, self).__init__() + + module_list = [] + module_list.append( + nn.Linear(in_features=noise_dim, + out_features=4 * 4 * 256, + bias=False)) + module_list.append(nn.BatchNorm1d(num_features=4 * 4 * 256)) + module_list.append(nn.ReLU()) + self.body1 = nn.Sequential(*module_list) + + # need to reshape the output of self.body1 + + module_list = [] + + module_list.append( + nn.ConvTranspose2d(in_channels=256, + out_channels=128, + kernel_size=(3, 3), + stride=(1, 1), + bias=False)) + module_list.append(nn.BatchNorm2d(128)) + module_list.append(nn.ReLU()) + self.body2 = nn.Sequential(*module_list) + + module_list = [] + module_list.append( + nn.ConvTranspose2d(in_channels=128, + out_channels=64, + kernel_size=(3, 3), + stride=(2, 2), + bias=False)) + module_list.append(nn.BatchNorm2d(64)) + module_list.append(nn.ReLU()) + self.body3 = nn.Sequential(*module_list) + + module_list = [] + module_list.append( + nn.ConvTranspose2d(in_channels=64, + out_channels=1, + kernel_size=(4, 4), + stride=(2, 2), + bias=False)) + module_list.append(nn.BatchNorm2d(1)) + module_list.append(nn.Tanh()) + self.body4 = nn.Sequential(*module_list) + + def forward(self, x): + + tmp1 = self.body1(x).view(-1, 256, 4, 4) + + assert tmp1.size()[1:4] == (256, 4, 4) + + tmp2 = self.body2(tmp1) + assert tmp2.size()[1:4] == (128, 6, 6) + + tmp3 = self.body3(tmp2) + + assert tmp3.size()[1:4] == (64, 13, 13) + + tmp4 = self.body4(tmp3) + assert tmp4.size()[1:4] == (1, 28, 28) + + return tmp4 diff --git a/federatedscope/attack/models/vision.py b/federatedscope/attack/models/vision.py new file mode 100644 index 000000000..b5b2c12ad --- /dev/null +++ b/federatedscope/attack/models/vision.py @@ -0,0 +1,209 @@ +"""This file is part of https://github.com/mit-han-lab/dlg. +MIT License +Copyright (c) 2019 Ildoo Kim +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +""" +import torch +import torch.nn as nn +import torch.nn.functional as F +from torch.autograd import grad +import torchvision +from torchvision import models, datasets, transforms + + +def weights_init(m): + if hasattr(m, "weight"): + m.weight.data.uniform_(-0.5, 0.5) + if hasattr(m, "bias"): + m.bias.data.uniform_(-0.5, 0.5) + + +class LeNet(nn.Module): + def __init__(self): + super(LeNet, self).__init__() + act = nn.Sigmoid + self.body = nn.Sequential( + nn.Conv2d(3, 12, kernel_size=5, padding=5 // 2, stride=2), + act(), + nn.Conv2d(12, 12, kernel_size=5, padding=5 // 2, stride=2), + act(), + nn.Conv2d(12, 12, kernel_size=5, padding=5 // 2, stride=1), + act(), + ) + + self.fc = nn.Sequential(nn.Linear(768, 100)) + + def forward(self, x): + out = self.body(x) + out = out.view(out.size(0), -1) + # print(out.size()) + out = self.fc(out) + return out + + +'''ResNet in PyTorch. +For Pre-activation ResNet, see 'preact_resnet.py'. +Reference: +[1] Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun + Deep Residual Learning for Image Recognition. arXiv:1512.03385 +''' +import torch +import torch.nn as nn +import torch.nn.functional as F + + +def weights_init(m): + if hasattr(m, "weight"): + m.weight.data.uniform_(-0.5, 0.5) + if hasattr(m, "bias"): + m.bias.data.uniform_(-0.5, 0.5) + + +class BasicBlock(nn.Module): + expansion = 1 + + def __init__(self, in_planes, planes, stride=1): + super(BasicBlock, self).__init__() + + self.conv1 = nn.Conv2d(in_planes, + planes, + kernel_size=3, + stride=stride, + padding=1, + bias=False) + self.bn1 = nn.BatchNorm2d(planes) + self.conv2 = nn.Conv2d(planes, + planes, + kernel_size=3, + stride=1, + padding=1, + bias=False) + self.bn2 = nn.BatchNorm2d(planes) + + self.shortcut = nn.Sequential() + if stride != 1 or in_planes != self.expansion * planes: + self.shortcut = nn.Sequential( + nn.Conv2d(in_planes, + self.expansion * planes, + kernel_size=1, + stride=stride, + bias=False), nn.BatchNorm2d(self.expansion * planes)) + + def forward(self, x): + out = F.Sigmoid(self.bn1(self.conv1(x))) + out = self.bn2(self.conv2(out)) + out += self.shortcut(x) + out = F.Sigmoid(out) + return out + + +class Bottleneck(nn.Module): + expansion = 4 + + def __init__(self, in_planes, planes, stride=1): + super(Bottleneck, self).__init__() + self.conv1 = nn.Conv2d(in_planes, planes, kernel_size=1, bias=False) + self.bn1 = nn.BatchNorm2d(planes) + + self.conv2 = nn.Conv2d(planes, + planes, + kernel_size=3, + stride=stride, + padding=1, + bias=False) + self.bn2 = nn.BatchNorm2d(planes) + self.conv3 = nn.Conv2d(planes, + self.expansion * planes, + kernel_size=1, + bias=False) + self.bn3 = nn.BatchNorm2d(self.expansion * planes) + + self.shortcut = nn.Sequential() + if stride != 1 or in_planes != self.expansion * planes: + self.shortcut = nn.Sequential( + nn.Conv2d(in_planes, + self.expansion * planes, + kernel_size=1, + stride=stride, + bias=False), nn.BatchNorm2d(self.expansion * planes)) + + def forward(self, x): + out = F.Sigmoid(self.bn1(self.conv1(x))) + out = F.Sigmoid(self.bn2(self.conv2(out))) + out = self.bn3(self.conv3(out)) + out += self.shortcut(x) + out = F.Sigmoid(out) + return out + + +class ResNet(nn.Module): + def __init__(self, block, num_blocks, num_classes=10): + super(ResNet, self).__init__() + self.in_planes = 64 + + self.conv1 = nn.Conv2d(3, + 64, + kernel_size=3, + stride=1, + padding=1, + bias=False) + self.bn1 = nn.BatchNorm2d(64) + self.layer1 = self._make_layer(block, 64, num_blocks[0], stride=1) + self.layer2 = self._make_layer(block, 128, num_blocks[1], stride=1) + self.layer3 = self._make_layer(block, 256, num_blocks[2], stride=1) + self.layer4 = self._make_layer(block, 512, num_blocks[3], stride=1) + self.linear = nn.Linear(512 * block.expansion, num_classes) + + def _make_layer(self, block, planes, num_blocks, stride): + strides = [stride] + [1] * (num_blocks - 1) + layers = [] + for stride in strides: + layers.append(block(self.in_planes, planes, stride)) + self.in_planes = planes * block.expansion + return nn.Sequential(*layers) + + def forward(self, x): + out = F.Sigmoid(self.bn1(self.conv1(x))) + out = self.layer1(out) + out = self.layer2(out) + out = self.layer3(out) + out = self.layer4(out) + out = F.avg_pool2d(out, 4) + out = out.view(out.size(0), -1) + out = self.linear(out) + return out + + +def ResNet18(): + return ResNet(BasicBlock, [2, 2, 2, 2]) + + +def ResNet34(): + return ResNet(BasicBlock, [3, 4, 6, 3]) + + +def ResNet50(): + return ResNet(Bottleneck, [3, 4, 6, 3]) + + +def ResNet101(): + return ResNet(Bottleneck, [3, 4, 23, 3]) + + +def ResNet152(): + + return ResNet(Bottleneck, [3, 8, 36, 3]) diff --git a/federatedscope/attack/privacy_attacks/GAN_based_attack.py b/federatedscope/attack/privacy_attacks/GAN_based_attack.py new file mode 100644 index 000000000..4a404bbfe --- /dev/null +++ b/federatedscope/attack/privacy_attacks/GAN_based_attack.py @@ -0,0 +1,179 @@ +import torch +import torch.nn as nn +from copy import deepcopy +from federatedscope.attack.auxiliary.utils import get_generator +import matplotlib.pyplot as plt + + +class GANCRA(): + ''' + The implementation of GAN based class representative attack. https://dl.acm.org/doi/abs/10.1145/3133956.3134012 + + References: + + Hitaj, Briland, Giuseppe Ateniese, and Fernando Perez-Cruz. + "Deep models under the GAN: information leakage from collaborative deep learning." + Proceedings of the 2017 ACM SIGSAC conference on computer and communications security. 2017. + + + + Args: + - target_label_ind (int): the label index whose representative + - fl_model (object): + - device (str or int): the device to run; 'cpu' or the device index to select; default: 'cpu'. + - dataset_name (str): the dataset name; default: None + - noise_dim (int): the dimension of the noise that fed into the generator; default: 100 + - batch_size (int): the number of data generated into training; default: 16 + - generator_train_epoch (int): the number of training steps when training the generator; default: 10 + - lr (float): the learning rate of the generator training; default: 0.001 + - sav_pth (str): the path to save the generated data; default: 'data/' + - round_num (int): the FL round that starting the attack; default: -1. + + ''' + def __init__(self, + target_label_ind, + fl_model, + device='cpu', + dataset_name=None, + noise_dim=100, + batch_size=16, + generator_train_epoch=10, + lr=0.001, + sav_pth='data/', + round_num=-1): + + # get dataset's corresponding generator + self.generator = get_generator(dataset_name=dataset_name)().to(device) + self.target_label_ind = target_label_ind + + self.discriminator = deepcopy(fl_model) + + self.generator_loss_fun = nn.CrossEntropyLoss() + + self.generator_train_epoch = generator_train_epoch + + # the dimension of the noise input to generator + self.noise_dim = noise_dim + self.batch_size = batch_size + + self.device = device + + # define generator optimizer + self.generator_optimizer = torch.optim.SGD( + params=self.generator.parameters(), lr=lr) + self.sav_pth = sav_pth + self.round_num = round_num + self.generator_loss_summary = [] + + def update_discriminator(self, model): + ''' + Copy the model of the server as the discriminator + + Args: + model (object): the model in the server + + Returns: the discriminator + + ''' + + self.discriminator = deepcopy(model) + + def discriminator_loss(self): + pass + + def generator_loss(self, discriminator_output): + ''' + Get the generator loss based on the discriminator's output + + Args: + discriminator_output (Tensor): the discriminator's output; size: batch_size * n_class + + Returns: generator_loss + + ''' + + self.num_class = discriminator_output.size()[1] + ideal_results = self.target_label_ind * torch.ones( + discriminator_output.size()[0], dtype=torch.long) + + # ideal_results[:] = self.target_label_ind + + return self.generator_loss_fun(discriminator_output, + ideal_results.to(self.device)) + + def _gradient_closure(self, noise): + def closure(): + generated_images = self.generator(noise) + discriminator_output = self.discriminator(generated_images) + generator_loss = self.generator_loss(discriminator_output) + + generator_loss.backward() + return generator_loss + + return closure + + def generator_train(self): + + for _ in range(self.generator_train_epoch): + + self.generator.zero_grad() + self.generator_optimizer.zero_grad() + noise = torch.randn(size=(self.batch_size, self.noise_dim)).to( + torch.device(self.device)) + closure = self._gradient_closure(noise) + tmp_loss = self.generator_optimizer.step(closure) + self.generator_loss_summary.append( + tmp_loss.detach().to('cpu').numpy()) + + def generate_fake_data(self, data_num=None): + if data_num is None: + data_num = self.batch_size + noise = torch.randn(size=(data_num, self.noise_dim)).to( + torch.device(self.device)) + generated_images = self.generator(noise) + + generated_label = torch.zeros(self.batch_size, dtype=torch.long).to( + torch.device(self.device)) + if self.target_label_ind + 1 > self.num_class - 1: + generated_label[:] = self.target_label_ind - 1 + else: + generated_label[:] = self.target_label_ind + 1 + + return generated_images.detach(), generated_label.detach() + + def sav_image(self, generated_data): + + fig = plt.figure(figsize=(4, 4)) + + ind = min(generated_data.shape[0], 16) + + for i in range(ind): + plt.subplot(4, 4, i + 1) + + plt.imshow(generated_data[i, 0, :, :] * 127.5 + 127.5, cmap='gray') + # plt.imshow(generated_data[i, 0, :, :] , cmap='gray') + # plt.imshow() + plt.axis('off') + + plt.savefig(self.sav_pth + '/' + + 'image_round_{}.png'.format(self.round_num)) + plt.close() + + def sav_plot_gan_loss(self): + plt.plot(self.generator_loss_summary) + plt.savefig(self.sav_pth + '/' + + 'generator_loss_round_{}.png'.format(self.round_num)) + plt.close() + + def generate_and_save_images(self): + ''' + + Save the generated data and the generator training loss + + ''' + + generated_data, _ = self.generate_fake_data() + generated_data = generated_data.detach().to('cpu') + + self.sav_image(generated_data) + self.sav_plot_gan_loss() diff --git a/federatedscope/attack/privacy_attacks/__init__.py b/federatedscope/attack/privacy_attacks/__init__.py new file mode 100644 index 000000000..5ef9a533c --- /dev/null +++ b/federatedscope/attack/privacy_attacks/__init__.py @@ -0,0 +1,5 @@ +from federatedscope.attack.privacy_attacks.GAN_based_attack import * +from federatedscope.attack.privacy_attacks.passive_PIA import * +from federatedscope.attack.privacy_attacks.reconstruction_opt import * + +__all__ = ['DLG', 'InvertGradient', 'GANCRA', 'PassivePropertyInference'] diff --git a/federatedscope/attack/privacy_attacks/passive_PIA.py b/federatedscope/attack/privacy_attacks/passive_PIA.py new file mode 100644 index 000000000..cae0b06c0 --- /dev/null +++ b/federatedscope/attack/privacy_attacks/passive_PIA.py @@ -0,0 +1,179 @@ +from federatedscope.attack.auxiliary.utils import get_classifier, get_passive_PIA_auxiliary_dataset +import torch +import numpy as np +import copy +from federatedscope.core.auxiliaries.optimizer_builder import get_optimizer + +import logging + +logger = logging.getLogger(__name__) + + +class PassivePropertyInference(): + ''' + This is an implementation of the passive property inference (algorithm 3)in Exploiting Unintended Feature Leakage in Collaborative Learning: + https://arxiv.org/pdf/1805.04049.pdf + ''' + def __init__(self, + classier: str, + fl_model_criterion, + device, + grad_clip, + dataset_name, + fl_local_update_num, + fl_type_optimizer, + fl_lr, + batch_size=100): + # self.auxiliary_dataset['x']: n * d_feature; x is the parameter updates + # self.auxiliary_dataset['y']: n * 1; y is the + self.dataset_prop_classifier = {"x": None, 'prop': None} + + self.classifier = get_classifier(classier) + + self.auxiliary_dataset = get_passive_PIA_auxiliary_dataset( + dataset_name) + + self.fl_model_criterion = fl_model_criterion + self.fl_local_update_num = fl_local_update_num + self.fl_type_optimizer = fl_type_optimizer + self.fl_lr = fl_lr + + self.device = device + + self.batch_size = batch_size + + self.grad_clip = grad_clip + + self.collect_updates_summary = dict() + + # def _get_batch_auxiliary(self): + # train_data_batch = self._get_batch(self.auxiliary_dataset['train']) + # test_data_batch = self._get_batch(self.auxiliary_dataset['test']) + # + # return train_data_batch, test_data_batch + + def _get_batch(self, data): + prop_ind = np.random.choice(np.where(data['prop'] == 1)[0], + self.batch_size, + replace=True) + x_batch_prop = data['x'][prop_ind, :] + y_batch_prop = data['y'][prop_ind, :] + + nprop_ind = np.random.choice(np.where(data['prop'] == 0)[0], + self.batch_size, + replace=True) + x_batch_nprop = data['x'][nprop_ind, :] + y_batch_nprop = data['y'][nprop_ind, :] + + return [x_batch_prop, y_batch_prop, x_batch_nprop, y_batch_nprop] + + def get_data_for_dataset_prop_classifier(self, model, local_runs=10): + + previous_para = model.state_dict() + self.current_model_para = previous_para + for _ in range(local_runs): + x_batch_prop, y_batch_prop, x_batch_nprop, y_batch_nprop = self._get_batch( + self.auxiliary_dataset) + para_update_prop = self._get_parameter_updates( + model, previous_para, x_batch_prop, y_batch_prop) + prop = torch.tensor([[1]]).to(torch.device(self.device)) + self.add_parameter_updates(para_update_prop, prop) + + para_update_nprop = self._get_parameter_updates( + model, previous_para, x_batch_nprop, y_batch_nprop) + prop = torch.tensor([[0]]).to(torch.device(self.device)) + self.add_parameter_updates(para_update_nprop, prop) + + def _get_parameter_updates(self, model, previous_para, x_batch, y_batch): + + model = copy.deepcopy(model) + # get last phase model parameters + # print(model) + model = model.to(torch.device(self.device)) + model.load_state_dict(previous_para, strict=False) + + optimizer = get_optimizer(type=self.fl_type_optimizer, + model=model, + lr=self.fl_lr) + + for _ in range(self.fl_local_update_num): + optimizer.zero_grad() + loss_auxiliary_prop = self.fl_model_criterion( + model(torch.Tensor(x_batch).to(torch.device(self.device))), + torch.Tensor(y_batch).to(torch.device(self.device))) + loss_auxiliary_prop.backward() + if self.grad_clip > 0: + torch.nn.utils.clip_grad_norm_(model.parameters(), + self.grad_clip) + optimizer.step() + + para_prop = model.cpu().state_dict() + # print('update: ') + # print(para_prop) + + updates_prop = torch.hstack([ + (previous_para[name] - para_prop[name]).flatten().cpu() + for name in previous_para.keys() + ]) + model.load_state_dict(previous_para, strict=False) + return updates_prop + + def collect_updates(self, previous_para, updated_parameter, round, + client_id): + + updates_prop = torch.hstack([ + (previous_para[name] - updated_parameter[name]).flatten().cpu() + for name in previous_para.keys() + ]) + if round not in self.collect_updates_summary.keys(): + self.collect_updates_summary[round] = dict() + self.collect_updates_summary[round][client_id] = updates_prop + + def add_parameter_updates(self, parameter_updates, prop): + ''' + + Args: + parameter_updates: Tensor with dimension n * d_feature + prop: Tensor with dimension n * 1 + + Returns: + + ''' + if self.dataset_prop_classifier['x'] is None: + self.dataset_prop_classifier['x'] = parameter_updates.cpu() + self.dataset_prop_classifier['y'] = prop.reshape([-1]).cpu() + else: + self.dataset_prop_classifier['x'] = torch.vstack( + (self.dataset_prop_classifier['x'], parameter_updates.cpu())) + self.dataset_prop_classifier['y'] = torch.vstack( + (self.dataset_prop_classifier['y'], prop.cpu())) + + def train_property_classifier(self): + from sklearn.model_selection import train_test_split + x_train, x_test, y_train, y_test = train_test_split( + self.dataset_prop_classifier['x'], + self.dataset_prop_classifier['y'], + test_size=0.33, + random_state=42) + self.classifier.fit(x_train, y_train) + + y_pred = self.property_inference(x_test) + from sklearn.metrics import accuracy_score + accuracy = accuracy_score(y_true=y_test, y_pred=y_pred) + logger.info( + '=============== PIA accuracy on auxiliary test dataset: {}'. + format(accuracy)) + + def property_inference(self, parameter_updates): + return self.classifier.predict(parameter_updates) + + def infer_collected(self): + pia_results = dict() + + for round in self.collect_updates_summary.keys(): + for id in self.collect_updates_summary[round].keys(): + if round not in pia_results.keys(): + pia_results[round] = dict() + pia_results[round][id] = self.property_inference( + self.collect_updates_summary[round][id].reshape(1, -1)) + return pia_results diff --git a/federatedscope/attack/privacy_attacks/reconstruction_opt.py b/federatedscope/attack/privacy_attacks/reconstruction_opt.py new file mode 100644 index 000000000..664434b33 --- /dev/null +++ b/federatedscope/attack/privacy_attacks/reconstruction_opt.py @@ -0,0 +1,270 @@ +import torch +import torch.nn.functional as F +from federatedscope.attack.auxiliary.utils import iDLG_trick, total_variation, get_info_diff_loss +import logging + +logger = logging.getLogger(__name__) + + +class DLG(object): + """Implementation of the paper "Deep Leakage from Gradients": https://papers.nips.cc/paper/2019/file/60a6c4002cc7b29142def8871531281a-Paper.pdf + + References: + + Zhu, Ligeng, Zhijian Liu, and Song Han. "Deep leakage from gradients." Advances in Neural Information Processing Systems 32 (2019). + + Args: + - max_ite (int): the max iteration number; + - lr (float): learning rate in optimization based reconstruction; + - federate_loss_fn (object): The loss function used in FL training; + - device (str): the device running the reconstruction; + - federate_method (str): The federated learning method; + - federate_lr (float):The learning rate used in FL training; default None. + - optim (str): The optimization method used in reconstruction; default: "Adam"; supported: 'sgd', 'adam', 'lbfgs' + - info_diff_type (str): The type of loss between the ground-truth gradient/parameter updates info and the reconstructed info; default: "l2" + - is_one_hot_label (bool): whether the label is one-hot; default: False + + + """ + def __init__(self, + max_ite, + lr, + federate_loss_fn, + device, + federate_method, + federate_lr=None, + optim='Adam', + info_diff_type='l2', + is_one_hot_label=False): + + if federate_method.lower() == "fedavg": + # check whether the received info is parameter. If yes, the reconstruction attack requires the learning rate of FL + assert federate_lr is not None + + self.info_is_para = federate_method.lower() == "fedavg" + self.federate_lr = federate_lr + + self.max_ite = max_ite + self.lr = lr + self.device = device + self.optim = optim + self.federate_loss_fn = federate_loss_fn + self.info_diff_type = info_diff_type + self.info_diff_loss = get_info_diff_loss(info_diff_type) + + self.is_one_hot_label = is_one_hot_label + + def eval(self): + pass + + def _setup_optimizer(self, parameters): + if self.optim.lower() == 'adam': + optimizer = torch.optim.Adam(parameters, lr=self.lr) + elif self.optim.lower() == 'sgd': # actually gd + optimizer = torch.optim.SGD(parameters, + lr=self.lr, + momentum=0.9, + nesterov=True) + elif self.optim.lower() == 'lbfgs': + optimizer = torch.optim.LBFGS(parameters) + else: + raise ValueError() + return optimizer + + def _gradient_closure(self, model, optimizer, dummy_data, dummy_label, + original_info): + def closure(): + optimizer.zero_grad() + model.zero_grad() + + loss = self.federate_loss_fn( + model(dummy_data), + dummy_label.view(-1, ).type(torch.LongTensor).to( + torch.device(self.device))) + + gradient = torch.autograd.grad(loss, + model.parameters(), + create_graph=True) + info_diff = 0 + for g_dumby, gt in zip(gradient, original_info): + info_diff += self.info_diff_loss(g_dumby, gt) + info_diff.backward() + return info_diff + + return closure + + def _run_simple_reconstruct(self, model, optimizer, dummy_data, label, + original_gradient, closure_fn): + + for ite in range(self.max_ite): + closure = closure_fn(model, optimizer, dummy_data, label, + original_gradient) + info_diff = optimizer.step(closure) + + if (ite + 1 == self.max_ite) or ite % 20 == 0: + logger.info('Ite: {}, gradient difference: {:.4f}'.format( + ite, info_diff)) + return dummy_data.detach(), label.detach() + + def get_original_gradient_from_para(self, model, original_info, + model_para_name): + ''' + + Transfer the model parameter updates to gradient based on: + + .. math:: + P_{t} = P - \eta g, + where + :math:`P_{t}` is the parameters updated by the client at current round; + :math:`P` is the parameters of the global model at the end of the last round; + :math:`\eta` is the learning rate of clients' local training; + :math:`g` is the gradient + + + + Arguments: + - model (object): The model owned by the Server + - original_info (dict): The model parameter updates received by Server + - model_para_name (list): The list of model name. Be sure the :attr:`model_para_name` is consistent with the the key name in :attr:`original_info` + + :returns: + - original_gradient (list): the list of the gradient corresponding to the model updates + + ''' + original_gradient = [ + ((original_para - + original_info[name].to(torch.device(self.device))) / + self.federate_lr).detach() + for original_para, name in zip(model.parameters(), model_para_name) + ] + return original_gradient + + def reconstruct(self, model, original_info, data_feature_dim, num_class, + batch_size): + ''' + Reconstruct the original training data and label. + + Args: + model: The model used in FL; Type: object + original_info: The message received to perform reconstruction, usually the gradient/parameter updates; Type: list + data_feature_dim: The feature dimension of dataset; Type: list or Tensor.Size + num_class: the number of total classes in the dataset; Type: int + batch_size: the number of samples in the batch that generate the original_info; Type: int + + :returns: + - The reconstructed data (Tensor); Size: [batch_size, data_feature_dim] + - The reconstructed label (Tensor): Size: [batch_size] + + + ''' + # inital dummy data and label + dummy_data_dim = [batch_size] + dummy_data_dim.extend(data_feature_dim) + dummy_data = torch.randn(dummy_data_dim).to(torch.device( + self.device)).requires_grad_(True) + + para_trainable_name = [] + for p in model.named_parameters(): + para_trainable_name.append(p[0]) + + if self.info_is_para: + original_gradient = self.get_original_gradient_from_para( + model, original_info, model_para_name=para_trainable_name) + else: + original_gradient = [ + grad.to(torch.device(self.device)) for k, grad in original_info + ] + + label = iDLG_trick(original_gradient, + num_class=num_class, + is_one_hot_label=self.is_one_hot_label) + label = label.to(torch.device(self.device)) + + # setup optimizer + optimizer = self._setup_optimizer([dummy_data]) + + self._run_simple_reconstruct(model, + optimizer, + dummy_data, + label=label, + original_gradient=original_gradient, + closure_fn=self._gradient_closure) + + return dummy_data.detach(), label.detach() + + +class InvertGradient(DLG): + ''' + The implementation of "Inverting Gradients - How easy is it to break privacy in federated learning?". + Link: https://proceedings.neurips.cc/paper/2020/hash/c4ede56bbd98819ae6112b20ac6bf145-Abstract.html + + References: + + Geiping, Jonas, et al. "Inverting gradients-how easy is it to break privacy in federated learning?." Advances in Neural Information Processing Systems 33 (2020): 16937-16947. + + Args: + - max_ite (int): the max iteration number; + - lr (float): learning rate in optimization based reconstruction; + - federate_loss_fn (object): The loss function used in FL training; + - device (str): the device running the reconstruction; + - federate_method (str): The federated learning method; + - federate_lr (float): The learning rate used in FL training; default: None. + - alpha_TV (float): the hyper-parameter of the total variance term; default: 0.001 + - info_diff_type (str): The type of loss between the ground-truth gradient/parameter updates info and the reconstructed info; default: "l2" + - optim (str): The optimization method used in reconstruction; default: "Adam"; supported: 'sgd', 'adam', 'lbfgs' + - info_diff_type (str): The type of loss between the ground-truth gradient/parameter updates info and the reconstructed info; default: "l2" + - is_one_hot_label (bool): whether the label is one-hot; default: False + ''' + def __init__(self, + max_ite, + lr, + federate_loss_fn, + device, + federate_method, + federate_lr=None, + alpha_TV=0.001, + info_diff_type='sim', + optim='Adam', + is_one_hot_label=False): + super(InvertGradient, self).__init__(max_ite, + lr, + federate_loss_fn, + device, + federate_method, + federate_lr=federate_lr, + optim=optim, + info_diff_type=info_diff_type, + is_one_hot_label=is_one_hot_label) + self.alpha_TV = alpha_TV + if self.info_diff_type != 'sim': + logger.info( + 'Force the info_diff_type to be cosine similarity loss in InvertGradient attack method!' + ) + self.info_diff_type = 'sim' + self.info_diff_loss = get_info_diff_loss(self.info_diff_type) + + def _gradient_closure(self, model, optimizer, dummy_data, dummy_label, + original_gradient): + def closure(): + optimizer.zero_grad() + model.zero_grad() + loss = self.federate_loss_fn( + model(dummy_data), + dummy_label.view(-1, ).type(torch.LongTensor).to( + torch.device(self.device))) + + gradient = torch.autograd.grad(loss, + model.parameters(), + create_graph=True) + gradient_diff = 0 + + for g_dummy, gt in zip(gradient, original_gradient): + gradient_diff += self.info_diff_loss(g_dummy, gt) + + # add total variance regularization + if self.alpha_TV > 0: + gradient_diff += self.alpha_TV * total_variation(dummy_data) + gradient_diff.backward() + return gradient_diff + + return closure diff --git a/federatedscope/attack/trainer/GAN_trainer.py b/federatedscope/attack/trainer/GAN_trainer.py new file mode 100644 index 000000000..a1b2b0393 --- /dev/null +++ b/federatedscope/attack/trainer/GAN_trainer.py @@ -0,0 +1,103 @@ +import logging +from typing import Type + +from federatedscope.core.trainers import GeneralTorchTrainer +from federatedscope.attack.privacy_attacks.GAN_based_attack import GANCRA + +logger = logging.getLogger(__name__) + + +def wrap_GANTrainer( + base_trainer: Type[GeneralTorchTrainer]) -> Type[GeneralTorchTrainer]: + ''' + Warp the trainer for gan_based class representative attack. + + Args: + base_trainer: Type: core.trainers.GeneralTorchTrainer + + :returns: + The wrapped trainer; Type: core.trainers.GeneralTorchTrainer + + ''' + + # ---------------- attribute-level plug-in ----------------------- + + base_trainer.ctx.target_label_ind = base_trainer.cfg.attack.target_label_ind + base_trainer.ctx.gan_cra = GANCRA(base_trainer.cfg.attack.target_label_ind, + base_trainer.ctx.model, + dataset_name=base_trainer.cfg.data.type, + device=base_trainer.ctx.device, + sav_pth=base_trainer.cfg.outdir) + + # ---- action-level plug-in ------- + + base_trainer.register_hook_in_train(new_hook=hood_on_fit_start_generator, + trigger='on_fit_start', + insert_mode=-1) + base_trainer.register_hook_in_train(new_hook=hook_on_gan_cra_train, + trigger='on_batch_start', + insert_mode=-1) + base_trainer.register_hook_in_train( + new_hook=hook_on_batch_injected_data_generation, + trigger='on_batch_start', + insert_mode=-1) + base_trainer.register_hook_in_train( + new_hook=hook_on_batch_forward_injected_data, + trigger='on_batch_forward', + insert_mode=-1) + + base_trainer.register_hook_in_train( + new_hook=hook_on_data_injection_sav_data, + trigger='on_fit_end', + insert_mode=-1) + + return base_trainer + + +def hood_on_fit_start_generator(ctx): + ''' + count the FL training round before fitting + Args: + ctx (): + + Returns: + + ''' + ctx.gan_cra.round_num += 1 + logger.info('----- Round {}: GAN training ............'.format( + ctx.gan_cra.round_num)) + + +def hook_on_batch_forward_injected_data(ctx): + ''' + inject the generated data into training batch loss + Args: + ctx (): + + Returns: + + ''' + x, label = [_.to(ctx.device) for _ in ctx.injected_data] + pred = ctx.model(x) + if len(label.size()) == 0: + label = label.unsqueeze(0) + ctx.loss_task += ctx.criterion(pred, label) + ctx.y_true_injected = label + ctx.y_prob_injected = pred + + +def hook_on_batch_injected_data_generation(ctx): + '''generate the injected data + ''' + ctx.injected_data = ctx.gan_cra.generate_fake_data() + + +def hook_on_gan_cra_train(ctx): + + ctx.gan_cra.update_discriminator(ctx.model) + ctx.gan_cra.generator_train() + + +def hook_on_data_injection_sav_data(ctx): + + ctx.gan_cra.generate_and_save_images() diff --git a/federatedscope/attack/trainer/MIA_invert_gradient_trainer.py b/federatedscope/attack/trainer/MIA_invert_gradient_trainer.py new file mode 100644 index 000000000..171d8936f --- /dev/null +++ b/federatedscope/attack/trainer/MIA_invert_gradient_trainer.py @@ -0,0 +1,124 @@ +import logging +from typing import Type + +import torch + +from federatedscope.core.trainers import GeneralTorchTrainer +from federatedscope.core.auxiliaries.dataloader_builder import WrapDataset +from federatedscope.attack.auxiliary.MIA_get_target_data import get_target_data + +logger = logging.getLogger(__name__) + + +def wrap_GradientAscentTrainer( + base_trainer: Type[GeneralTorchTrainer]) -> Type[GeneralTorchTrainer]: + ''' + wrap the gradient_invert trainer + + Args: + base_trainer: Type: core.trainers.GeneralTorchTrainer + + :returns: + The wrapped trainer; Type: core.trainers.GeneralTorchTrainer + + ''' + + # base_trainer.ctx.target_data = get_target_data() + base_trainer.ctx.target_data_dataloader = WrapDataset( + get_target_data(base_trainer.cfg.data.type)) + base_trainer.ctx.target_data = get_target_data(base_trainer.cfg.data.type) + + base_trainer.ctx.is_target_batch = False + base_trainer.ctx.finish_injected = False + + base_trainer.ctx.target_data_loss = [] + + base_trainer.ctx.outdir = base_trainer.cfg.outdir + base_trainer.ctx.round = -1 + base_trainer.ctx.inject_round = base_trainer.cfg.attack.inject_round + + base_trainer.register_hook_in_train(new_hook=hook_on_fit_start_count_round, + trigger='on_fit_start', + insert_mode=-1) + + base_trainer.register_hook_in_train( + new_hook=hook_on_batch_start_replace_data_batch, + trigger='on_batch_start', + insert_mode=-1) + + base_trainer.replace_hook_in_train( + new_hook=hook_on_batch_backward_invert_gradient, + target_trigger='on_batch_backward', + target_hook_name='_hook_on_batch_backward') + + base_trainer.register_hook_in_train( + new_hook=hook_on_fit_start_loss_on_target_data, + trigger='on_fit_start', + insert_mode=-1) + + # plot the target data loss at the end of fitting + + return base_trainer + + +def hook_on_fit_start_count_round(ctx): + ctx.round += 1 + logger.info("============== round: {} ====================".format( + ctx.round)) + + +def hook_on_batch_start_replace_data_batch(ctx): + # replace the data batch to the target data + # check whether need to replace the data; if yes, replace the current batch to target batch + if ctx.finish_injected == False and ctx.round >= ctx.inject_round: + logger.info("---------- inject the target data ---------") + ctx["data_batch"] = ctx.target_data + ctx.is_target_batch = True + logger.info(ctx.target_data[0].size()) + else: + ctx.is_target_batch = False + + +def hook_on_batch_backward_invert_gradient(ctx): + if ctx.is_target_batch: + # if the current data batch is the target data, perform gradient ascent + ctx.optimizer.zero_grad() + ctx.loss_batch.backward() + original_grad = [] + + for param in ctx["model"].parameters(): + original_grad.append(param.grad.detach()) + param.grad = -1 * param.grad + + modified_grad = [] + for param in ctx.model.parameters(): + modified_grad.append(param.grad.detach()) + + ctx["optimizer"].step() + logger.info('-------------- Gradient ascent finished -------------') + ctx.finish_injected = True + + else: + # if current batch is not target data, perform regular backward step + ctx.optimizer.zero_grad() + ctx.loss_task.backward() + if ctx.grad_clip > 0: + torch.nn.utils.clip_grad_norm_(ctx.model.parameters(), + ctx.grad_clip) + ctx.optimizer.step() + + +def hook_on_fit_start_loss_on_target_data(ctx): + if ctx.finish_injected: + tmp_loss = [] + x, label = [_.to(ctx.device) for _ in ctx.target_data] + logger.info(x.size()) + num_target = x.size()[0] + + for i in range(num_target): + x_i = x[i, :].unsqueeze(0) + label_i = label[i].reshape(-1) + pred = ctx.model(x_i) + tmp_loss.append( + ctx.criterion(pred, label_i).detach().cpu().numpy()) + ctx.target_data_loss.append(tmp_loss) diff --git a/federatedscope/attack/trainer/PIA_trainer.py b/federatedscope/attack/trainer/PIA_trainer.py new file mode 100644 index 000000000..d0826b30e --- /dev/null +++ b/federatedscope/attack/trainer/PIA_trainer.py @@ -0,0 +1,18 @@ +from typing import Type + +from federatedscope.core.trainers import GeneralTorchTrainer +from federatedscope.attack.auxiliary.utils import get_data_property + + +def wrap_ActivePIATrainer( + base_trainer: Type[GeneralTorchTrainer]) -> Type[GeneralTorchTrainer]: + base_trainer.ctx.alpha_prop_loss = base_trainer._cfg.attack.alpha_prop_loss + + +def hood_on_batch_start_get_prop(ctx): + ctx.prop = get_data_property(ctx.data_batch) + + +def hook_on_batch_forward_add_PIA_loss(ctx): + ctx.loss_batch = ctx.alpha_prop_loss * ctx.loss_batch + ( + 1 - ctx.alpha_prop_loss) * ctx.criterion(ctx.y_prob, ctx.prop) diff --git a/federatedscope/attack/trainer/__init__.py b/federatedscope/attack/trainer/__init__.py new file mode 100644 index 000000000..37d4d78ef --- /dev/null +++ b/federatedscope/attack/trainer/__init__.py @@ -0,0 +1,16 @@ +from federatedscope.attack.trainer.GAN_trainer import * +from federatedscope.attack.trainer.MIA_invert_gradient_trainer import * +from federatedscope.attack.trainer.PIA_trainer import * +from federatedscope.attack.trainer.backdoor_trainer import * +from federatedscope.attack.trainer.benign_trainer import * + +__all__ = [ + 'wrap_GANTrainer', 'hood_on_fit_start_generator', + 'hook_on_batch_forward_injected_data', + 'hook_on_batch_injected_data_generation', 'hook_on_gan_cra_train', + 'hook_on_data_injection_sav_data', 'wrap_GradientAscentTrainer', + 'hook_on_fit_start_count_round', 'hook_on_batch_start_replace_data_batch', + 'hook_on_batch_backward_invert_gradient', + 'hook_on_fit_start_loss_on_target_data', 'wrap_backdoorTrainer', + 'wrap_benignTrainer' +] diff --git a/federatedscope/attack/trainer/backdoor_trainer.py b/federatedscope/attack/trainer/backdoor_trainer.py new file mode 100644 index 000000000..30014faff --- /dev/null +++ b/federatedscope/attack/trainer/backdoor_trainer.py @@ -0,0 +1,205 @@ +import logging +from typing import Type +import torch +import numpy as np +import copy + +from federatedscope.core.trainers import GeneralTorchTrainer +from torch.nn.utils import parameters_to_vector, vector_to_parameters + +logger = logging.getLogger(__name__) + + +def wrap_backdoorTrainer( + base_trainer: Type[GeneralTorchTrainer]) -> Type[GeneralTorchTrainer]: + ''' + Warp the trainer for backdoor attack: + + poisoning data: + edge-case triggers + semantic triggers + pixel-wise triggers: badnet, blended(HK), sig, wanet, clean-label (narcissus) + + poisoning model: + black-box attacks + PGD training + local regularization + + Args: + base_trainer: Type: core.trainers.GeneralTorchTrainer + + :returns: + The wrapped trainer; Type: core.trainers.GeneralTorchTrainer + + ''' + + # ---------------- attribute-level plug-in ----------------------- + # for pFL, we need to know the type of used methods. + base_trainer.ctx.federate_method = base_trainer.cfg.federate.method + base_trainer.ctx.target_label_ind = base_trainer.cfg.attack.target_label_ind + base_trainer.ctx.trigger_type = base_trainer.cfg.attack.trigger_type + base_trainer.ctx.label_type = base_trainer.cfg.attack.label_type + ''' + You can add trigger type: edge-case triggers and semantic triggers. + ''' + + # ---- action-level plug-in ------- + + if base_trainer.cfg.attack.self_opt: + + base_trainer.ctx.self_lr = base_trainer.cfg.attack.self_lr + base_trainer.ctx.self_epoch = base_trainer.cfg.attack.self_epoch + + base_trainer.register_hook_in_train( + new_hook=hook_on_fit_start_init_local_opt, + trigger='on_fit_start', + insert_pos=-1) + + base_trainer.register_hook_in_train(new_hook=hook_on_fit_end_reset_opt, + trigger='on_fit_end', + insert_pos=0) + + if base_trainer.cfg.attack.scale_poisoning or base_trainer.cfg.attack.pgd_poisoning: + + base_trainer.register_hook_in_train( + new_hook=hook_on_fit_start_init_local_model, + trigger='on_fit_start', + insert_pos=-1) + + if base_trainer.cfg.attack.scale_poisoning: + + base_trainer.ctx.scale_para = base_trainer.cfg.attack.scale_para + + base_trainer.register_hook_in_train( + new_hook=hook_on_fit_end_scale_poisoning, + trigger="on_fit_end", + insert_pos=-1) + + if base_trainer.cfg.attack.pgd_poisoning: + + base_trainer.ctx.self_epoch = base_trainer.cfg.attack.self_epoch + base_trainer.ctx.pgd_lr = base_trainer.cfg.attack.pgd_lr + base_trainer.ctx.pgd_eps = base_trainer.cfg.attack.pgd_eps + base_trainer.ctx.batch_index = 0 + + base_trainer.register_hook_in_train( + new_hook=hook_on_fit_start_init_local_pgd, + trigger='on_fit_start', + insert_pos=-1) + + base_trainer.register_hook_in_train( + new_hook=hook_on_batch_end_project_grad, + trigger='on_batch_end', + insert_pos=-1) + + base_trainer.register_hook_in_train( + new_hook=hook_on_epoch_end_project_grad, + trigger='on_epoch_end', + insert_pos=-1) + + base_trainer.register_hook_in_train(new_hook=hook_on_fit_end_reset_opt, + trigger='on_fit_end', + insert_pos=0) + + return base_trainer + + +def hook_on_fit_start_init_local_opt(ctx): + + # need to check for ditto method + # ctx.original_optimizer = ctx.optimizer + + if ctx.federate_method.lower() == "ditto": + ctx.original_epoch = ctx["num_train_epoch"] + ctx["num_train_epoch"] = ctx.self_epoch + ctx.num_train_epoch_for_local_model + + elif ctx.federate_method.lower() == "fedrep": + ctx.original_epoch = ctx["num_train_epoch"] + ctx["num_train_epoch"] = ctx.self_epoch + ctx.epoch_linear + else: + ctx.original_epoch = ctx["num_train_epoch"] + ctx["num_train_epoch"] = ctx.self_epoch + + +def hook_on_fit_end_reset_opt(ctx): + + ctx["num_train_epoch"] = ctx.original_epoch + + +def hook_on_fit_start_init_local_model(ctx): + + ctx.original_model = copy.deepcopy(ctx.model) # the original global model + + +def hook_on_fit_end_scale_poisoning(ctx): + + # conduct the scale poisoning + scale_para = ctx.scale_para + + v = torch.nn.utils.parameters_to_vector(ctx.original_model.parameters()) + logger.info("the Norm of the original global model: {}".format( + torch.norm(v))) + + v = torch.nn.utils.parameters_to_vector(ctx.model.parameters()) + logger.info("Attacker before scaling : Norm = {}".format(torch.norm(v))) + + ctx.original_model = list(ctx.original_model.parameters()) + + for idx, param in enumerate(ctx.model.parameters()): + param.data = (param.data - ctx.original_model[idx] + ) * scale_para + ctx.original_model[idx] + + v = torch.nn.utils.parameters_to_vector(ctx.model.parameters()) + logger.info("Attacker after scaling : Norm = {}".format(torch.norm(v))) + + logger.info('finishing model scaling poisoning attack'.format()) + + +def hook_on_fit_start_init_local_pgd(ctx): + + ctx.original_optimizer = ctx.optimizer + ctx.original_epoch = ctx["num_train_epoch"] + ctx["num_train_epoch"] = ctx.self_epoch + ctx.optimizer = torch.optim.SGD(ctx.model.parameters(), \ + lr=ctx.pgd_lr, momentum=0.9, weight_decay=1e-4) + + +def hook_on_batch_end_project_grad(ctx): + + eps = ctx.pgd_eps + project_frequency = 10 + ctx.batch_index += 1 + w = list(ctx.model.parameters()) + w_vec = parameters_to_vector(w) + model_original_vec = parameters_to_vector( + list(ctx.original_model.parameters())) + # make sure you project on last iteration otherwise, high LR pushes you really far + if (ctx.batch_index % project_frequency + == 0) and (torch.norm(w_vec - model_original_vec) > eps): + # project back into norm ball + w_proj_vec = eps * (w_vec - model_original_vec) / torch.norm( + w_vec - model_original_vec) + model_original_vec + # plug w_proj back into model + vector_to_parameters(w_proj_vec, w) + + +def hook_on_epoch_end_project_grad(ctx): + + ctx.batch_index = 0 + eps = ctx.pgd_eps + w = list(ctx.model.parameters()) + w_vec = parameters_to_vector(w) + model_original_vec = parameters_to_vector( + list(ctx.original_model.parameters())) + # make sure you project on last iteration otherwise, high LR pushes you really far + if (torch.norm(w_vec - model_original_vec) > eps): + # project back into norm ball + w_proj_vec = eps * (w_vec - model_original_vec) / torch.norm( + w_vec - model_original_vec) + model_original_vec + # plug w_proj back into model + vector_to_parameters(w_proj_vec, w) + + +def hook_on_fit_end_reset_pgd(ctx): + + pass diff --git a/federatedscope/attack/trainer/benign_trainer.py b/federatedscope/attack/trainer/benign_trainer.py new file mode 100644 index 000000000..0bd093366 --- /dev/null +++ b/federatedscope/attack/trainer/benign_trainer.py @@ -0,0 +1,202 @@ +from calendar import c +from email.mime import base +import logging +from typing import Type +import torch +import numpy as np +import copy + +from federatedscope.core.trainers import GeneralTorchTrainer +from federatedscope.core.auxiliaries.transform_builder import get_transform +from federatedscope.attack.auxiliary.backdoor_utils import normalize +from federatedscope.core.auxiliaries.dataloader_builder import WrapDataset +from federatedscope.core.auxiliaries.dataloader_builder import get_dataloader +from federatedscope.core.auxiliaries.ReIterator import ReIterator + +logger = logging.getLogger(__name__) + + +def wrap_benignTrainer( + base_trainer: Type[GeneralTorchTrainer]) -> Type[GeneralTorchTrainer]: + ''' + Warp the benign trainer for backdoor attack: + + We just add the normalization operation. + + Args: + base_trainer: Type: core.trainers.GeneralTorchTrainer + + :returns: + The wrapped trainer; Type: core.trainers.GeneralTorchTrainer + + ''' + + if base_trainer.cfg.attack.norm_clip: + + base_trainer.register_hook_in_train( + new_hook=hook_on_fit_start_init_local_model, + trigger='on_fit_start', + insert_pos=-1) + + base_trainer.ctx.norm_clip_value = base_trainer.cfg.attack.norm_clip_value + + base_trainer.register_hook_in_train( + new_hook=hook_on_fit_end_clip_model, + trigger='on_fit_end', + insert_pos=-1) + + if base_trainer.cfg.attack.dp_noise > 0.0: + base_trainer.ctx.dp_noise = base_trainer.cfg.attack.dp_noise + + else: + base_trainer.ctx.dp_noise = 0.0 + + return base_trainer + + +def get_weight_difference(weight1, weight2): + difference = {} + res = [] + if type(weight2) == dict: + for name, layer in weight1.items(): + difference[name] = layer.data - weight2[name].data + res.append(difference[name].view(-1)) + else: + for name, layer in weight2: + difference[name] = weight1[name].data - layer.data + res.append(difference[name].view(-1)) + + difference_flat = torch.cat(res) + + return difference, difference_flat + + +def get_l2_norm(weight1, weight2): + difference = {} + res = [] + if type(weight2) == dict: + for name, layer in weight1.items(): + difference[name] = layer.data - weight2[name].data + res.append(difference[name].view(-1)) + else: + for name, layer in weight2: + difference[name] = weight1[name].data - layer.data + res.append(difference[name].view(-1)) + + difference_flat = torch.cat(res) + + l2_norm = torch.norm(difference_flat.clone().detach().cuda()) + + l2_norm_np = np.linalg.norm(difference_flat.cpu().numpy()) + + return l2_norm, l2_norm_np + + +def clip_grad(norm_bound, weight_difference, difference_flat): + + l2_norm = torch.norm(difference_flat.clone().detach().cuda()) + scale = max(1.0, float(torch.abs(l2_norm / norm_bound))) + for name in weight_difference.keys(): + weight_difference[name].div_(scale) + + return weight_difference, l2_norm + + +def copy_params(model, target_params_variables): + for name, layer in model.named_parameters(): + layer.data = copy.deepcopy(target_params_variables[name]) + + +def hook_on_fit_start_init_local_model(ctx): + + ctx.global_model_copy = dict() + for name, param in ctx.model.named_parameters(): + ctx.global_model_copy[name] = ctx.model.state_dict()[name].clone( + ).detach().requires_grad_(False) + + +def hook_on_fit_end_clip_model(ctx): + + l2_norm, l2_norm_np = get_l2_norm(ctx.global_model_copy, + ctx.model.named_parameters()) + logger.info('l2 norm of local model (before server defense):{}'.format( + l2_norm.item())) + weight_difference, difference_flat = get_weight_difference( + ctx.global_model_copy, ctx.model.named_parameters()) + clipped_weight_difference, _ = clip_grad(ctx.norm_clip_value, + weight_difference, + difference_flat) + + for key_, para in clipped_weight_difference.items(): + clipped_weight_difference[ + key_] = para.data + ctx.dp_noise * torch.rand_like( + copy.deepcopy(para.data)) + + weight_difference, difference_flat = get_weight_difference( + ctx.global_model_copy, clipped_weight_difference) + copy_params(ctx.model, weight_difference) + + l2_norm, l2_norm_np = get_l2_norm(ctx.global_model_copy, + ctx.model.named_parameters()) + logger.info('l2 norm of local model (after server defense):{}'.format( + l2_norm.item())) + + +def hook_on_fit_end_test_poison(ctx): + """Evaluate metrics of poisoning attacks. + + """ + + ctx['poison_' + ctx.cur_data_split + + '_loader'] = ctx.data['poison_' + ctx.cur_data_split] + ctx['poison_' + ctx.cur_data_split + + '_data'] = ctx.data['poison_' + ctx.cur_data_split].dataset + ctx['num_poison_' + ctx.cur_data_split + '_data'] = len( + ctx.data['poison_' + ctx.cur_data_split].dataset) + setattr(ctx, "poison_{}_y_true".format(ctx.cur_data_split), []) + setattr(ctx, "poison_{}_y_prob".format(ctx.cur_data_split), []) + setattr(ctx, "poison_num_samples_{}".format(ctx.cur_data_split), 0) + + for batch_idx, (samples, targets) in enumerate( + ctx['poison_' + ctx.cur_data_split + '_loader']): + samples, targets = samples.to(ctx.device), targets.to(ctx.device) + pred = ctx.model(samples) + if len(targets.size()) == 0: + targets = targets.unsqueeze(0) + ctx.poison_y_true = targets + ctx.poison_y_prob = pred + ctx.poison_batch_size = len(targets) + + ctx.get("poison_{}_y_true".format(ctx.cur_data_split)).append( + ctx.poison_y_true.detach().cpu().numpy()) + + ctx.get("poison_{}_y_prob".format(ctx.cur_data_split)).append( + ctx.poison_y_prob.detach().cpu().numpy()) + + setattr( + ctx, "poison_num_samples_{}".format(ctx.cur_data_split), + ctx.get("poison_num_samples_{}".format(ctx.cur_data_split)) + + ctx.poison_batch_size) + + setattr( + ctx, "poison_{}_y_true".format(ctx.cur_data_split), + np.concatenate(ctx.get("poison_{}_y_true".format(ctx.cur_data_split)))) + setattr( + ctx, "poison_{}_y_prob".format(ctx.cur_data_split), + np.concatenate(ctx.get("poison_{}_y_prob".format(ctx.cur_data_split)))) + + logger.info('the {} poisoning samples: {:d}'.format( + ctx.cur_data_split, + ctx.get("poison_num_samples_{}".format(ctx.cur_data_split)))) + + poison_true = ctx['poison_' + ctx.cur_data_split + '_y_true'] + poison_prob = ctx['poison_' + ctx.cur_data_split + '_y_prob'] + + poison_pred = np.argmax(poison_prob, axis=1) + + correct = poison_true == poison_pred + + poisoning_acc = float(np.sum(correct)) / len(correct) + + logger.info('the {} poisoning accuracy: {:f}'.format( + ctx.cur_data_split, poisoning_acc)) diff --git a/federatedscope/attack/worker_as_attacker/__init__.py b/federatedscope/attack/worker_as_attacker/__init__.py new file mode 100644 index 000000000..ee3a8f3a2 --- /dev/null +++ b/federatedscope/attack/worker_as_attacker/__init__.py @@ -0,0 +1,12 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from federatedscope.attack.worker_as_attacker.active_client import * +from federatedscope.attack.worker_as_attacker.server_attacker import * + +__all__ = [ + 'plot_target_loss', 'sav_target_loss', 'callback_funcs_for_finish', + 'add_atk_method_to_Client_GradAscent', 'PassiveServer', 'PassivePIAServer', + 'BackdoorServer' +] diff --git a/federatedscope/attack/worker_as_attacker/active_client.py b/federatedscope/attack/worker_as_attacker/active_client.py new file mode 100644 index 000000000..ddd0912dc --- /dev/null +++ b/federatedscope/attack/worker_as_attacker/active_client.py @@ -0,0 +1,54 @@ +import matplotlib.pyplot as plt +import numpy as np +import os +from federatedscope.core.message import Message +import logging + +logger = logging.getLogger(__name__) + + +def plot_target_loss(loss_list, outdir): + ''' + + Args: + loss_list: the list of loss regrading the target data + outdir: the directory to store the loss + + ''' + + target_data_loss = np.vstack(loss_list) + logger.info(target_data_loss.shape) + plt.plot(target_data_loss) + plt.savefig(os.path.join(outdir, 'target_loss.png')) + plt.close() + + +def sav_target_loss(loss_list, outdir): + target_data_loss = np.vstack(loss_list) + np.savetxt(os.path.join(outdir, 'target_loss.txt'), + target_data_loss.transpose(), + delimiter=',') + + +def callback_funcs_for_finish(self, message: Message): + logger.info( + "================= receiving Finish Message ============================" + ) + if message.content != None: + self.trainer.update(message.content) + if self.is_attacker and self._cfg.attack.attack_method.lower( + ) == "gradascent": + logger.info( + "================= start attack post-processing =======================" + ) + plot_target_loss(self.trainer.ctx.target_data_loss, + self.trainer.ctx.outdir) + sav_target_loss(self.trainer.ctx.target_data_loss, + self.trainer.ctx.outdir) + + +def add_atk_method_to_Client_GradAscent(client_class): + + setattr(client_class, 'callback_funcs_for_finish', + callback_funcs_for_finish) + return client_class diff --git a/federatedscope/attack/worker_as_attacker/server_attacker.py b/federatedscope/attack/worker_as_attacker/server_attacker.py new file mode 100644 index 000000000..57499c030 --- /dev/null +++ b/federatedscope/attack/worker_as_attacker/server_attacker.py @@ -0,0 +1,332 @@ +from distutils.command.config import config +from federatedscope.core.worker import Server +from federatedscope.core.message import Message + +from federatedscope.core.auxiliaries.criterion_builder import get_criterion +import copy +from federatedscope.attack.auxiliary.utils import get_data_sav_fn, get_reconstructor + +import logging + +import numpy as np +import torch +from federatedscope.attack.privacy_attacks.passive_PIA import PassivePropertyInference + +logger = logging.getLogger(__name__) + + +class BackdoorServer(Server): + ''' + For backdoor attacks, we will choose the different the sampling stratergies. + fix-frequency sampling, all-round sampling or random sampling. + ''' + def __init__(self, + ID=-1, + state=0, + config=None, + data=None, + model=None, + client_num=5, + total_round_num=10, + device='cpu', + strategy=None, + unseen_clients_id=None, + **kwargs): + super(BackdoorServer, self).__init__(ID=ID, + state=state, + data=data, + model=model, + config=config, + client_num=client_num, + total_round_num=total_round_num, + device=device, + strategy=strategy, + **kwargs) + + def broadcast_model_para(self, + msg_type='model_para', + sample_client_num=-1): + """ + To broadcast the message to all clients or sampled clients + + Arguments: + msg_type: 'model_para' or other user defined msg_type + sample_client_num: the number of sampled clients in the broadcast behavior. + And sample_client_num = -1 denotes to broadcast to all the clients. + """ + + if sample_client_num > 0: # only activated at training process + + if self._cfg.attack.attacker_id == -1 or self._cfg.attack.attack_method == '': + receiver = np.random.choice(np.arange(1, self.client_num + 1), + size=sample_client_num, + replace=False).tolist() + + elif self._cfg.attack.setting == 'fix': + if self.state % self._cfg.attack.freq == 0: + client_list = np.delete(np.arange(1, self.client_num + 1), + self._cfg.attack.attacker_id - 1) + receiver = np.random.choice(client_list, + size=sample_client_num - 1, + replace=False).tolist() + receiver.insert(0, self._cfg.attack.attacker_id) + logger.info('starting the fix-frequency poisoning attack') + logger.info( + 'starting the poisoning round: {:d}, the attacker ID: {:d}' + .format(self.state, self._cfg.attack.attacker_id)) + else: + client_list = np.delete(np.arange(1, self.client_num + 1), + self._cfg.attack.attacker_id - 1) + receiver = np.random.choice(client_list, + size=sample_client_num, + replace=False).tolist() + + elif self._cfg.attack.setting == 'single' and self.state == self._cfg.attack.insert_round: + # need to check this setting + client_list = np.delete(np.arange(1, self.client_num + 1), + self._cfg.attack.attacker_id - 1) + receiver = np.random.choice(client_list, + size=sample_client_num - 1, + replace=False).tolist() + receiver.insert(0, self._cfg.attack.attacker_id) + logger.info('starting the single-shot poisoning attack') + logger.info( + 'starting the poisoning round: {:d}, the attacker ID: {:d}' + .format(self.state, self._cfg.attack.attacker_id)) + + elif self._cfg.attack.setting == 'all': + client_list = np.delete(np.arange(1, self.client_num + 1), + self._cfg.attack.attacker_id - 1) + receiver = np.random.choice(client_list, + size=sample_client_num - 1, + replace=False).tolist() + receiver.insert(0, self._cfg.attack.attacker_id) + logger.info('starting the all-round poisoning attack') + logger.info( + 'starting the poisoning round: {:d}, the attacker ID: {:d}' + .format(self.state, self._cfg.attack.attacker_id)) + + else: + receiver = np.random.choice(np.arange(1, self.client_num + 1), + size=sample_client_num, + replace=False).tolist() + + else: + # broadcast to all clients + receiver = list(self.comm_manager.neighbors.keys()) + + if self._noise_injector is not None and msg_type == 'model_para': + # Inject noise only when broadcast parameters + for model_idx_i in range(len(self.models)): + num_sample_clients = [ + v["num_sample"] for v in self.join_in_info.values() + ] + self._noise_injector(self._cfg, num_sample_clients, + self.models[model_idx_i]) + + skip_broadcast = self._cfg.federate.method in ["local", "global"] + if self.model_num > 1: + model_para = [{} if skip_broadcast else model.state_dict() + for model in self.models] + else: + model_para = {} if skip_broadcast else self.model.state_dict() + + self.comm_manager.send( + Message(msg_type=msg_type, + sender=self.ID, + receiver=receiver, + state=min(self.state, self.total_round_num), + content=model_para)) + if self._cfg.federate.online_aggr: + for idx in range(self.model_num): + self.aggregators[idx].reset() + + +class PassiveServer(Server): + ''' + In passive attack, the server store the model and the message collected from the client,and perform the optimization based reconstruction, such as DLG, InvertGradient. + ''' + def __init__(self, + ID=-1, + state=0, + data=None, + model=None, + client_num=5, + total_round_num=10, + device='cpu', + strategy=None, + state_to_reconstruct=None, + client_to_reconstruct=None, + **kwargs): + super(PassiveServer, self).__init__(ID=ID, + state=state, + data=data, + model=model, + client_num=client_num, + total_round_num=total_round_num, + device=device, + strategy=strategy, + **kwargs) + + # self.offline_reconstruct = offline_reconstruct + self.atk_method = self._cfg.attack.attack_method + self.state_to_reconstruct = state_to_reconstruct + self.client_to_reconstruct = client_to_reconstruct + self.reconstruct_data = dict() + + # the loss function of the global model; the global model can be obtained in self.aggregator.model + self.model_criterion = get_criterion(self._cfg.criterion.type, + device=self.device) + + from federatedscope.attack.auxiliary.utils import get_data_info + self.data_dim, self.num_class, self.is_one_hot_label = get_data_info( + self._cfg.data.type) + + self.reconstructor = self._get_reconstructor() + + self.reconstructed_data_sav_fn = get_data_sav_fn(self._cfg.data.type) + + self.reconstruct_data_summary = dict() + + def _get_reconstructor(self): + + return get_reconstructor( + self.atk_method, + max_ite=self._cfg.attack.max_ite, + lr=self._cfg.attack.reconstruct_lr, + federate_loss_fn=self.model_criterion, + device=self.device, + federate_lr=self._cfg.optimizer.lr, + optim=self._cfg.attack.reconstruct_optim, + info_diff_type=self._cfg.attack.info_diff_type, + federate_method=self._cfg.federate.method, + alpha_TV=self._cfg.attack.alpha_TV) + + def _reconstruct(self, state, sender): + # print(self.msg_buffer['train'][state].keys()) + dummy_data, dummy_label = self.reconstructor.reconstruct( + model=copy.deepcopy(self.model).to(torch.device(self.device)), + original_info=self.msg_buffer['train'][state][sender][1], + data_feature_dim=self.data_dim, + num_class=self.num_class, + batch_size=self.msg_buffer['train'][state][sender][0]) + if state not in self.reconstruct_data.keys(): + self.reconstruct_data[state] = dict() + self.reconstruct_data[state][sender] = [ + dummy_data.cpu(), dummy_label.cpu() + ] + + def run_reconstruct(self, state_list=None, sender_list=None): + + if state_list == None: + state_list = self.msg_buffer['train'].keys() + + # After FL running, using gradient based reconstruction method to recover client's private training data + for state in state_list: + if sender_list is None: + sender_list = self.msg_buffer['train'][state].keys() + for sender in sender_list: + logger.info( + '------------- reconstruct round:{}, client:{}-----------'. + format(state, sender)) + + # the context of buffer: self.model_buffer[state]: (sample_size, model_para) + self._reconstruct(state, sender) + + def callback_funcs_model_para(self, message: Message): + round, sender, content = message.state, message.sender, message.content + # For a new round + if round not in self.msg_buffer['train'].keys(): + self.msg_buffer['train'][round] = dict() + + self.msg_buffer['train'][round][sender] = content + + # run reconstruction before the clear of self.msg_buffer + + if self.state_to_reconstruct is None or message.state in self.state_to_reconstruct: + if self.client_to_reconstruct is None or message.sender in self.client_to_reconstruct: + self.run_reconstruct(state_list=[message.state], + sender_list=[message.sender]) + if self.reconstructed_data_sav_fn is not None: + self.reconstructed_data_sav_fn( + data=self.reconstruct_data[message.state][ + message.sender][0], + sav_pth=self._cfg.outdir, + name='image_state_{}_client_{}.png'.format( + message.state, message.sender)) + + self.check_and_move_on() + + +class PassivePIAServer(Server): + ''' + The implementation of the batch property classifier, the algorithm 3 in paper: Exploiting Unintended Feature Leakage in Collaborative Learning + + References: + + Melis, Luca, Congzheng Song, Emiliano De Cristofaro and Vitaly Shmatikov. “Exploiting Unintended Feature Leakage in Collaborative Learning.” 2019 IEEE Symposium on Security and Privacy (SP) (2019): 691-706 + ''' + def __init__(self, + ID=-1, + state=0, + data=None, + model=None, + client_num=5, + total_round_num=10, + device='cpu', + strategy=None, + **kwargs): + super(PassivePIAServer, self).__init__(ID=ID, + state=state, + data=data, + model=model, + client_num=client_num, + total_round_num=total_round_num, + device=device, + strategy=strategy, + **kwargs) + + # self.offline_reconstruct = offline_reconstruct + self.atk_method = self._cfg.attack.attack_method + self.pia_attacker = PassivePropertyInference( + classier=self._cfg.attack.classifier_PIA, + fl_model_criterion=get_criterion(self._cfg.criterion.type, + device=self.device), + device=self.device, + grad_clip=self._cfg.grad.grad_clip, + dataset_name=self._cfg.data.type, + fl_local_update_num=self._cfg.federate.local_update_steps, + # fl_type_optimizer=self._cfg.fedopt.optimizer.type,fedopt.type_optimizer + fl_type_optimizer=self._cfg.optimizer.type, + fl_lr=self._cfg.optimizer.lr, + batch_size=100) + + # self.optimizer = get_optimizer(type=self._cfg.fedopt.type_optimizer, model=self.model,lr=self._cfg.fedopt.optimizer.lr) + # print(self.optimizer) + def callback_funcs_model_para(self, message: Message): + round, sender, content = message.state, message.sender, message.content + # For a new round + if round not in self.msg_buffer['train'].keys(): + self.msg_buffer['train'][round] = dict() + + self.msg_buffer['train'][round][sender] = content + + # collect the updates + self.pia_attacker.collect_updates( + previous_para=self.model.state_dict(), + updated_parameter=content[1], + round=round, + client_id=sender) + self.pia_attacker.get_data_for_dataset_prop_classifier( + model=self.model) + + if self._cfg.federate.online_aggr: + # TODO: put this line to `check_and_move_on` + # currently, no way to know the latest `sender` + self.aggregator.inc(content) + self.check_and_move_on() + + if self.state == self.total_round_num: + self.pia_attacker.train_property_classifier() + self.pia_results = self.pia_attacker.infer_collected() + print(self.pia_results) diff --git a/federatedscope/autotune/__init__.py b/federatedscope/autotune/__init__.py new file mode 100644 index 000000000..b0c0109a3 --- /dev/null +++ b/federatedscope/autotune/__init__.py @@ -0,0 +1,8 @@ +from federatedscope.autotune.choice_types import Continuous, Discrete +from federatedscope.autotune.utils import parse_search_space, config2cmdargs, config2str +from federatedscope.autotune.algos import get_scheduler + +__all__ = [ + 'Continuous', 'Discrete', 'parse_search_space', 'config2cmdargs', + 'config2str', 'get_scheduler' +] diff --git a/federatedscope/autotune/algos.py b/federatedscope/autotune/algos.py new file mode 100644 index 000000000..dcf1923e5 --- /dev/null +++ b/federatedscope/autotune/algos.py @@ -0,0 +1,468 @@ +import os +import logging +from copy import deepcopy +from contextlib import redirect_stdout +import threading +import math + +import ConfigSpace as CS +from yacs.config import CfgNode as CN +import yaml +import numpy as np + +from federatedscope.core.auxiliaries.utils import setup_seed +from federatedscope.core.auxiliaries.data_builder import get_data +from federatedscope.core.auxiliaries.worker_builder import get_client_cls, get_server_cls +from federatedscope.core.fed_runner import FedRunner +from federatedscope.autotune.utils import parse_search_space, config2cmdargs, config2str, summarize_hpo_results + +logger = logging.getLogger(__name__) + + +def make_trial(trial_cfg): + setup_seed(trial_cfg.seed) + data, modified_config = get_data(config=trial_cfg.clone()) + trial_cfg.merge_from_other_cfg(modified_config) + trial_cfg.freeze() + # TODO: enable client-wise configuration + Fed_runner = FedRunner(data=data, + server_class=get_server_cls(trial_cfg), + client_class=get_client_cls(trial_cfg), + config=trial_cfg.clone()) + results = Fed_runner.run() + key1, key2 = trial_cfg.hpo.metric.split('.') + return results[key1][key2] + + +class TrialExecutor(threading.Thread): + """This class is responsible for executing the FL procedure with a given trial configuration in another thread. + """ + def __init__(self, cfg_idx, signal, returns, trial_config): + threading.Thread.__init__(self) + + self._idx = cfg_idx + self._signal = signal + self._returns = returns + self._trial_cfg = trial_config + + def run(self): + setup_seed(self._trial_cfg.seed) + data, modified_config = get_data(config=self._trial_cfg.clone()) + self._trial_cfg.merge_from_other_cfg(modified_config) + self._trial_cfg.freeze() + # TODO: enable client-wise configuration + Fed_runner = FedRunner(data=data, + server_class=get_server_cls(self._trial_cfg), + client_class=get_client_cls(self._trial_cfg), + config=self._trial_cfg.clone()) + results = Fed_runner.run() + key1, key2 = self._trial_cfg.hpo.metric.split('.') + self._returns['perf'] = results[key1][key2] + self._returns['cfg_idx'] = self._idx + self._signal.set() + + +def get_scheduler(init_cfg): + """To instantiate an scheduler object for conducting HPO + Arguments: + init_cfg (yacs.Node): configuration. + """ + + if init_cfg.hpo.scheduler == 'rs': + scheduler = ModelFreeBase(init_cfg) + elif init_cfg.hpo.scheduler == 'sha': + scheduler = SuccessiveHalvingAlgo(init_cfg) + elif init_cfg.hpo.scheduler == 'pbt': + scheduler = PBT(init_cfg) + elif init_cfg.hpo.scheduler == 'wrap_sha': + scheduler = SHAWrapFedex(init_cfg) + return scheduler + + +class Scheduler(object): + """The base class for describing HPO algorithms + """ + def __init__(self, cfg): + """ + Arguments: + cfg (yacs.Node): dict like object, where each key-value pair corresponds to a field and its choices. + """ + + self._cfg = cfg + self._search_space = parse_search_space(self._cfg.hpo.ss) + + self._init_configs = self._setup() + + logger.info(self._init_configs) + + def _setup(self): + """Prepare the initial configurations based on the search space. + """ + raise NotImplementedError + + def _evaluate(self, configs): + """To evaluate (i.e., conduct the FL procedure) for a given collection of configurations. + """ + raise NotImplementedError + + def optimize(self): + """To optimize the hyperparameters, that is, executing the HPO algorithm and then returning the results. + """ + raise NotImplementedError + + +class ModelFreeBase(Scheduler): + """To attempt a collection of configurations exhaustively. + """ + def _setup(self): + self._search_space.seed(self._cfg.seed + 19) + return [ + cfg.get_dictionary() + for cfg in self._search_space.sample_configuration( + size=self._cfg.hpo.init_cand_num) + ] + + def _evaluate(self, configs): + if self._cfg.hpo.num_workers: + # execute FL in parallel by multi-threading + flags = [ + threading.Event() for _ in range(self._cfg.hpo.num_workers) + ] + for i in range(len(flags)): + flags[i].set() + threads = [None for _ in range(len(flags))] + thread_results = [dict() for _ in range(len(flags))] + + perfs = [None for _ in range(len(configs))] + for i, config in enumerate(configs): + available_worker = 0 + while not flags[available_worker].is_set(): + available_worker = (available_worker + 1) % len(threads) + if thread_results[available_worker]: + completed_trial_results = thread_results[available_worker] + cfg_idx = completed_trial_results['cfg_idx'] + perfs[cfg_idx] = completed_trial_results['perf'] + logger.info( + "Evaluate the {}-th config {} and get performance {}". + format(cfg_idx, configs[cfg_idx], perfs[cfg_idx])) + thread_results[available_worker].clear() + + trial_cfg = self._cfg.clone() + trial_cfg.merge_from_list(config2cmdargs(config)) + flags[available_worker].clear() + trial = TrialExecutor(i, flags[available_worker], + thread_results[available_worker], + trial_cfg) + trial.start() + threads[available_worker] = trial + + for i in range(len(flags)): + if not flags[i].is_set(): + threads[i].join() + for i in range(len(thread_results)): + if thread_results[i]: + completed_trial_results = thread_results[i] + cfg_idx = completed_trial_results['cfg_idx'] + perfs[cfg_idx] = completed_trial_results['perf'] + logger.info( + "Evaluate the {}-th config {} and get performance {}". + format(cfg_idx, configs[cfg_idx], perfs[cfg_idx])) + thread_results[i].clear() + + else: + perfs = [None] * len(configs) + for i, config in enumerate(configs): + trial_cfg = self._cfg.clone() + trial_cfg.merge_from_list(config2cmdargs(config)) + perfs[i] = make_trial(trial_cfg) + logger.info( + "Evaluate the {}-th config {} and get performance {}". + format(i, config, perfs[i])) + + return perfs + + def optimize(self): + perfs = self._evaluate(self._init_configs) + + results = summarize_hpo_results(self._init_configs, + perfs, + white_list=set( + self._search_space.keys()), + desc=self._cfg.hpo.larger_better) + logger.info( + "====================================== HPO Final ========================================" + ) + logger.info("\n{}".format(results)) + logger.info( + "=====================================================================================" + ) + + return results + + +class IterativeScheduler(ModelFreeBase): + """The base class for HPO algorithms that divide the whole optimization procedure into iterations. + """ + def _setup(self): + self._stage = 0 + return super(IterativeScheduler, self)._setup() + + def _stop_criterion(self, configs, last_results): + """To determine whether the algorithm should be terminated. + + Arguments: + configs (list): each element is a trial configuration. + last_results (DataFrame): each row corresponds to a specific configuration as well as its latest performance. + :returns: whether to terminate. + :rtype: bool + """ + raise NotImplementedError + + def _iteration(self, configs): + """To evaluate the given collection of configurations at this stage. + + Arguments: + configs (list): each element is a trial configuration. + :returns: the performances of the given configurations. + :rtype: list + """ + + perfs = self._evaluate(configs) + return perfs + + def _generate_next_population(self, configs, perfs): + """To generate the configurations for the next stage. + + Arguments: + configs (list): the configurations of last stage. + perfs (list): their corresponding performances. + :returns: configuration for the next stage. + :rtype: list + """ + + raise NotImplementedError + + def optimize(self): + current_configs = deepcopy(self._init_configs) + last_results = None + while not self._stop_criterion(current_configs, last_results): + current_perfs = self._iteration(current_configs) + last_results = summarize_hpo_results( + current_configs, + current_perfs, + white_list=set(self._search_space.keys()), + desc=self._cfg.hpo.larger_better) + self._stage += 1 + logger.info( + "====================================== Stage{} ========================================" + .format(self._stage)) + logger.info("\n{}".format(last_results)) + logger.info( + "=======================================================================================" + ) + current_configs = self._generate_next_population( + current_configs, current_perfs) + + return current_configs + + +class SuccessiveHalvingAlgo(IterativeScheduler): + """Successive Halving Algorithm (SHA) tailored to FL setting, where, in each iteration, just a limited number of communication rounds are allowed for each trial. + """ + def _setup(self): + init_configs = super(SuccessiveHalvingAlgo, self)._setup() + + for trial_cfg in init_configs: + trial_cfg['federate.save_to'] = os.path.join( + self._cfg.hpo.working_folder, + "{}.pth".format(config2str(trial_cfg))) + + if self._cfg.hpo.sha.budgets: + for trial_cfg in init_configs: + trial_cfg[ + 'federate.total_round_num'] = self._cfg.hpo.sha.budgets[ + self._stage] + trial_cfg['eval.freq'] = self._cfg.hpo.sha.budgets[self._stage] + + return init_configs + + def _stop_criterion(self, configs, last_results): + return len(configs) <= 1 + + def _generate_next_population(self, configs, perfs): + indices = [(i, val) for i, val in enumerate(perfs)] + indices.sort(key=lambda x: x[1], reverse=self._cfg.hpo.larger_better) + next_population = [ + configs[tp[0]] for tp in + indices[:math. + ceil(float(len(indices)) / self._cfg.hpo.sha.elim_rate)] + ] + + for trial_cfg in next_population: + if 'federate.restore_from' not in trial_cfg: + trial_cfg['federate.restore_from'] = trial_cfg[ + 'federate.save_to'] + if self._cfg.hpo.sha.budgets and self._stage < len( + self._cfg.hpo.sha.budgets): + trial_cfg[ + 'federate.total_round_num'] = self._cfg.hpo.sha.budgets[ + self._stage] + trial_cfg['eval.freq'] = self._cfg.hpo.sha.budgets[self._stage] + + return next_population + + +class SHAWrapFedex(SuccessiveHalvingAlgo): + """This SHA is customized as a wrapper for FedEx algorithm.""" + def _make_local_perturbation(self, config): + neighbor = dict() + for k in config: + if 'fedex' in k or 'fedopt' in k or k in [ + 'federate.save_to', 'federate.total_round_num', 'eval.freq' + ]: + # a workaround + continue + hyper = self._search_space.get(k) + if isinstance(hyper, CS.UniformFloatHyperparameter): + lb, ub = hyper.lower, hyper.upper + diameter = self._cfg.hpo.table.eps * (ub - lb) + new_val = (config[k] - + 0.5 * diameter) + np.random.uniform() * diameter + neighbor[k] = float(np.clip(new_val, lb, ub)) + elif isinstance(hyper, CS.UniformIntegerHyperparameter): + lb, ub = hyper.lower, hyper.upper + diameter = self._cfg.hpo.table.eps * (ub - lb) + new_val = round( + float((config[k] - 0.5 * diameter) + + np.random.uniform() * diameter)) + neighbor[k] = int(np.clip(new_val, lb, ub)) + elif isinstance(hyper, CS.CategoricalHyperparameter): + if len(hyper.choices) == 1: + neighbor[k] = config[k] + else: + threshold = self._cfg.hpo.table.eps * len( + hyper.choices) / (len(hyper.choices) - 1) + rn = np.random.uniform() + new_val = np.random.choice( + hyper.choices) if rn <= threshold else config[k] + if type(new_val) in [np.int32, np.int64]: + neighbor[k] = int(new_val) + elif type(new_val) in [np.float32, np.float64]: + neighbor[k] = float(new_val) + else: + neighbor[k] = str(new_val) + else: + raise TypeError("Value of {} has an invalid type {}".format( + k, type(config[k]))) + + return neighbor + + def _setup(self): + #self._cache_yaml() + init_configs = super(SHAWrapFedex, self)._setup() + new_init_configs = [] + for idx, trial_cfg in enumerate(init_configs): + arms = dict(("arm{}".format(1 + j), + self._make_local_perturbation(trial_cfg)) + for j in range(self._cfg.hpo.table.num - 1)) + arms['arm0'] = dict( + (k, v) for k, v in trial_cfg.items() if k in arms['arm1']) + with open( + os.path.join(self._cfg.hpo.working_folder, + f'{idx}_tmp_grid_search_space.yaml'), + 'w') as f: + yaml.dump(arms, f) + new_trial_cfg = dict() + for k in trial_cfg: + if k not in arms['arm0']: + new_trial_cfg[k] = trial_cfg[k] + new_trial_cfg['hpo.table.idx'] = idx + new_trial_cfg['hpo.fedex.ss'] = os.path.join( + self._cfg.hpo.working_folder, + f"{new_trial_cfg['hpo.table.idx']}_tmp_grid_search_space.yaml") + new_trial_cfg['federate.save_to'] = os.path.join( + self._cfg.hpo.working_folder, "idx_{}.pth".format(idx)) + new_init_configs.append(new_trial_cfg) + + self._search_space.add_hyperparameter( + CS.CategoricalHyperparameter("hpo.table.idx", + choices=list( + range(len(new_init_configs))))) + + return new_init_configs + + +# TODO: refactor PBT to enable async parallel +#class PBT(IterativeScheduler): +# """Population-based training (the full paper "Population Based Training of Neural Networks" can be found at https://arxiv.org/abs/1711.09846) tailored to FL setting, where, in each iteration, just a limited number of communication rounds are allowed for each trial (We will provide the asynchornous version later). +# """ +# def _setup(self, raw_search_space): +# _ = super(PBT, self)._setup(raw_search_space) +# +# if global_cfg.hpo.init_strategy == 'random': +# init_configs = random_search( +# raw_search_space, +# sample_size=global_cfg.hpo.sha.elim_rate** +# global_cfg.hpo.sha.elim_round_num) +# elif global_cfg.hpo.init_strategy == 'grid': +# init_configs = grid_search(raw_search_space, +# sample_size=global_cfg.hpo.sha.elim_rate +# **global_cfg.hpo.sha.elim_round_num) +# else: +# raise ValueError( +# "SHA needs to use random/grid search to pick {} configs from the search space as initial candidates, but `{}` is specified as `hpo.init_strategy`" +# .format( +# global_cfg.hpo.sha.elim_rate** +# global_cfg.hpo.sha.elim_round_num, +# global_cfg.hpo.init_strategy)) +# +# for trial_cfg in init_configs: +# trial_cfg['federate.save_to'] = os.path.join( +# global_cfg.hpo.working_folder, +# "{}.pth".format(config2str(trial_cfg))) +# +# return init_configs +# +# def _stop_criterion(self, configs, last_results): +# if last_results is not None: +# if (global_cfg.hpo.larger_better +# and last_results.iloc[0]['performance'] >= +# global_cfg.hpo.pbt.perf_threshold) or ( +# (not global_cfg.hpo.larger_better) +# and last_results.iloc[0]['performance'] <= +# global_cfg.hpo.pbt.perf_threshold): +# return True +# return self._stage >= global_cfg.hpo.pbt.max_stage +# +# def _generate_next_population(self, configs, perfs): +# next_generation = [] +# for i in range(len(configs)): +# new_cfg = deepcopy(configs[i]) +# # exploit +# j = np.random.randint(len(configs)) +# if i != j and ( +# (global_cfg.hpo.larger_better and perfs[j] > perfs[i]) or +# ((not global_cfg.hpo.larger_better) and perfs[j] < perfs[i])): +# new_cfg['federate.restore_from'] = configs[j][ +# 'federate.save_to'] +# # explore +# for k in new_cfg: +# if isinstance(new_cfg[k], float): +# # according to the exploration strategy of the PBT paper +# new_cfg[k] *= float(np.random.choice([0.8, 1.2])) +# else: +# new_cfg['federate.restore_from'] = configs[i][ +# 'federate.save_to'] +# +# # update save path +# tmp_cfg = dict() +# for k in new_cfg: +# if k in self._original_search_space: +# tmp_cfg[k] = new_cfg[k] +# new_cfg['federate.save_to'] = os.path.join( +# global_cfg.hpo.working_folder, +# "{}.pth".format(config2str(tmp_cfg))) +# +# next_generation.append(new_cfg) +# +# return next_generation diff --git a/federatedscope/autotune/choice_types.py b/federatedscope/autotune/choice_types.py new file mode 100644 index 000000000..cf04360bc --- /dev/null +++ b/federatedscope/autotune/choice_types.py @@ -0,0 +1,159 @@ +#import os +#import sys +#file_dir = os.path.join(os.path.dirname(__file__), '../..') +#sys.path.append(file_dir) +import logging +import math +import yaml + +import numpy as np + +from federatedscope.core.configs.config import global_cfg + +logger = logging.getLogger(__name__) + + +def discretize(contd_choices, num_bkt): + '''Discretize a given continuous search space into the given number of buckets. + + Arguments: + contd_choices (Continuous): continuous choices. + num_bkt (int): number of buckets. + :returns: discritized choices. + :rtype: Discrete + ''' + if contd_choices[0] >= .0 and global_cfg.hpo.log_scale: + loglb, logub = math.log( + np.clip(contd_choices[0], 1e-8, + contd_choices[1])), math.log(contd_choices[1]) + if num_bkt == 1: + choices = [math.exp(loglb + 0.5 * (logub - loglb))] + else: + bkt_size = (logub - loglb) / (num_bkt - 1) + choices = [math.exp(loglb + i * bkt_size) for i in range(num_bkt)] + else: + if num_bkt == 1: + choices = [ + contd_choices[0] + 0.5 * (contd_choices[1] - contd_choices[0]) + ] + else: + bkt_size = (contd_choices[1] - contd_choices[0]) / (num_bkt - 1) + choices = [contd_choices[0] + i * bkt_size for i in range(num_bkt)] + disc_choices = Discrete(*choices) + return disc_choices + + +class Continuous(tuple): + """Represents a continuous search space, e.g., in the range [0.001, 0.1]. + """ + def __new__(cls, lb, ub): + assert ub >= lb, "Invalid configuration where ub:{} is less than lb:{}".format( + ub, lb) + return tuple.__new__(cls, [lb, ub]) + + def __repr__(self): + return "Continuous(%s,%s)" % self + + def sample(self): + """Sample a value from this search space. + + :returns: the sampled value. + :rtype: float + """ + if self[0] >= .0 and global_cfg.hpo.log_scale: + loglb, logub = math.log(np.clip(self[0], 1e-8, + self[1])), math.log(self[1]) + return math.exp(loglb + np.random.rand() * (logub - loglb)) + else: + return float(self[0] + np.random.rand() * (self[1] - self[0])) + + def grid(self, grid_cnt): + """Generate a given nunber of grids from this search space. + + Arguments: + grid_cnt (int): the number of grids. + :returns: the sampled value. + :rtype: float + """ + discretized = discretize(self, grid_cnt) + return list(discretized) + + +def contd_constructor(loader, node): + value = loader.construct_scalar(node) + lb, ub = map(float, value.split(',')) + return Continuous(lb, ub) + + +yaml.add_constructor(u'!contd', contd_constructor) + + +class Discrete(tuple): + """Represents a discrete search space, e.g., {'abc', 'ijk', 'xyz'}. + """ + def __new__(cls, *args): + return tuple.__new__(cls, args) + + def __repr__(self): + return "Discrete(%s)" % ','.join(map(str, self)) + + def sample(self): + """Sample a value from this search space. + + :returns: the sampled value. + :rtype: depends on the original choices. + """ + + return self[np.random.randint(len(self))] + + def grid(self, grid_cnt): + num_original = len(self) + assert grid_cnt <= num_original, "There are only {} choices to produce grids, but {} required".format( + num_original, grid_cnt) + if grid_cnt == 1: + selected = [self[len(self) // 2]] + else: + optimistic_step_size = (num_original - 1) // grid_cnt + between_end_len = optimistic_step_size * (grid_cnt - 1) + remainder = (num_original - 1) - between_end_len + one_side_remainder = remainder // 2 if remainder % 2 == 0 else remainder // 2 + 1 + if one_side_remainder <= optimistic_step_size // 2: + step_size = optimistic_step_size + else: + step_size = (num_original - 1) // (grid_cnt - 1) + covered_range = (grid_cnt - 1) * step_size + start_idx = (max(num_original - 1, 1) - covered_range) // 2 + selected = [ + self[j] for j in range( + start_idx, + min(start_idx + + grid_cnt * step_size, num_original), step_size) + ] + return selected + + +def disc_constructor(loader, node): + value = loader.construct_sequence(node) + return Discrete(*value) + + +yaml.add_constructor(u'!disc', disc_constructor) + +#if __name__=="__main__": +# obj = Continuous(0.0, 0.01) +# print(obj.grid(1), obj.grid(2), obj.grid(3)) +# for _ in range(3): +# print(obj.sample()) +# cfg.merge_from_list(['hpo.log_scale', 'True']) +# print(obj.grid(1), obj.grid(2), obj.grid(3)) +# for _ in range(3): +# print(obj.sample()) +# +# obj = Discrete('a', 'b', 'c') +# print(obj.grid(1), obj.grid(2), obj.grid(3)) +# for _ in range(3): +# print(obj.sample()) +# obj = Discrete(1, 2, 3, 4, 5) +# print(obj.grid(1), obj.grid(2), obj.grid(3), obj.grid(4), obj.grid(5)) +# for _ in range(3): +# print(obj.sample()) diff --git a/federatedscope/autotune/fedex/__init__.py b/federatedscope/autotune/fedex/__init__.py new file mode 100644 index 000000000..ae2a87680 --- /dev/null +++ b/federatedscope/autotune/fedex/__init__.py @@ -0,0 +1,4 @@ +from federatedscope.autotune.fedex.server import FedExServer +from federatedscope.autotune.fedex.client import FedExClient + +__all__ = ['FedExServer', 'FedExClient'] diff --git a/federatedscope/autotune/fedex/client.py b/federatedscope/autotune/fedex/client.py new file mode 100644 index 000000000..c9c3f948e --- /dev/null +++ b/federatedscope/autotune/fedex/client.py @@ -0,0 +1,88 @@ +import logging +import json + +from federatedscope.core.message import Message +from federatedscope.core.worker import Client + +logger = logging.getLogger(__name__) + + +class FedExClient(Client): + """Some code snippets are borrowed from the open-sourced FedEx (https://github.com/mkhodak/FedEx) + """ + def _apply_hyperparams(self, hyperparams): + """Apply the given hyperparameters + Arguments: + hyperparams (dict): keys are hyperparameter names and values are specific choices. + """ + + cmd_args = [] + for k, v in hyperparams.items(): + cmd_args.append(k) + cmd_args.append(v) + + self._cfg.defrost() + self._cfg.merge_from_list(cmd_args) + self._cfg.freeze(inform=False) + + self.trainer.ctx.setup_vars() + + def callback_funcs_for_model_para(self, message: Message): + round, sender, content = message.state, message.sender, message.content + model_params, arms, hyperparams = content["model_param"], content[ + "arms"], content["hyperparam"] + attempt = { + 'Role': 'Client #{:d}'.format(self.ID), + 'Round': self.state + 1, + 'Arms': arms, + 'Hyperparams': hyperparams + } + logger.info(json.dumps(attempt)) + + self._apply_hyperparams(hyperparams) + + self.trainer.update(model_params) + + #self.model.load_state_dict(content) + self.state = round + sample_size, model_para_all, results = self.trainer.train() + logger.info( + self._monitor.format_eval_res(results, + rnd=self.state, + role='Client #{}'.format(self.ID), + return_raw=True)) + + results['arms'] = arms + content = (sample_size, model_para_all, results) + self.comm_manager.send( + Message(msg_type='model_para', + sender=self.ID, + receiver=[sender], + state=self.state, + content=content)) + + def callback_funcs_for_evaluate(self, message: Message): + sender = message.sender + self.state = message.state + if message.content != None: + model_params = message.content["model_param"] + self.trainer.update(model_params) + if self._cfg.trainer.finetune.before_eval: + self.trainer.finetune() + metrics = {} + for split in self._cfg.eval.split: + eval_metrics = self.trainer.evaluate(target_data_split_name=split) + for key in eval_metrics: + + if self._cfg.federate.mode == 'distributed': + logger.info( + 'Client #{:d}: (Evaluation ({:s} set) at Round #{:d}) {:s} is {:.6f}' + .format(self.ID, split, self.state, key, + eval_metrics[key])) + metrics.update(**eval_metrics) + self.comm_manager.send( + Message(msg_type='metrics', + sender=self.ID, + receiver=[sender], + state=self.state, + content=metrics)) diff --git a/federatedscope/autotune/fedex/server.py b/federatedscope/autotune/fedex/server.py new file mode 100644 index 000000000..2efa8779a --- /dev/null +++ b/federatedscope/autotune/fedex/server.py @@ -0,0 +1,426 @@ +import os +import logging +from itertools import product + +import yaml + +import numpy as np +from numpy.linalg import norm +from scipy.special import logsumexp + +from federatedscope.core.message import Message +from federatedscope.core.worker import Server +from federatedscope.core.auxiliaries.utils import merge_dict + +logger = logging.getLogger(__name__) + + +def discounted_mean(trace, factor=1.0): + + weight = factor**np.flip(np.arange(len(trace)), axis=0) + return np.inner(trace, weight) / weight.sum() + + +class FedExServer(Server): + """Some code snippets are borrowed from the open-sourced FedEx (https://github.com/mkhodak/FedEx) + """ + def __init__(self, + ID=-1, + state=0, + config=None, + data=None, + model=None, + client_num=5, + total_round_num=10, + device='cpu', + strategy=None, + **kwargs): + + # initialize action space and the policy + with open(config.hpo.fedex.ss, 'r') as ips: + ss = yaml.load(ips, Loader=yaml.FullLoader) + + if next(iter(ss.keys())).startswith('arm'): + # This is a flattened action space + # ensure the order is unchanged + ss = sorted([(int(k[3:]), v) for k, v in ss.items()], + key=lambda x: x[0]) + self._grid = [] + self._cfsp = [[tp[1] for tp in ss]] + else: + # This is not a flat search space + # be careful for the order + self._grid = sorted(ss.keys()) + self._cfsp = [ss[pn] for pn in self._grid] + + sizes = [len(cand_set) for cand_set in self._cfsp] + eta0 = 'auto' if config.hpo.fedex.eta0 <= .0 else float( + config.hpo.fedex.eta0) + self._eta0 = [ + np.sqrt(2.0 * np.log(size)) if eta0 == 'auto' else eta0 + for size in sizes + ] + self._sched = config.hpo.fedex.sched + self._cutoff = config.hpo.fedex.cutoff + self._baseline = config.hpo.fedex.gamma + self._diff = config.hpo.fedex.diff + self._z = [np.full(size, -np.log(size)) for size in sizes] + self._theta = [np.exp(z) for z in self._z] + self._store = [0.0 for _ in sizes] + self._stop_exploration = False + self._trace = { + 'global': [], + 'refine': [], + 'entropy': [self.entropy()], + 'mle': [self.mle()] + } + + super(FedExServer, + self).__init__(ID, state, config, data, model, client_num, + total_round_num, device, strategy, **kwargs) + + if self._cfg.federate.restore_from != '': + pi_ckpt_path = self._cfg.federate.restore_from[:self._cfg.federate. + restore_from.rfind( + '.' + )] + "_fedex.yaml" + with open(pi_ckpt_path, 'r') as ips: + ckpt = yaml.load(ips, Loader=yaml.FullLoader) + self._z = [np.asarray(z) for z in ckpt['z']] + self._theta = [np.exp(z) for z in self._z] + self._store = ckpt['store'] + self._stop_exploration = ckpt['stop'] + self._trace = dict() + self._trace['global'] = ckpt['global'] + self._trace['refine'] = ckpt['refine'] + self._trace['entropy'] = ckpt['entropy'] + self._trace['mle'] = ckpt['mle'] + + def entropy(self): + + entropy = 0.0 + for probs in product(*(theta[theta > 0.0] for theta in self._theta)): + prob = np.prod(probs) + entropy -= prob * np.log(prob) + return entropy + + def mle(self): + + return np.prod([theta.max() for theta in self._theta]) + + def trace(self, key): + '''returns trace of one of three tracked quantities + Args: + key (str): 'entropy', 'global', or 'refine' + Returns: + numpy vector with length equal to number of rounds up to now. + ''' + + return np.array(self._trace[key]) + + def sample(self): + """samples from configs using current probability vector""" + + # determine index + if self._stop_exploration: + cfg_idx = [theta.argmax() for theta in self._theta] + else: + cfg_idx = [ + np.random.choice(len(theta), p=theta) for theta in self._theta + ] + + # get the sampled value(s) + if self._grid: + sampled_cfg = { + pn: cands[i] + for pn, cands, i in zip(self._grid, self._cfsp, cfg_idx) + } + else: + sampled_cfg = self._cfsp[0][cfg_idx[0]] + + return cfg_idx, sampled_cfg + + def broadcast_model_para(self, + msg_type='model_para', + sample_client_num=-1): + """ + To broadcast the message to all clients or sampled clients + """ + + if sample_client_num > 0: + receiver = np.random.choice(np.arange(1, self.client_num + 1), + size=sample_client_num, + replace=False).tolist() + else: + # broadcast to all clients + receiver = list(self.comm_manager.neighbors.keys()) + + if self._noise_injector is not None and msg_type == 'model_para': + # Inject noise only when broadcast parameters + for model_idx_i in range(len(self.models)): + num_sample_clients = [ + v["num_sample"] for v in self.join_in_info.values() + ] + self._noise_injector(self._cfg, num_sample_clients, + self.models[model_idx_i]) + + if self.model_num > 1: + model_para = [model.state_dict() for model in self.models] + else: + model_para = self.model.state_dict() + + # sample the hyper-parameter config specific to the clients + + for rcv_idx in receiver: + cfg_idx, sampled_cfg = self.sample() + content = { + 'model_param': model_para, + "arms": cfg_idx, + 'hyperparam': sampled_cfg + } + self.comm_manager.send( + Message(msg_type=msg_type, + sender=self.ID, + receiver=[rcv_idx], + state=self.state, + content=content)) + if self._cfg.federate.online_aggr: + for idx in range(self.model_num): + self.aggregators[idx].reset() + + def callback_funcs_model_para(self, message: Message): + round, sender, content = message.state, message.sender, message.content + # For a new round + if round not in self.msg_buffer['train'].keys(): + self.msg_buffer['train'][round] = dict() + + self.msg_buffer['train'][round][sender] = content + + if self._cfg.federate.online_aggr: + self.aggregator.inc(tuple(content[0:2])) + + return self.check_and_move_on() + + def update_policy(self, feedbacks): + """Update the policy. This implementation is borrowed from the open-sourced FedEx (https://github.com/mkhodak/FedEx/blob/150fac03857a3239429734d59d319da71191872e/hyper.py#L151) + Arguments: + feedbacks (list): each element is a dict containing "arms" and necessary feedback. + """ + + index = [elem['arms'] for elem in feedbacks] + before = np.asarray( + [elem['val_avg_loss_before'] for elem in feedbacks]) + after = np.asarray([elem['val_avg_loss_after'] for elem in feedbacks]) + weight = np.asarray([elem['val_total'] for elem in feedbacks], + dtype=np.float64) + weight /= np.sum(weight) + + if self._trace['refine']: + trace = self.trace('refine') + if self._diff: + trace -= self.trace('global') + baseline = discounted_mean(trace, self._baseline) + else: + baseline = 0.0 + self._trace['global'].append(np.inner(before, weight)) + self._trace['refine'].append(np.inner(after, weight)) + if self._stop_exploration: + self._trace['entropy'].append(0.0) + self._trace['mle'].append(1.0) + return + + for i, (z, theta) in enumerate(zip(self._z, self._theta)): + grad = np.zeros(len(z)) + for idx, s, w in zip(index, + after - before if self._diff else after, + weight): + grad[idx[i]] += w * (s - baseline) / theta[idx[i]] + if self._sched == 'adaptive': + self._store[i] += norm(grad, float('inf'))**2 + denom = np.sqrt(self._store[i]) + elif self._sched == 'aggressive': + denom = 1.0 if np.all( + grad == 0.0) else norm(grad, float('inf')) + elif self._sched == 'auto': + self._store[i] += 1.0 + denom = np.sqrt(self._store[i]) + elif self._sched == 'constant': + denom = 1.0 + elif self._sched == 'scale': + denom = 1.0 / np.sqrt( + 2.0 * np.log(len(grad))) if len(grad) > 1 else float('inf') + else: + raise NotImplementedError + eta = self._eta0[i] / denom + z -= eta * grad + z -= logsumexp(z) + self._theta[i] = np.exp(z) + + self._trace['entropy'].append(self.entropy()) + self._trace['mle'].append(self.mle()) + if self._trace['entropy'][-1] < self._cutoff: + self._stop_exploration = True + + logger.info( + 'Server #{:d}: Updated policy as {} with entropy {:f} and mle {:f}' + .format(self.ID, self._theta, self._trace['entropy'][-1], + self._trace['mle'][-1])) + + def check_and_move_on(self, + check_eval_result=False, + min_received_num=None): + """ + To check the message_buffer, when enough messages are receiving, trigger some events (such as perform aggregation, evaluation, and move to the next training round) + """ + if min_received_num is None: + min_received_num = self._cfg.federate.sample_client_num + assert min_received_num <= self.sample_client_num + + if check_eval_result: + min_received_num = len(list(self.comm_manager.neighbors.keys())) + + move_on_flag = True # To record whether moving to a new training round or finishing the evaluation + if self.check_buffer(self.state, min_received_num, check_eval_result): + + if not check_eval_result: # in the training process + mab_feedbacks = list() + # Get all the message + train_msg_buffer = self.msg_buffer['train'][self.state] + for model_idx in range(self.model_num): + model = self.models[model_idx] + aggregator = self.aggregators[model_idx] + msg_list = list() + for client_id in train_msg_buffer: + if self.model_num == 1: + msg_list.append( + tuple(train_msg_buffer[client_id][0:2])) + else: + train_data_size, model_para_multiple = train_msg_buffer[ + client_id][0:2] + msg_list.append((train_data_size, + model_para_multiple[model_idx])) + + # collect feedbacks for updating the policy + if model_idx == 0: + mab_feedbacks.append( + train_msg_buffer[client_id][2]) + + # Trigger the monitor here (for training) + if 'dissim' in self._cfg.eval.monitoring: + B_val = calc_blocal_dissim( + model.load_state_dict(strict=False), msg_list) + formatted_eval_res = self._monitor.format_eval_res( + B_val, rnd=self.state, role='Server #') + logger.info(formatted_eval_res) + + # Aggregate + agg_info = { + 'client_feedback': msg_list, + 'recover_fun': self.recover_fun + } + result = aggregator.aggregate(agg_info) + model.load_state_dict(result, strict=False) + #aggregator.update(result) + + # update the policy + self.update_policy(mab_feedbacks) + + self.state += 1 + if self.state % self._cfg.eval.freq == 0 and self.state != self.total_round_num: + # Evaluate + logger.info( + 'Server #{:d}: Starting evaluation at round {:d}.'. + format(self.ID, self.state)) + self.eval() + + if self.state < self.total_round_num: + # Move to next round of training + logger.info( + '----------- Starting a new training round (Round #{:d}) -------------' + .format(self.state)) + # Clean the msg_buffer + self.msg_buffer['train'][self.state - 1].clear() + + self.broadcast_model_para( + msg_type='model_para', + sample_client_num=self.sample_client_num) + else: + # Final Evaluate + logger.info( + 'Server #{:d}: Training is finished! Starting evaluation.' + .format(self.ID)) + self.eval() + + else: # in the evaluation process + # Get all the message & aggregate + formatted_eval_res = self.merge_eval_results_from_all_clients() + self.history_results = merge_dict(self.history_results, + formatted_eval_res) + self.check_and_save() + else: + move_on_flag = False + + return move_on_flag + + def check_and_save(self): + """ + To save the results and save model after each evaluation + """ + # early stopping + should_stop = False + + if "Results_weighted_avg" in self.history_results and \ + self._cfg.eval.best_res_update_round_wise_key in self.history_results['Results_weighted_avg']: + should_stop = self.early_stopper.track_and_check( + self.history_results['Results_weighted_avg'][ + self._cfg.eval.best_res_update_round_wise_key]) + elif "Results_avg" in self.history_results and \ + self._cfg.eval.best_res_update_round_wise_key in self.history_results['Results_avg']: + should_stop = self.early_stopper.track_and_check( + self.history_results['Results_avg'][ + self._cfg.eval.best_res_update_round_wise_key]) + else: + should_stop = False + + if should_stop: + self.state = self.total_round_num + 1 + + if should_stop or self.state == self.total_round_num: + logger.info( + 'Server #{:d}: Final evaluation is finished! Starting merging results.' + .format(self.ID)) + # last round + self.save_best_results() + + if self._cfg.federate.save_to != '': + # save the policy + ckpt = dict() + z_list = [z.tolist() for z in self._z] + ckpt['z'] = z_list + ckpt['store'] = self._store + ckpt['stop'] = self._stop_exploration + ckpt['global'] = self.trace('global').tolist() + ckpt['refine'] = self.trace('refine').tolist() + ckpt['entropy'] = self.trace('entropy').tolist() + ckpt['mle'] = self.trace('mle').tolist() + pi_ckpt_path = self._cfg.federate.save_to[:self._cfg.federate. + save_to.rfind( + '.' + )] + "_fedex.yaml" + with open(pi_ckpt_path, 'w') as ops: + yaml.dump(ckpt, ops) + + if self.model_num > 1: + model_para = [model.state_dict() for model in self.models] + else: + model_para = self.model.state_dict() + self.comm_manager.send( + Message(msg_type='finish', + sender=self.ID, + receiver=list(self.comm_manager.neighbors.keys()), + state=self.state, + content=model_para)) + + if self.state == self.total_round_num: + #break out the loop for distributed mode + self.state += 1 diff --git a/federatedscope/autotune/utils.py b/federatedscope/autotune/utils.py new file mode 100644 index 000000000..422301580 --- /dev/null +++ b/federatedscope/autotune/utils.py @@ -0,0 +1,133 @@ +from copy import deepcopy +import math + +import yaml +import pandas as pd +import ConfigSpace as CS + + +def parse_search_space(config_path): + """Parse yaml format configuration to generate search space + Arguments: + config_path (str): the path of the yaml file. + :returns: the search space. + :rtype: ConfigSpace object + """ + + ss = CS.ConfigurationSpace() + + with open(config_path, 'r') as ips: + raw_ss_config = yaml.load(ips, Loader=yaml.FullLoader) + + for k in raw_ss_config.keys(): + name = k + v = raw_ss_config[k] + hyper_type = v['type'] + del v['type'] + v['name'] = name + + if hyper_type == 'float': + hyper_config = CS.UniformFloatHyperparameter(**v) + elif hyper_type == 'int': + hyper_config = CS.UniformIntegerHyperparameter(**v) + elif hyper_type == 'cate': + hyper_config = CS.CategoricalHyperparameter(**v) + else: + raise ValueError("Unsupported hyper type {}".format(hyper_type)) + ss.add_hyperparameter(hyper_config) + + return ss + + +def config2cmdargs(config): + ''' + Arguments: + config (dict): key is cfg node name, value is the specified value. + Returns: + results (list): cmd args + ''' + + results = [] + for k, v in config.items(): + results.append(k) + results.append(v) + return results + + +def config2str(config): + ''' + Arguments: + config (dict): key is cfg node name, value is the choice of hyper-parameter. + Returns: + name (str): the string representation of this config + ''' + + vals = [] + for k in config: + idx = k.rindex('.') + vals.append(k[idx + 1:]) + vals.append(str(config[k])) + name = '_'.join(vals) + return name + + +def summarize_hpo_results(configs, perfs, white_list=None, desc=False): + cols = [k for k in configs[0] if (white_list is None or k in white_list) + ] + ['performance'] + d = [[ + trial_cfg[k] + for k in trial_cfg if (white_list is None or k in white_list) + ] + [result] for trial_cfg, result in zip(configs, perfs)] + d = sorted(d, key=lambda ele: ele[-1], reverse=desc) + df = pd.DataFrame(d, columns=cols) + return df + + +def parse_logs(file_list): + import numpy as np + import matplotlib.pyplot as plt + + FONTSIZE = 40 + MARKSIZE = 25 + + def process(file): + history = [] + with open(file, 'r') as F: + for line in F: + try: + state, line = line.split('INFO: ') + config = eval(line[line.find('{'):line.find('}') + 1]) + performance = float( + line[line.find('performance'):].split(' ')[1]) + print(config, performance) + history.append((config, performance)) + except: + continue + best_seen = np.inf + tol_budget = 0 + x, y = [], [] + + for config, performance in history: + tol_budget += config['federate.total_round_num'] + if best_seen > performance or config[ + 'federate.total_round_num'] > tmp_b: + best_seen = performance + x.append(tol_budget) + y.append(best_seen) + tmp_b = config['federate.total_round_num'] + return np.array(x) / tol_budget, np.array(y) + + # Draw + plt.figure(figsize=(10, 7.5)) + plt.xticks(fontsize=FONTSIZE) + plt.yticks(fontsize=FONTSIZE) + + plt.xlabel('Fraction of budget', size=FONTSIZE) + plt.ylabel('Loss', size=FONTSIZE) + + for file in file_list: + x, y = process(file) + plt.plot(x, y, linewidth=1, markersize=MARKSIZE) + plt.legend(file_list, fontsize=23, loc='lower right') + plt.savefig(f'exp2.pdf', bbox_inches='tight') + plt.close() diff --git a/federatedscope/contrib/__init__.py b/federatedscope/contrib/__init__.py new file mode 100644 index 000000000..f8e91f237 --- /dev/null +++ b/federatedscope/contrib/__init__.py @@ -0,0 +1,3 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division diff --git a/federatedscope/contrib/configs/__init__.py b/federatedscope/contrib/configs/__init__.py new file mode 100644 index 000000000..cef30fadb --- /dev/null +++ b/federatedscope/contrib/configs/__init__.py @@ -0,0 +1,14 @@ +import copy +from os.path import dirname, basename, isfile, join +import glob + +modules = glob.glob(join(dirname(__file__), "*.py")) +__all__ = [ + basename(f)[:-3] for f in modules + if isfile(f) and not f.endswith('__init__.py') +] + +# to ensure the sub-configs registered before set up the global config +all_sub_configs_contrib = copy.copy(__all__) +if "config" in all_sub_configs_contrib: + all_sub_configs_contrib.remove('config') diff --git a/federatedscope/contrib/data/__init__.py b/federatedscope/contrib/data/__init__.py new file mode 100644 index 000000000..c0b31382d --- /dev/null +++ b/federatedscope/contrib/data/__init__.py @@ -0,0 +1,8 @@ +from os.path import dirname, basename, isfile, join +import glob + +modules = glob.glob(join(dirname(__file__), "*.py")) +__all__ = [ + basename(f)[:-3] for f in modules + if isfile(f) and not f.endswith('__init__.py') +] diff --git a/federatedscope/contrib/data/example.py b/federatedscope/contrib/data/example.py new file mode 100644 index 000000000..557236afc --- /dev/null +++ b/federatedscope/contrib/data/example.py @@ -0,0 +1,30 @@ +from federatedscope.register import register_data + + +def MyData(config): + r""" + + Returns: + data: + { + '{client_id}': { + 'train': Dataset or DataLoader, + 'test': Dataset or DataLoader, + 'val': Dataset or DataLoader + } + } + config: + cfg_node + """ + data = None + config = config + return data, config + + +def call_my_data(config): + if config.data.type == "mydata": + data, modified_config = MyData(config) + return data, modified_config + + +register_data("mydata", call_my_data) diff --git a/federatedscope/contrib/metrics/__init__.py b/federatedscope/contrib/metrics/__init__.py new file mode 100644 index 000000000..c0b31382d --- /dev/null +++ b/federatedscope/contrib/metrics/__init__.py @@ -0,0 +1,8 @@ +from os.path import dirname, basename, isfile, join +import glob + +modules = glob.glob(join(dirname(__file__), "*.py")) +__all__ = [ + basename(f)[:-3] for f in modules + if isfile(f) and not f.endswith('__init__.py') +] diff --git a/federatedscope/contrib/metrics/example.py b/federatedscope/contrib/metrics/example.py new file mode 100644 index 000000000..7fdb699bf --- /dev/null +++ b/federatedscope/contrib/metrics/example.py @@ -0,0 +1,16 @@ +from federatedscope.register import register_metric + +METRIC_NAME = 'example' + + +def MyMetric(ctx, **kwargs): + return ctx["num_train_data"] + + +def call_my_metric(types): + if METRIC_NAME in types: + metric_builder = MyMetric + return METRIC_NAME, metric_builder + + +register_metric(METRIC_NAME, call_my_metric) diff --git a/federatedscope/contrib/metrics/poison_acc.py b/federatedscope/contrib/metrics/poison_acc.py new file mode 100644 index 000000000..75f408052 --- /dev/null +++ b/federatedscope/contrib/metrics/poison_acc.py @@ -0,0 +1,31 @@ +from federatedscope.register import register_metric +import numpy as np + + +def compute_poison_metric(ctx): + + poison_true = ctx['poison_' + ctx.cur_data_split + '_y_true'] + poison_prob = ctx['poison_' + ctx.cur_data_split + '_y_prob'] + poison_pred = np.argmax(poison_prob, axis=1) + + correct = poison_true == poison_pred + + return float(np.sum(correct)) / len(correct) + + +def load_poison_metrics(ctx, y_true, y_pred, y_prob, **kwargs): + + if ctx.cur_data_split == 'train': + results = None + else: + results = compute_poison_metric(ctx) + + return results + + +def call_poison_metric(types): + if 'poison_attack_acc' in types: + return 'poison_attack_acc', load_poison_metrics + + +register_metric('poison_attack_acc', call_poison_metric) diff --git a/federatedscope/contrib/model/__init__.py b/federatedscope/contrib/model/__init__.py new file mode 100644 index 000000000..c0b31382d --- /dev/null +++ b/federatedscope/contrib/model/__init__.py @@ -0,0 +1,8 @@ +from os.path import dirname, basename, isfile, join +import glob + +modules = glob.glob(join(dirname(__file__), "*.py")) +__all__ = [ + basename(f)[:-3] for f in modules + if isfile(f) and not f.endswith('__init__.py') +] diff --git a/federatedscope/contrib/model/example.py b/federatedscope/contrib/model/example.py new file mode 100644 index 000000000..899246a35 --- /dev/null +++ b/federatedscope/contrib/model/example.py @@ -0,0 +1,23 @@ +from federatedscope.register import register_model + + +# Build you torch or tf model class here +class MyNet(object): + pass + + +# Instantiate your model class with config and data +def ModelBuilder(model_config, local_data): + + model = MyNet() + + return model + + +def call_my_net(model_config, local_data): + if model_config.type == "mynet": + model = ModelBuilder(model_config, local_data) + return model + + +register_model("mynet", call_my_net) diff --git a/federatedscope/contrib/model/resnet.py b/federatedscope/contrib/model/resnet.py new file mode 100644 index 000000000..b89b4c46c --- /dev/null +++ b/federatedscope/contrib/model/resnet.py @@ -0,0 +1,376 @@ +from federatedscope.register import register_model +'''Pre-activation ResNet in PyTorch. + +Reference: +[1] Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun + Identity Mappings in Deep Residual Networks. arXiv:1603.05027 +''' +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class PreActBlock(nn.Module): + '''Pre-activation version of the BasicBlock.''' + expansion = 1 + + def __init__(self, in_planes, planes, stride=1): + super(PreActBlock, self).__init__() + self.bn1 = nn.BatchNorm2d(in_planes) + self.conv1 = nn.Conv2d(in_planes, + planes, + kernel_size=3, + stride=stride, + padding=1, + bias=False) + self.bn2 = nn.BatchNorm2d(planes) + self.conv2 = nn.Conv2d(planes, + planes, + kernel_size=3, + stride=1, + padding=1, + bias=False) + + if stride != 1 or in_planes != self.expansion * planes: + self.shortcut = nn.Sequential( + nn.Conv2d(in_planes, + self.expansion * planes, + kernel_size=1, + stride=stride, + bias=False)) + + def forward(self, x): + out = F.relu(self.bn1(x)) + shortcut = self.shortcut(out) if hasattr(self, 'shortcut') else x + out = self.conv1(out) + out = self.conv2(F.relu(self.bn2(out))) + out += shortcut + return out + + +class PreActBottleneck(nn.Module): + '''Pre-activation version of the original Bottleneck module.''' + expansion = 4 + + def __init__(self, in_planes, planes, stride=1): + super(PreActBottleneck, self).__init__() + self.bn1 = nn.BatchNorm2d(in_planes) + self.conv1 = nn.Conv2d(in_planes, planes, kernel_size=1, bias=False) + self.bn2 = nn.BatchNorm2d(planes) + self.conv2 = nn.Conv2d(planes, + planes, + kernel_size=3, + stride=stride, + padding=1, + bias=False) + self.bn3 = nn.BatchNorm2d(planes) + self.conv3 = nn.Conv2d(planes, + self.expansion * planes, + kernel_size=1, + bias=False) + + if stride != 1 or in_planes != self.expansion * planes: + self.shortcut = nn.Sequential( + nn.Conv2d(in_planes, + self.expansion * planes, + kernel_size=1, + stride=stride, + bias=False)) + + def forward(self, x): + out = F.relu(self.bn1(x)) + shortcut = self.shortcut(out) if hasattr(self, 'shortcut') else x + out = self.conv1(out) + out = self.conv2(F.relu(self.bn2(out))) + out = self.conv3(F.relu(self.bn3(out))) + out += shortcut + return out + + +class PreActResNet(nn.Module): + def __init__(self, block, num_blocks, num_classes=10): + super(PreActResNet, self).__init__() + self.in_planes = 64 + + self.conv1 = nn.Conv2d(3, + 64, + kernel_size=3, + stride=1, + padding=1, + bias=False) + self.layer1 = self._make_layer(block, 64, num_blocks[0], stride=1) + self.layer2 = self._make_layer(block, 128, num_blocks[1], stride=2) + self.layer3 = self._make_layer(block, 256, num_blocks[2], stride=2) + self.layer4 = self._make_layer(block, 512, num_blocks[3], stride=2) + self.linear = nn.Linear(512 * block.expansion, num_classes) + + def _make_layer(self, block, planes, num_blocks, stride): + strides = [stride] + [1] * (num_blocks - 1) + layers = [] + for stride in strides: + layers.append(block(self.in_planes, planes, stride)) + self.in_planes = planes * block.expansion + return nn.Sequential(*layers) + + def forward(self, x): + out = self.conv1(x) + out = self.layer1(out) + out = self.layer2(out) + out = self.layer3(out) + out = self.layer4(out) + out = F.avg_pool2d(out, 4) + out = out.view(out.size(0), -1) + out = self.linear(out) + return out + + +def PreActResNet18(): + return PreActResNet(PreActBlock, [2, 2, 2, 2]) + + +def PreActResNet34(): + return PreActResNet(PreActBlock, [3, 4, 6, 3]) + + +def PreActResNet50(): + return PreActResNet(PreActBottleneck, [3, 4, 6, 3]) + + +def PreActResNet101(): + return PreActResNet(PreActBottleneck, [3, 4, 23, 3]) + + +def PreActResNet152(): + return PreActResNet(PreActBottleneck, [3, 8, 36, 3]) + + +class BasicBlock(nn.Module): + expansion = 1 + + def __init__(self, in_planes, planes, stride=1, norm='bn'): + super(BasicBlock, self).__init__() + self.norm = norm + + self.conv1 = nn.Conv2d(in_planes, + planes, + kernel_size=3, + stride=stride, + padding=1, + bias=False) + + self.bn1 = nn.BatchNorm2d( + planes) if self.norm == 'bn' else nn.GroupNorm( + 64, planes, affine=True) + + self.conv2 = nn.Conv2d(planes, + planes, + kernel_size=3, + stride=1, + padding=1, + bias=False) + + self.bn2 = nn.BatchNorm2d( + planes) if self.norm == 'bn' else nn.GroupNorm( + 64, planes, affine=True) + + self.shortcut = nn.Sequential() + if stride != 1 or in_planes != self.expansion * planes: + self.shortcut = nn.Sequential( + nn.Conv2d(in_planes, + self.expansion * planes, + kernel_size=1, + stride=stride, + bias=False), + nn.BatchNorm2d(self.expansion * planes) if self.norm == 'bn' + else nn.GroupNorm(64, self.expansion * planes, affine=True)) + + def forward(self, x): + # + out = F.relu(self.bn1(self.conv1(x))) + out = self.bn2(self.conv2(out)) + out += self.shortcut(x) + out = F.relu(out) + return out + + +class Bottleneck(nn.Module): + expansion = 4 + + def __init__(self, in_planes, planes, stride=1, norm='bn'): + super(Bottleneck, self).__init__() + + self.norm = norm + self.conv1 = nn.Conv2d(in_planes, planes, kernel_size=1, bias=False) + + self.bn1 = nn.BatchNorm2d( + planes) if self.norm == 'bn' else nn.GroupNorm( + 64, planes, affine=True) + + self.conv2 = nn.Conv2d(planes, + planes, + kernel_size=3, + stride=stride, + padding=1, + bias=False) + + self.bn2 = nn.BatchNorm2d( + planes) if self.norm == 'bn' else nn.GroupNorm( + 64, planes, affine=True) + + self.conv3 = nn.Conv2d(planes, + self.expansion * planes, + kernel_size=1, + bias=False) + + self.bn3 = nn.BatchNorm2d( + self.expansion * planes) if self.norm == 'bn' else nn.GroupNorm( + 64, self.expansion * planes, affine=True) + + self.shortcut = nn.Sequential() + if stride != 1 or in_planes != self.expansion * planes: + self.shortcut = nn.Sequential( + nn.Conv2d(in_planes, + self.expansion * planes, + kernel_size=1, + stride=stride, + bias=False), + nn.BatchNorm2d(self.expansion * planes) if self.norm == 'bn' + else nn.GroupNorm(64, self.expansion * planes, affine=True)) + + def forward(self, x): + out = F.relu(self.bn1(self.conv1(x))) + out = F.relu(self.bn2(self.conv2(out))) + out = self.bn3(self.conv3(out)) + out += self.shortcut(x) + out = F.relu(out) + return out + + +class ResNet(nn.Module): + def __init__(self, block, num_blocks, num_classes=10, norm='bn'): + super(ResNet, self).__init__() + + self.norm = norm + self.in_planes = 64 + + self.conv1 = nn.Conv2d(3, + 64, + kernel_size=3, + stride=1, + padding=1, + bias=False) + if self.norm == 'bn': + self.bn1 = nn.BatchNorm2d(64) + elif self.norm == 'gn': + self.bn1 = nn.GroupNorm(64, 64, affine=True) + + self.layer1 = self._make_layer(block, + 64, + num_blocks[0], + stride=1, + norm=self.norm) + self.layer2 = self._make_layer(block, + 128, + num_blocks[1], + stride=2, + norm=self.norm) + self.layer3 = self._make_layer(block, + 256, + num_blocks[2], + stride=2, + norm=self.norm) + self.layer4 = self._make_layer(block, + 512, + num_blocks[3], + stride=2, + norm=self.norm) + self.linear = nn.Linear(512 * block.expansion, num_classes) + + def _make_layer(self, block, planes, num_blocks, stride, norm): + strides = [stride] + [1] * (num_blocks - 1) + layers = [] + for stride in strides: + layers.append(block(self.in_planes, planes, stride, norm)) + self.in_planes = planes * block.expansion + return nn.Sequential(*layers) + + def feature(self, x): + out = F.relu(self.bn1(self.conv1(x))) + out = self.layer1(out) + out = self.layer2(out) + out = self.layer3(out) + out = self.layer4(out) + out = F.avg_pool2d(out, 4) + out = out.view(out.size(0), -1) + + return out + + def forward(self, x): + out = F.relu(self.bn1(self.conv1(x))) + out = self.layer1(out) + out = self.layer2(out) + out = self.layer3(out) + out = self.layer4(out) + out = F.avg_pool2d(out, 4) + out = out.view(out.size(0), -1) + out = self.linear(out) + return out + + +def ResNet18(): + return ResNet(BasicBlock, [2, 2, 2, 2]) + + +def ResNet18_GN(): + return ResNet(BasicBlock, [2, 2, 2, 2], norm='gn') + + +def ResNet34(): + return ResNet(BasicBlock, [3, 4, 6, 3]) + + +def ResNet50(): + return ResNet(Bottleneck, [3, 4, 6, 3]) + + +def ResNet101(): + return ResNet(Bottleneck, [3, 4, 23, 3]) + + +def ResNet152(): + return ResNet(Bottleneck, [3, 8, 36, 3]) + + +def preact_resnet(model_config): + if '18' in model_config.type: + net = PreActResNet18() + elif '50' in model_config.type: + net = PreActResNet50() + return net + + +def resnet(model_config): + + if '18' in model_config.type and 'gn' in model_config.type: + net = ResNet18_GN() + elif '18' in model_config.type and 'ln' not in model_config.type and 'in' not in model_config.type: + net = ResNet18() + # + elif '50' in model_config.type and 'ln' not in model_config.type and 'in' not in model_config.type: + net = ResNet50() + else: + net = None + # + return net + + +def call_resnet(model_config, local_data): + if 'resnet' in model_config.type and 'pre' in model_config.type: + model = preact_resnet(model_config) + return model + elif 'resnet' in model_config.type and 'pre' not in model_config.type: + model = resnet(model_config) + return model + + +register_model('resnet', call_resnet) diff --git a/federatedscope/contrib/model/resnet_in.py b/federatedscope/contrib/model/resnet_in.py new file mode 100644 index 000000000..ef9406293 --- /dev/null +++ b/federatedscope/contrib/model/resnet_in.py @@ -0,0 +1,312 @@ +from federatedscope.register import register_model +'''Pre-activation ResNet in PyTorch. + +Reference: +[1] Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun + Identity Mappings in Deep Residual Networks. arXiv:1603.05027 +''' +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class PreActBlock(nn.Module): + '''Pre-activation version of the BasicBlock.''' + expansion = 1 + + def __init__(self, in_planes, planes, stride=1): + super(PreActBlock, self).__init__() + self.bn1 = nn.BatchNorm2d(in_planes) + self.conv1 = nn.Conv2d(in_planes, + planes, + kernel_size=3, + stride=stride, + padding=1, + bias=False) + self.bn2 = nn.BatchNorm2d(planes) + self.conv2 = nn.Conv2d(planes, + planes, + kernel_size=3, + stride=1, + padding=1, + bias=False) + + if stride != 1 or in_planes != self.expansion * planes: + self.shortcut = nn.Sequential( + nn.Conv2d(in_planes, + self.expansion * planes, + kernel_size=1, + stride=stride, + bias=False)) + + def forward(self, x): + out = F.relu(self.bn1(x)) + shortcut = self.shortcut(out) if hasattr(self, 'shortcut') else x + out = self.conv1(out) + out = self.conv2(F.relu(self.bn2(out))) + out += shortcut + return out + + +class PreActBottleneck(nn.Module): + '''Pre-activation version of the original Bottleneck module.''' + expansion = 4 + + def __init__(self, in_planes, planes, stride=1): + super(PreActBottleneck, self).__init__() + self.bn1 = nn.BatchNorm2d(in_planes) + self.conv1 = nn.Conv2d(in_planes, planes, kernel_size=1, bias=False) + self.bn2 = nn.BatchNorm2d(planes) + self.conv2 = nn.Conv2d(planes, + planes, + kernel_size=3, + stride=stride, + padding=1, + bias=False) + self.bn3 = nn.BatchNorm2d(planes) + self.conv3 = nn.Conv2d(planes, + self.expansion * planes, + kernel_size=1, + bias=False) + + if stride != 1 or in_planes != self.expansion * planes: + self.shortcut = nn.Sequential( + nn.Conv2d(in_planes, + self.expansion * planes, + kernel_size=1, + stride=stride, + bias=False)) + + def forward(self, x): + out = F.relu(self.bn1(x)) + shortcut = self.shortcut(out) if hasattr(self, 'shortcut') else x + out = self.conv1(out) + out = self.conv2(F.relu(self.bn2(out))) + out = self.conv3(F.relu(self.bn3(out))) + out += shortcut + return out + + +class PreActResNet(nn.Module): + def __init__(self, block, num_blocks, num_classes=10): + super(PreActResNet, self).__init__() + self.in_planes = 64 + + self.conv1 = nn.Conv2d(3, + 64, + kernel_size=3, + stride=1, + padding=1, + bias=False) + self.layer1 = self._make_layer(block, 64, num_blocks[0], stride=1) + self.layer2 = self._make_layer(block, 128, num_blocks[1], stride=2) + self.layer3 = self._make_layer(block, 256, num_blocks[2], stride=2) + self.layer4 = self._make_layer(block, 512, num_blocks[3], stride=2) + self.linear = nn.Linear(512 * block.expansion, num_classes) + + def _make_layer(self, block, planes, num_blocks, stride): + strides = [stride] + [1] * (num_blocks - 1) + layers = [] + for stride in strides: + layers.append(block(self.in_planes, planes, stride)) + self.in_planes = planes * block.expansion + return nn.Sequential(*layers) + + def forward(self, x): + out = self.conv1(x) + out = self.layer1(out) + out = self.layer2(out) + out = self.layer3(out) + out = self.layer4(out) + out = F.avg_pool2d(out, 4) + out = out.view(out.size(0), -1) + out = self.linear(out) + return out + + +def PreActResNet18(): + return PreActResNet(PreActBlock, [2, 2, 2, 2]) + + +def PreActResNet34(): + return PreActResNet(PreActBlock, [3, 4, 6, 3]) + + +def PreActResNet50(): + return PreActResNet(PreActBottleneck, [3, 4, 6, 3]) + + +def PreActResNet101(): + return PreActResNet(PreActBottleneck, [3, 4, 23, 3]) + + +def PreActResNet152(): + return PreActResNet(PreActBottleneck, [3, 8, 36, 3]) + + +class BasicBlock(nn.Module): + expansion = 1 + + def __init__(self, in_planes, planes, stride=1): + super(BasicBlock, self).__init__() + + self.conv1 = nn.Conv2d(in_planes, + planes, + kernel_size=3, + stride=stride, + padding=1, + bias=False) + + self.bn1 = nn.GroupNorm(planes, planes, affine=True) + + self.conv2 = nn.Conv2d(planes, + planes, + kernel_size=3, + stride=1, + padding=1, + bias=False) + + self.bn2 = nn.GroupNorm(planes, planes, affine=True) + + self.shortcut = nn.Sequential() + if stride != 1 or in_planes != self.expansion * planes: + self.shortcut = nn.Sequential( + nn.Conv2d(in_planes, + self.expansion * planes, + kernel_size=1, + stride=stride, + bias=False), + nn.GroupNorm(self.expansion * planes, + self.expansion * planes, + affine=True)) + + def forward(self, x): + out = F.relu(self.bn1(self.conv1(x))) + out = self.bn2(self.conv2(out)) + out += self.shortcut(x) + out = F.relu(out) + return out + + +class Bottleneck(nn.Module): + expansion = 4 + + def __init__(self, in_planes, planes, stride=1): + super(Bottleneck, self).__init__() + + self.conv1 = nn.Conv2d(in_planes, planes, kernel_size=1, bias=False) + + self.bn1 = nn.GroupNorm(planes, planes, affine=True) + + self.conv2 = nn.Conv2d(planes, + planes, + kernel_size=3, + stride=stride, + padding=1, + bias=False) + + self.bn2 = nn.GroupNorm(planes, planes, affine=True) + + self.conv3 = nn.Conv2d(planes, + self.expansion * planes, + kernel_size=1, + bias=False) + + self.bn3 = nn.GroupNorm(self.expansion * planes, + self.expansion * planes, + affine=True) + + self.shortcut = nn.Sequential() + if stride != 1 or in_planes != self.expansion * planes: + self.shortcut = nn.Sequential( + nn.Conv2d(in_planes, + self.expansion * planes, + kernel_size=1, + stride=stride, + bias=False), + nn.GroupNorm(self.expansion * planes, + self.expansion * planes, + affine=True)) + + def forward(self, x): + out = F.relu(self.bn1(self.conv1(x))) + out = F.relu(self.bn2(self.conv2(out))) + out = self.bn3(self.conv3(out)) + out += self.shortcut(x) + out = F.relu(out) + return out + + +class ResNet(nn.Module): + def __init__(self, block, num_blocks, num_classes=10): + super(ResNet, self).__init__() + + # self.norm = norm + self.in_planes = 64 + + self.conv1 = nn.Conv2d(3, + 64, + kernel_size=3, + stride=1, + padding=1, + bias=False) + + self.bn1 = nn.GroupNorm(64, 64, affine=True) + + self.layer1 = self._make_layer(block, 64, num_blocks[0], stride=1) + self.layer2 = self._make_layer(block, 128, num_blocks[1], stride=2) + self.layer3 = self._make_layer(block, 256, num_blocks[2], stride=2) + self.layer4 = self._make_layer(block, 512, num_blocks[3], stride=2) + self.linear = nn.Linear(512 * block.expansion, num_classes) + + def _make_layer(self, block, planes, num_blocks, stride): + strides = [stride] + [1] * (num_blocks - 1) + layers = [] + for stride in strides: + layers.append(block(self.in_planes, planes, stride)) + self.in_planes = planes * block.expansion + return nn.Sequential(*layers) + + def forward(self, x): + out = F.relu(self.bn1(self.conv1(x))) + out = self.layer1(out) + out = self.layer2(out) + out = self.layer3(out) + out = self.layer4(out) + out = F.avg_pool2d(out, 4) + out = out.view(out.size(0), -1) + out = self.linear(out) + return out + + +def ResNet18_IN(): + return ResNet(BasicBlock, [2, 2, 2, 2]) + + +def ResNet34_IN(): + return ResNet(BasicBlock, [3, 4, 6, 3]) + + +def ResNet50_IN(): + return ResNet(Bottleneck, [3, 4, 6, 3]) + + +def resnet_in(model_config): + + if '18' in model_config.type: + net = ResNet18_IN() + elif '50' in model_config.type: + net = ResNet50_IN() + else: + net = None + return net + + +def call_resnet_in(model_config, local_data): + + if 'in' in model_config.type: + model = resnet_in(model_config) + return model + + +register_model('resnet_in', call_resnet_in) diff --git a/federatedscope/contrib/model/resnet_ln.py b/federatedscope/contrib/model/resnet_ln.py new file mode 100644 index 000000000..8188a23c3 --- /dev/null +++ b/federatedscope/contrib/model/resnet_ln.py @@ -0,0 +1,227 @@ +'''ResNet in PyTorch. +For Pre-activation ResNet, see 'preact_resnet.py'. +Reference: +[1] Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun + Deep Residual Learning for Image Recognition. arXiv:1512.03385 +''' +from federatedscope.register import register_model +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class FilterResponseNormNd(nn.Module): + def __init__(self, ndim, num_features, eps=1e-6, learnable_eps=False): + """ + Input Variables: + ---------------- + ndim: An integer indicating the number of dimensions of the expected input tensor. + num_features: An integer indicating the number of input feature dimensions. + eps: A scalar constant or learnable variable. + learnable_eps: A bool value indicating whether the eps is learnable. + """ + assert ndim in [3, 4, 5], \ + 'FilterResponseNorm only supports 3d, 4d or 5d inputs.' + super(FilterResponseNormNd, self).__init__() + shape = (1, num_features) + (1, ) * (ndim - 2) + self.eps = nn.Parameter(torch.ones(*shape) * eps) + if not learnable_eps: + self.eps.requires_grad_(False) + self.gamma = nn.Parameter(torch.Tensor(*shape)) + self.beta = nn.Parameter(torch.Tensor(*shape)) + self.tau = nn.Parameter(torch.Tensor(*shape)) + self.reset_parameters() + + def forward(self, x): + avg_dims = tuple(range(2, x.dim())) + nu2 = torch.pow(x, 2).mean(dim=avg_dims, keepdim=True) + x = x * torch.rsqrt(nu2 + torch.abs(self.eps)) + return torch.max(self.gamma * x + self.beta, self.tau) + + def reset_parameters(self): + nn.init.ones_(self.gamma) + nn.init.zeros_(self.beta) + nn.init.zeros_(self.tau) + + +class FilterResponseNorm1d(FilterResponseNormNd): + def __init__(self, num_features, eps=1e-6, learnable_eps=False): + super(FilterResponseNorm1d, self).__init__(3, + num_features, + eps=eps, + learnable_eps=learnable_eps) + + +class FilterResponseNorm2d(FilterResponseNormNd): + def __init__(self, num_features, eps=1e-6, learnable_eps=False): + super(FilterResponseNorm2d, self).__init__(4, + num_features, + eps=eps, + learnable_eps=learnable_eps) + + +class FilterResponseNorm3d(FilterResponseNormNd): + def __init__(self, num_features, eps=1e-6, learnable_eps=False): + super(FilterResponseNorm3d, self).__init__(5, + num_features, + eps=eps, + learnable_eps=learnable_eps) + + +class BasicBlock(nn.Module): + expansion = 1 + + def __init__(self, in_planes, planes, stride=1): + super(BasicBlock, self).__init__() + self.conv1 = nn.Conv2d(in_planes, + planes, + kernel_size=3, + stride=stride, + padding=1, + bias=False) + self.bn1 = FilterResponseNorm2d(planes) + self.conv2 = nn.Conv2d(planes, + planes, + kernel_size=3, + stride=1, + padding=1, + bias=False) + self.bn2 = FilterResponseNorm2d(planes) + + self.shortcut = nn.Sequential() + if stride != 1 or in_planes != self.expansion * planes: + self.shortcut = nn.Sequential( + nn.Conv2d(in_planes, + self.expansion * planes, + kernel_size=1, + stride=stride, + bias=False), + FilterResponseNorm2d(self.expansion * planes)) + + def forward(self, x): + out = F.relu(self.bn1(self.conv1(x))) + out = self.bn2(self.conv2(out)) + out += self.shortcut(x) + out = F.relu(out) + return out + + +class Bottleneck(nn.Module): + expansion = 4 + + def __init__(self, in_planes, planes, stride=1): + super(Bottleneck, self).__init__() + self.conv1 = nn.Conv2d(in_planes, planes, kernel_size=1, bias=False) + self.bn1 = FilterResponseNorm2d(planes) + self.conv2 = nn.Conv2d(planes, + planes, + kernel_size=3, + stride=stride, + padding=1, + bias=False) + self.bn2 = FilterResponseNorm2d(planes) + self.conv3 = nn.Conv2d(planes, + self.expansion * planes, + kernel_size=1, + bias=False) + self.bn3 = FilterResponseNorm2d(self.expansion * planes) + + self.shortcut = nn.Sequential() + if stride != 1 or in_planes != self.expansion * planes: + self.shortcut = nn.Sequential( + nn.Conv2d(in_planes, + self.expansion * planes, + kernel_size=1, + stride=stride, + bias=False), + FilterResponseNorm2d(self.expansion * planes)) + + def forward(self, x): + out = F.relu(self.bn1(self.conv1(x))) + out = F.relu(self.bn2(self.conv2(out))) + out = self.bn3(self.conv3(out)) + out += self.shortcut(x) + out = F.relu(out) + return out + + +class ResNet_LN(nn.Module): + def __init__(self, block, num_blocks, num_classes=10): + super(ResNet_LN, self).__init__() + self.in_planes = 64 + + self.conv1 = nn.Conv2d(3, + 64, + kernel_size=3, + stride=1, + padding=1, + bias=False) + self.bn1 = FilterResponseNorm2d(64) + self.layer1 = self._make_layer(block, 64, num_blocks[0], stride=1) + self.layer2 = self._make_layer(block, 128, num_blocks[1], stride=2) + self.layer3 = self._make_layer(block, 256, num_blocks[2], stride=2) + self.layer4 = self._make_layer(block, 512, num_blocks[3], stride=2) + self.linear = nn.Linear(512 * block.expansion, num_classes) + + def _make_layer(self, block, planes, num_blocks, stride): + strides = [stride] + [1] * (num_blocks - 1) + layers = [] + for stride in strides: + layers.append(block(self.in_planes, planes, stride)) + self.in_planes = planes * block.expansion + return nn.Sequential(*layers) + + def forward(self, x): + out = F.relu(self.bn1(self.conv1(x))) + out = self.layer1(out) + out = self.layer2(out) + out = self.layer3(out) + out = self.layer4(out) + out = F.avg_pool2d(out, 4) + out = out.view(out.size(0), -1) + out = self.linear(out) + return out + + +def ResNet18_LN(): + return ResNet_LN(BasicBlock, [2, 2, 2, 2]) + + +def ResNet34_LN(): + return ResNet_LN(BasicBlock, [3, 4, 6, 3]) + + +def ResNet50_LN(): + return ResNet_LN(Bottleneck, [3, 4, 6, 3]) + + +def ResNet101_LN(): + return ResNet_LN(Bottleneck, [3, 4, 23, 3]) + + +def ResNet152_LN(): + return ResNet_LN(Bottleneck, [3, 8, 36, 3]) + + +def resnet_ln(model_config): + + if '18' in model_config.type: + net = ResNet18_LN() + elif '50' in model_config.type: + net = ResNet50_LN() + + else: + net = None + + # + return net + + +def call_resnet_ln(model_config, local_data): + if 'ln' in model_config.type: + model = resnet_ln(model_config) + # + return model + + +register_model('resnet_ln', call_resnet_ln) diff --git a/federatedscope/contrib/model/vgg.py b/federatedscope/contrib/model/vgg.py new file mode 100644 index 000000000..7be85e622 --- /dev/null +++ b/federatedscope/contrib/model/vgg.py @@ -0,0 +1,82 @@ +import torch +import torch.nn as nn + +from federatedscope.register import register_model + +cfg = { + 'VGG11': [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'], + 'VGG13': [ + 64, 64, 'M', 128, 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M' + ], + 'VGG16': [ + 64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512, 'M', + 512, 512, 512, 'M' + ], + 'VGG19': [ + 64, 64, 'M', 128, 128, 'M', 256, 256, 256, 256, 'M', 512, 512, 512, + 512, 'M', 512, 512, 512, 512, 'M' + ], +} + + +class VGG(nn.Module): + def __init__(self, vgg_name, channel, num_classes): + super(VGG, self).__init__() + self.channel = channel + self.features = self._make_layers(cfg[vgg_name]) + self.linear = nn.Linear(512, num_classes) + + def forward(self, x): + out = self.features(x) + out = out.view(out.size(0), -1) + out = self.linear(out) + return out + + def _make_layers(self, cfg): + layers = [] + in_channels = self.channel + for x in cfg: + if x == 'M': + layers += [nn.MaxPool2d(kernel_size=2, stride=2)] + else: + layers += [ + nn.Conv2d(in_channels, x, kernel_size=3, padding=1), + nn.BatchNorm2d(x), + nn.ReLU(inplace=True) + ] + in_channels = x + layers += [nn.AvgPool2d(kernel_size=1, stride=1)] + return nn.Sequential(*layers) + + +def VGG11(channel=3, num_classe=10): + return VGG('VGG11', channel=channel, num_classes=num_classe) + + +def VGG13(channel=3, num_classe=10): + return VGG('VGG13', channel=channel, num_classes=num_classe) + + +def VGG16(channel, num_classes): + return VGG('VGG16', channel, num_classes) + + +def VGG19(channel, num_classes): + return VGG('VGG19', channel, num_classes) + + +def vgg(model_config): + if '11' in model_config.type: + net = VGG11() + elif '13' in model_config.type: + net = VGG13() + return net + + +def call_vgg(model_config, local_data): + if 'vgg' in model_config.type: + model = vgg(model_config) + return model + + +register_model('vgg', call_vgg) diff --git a/federatedscope/contrib/trainer/__init__.py b/federatedscope/contrib/trainer/__init__.py new file mode 100644 index 000000000..c0b31382d --- /dev/null +++ b/federatedscope/contrib/trainer/__init__.py @@ -0,0 +1,8 @@ +from os.path import dirname, basename, isfile, join +import glob + +modules = glob.glob(join(dirname(__file__), "*.py")) +__all__ = [ + basename(f)[:-3] for f in modules + if isfile(f) and not f.endswith('__init__.py') +] diff --git a/federatedscope/contrib/trainer/example.py b/federatedscope/contrib/trainer/example.py new file mode 100644 index 000000000..ffc207372 --- /dev/null +++ b/federatedscope/contrib/trainer/example.py @@ -0,0 +1,16 @@ +from federatedscope.register import register_trainer +from federatedscope.core.trainers.torch_trainer import GeneralTorchTrainer + + +# Build your trainer here. +class MyTrainer(GeneralTorchTrainer): + pass + + +def call_my_trainer(trainer_type): + if trainer_type == 'mytrainer': + trainer_builder = MyTrainer + return trainer_builder + + +register_trainer('mytrainer', call_my_trainer) diff --git a/federatedscope/core/__init__.py b/federatedscope/core/__init__.py new file mode 100644 index 000000000..f8e91f237 --- /dev/null +++ b/federatedscope/core/__init__.py @@ -0,0 +1,3 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division diff --git a/federatedscope/core/aggregator.py b/federatedscope/core/aggregator.py new file mode 100644 index 000000000..56610c148 --- /dev/null +++ b/federatedscope/core/aggregator.py @@ -0,0 +1,290 @@ +from abc import ABC, abstractmethod +from federatedscope.core.auxiliaries.optimizer_builder import get_optimizer + +import torch +import os +import numpy as np +import logging + +logger = logging.getLogger(__name__) + +# def vectorize_net(net): +# return torch.cat([p.view(-1) for p in net.parameters()]) + + +def vectorize_net_dict(net): + return torch.cat([net[key].view(-1) for key in net]) + + +# def load_model_weight(net, weight): +# index_bias = 0 +# for p_index, p in enumerate(net.parameters()): +# p.data = weight[index_bias:index_bias+p.numel()].view(p.size()) +# index_bias += p.numel() + + +def load_model_weight_dict(net, weight): + index_bias = 0 + for p_index, p in net.items(): + net[p_index].data = weight[index_bias:index_bias + p.numel()].view( + p.size()) + index_bias += p.numel() + + +class Aggregator(ABC): + def __init__(self): + pass + + @abstractmethod + def aggregate(self, agg_info): + pass + + +class ClientsAvgAggregator(Aggregator): + def __init__(self, model=None, device='cpu', config=None): + super(Aggregator, self).__init__() + self.model = model + self.device = device + self.cfg = config + + def aggregate(self, agg_info): + """ + To preform aggregation + + Arguments: + agg_info (dict): the feedbacks from clients + :returns: the aggregated results + :rtype: dict + """ + models = agg_info["client_feedback"] + recover_fun = agg_info['recover_fun'] if ( + 'recover_fun' in agg_info and self.cfg.federate.use_ss) else None + + if self.cfg.attack.krum or self.cfg.attack.multi_krum: + avg_model = self._para_krum_avg(models) + else: + avg_model = self._para_weighted_avg(models, + recover_fun=recover_fun) + + return avg_model + + def update(self, model_parameters): + ''' + Arguments: + model_parameters (dict): PyTorch Module object's state_dict. + ''' + self.model.load_state_dict(model_parameters, strict=False) + + def save_model(self, path, cur_round=-1): + assert self.model is not None + ckpt = {'cur_round': cur_round, 'model': self.model.state_dict()} + torch.save(ckpt, path) + + def load_model(self, path): + assert self.model is not None + + if os.path.exists(path): + ckpt = torch.load(path, map_location=self.device) + self.model.load_state_dict(ckpt['model']) + return ckpt['cur_round'] + else: + raise ValueError("The file {} does NOT exist".format(path)) + + def _para_weighted_avg(self, models, recover_fun=None): + training_set_size = 0 + for i in range(len(models)): + sample_size, _ = models[i] + training_set_size += sample_size + + sample_size, avg_model = models[0] + for key in avg_model: + for i in range(len(models)): + local_sample_size, local_model = models[i] + + if self.cfg.federate.ignore_weight: + weight = 1.0 / len(models) + elif self.cfg.federate.use_ss: + weight = 1.0 + else: + weight = local_sample_size / training_set_size + + if not self.cfg.federate.use_ss: + if isinstance(local_model[key], torch.Tensor): + local_model[key] = local_model[key].float() + else: + local_model[key] = torch.FloatTensor(local_model[key]) + + if i == 0: + avg_model[key] = local_model[key] * weight + else: + avg_model[key] += local_model[key] * weight + + if self.cfg.federate.use_ss and recover_fun: + avg_model[key] = recover_fun(avg_model[key]) + avg_model[key] /= training_set_size + avg_model[key] = torch.FloatTensor(avg_model[key]) + + return avg_model + + def _para_krum_avg(self, models): + + num_workers = len(models) + num_adv = 1 + + num_dps = [] + vectorize_nets = [] + for i in range(len(models)): + sample_size, local_model = models[i] + # training_set_size += sample_size + num_dps.append(sample_size) + vectorize_nets.append( + vectorize_net_dict(local_model).detach().cpu().numpy()) + + neighbor_distances = [] + for i, g_i in enumerate(vectorize_nets): + distance = [] + for j in range(i + 1, len(vectorize_nets)): + if i != j: + g_j = vectorize_nets[j] + distance.append(float(np.linalg.norm(g_i - g_j)**2)) + neighbor_distances.append(distance) + + # compute scores + nb_in_score = num_workers - num_adv - 2 + scores = [] + for i, g_i in enumerate(vectorize_nets): + dists = [] + for j, g_j in enumerate(vectorize_nets): + if j == i: + continue + if j < i: + dists.append(neighbor_distances[j][i - j - 1]) + else: + dists.append(neighbor_distances[i][j - i - 1]) + # alternative to topk in pytorch and tensorflow + topk_ind = np.argpartition(dists, nb_in_score)[:nb_in_score] + scores.append(sum(np.take(dists, topk_ind))) + + if self.cfg.attack.krum: + i_star = scores.index(min(scores)) + _, aggregated_model = models[ + 0] # slicing which doesn't really matter + load_model_weight_dict(aggregated_model, + torch.from_numpy(vectorize_nets[i_star])) + # neo_net_list = [aggregated_model] + logger.info("Norm of Aggregated Model: {}".format( + torch.norm(torch.from_numpy(vectorize_nets[i_star])).item())) + # neo_net_freq = [1.0] + # return neo_net_list, neo_net_freq + return aggregated_model + + elif self.cfg.attack.multi_krum: + topk_ind = np.argpartition(scores, + nb_in_score + 2)[:nb_in_score + 2] + + # we reconstruct the weighted averaging here: + selected_num_dps = np.array(num_dps)[topk_ind] + reconstructed_freq = [ + snd / sum(selected_num_dps) for snd in selected_num_dps + ] + + logger.info("Num data points: {}".format(num_dps)) + logger.info( + "Num selected data points: {}".format(selected_num_dps)) + + aggregated_grad = np.average(np.array(vectorize_nets)[topk_ind, :], + weights=reconstructed_freq, + axis=0).astype(np.float32) + _, aggregated_model = models[ + 0] # slicing which doesn't really matter + load_model_weight_dict(aggregated_model, + torch.from_numpy(aggregated_grad)) + # neo_net_list = [aggregated_model] + logger.info("Norm of Aggregated Model: {}".format( + torch.norm(torch.from_numpy(aggregated_grad)).item())) + # neo_net_freq = [1.0] + # return neo_net_list, neo_net_freq + return aggregated_model + + +class NoCommunicationAggregator(Aggregator): + """"Clients do not communicate. Each client work locally + """ + def aggregate(self, agg_info): + # do nothing + return {} + + +class OnlineClientsAvgAggregator(ClientsAvgAggregator): + def __init__(self, + model=None, + device='cpu', + src_device='cpu', + config=None): + super(OnlineClientsAvgAggregator, self).__init__(model, device, config) + self.src_device = src_device + + def reset(self): + self.maintained = self.model.state_dict() + for key in self.maintained: + self.maintained[key].data = torch.zeros_like( + self.maintained[key], device=self.src_device) + self.cnt = 0 + + def inc(self, content): + if isinstance(content, tuple): + sample_size, model_params = content + for key in self.maintained: + self.maintained[key] = (self.cnt * self.maintained[key] + + sample_size * model_params[key]) / ( + self.cnt + sample_size) + self.cnt += sample_size + else: + raise TypeError( + "{} is not a tuple (sample_size, model_para)".format(content)) + + def aggregate(self, agg_info): + return self.maintained + + +class ServerClientsInterpolateAggregator(ClientsAvgAggregator): + def __init__(self, model=None, device='cpu', config=None, beta=1.0): + super(ServerClientsInterpolateAggregator, + self).__init__(model, device, config) + self.beta = beta # the weight for local models used in interpolation + + def aggregate(self, agg_info): + models = agg_info["client_feedback"] + global_model = self.model + elem_each_client = next(iter(models)) + assert len(elem_each_client) == 2, f"Require (sample_size, model_para) \ + tuple for each client, " \ + f"i.e., len=2, but got len={len(elem_each_client)}" + avg_model_by_clients = self._para_weighted_avg(models) + global_local_models = [((1 - self.beta), global_model.state_dict()), + (self.beta, avg_model_by_clients)] + + avg_model_by_interpolate = self._para_weighted_avg(global_local_models) + return avg_model_by_interpolate + + +class FedOptAggregator(ClientsAvgAggregator): + def __init__(self, config, model, device='cpu'): + super(FedOptAggregator, self).__init__(model, device, config) + self.optimizer = get_optimizer(model=self.model, + **config.fedopt.optimizer) + + def aggregate(self, agg_info): + new_model = super().aggregate(agg_info) + + model = self.model.cpu().state_dict() + with torch.no_grad(): + grads = {key: model[key] - new_model[key] for key in new_model} + + self.optimizer.zero_grad() + for key, p in self.model.named_parameters(): + if key in new_model.keys(): + p.grad = grads[key] + self.optimizer.step() + + return self.model.state_dict() diff --git a/federatedscope/core/auxiliaries/ReIterator.py b/federatedscope/core/auxiliaries/ReIterator.py new file mode 100644 index 000000000..f8ce40874 --- /dev/null +++ b/federatedscope/core/auxiliaries/ReIterator.py @@ -0,0 +1,19 @@ +class ReIterator: + def __init__(self, loader): + self.loader = loader + self.iterator = iter(loader) + self.reset_flag = False + + def __iter__(self): + return self + + def __next__(self): + try: + item = next(self.iterator) + except StopIteration: + self.reset() + item = next(self.iterator) + return item + + def reset(self): + self.iterator = iter(self.loader) diff --git a/federatedscope/core/auxiliaries/__init__.py b/federatedscope/core/auxiliaries/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/federatedscope/core/auxiliaries/aggregator_builder.py b/federatedscope/core/auxiliaries/aggregator_builder.py new file mode 100644 index 000000000..15394ef1e --- /dev/null +++ b/federatedscope/core/auxiliaries/aggregator_builder.py @@ -0,0 +1,49 @@ +import logging + +from federatedscope.core.configs import constants + +logger = logging.getLogger(__name__) + + +def get_aggregator(method, model=None, device=None, online=False, config=None): + if config.backend == 'tensorflow': + from federatedscope.cross_backends import FedAvgAggregator + return FedAvgAggregator(model=model, device=device) + else: + from federatedscope.core.aggregator import ClientsAvgAggregator, \ + OnlineClientsAvgAggregator, ServerClientsInterpolateAggregator, \ + FedOptAggregator, NoCommunicationAggregator + + if method.lower() in constants.AGGREGATOR_TYPE: + aggregator_type = constants.AGGREGATOR_TYPE[method.lower()] + else: + aggregator_type = "clients_avg" + logger.warning( + 'Aggregator for method {} is not implemented. Will use default one' + .format(method)) + + if config.fedopt.use or aggregator_type == 'fedopt': + return FedOptAggregator(config=config, model=model, device=device) + elif aggregator_type == 'clients_avg': + if online: + return OnlineClientsAvgAggregator( + model=model, + device=device, + config=config, + src_device=device + if config.federate.share_local_model else 'cpu') + else: + return ClientsAvgAggregator(model=model, + device=device, + config=config) + elif aggregator_type == 'server_clients_interpolation': + return ServerClientsInterpolateAggregator( + model=model, + device=device, + config=config, + beta=config.personalization.beta) + elif aggregator_type == 'no_communication': + return NoCommunicationAggregator() + else: + raise NotImplementedError( + "Aggregator {} is not implemented.".format(aggregator_type)) diff --git a/federatedscope/core/auxiliaries/criterion_builder.py b/federatedscope/core/auxiliaries/criterion_builder.py new file mode 100644 index 000000000..1502fc0d3 --- /dev/null +++ b/federatedscope/core/auxiliaries/criterion_builder.py @@ -0,0 +1,23 @@ +import federatedscope.register as register + +try: + from torch import nn + from federatedscope.nlp.loss import * +except ImportError: + nn = None + + +def get_criterion(type, device): + for func in register.criterion_dict.values(): + criterion = func(type, device) + if criterion is not None: + return criterion + + if isinstance(type, str): + if hasattr(nn, type): + return getattr(nn, type)() + else: + raise NotImplementedError( + 'Criterion {} not implement'.format(type)) + else: + raise TypeError() diff --git a/federatedscope/core/auxiliaries/data_builder.py b/federatedscope/core/auxiliaries/data_builder.py new file mode 100644 index 000000000..c105349ad --- /dev/null +++ b/federatedscope/core/auxiliaries/data_builder.py @@ -0,0 +1,809 @@ +import math +import os +import pickle +import logging +import numpy as np +from collections import defaultdict + +import federatedscope.register as register + +logger = logging.getLogger(__name__) + +try: + from federatedscope.contrib.data import * +except ImportError as error: + logger.warning( + f'{error} in `federatedscope.contrib.data`, some modules are not available.' + ) + + +def load_toy_data(config=None): + + generate = config.federate.mode.lower() == 'standalone' + + def _generate_data(client_num=5, + instance_num=1000, + feature_num=5, + save_data=False): + """ + Generate data in FedRunner format + Args: + client_num: + instance_num: + feature_num: + save_data: + + Returns: + { + '{client_id}': { + 'train': { + 'x': ..., + 'y': ... + }, + 'test': { + 'x': ..., + 'y': ... + }, + 'val': { + 'x': ..., + 'y': ... + } + } + } + + """ + weights = np.random.normal(loc=0.0, scale=1.0, size=feature_num) + bias = np.random.normal(loc=0.0, scale=1.0) + data = dict() + for each_client in range(1, client_num + 1): + data[each_client] = dict() + client_x = np.random.normal(loc=0.0, + scale=0.5 * each_client, + size=(instance_num, feature_num)) + client_y = np.sum(client_x * weights, axis=-1) + bias + client_y = np.expand_dims(client_y, -1) + client_data = {'x': client_x, 'y': client_y} + data[each_client]['train'] = client_data + + # test data + test_x = np.random.normal(loc=0.0, + scale=1.0, + size=(instance_num, feature_num)) + test_y = np.sum(test_x * weights, axis=-1) + bias + test_y = np.expand_dims(test_y, -1) + test_data = {'x': test_x, 'y': test_y} + for each_client in range(1, client_num + 1): + data[each_client]['test'] = test_data + + # val data + val_x = np.random.normal(loc=0.0, + scale=1.0, + size=(instance_num, feature_num)) + val_y = np.sum(val_x * weights, axis=-1) + bias + val_y = np.expand_dims(val_y, -1) + val_data = {'x': val_x, 'y': val_y} + for each_client in range(1, client_num + 1): + data[each_client]['val'] = val_data + + # server_data + data[0] = dict() + data[0]['train'] = None + data[0]['val'] = val_data + data[0]['test'] = test_data + + if save_data: + # server_data = dict() + save_client_data = dict() + + for client_idx in range(0, client_num + 1): + if client_idx == 0: + filename = 'data/server_data' + else: + filename = 'data/client_{:d}_data'.format(client_idx) + with open(filename, 'wb') as f: + save_client_data['train'] = { + k: v.tolist() + for k, v in data[client_idx]['train'].items() + } + save_client_data['val'] = { + k: v.tolist() + for k, v in data[client_idx]['val'].items() + } + save_client_data['test'] = { + k: v.tolist() + for k, v in data[client_idx]['test'].items() + } + pickle.dump(save_client_data, f) + + return data + + if generate: + data = _generate_data(client_num=config.federate.client_num, + save_data=config.eval.save_data) + else: + with open(config.distribute.data_file, 'rb') as f: + data = pickle.load(f) + for key in data.keys(): + data[key] = {k: np.asarray(v) + for k, v in data[key].items() + } if data[key] is not None else None + + return data, config + + +def load_external_data(config=None): + r""" Based on the configuration file, this function imports external datasets and applies train/valid/test splits + and split by some specific `splitter` into the standard FederatedScope input data format. + + Args: + config: `CN` from `federatedscope/core/configs/config.py` + + Returns: + data_local_dict: dict of split dataloader. + Format: + { + 'client_id': { + 'train': DataLoader(), + 'test': DataLoader(), + 'val': DataLoader() + } + } + modified_config: `CN` from `federatedscope/core/configs/config.py`, which might be modified in the function. + + """ + + import torch + import inspect + from importlib import import_module + from torch.utils.data import DataLoader + from federatedscope.core.auxiliaries.splitter_builder import get_splitter + from federatedscope.core.auxiliaries.transform_builder import get_transform + + def get_func_args(func): + sign = inspect.signature(func).parameters.values() + sign = set([val.name for val in sign]) + return sign + + def filter_dict(func, kwarg): + sign = get_func_args(func) + common_args = sign.intersection(kwarg.keys()) + filtered_dict = {key: kwarg[key] for key in common_args} + return filtered_dict + + def load_torchvision_data(name, splits=None, config=None): + dataset_func = getattr(import_module('torchvision.datasets'), name) + transform_funcs = get_transform(config, 'torchvision') + if config.data.args: + raw_args = config.data.args[0] + else: + raw_args = {} + if 'download' not in raw_args.keys(): + raw_args.update({'download': True}) + filtered_args = filter_dict(dataset_func.__init__, raw_args) + func_args = get_func_args(dataset_func.__init__) + # Perform split on different dataset + if 'train' in func_args: + # Split train to (train, val) + dataset_train = dataset_func(root=config.data.root, + train=True, + **filtered_args, + **transform_funcs) + dataset_val = None + dataset_test = dataset_func(root=config.data.root, + train=False, + **filtered_args, + **transform_funcs) + if splits: + train_size = int(splits[0] * len(dataset_train)) + val_size = len(dataset_train) - train_size + lengths = [train_size, val_size] + dataset_train, dataset_val = torch.utils.data.dataset.random_split( + dataset_train, lengths) + + elif 'split' in func_args: + # Use raw split + dataset_train = dataset_func(root=config.data.root, + split='train', + **filtered_args, + **transform_funcs) + dataset_val = dataset_func(root=config.data.root, + split='valid', + **filtered_args, + **transform_funcs) + dataset_test = dataset_func(root=config.data.root, + split='test', + **filtered_args, + **transform_funcs) + elif 'classes' in func_args: + # Use raw split + dataset_train = dataset_func(root=config.data.root, + classes='train', + **filtered_args, + **transform_funcs) + dataset_val = dataset_func(root=config.data.root, + classes='valid', + **filtered_args, + **transform_funcs) + dataset_test = dataset_func(root=config.data.root, + classes='test', + **filtered_args, + **transform_funcs) + else: + # Use config.data.splits + dataset = dataset_func(root=config.data.root, + **filtered_args, + **transform_funcs) + train_size = int(splits[0] * len(dataset)) + val_size = int(splits[1] * len(dataset)) + test_size = len(dataset) - train_size - val_size + lengths = [train_size, val_size, test_size] + dataset_train, dataset_val, dataset_test = torch.utils.data.dataset.random_split( + dataset, lengths) + + data_dict = { + 'train': dataset_train, + 'val': dataset_val, + 'test': dataset_test + } + + return data_dict + + def load_torchtext_data(name, splits=None, config=None): + from torch.nn.utils.rnn import pad_sequence + from federatedscope.nlp.dataset.utils import label_to_index + + dataset_func = getattr(import_module('torchtext.datasets'), name) + if config.data.args: + raw_args = config.data.args[0] + else: + raw_args = {} + assert 'max_len' in raw_args, "Miss key 'max_len' in `config.data.args`." + filtered_args = filter_dict(dataset_func.__init__, raw_args) + dataset = dataset_func(root=config.data.root, **filtered_args) + + # torchtext.transforms requires >= 0.12.0 and torch = 1.11.0, + # so we do not use `get_transform` in torchtext. + + # Merge all data and tokenize + x_list = [] + y_list = [] + for data_iter in dataset: + data, targets = [], [] + for i, item in enumerate(data_iter): + data.append(item[1]) + targets.append(item[0]) + x_list.append(data) + y_list.append(targets) + + x_all, y_all = [], [] + for i in range(len(x_list)): + x_all += x_list[i] + y_all += y_list[i] + + if config.model.type.endswith('transformers'): + from transformers import AutoTokenizer + tokenizer = AutoTokenizer.from_pretrained( + config.model.type.split('@')[0]) + + x_all = tokenizer(x_all, + return_tensors='pt', + padding=True, + truncation=True, + max_length=raw_args['max_len']) + data = [{key: value[i] + for key, value in x_all.items()} + for i in range(len(next(iter(x_all.values()))))] + if 'classification' in config.model.task.lower(): + targets = label_to_index(y_all) + else: + y_all = tokenizer(y_all, + return_tensors='pt', + padding=True, + truncation=True, + max_length=raw_args['max_len']) + targets = [{key: value[i] + for key, value in y_all.items()} + for i in range(len(next(iter(y_all.values()))))] + else: + from torchtext.data import get_tokenizer + tokenizer = get_tokenizer("basic_english") + if len(config.data.transform) == 0: + raise ValueError( + "`transform` must be one pretrained Word Embeddings from \ + ['GloVe', 'FastText', 'CharNGram']") + if len(config.data.transform) == 1: + config.data.transform.append({}) + vocab = getattr(import_module('torchtext.vocab'), + config.data.transform[0])( + dim=config.model.in_channels, + **config.data.transform[1]) + + if 'classification' in config.model.task.lower(): + data = [ + vocab.get_vecs_by_tokens(tokenizer(x), + lower_case_backup=True) + for x in x_all + ] + targets = label_to_index(y_all) + else: + data = [ + vocab.get_vecs_by_tokens(tokenizer(x), + lower_case_backup=True) + for x in x_all + ] + targets = [ + vocab.get_vecs_by_tokens(tokenizer(y), + lower_case_backup=True) + for y in y_all + ] + targets = pad_sequence(targets).transpose( + 0, 1)[:, :raw_args['max_len'], :] + data = pad_sequence(data).transpose(0, + 1)[:, :raw_args['max_len'], :] + # Split data to raw + num_items = [len(ds) for ds in x_list] + data_list, cnt = [], 0 + for num in num_items: + data_list.append([ + (x, y) + for x, y in zip(data[cnt:cnt + num], targets[cnt:cnt + num]) + ]) + cnt += num + + if len(data_list) == 3: + # Use raw splits + data_dict = { + 'train': data_list[0], + 'val': data_list[1], + 'test': data_list[2] + } + elif len(data_list) == 2: + # Split train to (train, val) + data_dict = { + 'train': data_list[0], + 'val': None, + 'test': data_list[1] + } + if splits: + train_size = int(splits[0] * len(data_dict['train'])) + val_size = len(data_dict['train']) - train_size + lengths = [train_size, val_size] + data_dict['train'], data_dict[ + 'val'] = torch.utils.data.dataset.random_split( + data_dict['train'], lengths) + else: + # Use config.data.splits + data_dict = {} + train_size = int(splits[0] * len(data_list[0])) + val_size = int(splits[1] * len(data_list[0])) + test_size = len(data_list[0]) - train_size - val_size + lengths = [train_size, val_size, test_size] + data_dict['train'], data_dict['val'], data_dict[ + 'test'] = torch.utils.data.dataset.random_split( + data_list[0], lengths) + + return data_dict + + def load_torchaudio_data(name, splits=None, config=None): + import torchaudio + + dataset_func = getattr(import_module('torchaudio.datasets'), name) + raise NotImplementedError + + def load_torch_geometric_data(name, splits=None, config=None): + import torch_geometric + + dataset_func = getattr(import_module('torch_geometric.datasets'), name) + raise NotImplementedError + + def load_huggingface_datasets_data(name, splits=None, config=None): + from datasets import load_dataset + + if config.data.args: + raw_args = config.data.args[0] + else: + raw_args = {} + assert 'max_len' in raw_args, "Miss key 'max_len' in `config.data.args`." + filtered_args = filter_dict(load_dataset, raw_args) + dataset = load_dataset(path=config.data.root, + name=name, + **filtered_args) + if config.model.type.endswith('transformers'): + from transformers import AutoTokenizer + tokenizer = AutoTokenizer.from_pretrained( + config.model.type.split('@')[0]) + + for split in dataset: + x_all = [i['sentence'] for i in dataset[split]] + targets = [i['label'] for i in dataset[split]] + + x_all = tokenizer(x_all, + return_tensors='pt', + padding=True, + truncation=True, + max_length=raw_args['max_len']) + data = [{key: value[i] + for key, value in x_all.items()} + for i in range(len(next(iter(x_all.values()))))] + dataset[split] = (data, targets) + data_dict = { + 'train': [(x, y) + for x, y in zip(dataset['train'][0], dataset['train'][1]) + ], + 'val': [(x, y) for x, y in zip(dataset['validation'][0], + dataset['validation'][1])], + 'test': [ + (x, y) for x, y in zip(dataset['test'][0], dataset['test'][1]) + ] if (set(dataset['test'][1]) - set([-1])) else None, + } + return data_dict + + def load_openml_data(tid, splits=None, config=None): + import openml + from sklearn.model_selection import train_test_split + + task = openml.tasks.get_task(int(tid)) + did = task.dataset_id + dataset = openml.datasets.get_dataset(did) + data, targets, _, _ = dataset.get_data( + dataset_format="array", target=dataset.default_target_attribute) + + train_data, test_data, train_targets, test_targets = train_test_split( + data, targets, train_size=splits[0], random_state=config.seed) + val_data, test_data, val_targets, test_targets = train_test_split( + test_data, + test_targets, + train_size=splits[1] / (1. - splits[0]), + random_state=config.seed) + data_dict = { + 'train': [(x, y) for x, y in zip(train_data, train_targets)], + 'val': [(x, y) for x, y in zip(val_data, val_targets)], + 'test': [(x, y) for x, y in zip(test_data, test_targets)] + } + return data_dict + + DATA_LOAD_FUNCS = { + 'torchvision': load_torchvision_data, + 'torchtext': load_torchtext_data, + 'torchaudio': load_torchaudio_data, + 'torch_geometric': load_torch_geometric_data, + 'huggingface_datasets': load_huggingface_datasets_data, + 'openml': load_openml_data + } + + modified_config = config.clone() + + # Load dataset + splits = modified_config.data.splits + name, package = modified_config.data.type.split('@') + + dataset = DATA_LOAD_FUNCS[package.lower()](name, splits, modified_config) + splitter = get_splitter(modified_config) + + data_local_dict = { + x: {} + for x in range(1, modified_config.federate.client_num + 1) + } + # # Build dict of Dataloader + # for split in dataset: + # if dataset[split] is None or dataset[split].__len__() == 0: + # continue + # for i, ds in enumerate(splitter(dataset[split])): + # if split == 'train': + # data_local_dict[i + 1][split] = DataLoader( + # ds, + # batch_size=modified_config.data.batch_size, + # shuffle=True, + # num_workers=modified_config.data.num_workers) + # else: + # data_local_dict[i + 1][split] = DataLoader( + # ds, + # batch_size=modified_config.data.batch_size, + # shuffle=False, + # num_workers=modified_config.data.num_workers) + + # return data_local_dict, modified_config + + # Build dict of Dataloader + train_label_distribution = None + for split in dataset: + if dataset[split] is None or dataset[split].__len__() == 0: + continue + train_labels = list() + for i, ds in enumerate( + splitter(dataset[split], prior=train_label_distribution)): + labels = [x[1] for x in ds] + if split == 'train': + train_labels.append(labels) + data_local_dict[i + 1][split] = DataLoader( + ds, + batch_size=modified_config.data.batch_size, + shuffle=True, + num_workers=modified_config.data.num_workers) + else: + data_local_dict[i + 1][split] = DataLoader( + ds, + batch_size=modified_config.data.batch_size, + shuffle=False, + num_workers=modified_config.data.num_workers) + + if modified_config.data.consistent_label_distribution and len( + train_labels) > 0: + train_label_distribution = train_labels + + return data_local_dict, modified_config + + +def get_data(config): + """Instantiate the dataset and update the configuration accordingly if necessary. + Arguments: + config (obj): a cfg node object. + Returns: + obj: The dataset object. + cfg.node: The updated configuration. + """ + for func in register.data_dict.values(): + data_and_config = func(config) + if data_and_config is not None: + return data_and_config + if config.data.type.lower() == 'toy': + data, modified_config = load_toy_data(config) + elif config.data.type.lower() == 'quadratic': + from federatedscope.tabular.dataloader import load_quadratic_dataset + data, modified_config = load_quadratic_dataset(config) + elif config.data.type.lower() in ['femnist', 'celeba']: + from federatedscope.cv.dataloader import load_cv_dataset + data, modified_config = load_cv_dataset(config) + elif config.data.type.lower() in [ + 'shakespeare', 'twitter', 'subreddit', 'synthetic' + ]: + from federatedscope.nlp.dataloader import load_nlp_dataset + data, modified_config = load_nlp_dataset(config) + elif config.data.type.lower() in [ + 'cora', + 'citeseer', + 'pubmed', + 'dblp_conf', + 'dblp_org', + ] or config.data.type.lower().startswith('csbm'): + from federatedscope.gfl.dataloader import load_nodelevel_dataset + data, modified_config = load_nodelevel_dataset(config) + elif config.data.type.lower() in ['ciao', 'epinions', 'fb15k-237', 'wn18']: + from federatedscope.gfl.dataloader import load_linklevel_dataset + data, modified_config = load_linklevel_dataset(config) + elif config.data.type.lower() in [ + 'hiv', 'proteins', 'imdb-binary', 'bbbp', 'tox21', 'bace', 'sider', + 'clintox', 'esol', 'freesolv', 'lipo' + ] or config.data.type.startswith('graph_multi_domain'): + from federatedscope.gfl.dataloader import load_graphlevel_dataset + data, modified_config = load_graphlevel_dataset(config) + elif config.data.type.lower() == 'vertical_fl_data': + from federatedscope.vertical_fl.dataloader import load_vertical_data + data, modified_config = load_vertical_data(config, generate=True) + elif 'movielens' in config.data.type.lower(): + from federatedscope.mf.dataloader import load_mf_dataset + data, modified_config = load_mf_dataset(config) + elif '@' in config.data.type.lower(): + data, modified_config = load_external_data(config) + else: + raise ValueError('Data {} not found.'.format(config.data.type)) + + if config.data.do_sta: + do_data_statistics(config, data) + + if 'backdoor' in config.attack.attack_method: + from federatedscope.attack.auxiliary import poisoning + poisoning(data, modified_config) + + return data, modified_config + + +def merge_data(all_data): + dataset_names = list(all_data[1].keys()) # e.g., train, test, val + assert isinstance(all_data[1]["test"], dict), \ + "the data should be organized as the format similar to {data_id: {train: {x:ndarray, y:ndarray}} }" + data_elem_names = list(all_data[1]["test"].keys()) # e.g., x, y + merged_data = {name: defaultdict(list) for name in dataset_names} + for data_id in all_data.keys(): + if data_id == 0: + continue + for d_name in dataset_names: + for elem_name in data_elem_names: + merged_data[d_name][elem_name].append( + all_data[data_id][d_name][elem_name]) + + for d_name in dataset_names: + for elem_name in data_elem_names: + merged_data[d_name][elem_name] = np.concatenate( + merged_data[d_name][elem_name]) + + return merged_data + + +def do_data_statistics(config, data): + data_num_all_client = defaultdict(list) + label_dist_all_client = dict() # {client: client_dist} + + logger.info( + f"For data={config.data.type} with subsample={config.data.subsample}," + f" the client_num is {len(data)}") + for client_id, ds_ci in data.items(): + if client_id == 0: + # skip the data holds on server + continue + if config.data.probe_label_dist: + label_dist_all_client[client_id] = \ + [0 for _ in range(config.model.out_channels)] + if isinstance(ds_ci, dict): + for split_name, ds in ds_ci.items(): + try: + import torch + from federatedscope.mf.dataloader import MFDataLoader + if isinstance( + ds, (torch.utils.data.Dataset, list)) or \ + issubclass(type(ds), torch.utils.data.Dataset): + data_num_all_client[split_name].append(len(ds)) + if config.data.probe_label_dist: + for i in range(len(ds)): + label = ds[i] + label_dist_all_client[client_id][label] += 1 + elif isinstance( + ds, (torch.utils.data.DataLoader, list)) or \ + issubclass(type(ds), torch.utils.data.DataLoader): + data_num_all_client[split_name].append(len(ds.dataset)) + if config.data.labelwise_boxplot: + from collections import Counter + all_labels = [ + ds.dataset[i][1] + for i in range(len(ds.dataset)) + ] + label_wise_cnt = Counter(all_labels) + for label, cnt in label_wise_cnt.items(): + data_num_all_client[label].append(cnt) + if config.data.probe_label_dist: + for i in range(len(ds)): + label = ds.dataset[i][1] + label_dist_all_client[client_id][label] += 1 + elif issubclass(type(ds), MFDataLoader): + data_num_all_client[split_name].append(ds.n_rating) + except: + if isinstance(ds, list): + data_num_all_client[split_name].append(len(ds)) + if config.data.type in ["cora", "citeseer", "pubmed"]: + # node-wise classification + from torch_geometric.data.data import Data + import torch + if isinstance(ds_ci, Data): + for split_name in ["train_mask", "val_mask", "test_mask"]: + num_nodes = sum(ds_ci[split_name]).item() + data_num_all_client[split_name.split("_")[0]].append( + num_nodes) + if config.data.plot_boxplot: + plot_data_statistics(config, data_num_all_client) + if config.data.probe_label_dist: + prob_label_dist(config, label_dist_all_client) + import random + unseen_clients_ids = random.choices(list(range(1, 50)), k=10) + prob_label_dist(config, label_dist_all_client, unseen_clients_ids) + + from scipy import stats + all_split_merged_num = [] + for k, v in data_num_all_client.items(): + if all_split_merged_num == []: + all_split_merged_num.extend(v) + else: + all_split_merged_num = [ + all_split_merged_num[i] + v[i] for i in range(len(v)) + ] + data_num_all_client["all"] = all_split_merged_num + for k, v in data_num_all_client.items(): + if len(v) == 0: + logger.warning( + "The data distribution statistics info are nor correctly " + "logged, maybe you used a data type we haven't support") + else: + stats_res = stats.describe(v) + if stats_res.minmax[1] == 0: + logger.warning( + f"For data split {k}, the max sample num in the client " + f"is 0. Please check whether " + f"this is as you would like it to be") + logger.info( + f"For data split {k}, the stats_res over all client is " + f"{stats_res}, the meadian is {sorted(v)[len(v) // 2]}, " + f"std is {math.sqrt(stats_res.variance)}") + + +def prob_label_dist(config, label_dist_all_client, should_contain_ids=None): + pairwise_distance = dict() + from scipy.spatial.distance import jensenshannon + from scipy import stats + # normalize + for k, v in label_dist_all_client.items(): + total = sum(v) + if total != 1: + label_dist_all_client[k] = [x / total for x in v] + # calculate the client-wise J-S distance + for i in range(1, len(list(label_dist_all_client.keys()))): + for j in range(1, i): + if should_contain_ids is not None and \ + (i not in should_contain_ids or + j not in should_contain_ids): + continue + pairwise_distance[(i, j)] = jensenshannon(label_dist_all_client[i], + label_dist_all_client[j]) + stats_res = stats.describe(list(pairwise_distance.values())) + logger.info( + f"The distribution for pari-wise JS-distance over all client is " + f"{stats_res}") + + import matplotlib.pyplot as plt + import matplotlib.pylab as pylab + plt.clf() + label_size = 18.5 + ticks_size = 17 + title_size = 22.5 + legend_size = 17 + params = { + 'legend.fontsize': legend_size, + 'axes.labelsize': label_size, + 'axes.titlesize': title_size, + 'xtick.labelsize': ticks_size, + 'ytick.labelsize': ticks_size + } + pylab.rcParams.update(params) + ax = plt.subplot() + plt.hist(list(pairwise_distance.values())) + ax.set_xlabel("Client-wise JS distance") + ax.set_ylabel("Count") + ax.set_xlim(0, 1) + # ax.set_ylim(0, 1500) + fig_name = f"{config.outdir}/visual_{config.data.type}_js_distance.pdf" + plt.savefig(fig_name, bbox_inches='tight', pad_inches=0) + plt.show() + + +def plot_data_statistics(config, data_num_all_client): + index = [] + data_num_list = [] + for key, val in data_num_all_client.items(): + if config.data.labelwise_boxplot and key in ["train", "test", "val"]: + continue + index.append(key) + data_num_list.append(val) + if len(index) > 3 and index[1] == "test" and index[2] == "val": + index[1], index[2] = index[2], index[1] + data_num_list[1], data_num_list[2] = data_num_list[2], data_num_list[1] + import matplotlib.pyplot as plt + import matplotlib.pylab as pylab + plt.clf() + label_size = 18.5 + ticks_size = 17 + title_size = 22.5 + legend_size = 17 + params = { + 'legend.fontsize': legend_size, + 'axes.labelsize': label_size, + 'axes.titlesize': title_size, + 'xtick.labelsize': ticks_size, + 'ytick.labelsize': ticks_size + } + if config.data.labelwise_boxplot: + index_order = np.argsort(np.array(index)) + index = [index[i] for i in index_order] + data_num_list = [data_num_list[i] for i in index_order] + from scipy import stats + for i in index_order: + stats_res = stats.describe(data_num_list[i]) + logger.info(f"The distribution label {index[i]} is {stats_res}") + pylab.rcParams.update(params) + ax = plt.subplot() + ax.violinplot(data_num_list) + ax.set_xticks(range(1, len(index) + 1)) + ax.set_xticklabels(index) + ax.set_ylabel("#Samples Per Client") + fig_name = f"{config.outdir}/visual_{config.data.type}.pdf" + if config.data.labelwise_boxplot: + fig_name = f"{config.outdir}/visual_{config.data.type}_label.pdf" + plt.savefig(fig_name, bbox_inches='tight', pad_inches=0) + plt.show() diff --git a/federatedscope/core/auxiliaries/dataloader_builder.py b/federatedscope/core/auxiliaries/dataloader_builder.py new file mode 100644 index 000000000..858ba1a03 --- /dev/null +++ b/federatedscope/core/auxiliaries/dataloader_builder.py @@ -0,0 +1,41 @@ +try: + import torch + from torch.utils.data import Dataset +except ImportError: + torch = None + Dataset = object + + +def get_dataloader(dataset, config): + if config.backend == 'torch': + from torch.utils.data import DataLoader + dataloader = DataLoader(dataset, + batch_size=config.data.batch_size, + shuffle=config.data.shuffle, + num_workers=config.data.num_workers, + pin_memory=True) + return dataloader + else: + return None + + +class WrapDataset(Dataset): + """Wrap raw data into pytorch Dataset + + Arguments: + data (dict): raw data dictionary contains "x" and "y" + + """ + def __init__(self, data): + super(WrapDataset, self).__init__() + self.data = data + + def __getitem__(self, idx): + if not isinstance(self.data["x"][idx], torch.Tensor): + return torch.from_numpy( + self.data["x"][idx]).float(), torch.from_numpy( + self.data["y"][idx]).float() + return self.data["x"][idx], self.data["y"][idx] + + def __len__(self): + return len(self.data["y"]) diff --git a/federatedscope/core/auxiliaries/metric_builder.py b/federatedscope/core/auxiliaries/metric_builder.py new file mode 100644 index 000000000..59d0bbd2d --- /dev/null +++ b/federatedscope/core/auxiliaries/metric_builder.py @@ -0,0 +1,21 @@ +import logging +import federatedscope.register as register + +logger = logging.getLogger(__name__) + +try: + from federatedscope.contrib.metrics import * +except ImportError as error: + logger.warning( + f'{error} in `federatedscope.contrib.metrics`, some modules are not available.' + ) + + +def get_metric(types): + metrics = dict() + for func in register.metric_dict.values(): + res = func(types) + if res is not None: + name, metric = res + metrics[name] = metric + return metrics diff --git a/federatedscope/core/auxiliaries/model_builder.py b/federatedscope/core/auxiliaries/model_builder.py new file mode 100644 index 000000000..ed0449951 --- /dev/null +++ b/federatedscope/core/auxiliaries/model_builder.py @@ -0,0 +1,120 @@ +from cgi import print_arguments +import logging +import federatedscope.register as register + +logger = logging.getLogger(__name__) + +try: + from federatedscope.contrib.model import * +except ImportError as error: + logger.warning( + f'{error} in `federatedscope.contrib.model`, some modules are not available.' + ) + + +def get_model(model_config, local_data, backend='torch'): + """ + Arguments: + local_data (object): the model to be instantiated is responsible for the given data. + Returns: + model (torch.Module): the instantiated model. + """ + for func in register.model_dict.values(): + model = func(model_config, local_data) + if model is not None: + return model + + if model_config.type.lower() == 'lr': + if backend == 'torch': + from federatedscope.core.lr import LogisticRegression + # TODO: make the instantiation more general + if isinstance( + local_data, dict + ) and 'test' in local_data and 'x' in local_data['test']: + model = LogisticRegression( + in_channels=local_data['test']['x'].shape[-1], + class_num=1, + use_bias=model_config.use_bias) + else: + if isinstance(local_data, dict): + if 'data' in local_data.keys(): + data = local_data['data'] + elif 'train' in local_data.keys(): + # local_data['train'] is Dataloader + data = next(iter(local_data['train'])) + else: + raise TypeError('Unsupported data type.') + else: + data = local_data + + x, _ = data + model = LogisticRegression(in_channels=x.shape[-1], + class_num=model_config.out_channels) + elif backend == 'tensorflow': + from federatedscope.cross_backends import LogisticRegression + model = LogisticRegression( + in_channels=local_data['test']['x'].shape[-1], + class_num=1, + use_bias=model_config.use_bias) + else: + raise ValueError + + elif model_config.type.lower() == 'mlp': + from federatedscope.core.mlp import MLP + if isinstance(local_data, dict): + if 'data' in local_data.keys(): + data = local_data['data'] + elif 'train' in local_data.keys(): + # local_data['train'] is Dataloader + data = next(iter(local_data['train'])) + else: + raise TypeError('Unsupported data type.') + else: + data = local_data + + x, _ = data + model = MLP(channel_list=[x.shape[-1]] + [model_config.hidden] * + (model_config.layer - 1) + [model_config.out_channels], + dropout=model_config.dropout) + + elif model_config.type.lower() == 'quadratic': + from federatedscope.tabular.model import QuadraticModel + if isinstance(local_data, dict): + data = next(iter(local_data['train'])) + else: + # TODO: complete the branch + data = local_data + x, _ = data + model = QuadraticModel(x.shape[-1], 1) + + elif model_config.type.lower() in ['convnet2', 'convnet5', 'vgg11', 'lr']: + from federatedscope.cv.model import get_cnn + model = get_cnn(model_config, local_data) + elif model_config.type.lower() in ['lstm']: + from federatedscope.nlp.model import get_rnn + model = get_rnn(model_config, local_data) + elif model_config.type.lower().endswith('transformers'): + from federatedscope.nlp.model import get_transformer + model = get_transformer(model_config, local_data) + elif model_config.type.lower() in [ + 'gcn', 'sage', 'gpr', 'gat', 'gin', 'mpnn' + ]: + from federatedscope.gfl.model import get_gnn + model = get_gnn(model_config, local_data) + elif model_config.type.lower() in ['vmfnet', 'hmfnet']: + from federatedscope.mf.model.model_builder import get_mfnet + model = get_mfnet(model_config, local_data) + else: + raise ValueError('Model {} is not provided'.format(model_config.type)) + + return model + + +def get_trainable_para_names(model): + # for name,param in model.named_parameters(): + # print(name) + # for para in model.parameters(): + # print(para) + # print(model.named_parameters()) + # + return set(dict(list(model.named_parameters())).keys()) diff --git a/federatedscope/core/auxiliaries/optimizer_builder.py b/federatedscope/core/auxiliaries/optimizer_builder.py new file mode 100644 index 000000000..6083dbaee --- /dev/null +++ b/federatedscope/core/auxiliaries/optimizer_builder.py @@ -0,0 +1,21 @@ +try: + import torch +except ImportError: + torch = None + + +def get_optimizer(model, type, lr, **kwargs): + if torch is None: + return None + if isinstance(type, str): + if hasattr(torch.optim, type): + if isinstance(model, torch.nn.Module): + return getattr(torch.optim, type)(model.parameters(), lr, + **kwargs) + else: + return getattr(torch.optim, type)(model, lr, **kwargs) + else: + raise NotImplementedError( + 'Optimizer {} not implement'.format(type)) + else: + raise TypeError() diff --git a/federatedscope/core/auxiliaries/regularizer_builder.py b/federatedscope/core/auxiliaries/regularizer_builder.py new file mode 100644 index 000000000..75af98cf9 --- /dev/null +++ b/federatedscope/core/auxiliaries/regularizer_builder.py @@ -0,0 +1,30 @@ +from federatedscope.register import regularizer_dict +from federatedscope.core.regularizer.proximal_regularizer import * +try: + from torch.nn import Module +except ImportError: + Module = object + + +def get_regularizer(type): + if type is None or type == '': + return DummyRegularizer() + + for func in regularizer_dict.values(): + regularizer = func(type) + if regularizer is not None: + return regularizer() + + raise NotImplementedError( + "Regularizer {} is not implemented.".format(type)) + + +class DummyRegularizer(Module): + """Dummy regularizer that only returns zero. + + """ + def __init__(self): + super(DummyRegularizer, self).__init__() + + def forward(self, ctx): + return 0. diff --git a/federatedscope/core/auxiliaries/splitter_builder.py b/federatedscope/core/auxiliaries/splitter_builder.py new file mode 100644 index 000000000..40555165f --- /dev/null +++ b/federatedscope/core/auxiliaries/splitter_builder.py @@ -0,0 +1,48 @@ +import logging +import federatedscope.register as register + +logger = logging.getLogger(__name__) + + +def get_splitter(config): + client_num = config.federate.client_num + if config.data.splitter_args: + args = config.data.splitter_args[0] + else: + args = {} + + for func in register.splitter_dict.values(): + splitter = func(config) + if splitter is not None: + return splitter + # Delay import + # generic splitter + if config.data.splitter == 'lda': + from federatedscope.core.splitters.generic import LDASplitter + splitter = LDASplitter(client_num, **args) + # graph splitter + elif config.data.splitter == 'louvain': + from federatedscope.core.splitters.graph import LouvainSplitter + splitter = LouvainSplitter(client_num, **args) + elif config.data.splitter == 'random': + from federatedscope.core.splitters.graph import RandomSplitter + splitter = RandomSplitter(client_num, **args) + elif config.data.splitter == 'rel_type': + from federatedscope.core.splitters.graph import RelTypeSplitter + splitter = RelTypeSplitter(client_num, **args) + elif config.data.splitter == 'graph_type': + from federatedscope.core.splitters.graph import GraphTypeSplitter + splitter = GraphTypeSplitter(client_num, **args) + elif config.data.splitter == 'scaffold': + from federatedscope.core.splitters.graph import ScaffoldSplitter + splitter = ScaffoldSplitter(client_num, **args) + elif config.data.splitter == 'scaffold_lda': + from federatedscope.core.splitters.graph import ScaffoldLdaSplitter + splitter = ScaffoldLdaSplitter(client_num, **args) + elif config.data.splitter == 'rand_chunk': + from federatedscope.core.splitters.graph import RandChunkSplitter + splitter = RandChunkSplitter(client_num, **args) + else: + logger.warning(f'Splitter is none or not found.') + splitter = None + return splitter diff --git a/federatedscope/core/auxiliaries/trainer_builder.py b/federatedscope/core/auxiliaries/trainer_builder.py new file mode 100644 index 000000000..83f19fbe9 --- /dev/null +++ b/federatedscope/core/auxiliaries/trainer_builder.py @@ -0,0 +1,164 @@ +import logging +import importlib + +import federatedscope.register as register + +logger = logging.getLogger(__name__) + +try: + from federatedscope.contrib.trainer import * +except ImportError as error: + logger.warning( + f'{error} in `federatedscope.contrib.trainer`, some modules are not available.' + ) + +TRAINER_CLASS_DICT = { + "cvtrainer": "CVTrainer", + "nlptrainer": "NLPTrainer", + "graphminibatch_trainer": "GraphMiniBatchTrainer", + "linkfullbatch_trainer": "LinkFullBatchTrainer", + "linkminibatch_trainer": "LinkMiniBatchTrainer", + "nodefullbatch_trainer": "NodeFullBatchTrainer", + "nodeminibatch_trainer": "NodeMiniBatchTrainer", + "flitplustrainer": "FLITPlusTrainer", + "flittrainer": "FLITTrainer", + "fedvattrainer": "FedVATTrainer", + "fedfocaltrainer": "FedFocalTrainer", + "mftrainer": "MFTrainer", +} + + +def get_trainer(model=None, + data=None, + device=None, + config=None, + only_for_eval=False, + is_attacker=False, + monitor=None): + if config.trainer.type == 'general': + if config.backend == 'torch': + from federatedscope.core.trainers import GeneralTorchTrainer + trainer = GeneralTorchTrainer(model=model, + data=data, + device=device, + config=config, + only_for_eval=only_for_eval, + monitor=monitor) + elif config.backend == 'tensorflow': + from federatedscope.core.trainers import GeneralTFTrainer + trainer = GeneralTFTrainer(model=model, + data=data, + device=device, + config=config, + only_for_eval=only_for_eval, + monitor=monitor) + else: + raise ValueError + elif config.trainer.type == 'none': + return None + elif config.trainer.type.lower() in TRAINER_CLASS_DICT: + if config.trainer.type.lower() in ['cvtrainer']: + dict_path = "federatedscope.cv.trainer.trainer" + elif config.trainer.type.lower() in ['nlptrainer']: + dict_path = "federatedscope.nlp.trainer.trainer" + elif config.trainer.type.lower() in [ + 'graphminibatch_trainer', + ]: + dict_path = "federatedscope.gfl.trainer.graphtrainer" + elif config.trainer.type.lower() in [ + 'linkfullbatch_trainer', 'linkminibatch_trainer' + ]: + dict_path = "federatedscope.gfl.trainer.linktrainer" + elif config.trainer.type.lower() in [ + 'nodefullbatch_trainer', 'nodeminibatch_trainer' + ]: + dict_path = "federatedscope.gfl.trainer.nodetrainer" + elif config.trainer.type.lower() in [ + 'flitplustrainer', 'flittrainer', 'fedvattrainer', + 'fedfocaltrainer' + ]: + dict_path = "federatedscope.gfl.flitplus.trainer" + elif config.trainer.type.lower() in ['mftrainer']: + dict_path = "federatedscope.mf.trainer.trainer" + else: + raise ValueError + + trainer_cls = getattr(importlib.import_module(name=dict_path), + TRAINER_CLASS_DICT[config.trainer.type.lower()]) + trainer = trainer_cls(model=model, + data=data, + device=device, + config=config, + only_for_eval=only_for_eval, + monitor=monitor) + else: + # try to find user registered trainer + trainer = None + for func in register.trainer_dict.values(): + trainer_cls = func(config.trainer.type) + if trainer_cls is not None: + trainer = trainer_cls(model=model, + data=data, + device=device, + config=config, + only_for_eval=only_for_eval, + monitor=monitor) + if trainer is None: + raise ValueError('Trainer {} is not provided'.format( + config.trainer.type)) + + # differential privacy plug-in + if config.nbafl.use: + from federatedscope.core.trainers import wrap_nbafl_trainer + trainer = wrap_nbafl_trainer(trainer) + if config.sgdmf.use: + from federatedscope.mf.trainer import wrap_MFTrainer + trainer = wrap_MFTrainer(trainer) + + # personalization plug-in + if config.federate.method.lower() == "pfedme": + from federatedscope.core.trainers import wrap_pFedMeTrainer + # wrap style: instance a (class A) -> instance a (class A) + trainer = wrap_pFedMeTrainer(trainer) + elif config.federate.method.lower() == "ditto": + from federatedscope.core.trainers import wrap_DittoTrainer + # wrap style: instance a (class A) -> instance a (class A) + trainer = wrap_DittoTrainer(trainer) + elif config.federate.method.lower() == "fedem": + from federatedscope.core.trainers import FedEMTrainer + # copy construct style: instance a (class A) -> instance b (class B) + trainer = FedEMTrainer(model_nums=config.model.model_num_per_trainer, + base_trainer=trainer) + elif config.federate.method.lower() == "fedrep": + from federatedscope.core.trainers import wrap_FedRepTrainer + # wrap style: instance a (class A) -> instance a (class A) + trainer = wrap_FedRepTrainer(trainer) + + # attacker plug-in + if 'backdoor' in config.attack.attack_method: + from federatedscope.attack.trainer import wrap_benignTrainer + trainer = wrap_benignTrainer(trainer) + + if is_attacker: + if 'backdoor' in config.attack.attack_method: + logger.info( + '---------------- This client is a backdoor attacker --------------------' + ) + else: + logger.info( + '---------------- This client is an privacy attacker --------------------' + ) + from federatedscope.attack.auxiliary.attack_trainer_builder import wrap_attacker_trainer + trainer = wrap_attacker_trainer(trainer, config) + + elif 'backdoor' in config.attack.attack_method: + logger.info( + '---------------- This client is a benign client for backdoor attacks --------------------' + ) + + # fed algorithm plug-in + if config.fedprox.use: + from federatedscope.core.trainers import wrap_fedprox_trainer + trainer = wrap_fedprox_trainer(trainer) + + return trainer diff --git a/federatedscope/core/auxiliaries/transform_builder.py b/federatedscope/core/auxiliaries/transform_builder.py new file mode 100644 index 000000000..d34bfe641 --- /dev/null +++ b/federatedscope/core/auxiliaries/transform_builder.py @@ -0,0 +1,54 @@ +from importlib import import_module +import federatedscope.register as register + + +def get_transform(config, package): + r""" + + Args: + config: `CN` from `federatedscope/core/configs/config.py` + package: one of package from ['torchvision', 'torch_geometric', 'torchtext', 'torchaudio'] + + Returns: + dict of transform functions. + + """ + transform_funcs = {} + for name in ['transform', 'target_transform', 'pre_transform']: + if config.data[name]: + transform_funcs[name] = config.data[name] + + # Transform are all None, do not import package and return dict with None value + if not transform_funcs: + return transform_funcs + # + transforms = getattr(import_module(package), 'transforms') + + # + def convert(trans): + # Recursively converting expressions to functions + if isinstance(trans[0], str): + if len(trans) == 1: + trans.append({}) + transform_type, transform_args = trans + for func in register.transform_dict.values(): + transform_func = func(transform_type, transform_args) + if transform_func is not None: + return transform_func + transform_func = getattr(transforms, + transform_type)(**transform_args) + return transform_func + else: + transform = [convert(x) for x in trans] + if hasattr(transforms, 'Compose'): + return transforms.Compose(transform) + elif hasattr(transforms, 'Sequential'): + return transforms.Sequential(transform) + else: + return transform + + # return composed transform or return list of transform + for key in transform_funcs: + transform_funcs[key] = convert(config.data[key]) + # + return transform_funcs diff --git a/federatedscope/core/auxiliaries/utils.py b/federatedscope/core/auxiliaries/utils.py new file mode 100644 index 000000000..314aa0d69 --- /dev/null +++ b/federatedscope/core/auxiliaries/utils.py @@ -0,0 +1,382 @@ +import copy +import json +import logging +import math +import os +import random +import signal +import ssl +import time +import urllib.request +from datetime import datetime +from os import path as osp + +import numpy as np + +# Blind torch +try: + import torch + import torchvision + import torch.distributions as distributions +except ImportError: + torch = None + torchvision = None + distributions = None + +logger = logging.getLogger(__name__) + + +def setup_seed(seed): + np.random.seed(seed) + random.seed(seed) + if torch is not None: + torch.manual_seed(seed) + torch.cuda.manual_seed_all(seed) + torch.backends.cudnn.deterministic = True + else: + import tensorflow as tf + tf.set_random_seed(seed) + + +def update_logger(cfg, clear_before_add=False): + import os + import logging + + root_logger = logging.getLogger("federatedscope") + + # clear all existing handlers and add the default stream + if clear_before_add: + root_logger.handlers = [] + handler = logging.StreamHandler() + logging_fmt = "%(asctime)s (%(module)s:%(lineno)d) %(levelname)s: %(message)s" + handler.setFormatter(logging.Formatter(logging_fmt)) + root_logger.addHandler(handler) + + # update level + if cfg.verbose > 0: + logging_level = logging.INFO + else: + logging_level = logging.WARN + logger.warning("Skip DEBUG/INFO messages") + root_logger.setLevel(logging_level) + + # ================ create outdir to save log, exp_config, models, etc,. + if cfg.outdir == "": + cfg.outdir = os.path.join(os.getcwd(), "exp") + exp_path = f"{cfg.federate.method}_{cfg.model.type}_on_{cfg.data.type}_lr{cfg.optimizer.lr}_lepoch{cfg.federate.local_update_steps}" + cfg.outdir = os.path.join(cfg.outdir, exp_path) + + if cfg.attack.attack_method != '': + expname = f"{cfg.attack.attack_method}_{cfg.attack.trigger_type}_{cfg.attack.setting}" + else: + expname = f"normal" + + if cfg.expname == "": + # cfg.expname = f"{cfg.federate.method}_{cfg.model.type}_on_{cfg.data.type}" + cfg.expname = expname + else: + cfg.expname = os.path.join(expname, cfg.expname) + + cfg.expname = os.path.join(cfg.expname, str(cfg.seed)) + + cfg.outdir = os.path.join(cfg.outdir, cfg.expname) + + # if exist, make directory with given name and time + if os.path.isdir(cfg.outdir) and os.path.exists(cfg.outdir): + outdir = os.path.join(cfg.outdir, "sub_exp" + + datetime.now().strftime('_%Y%m%d%H%M%S') + ) # e.g., sub_exp_20220411030524 + while os.path.exists(outdir): + time.sleep(1) + outdir = os.path.join( + cfg.outdir, + "sub_exp" + datetime.now().strftime('_%Y%m%d%H%M%S')) + cfg.outdir = outdir + # if not, make directory with given name + os.makedirs(cfg.outdir) + + # create file handler which logs even debug messages + fh = logging.FileHandler(os.path.join(cfg.outdir, 'exp_print.log')) + fh.setLevel(logging.DEBUG) + logger_formatter = logging.Formatter( + "%(asctime)s (%(module)s:%(lineno)d) %(levelname)s: %(message)s") + fh.setFormatter(logger_formatter) + root_logger.addHandler(fh) + # sys.stderr = sys.stdout + + root_logger.info(f"the output dir is {cfg.outdir}") + + if cfg.wandb.use: + init_wandb(cfg) + + +def init_wandb(cfg): + try: + import wandb + except ImportError: + logger.error("cfg.wandb.use=True but not install the wandb package") + exit() + dataset_name = cfg.data.type + method_name = cfg.federate.method + exp_name = cfg.expname + + tmp_cfg = copy.deepcopy(cfg) + tmp_cfg.cfg_check_funcs = [] + import yaml + cfg_yaml = yaml.safe_load(tmp_cfg.dump()) + + wandb.init(project=cfg.wandb.name_project, + entity=cfg.wandb.name_user, + config=cfg_yaml, + group=dataset_name, + job_type=method_name, + name=exp_name, + notes=f"{method_name}, {exp_name}") + + +def get_dataset(type, root, transform, target_transform, download=True): + if isinstance(type, str): + if hasattr(torchvision.datasets, type): + return getattr(torchvision.datasets, + type)(root=root, + transform=transform, + target_transform=target_transform, + download=download) + else: + raise NotImplementedError('Dataset {} not implement'.format(type)) + else: + raise TypeError() + + +def save_local_data(dir_path, + train_data=None, + train_targets=None, + test_data=None, + test_targets=None, + val_data=None, + val_targets=None): + r""" + https://github.com/omarfoq/FedEM/blob/main/data/femnist/generate_data.py + + save (`train_data`, `train_targets`) in {dir_path}/train.pt, + (`val_data`, `val_targets`) in {dir_path}/val.pt + and (`test_data`, `test_targets`) in {dir_path}/test.pt + :param dir_path: + :param train_data: + :param train_targets: + :param test_data: + :param test_targets: + :param val_data: + :param val_targets + """ + if (train_data is not None) and (train_targets is not None): + torch.save((train_data, train_targets), osp.join(dir_path, "train.pt")) + + if (test_data is not None) and (test_targets is not None): + torch.save((test_data, test_targets), osp.join(dir_path, "test.pt")) + + if (val_data is not None) and (val_targets is not None): + torch.save((val_data, val_targets), osp.join(dir_path, "val.pt")) + + +def filter_by_specified_keywords(param_name, filter_keywords): + ''' + Arguments: + param_name (str): parameter name. + Returns: + preserve (bool): whether to preserve this parameter. + ''' + preserve = True + for kw in filter_keywords: + if kw in param_name: + preserve = False + break + return preserve + + +def get_random(type, sample_shape, params, device): + if not hasattr(distributions, type): + raise NotImplementedError("Distribution {} is not implemented, please refer to ```torch.distributions```" \ + "(https://pytorch.org/docs/stable/distributions.html).".format(type)) + generator = getattr(distributions, type)(**params) + return generator.sample(sample_shape=sample_shape).to(device) + + +def batch_iter(data, batch_size=64, shuffled=True): + assert 'x' in data and 'y' in data + data_x = data['x'] + data_y = data['y'] + data_size = len(data_y) + num_batches_per_epoch = math.ceil(data_size / batch_size) + + while True: + shuffled_index = np.random.permutation( + np.arange(data_size)) if shuffled else np.arange(data_size) + for batch in range(num_batches_per_epoch): + start_index = batch * batch_size + end_index = min(data_size, (batch + 1) * batch_size) + sample_index = shuffled_index[start_index:end_index] + yield {'x': data_x[sample_index], 'y': data_y[sample_index]} + + +def merge_dict(dict1, dict2): + # Merge results for history + for key, value in dict2.items(): + if key not in dict1: + if isinstance(value, dict): + dict1[key] = merge_dict({}, value) + else: + dict1[key] = [value] + else: + if isinstance(value, dict): + merge_dict(dict1[key], value) + else: + dict1[key].append(value) + return dict1 + + +def download_url(url: str, folder='folder'): + r"""Downloads the content of an url to a folder. + + Modified from `https://github.com/pyg-team/pytorch_geometric/blob/master/torch_geometric/data/download.py` + + Args: + url (string): The url of target file. + folder (string): The target folder. + + Returns: + path (string): File path of downloaded files. + """ + + file = url.rpartition('/')[2] + file = file if file[0] == '?' else file.split('?')[0] + path = osp.join(folder, file) + if osp.exists(path): + logger.info(f'File {file} exists, use existing file.') + return path + + logger.info(f'Downloading {url}') + os.makedirs(folder, exist_ok=True) + ctx = ssl._create_unverified_context() + data = urllib.request.urlopen(url, context=ctx) + with open(path, 'wb') as f: + f.write(data.read()) + + return path + + +def move_to(obj, device): + import torch + if torch.is_tensor(obj): + return obj.to(device) + elif isinstance(obj, dict): + res = {} + for k, v in obj.items(): + res[k] = move_to(v, device) + return res + elif isinstance(obj, list): + res = [] + for v in obj: + res.append(move_to(v, device)) + return res + else: + raise TypeError("Invalid type for move_to") + + +class Timeout(object): + def __init__(self, seconds, max_failure=5): + self.seconds = seconds + self.max_failure = max_failure + + def __enter__(self): + def signal_handler(signum, frame): + raise TimeoutError() + + if self.seconds > 0: + signal.signal(signal.SIGALRM, signal_handler) + signal.alarm(self.seconds) + return self + + def __exit__(self, exc_type, exc_value, traceback): + signal.alarm(0) + + def reset(self): + signal.alarm(self.seconds) + + def block(self): + signal.alarm(0) + + def exceed_max_failure(self, num_failure): + return num_failure > self.max_failure + + +def logfile_2_wandb_dict(exp_log_f, raw_out=True): + """ + parse the logfiles [exp_print.log, eval_results.log] into wandb_dict that contains non-nested dicts + + :param exp_log_f: opened exp_log file + :param raw_out: True indicates "exp_print.log", otherwise indicates "eval_results.log", + the difference is whether contains the logger header such as "2022-05-02 16:55:02,843 (client:197) INFO:" + + :return: tuple including (all_log_res, exp_stop_normal, last_line, log_res_best) + """ + log_res_best = {} + exp_stop_normal = False + all_log_res = [] + last_line = None + for line in exp_log_f: + last_line = line + if " Find new best result" in line: + # e.g., + # 2022-03-22 10:48:42,562 (server:459) INFO: Find new best result for client_individual.test_acc with value 0.5911787974683544 + parse_res = line.split("INFO: ")[1].split("with value") + best_key, best_val = parse_res[-2], parse_res[-1] + # client_individual.test_acc -> client_individual/test_acc + best_key = best_key.replace("Find new best result for", + "").replace(".", "/") + log_res_best[best_key.strip()] = float(best_val.strip()) + + if "'Role': 'Server #'" in line: + if raw_out: + line = line.split("INFO: ")[1] + res = line.replace("\'", "\"") + res = json.loads(s=res) + if res['Role'] == 'Server #': + cur_round = res['Round'] + res.pop('Role') + if cur_round != "Final" and 'Results_raw' in res: + res.pop('Results_raw') + + log_res = {} + for key, val in res.items(): + if not isinstance(val, dict): + log_res[key] = val + else: + if cur_round != "Final": + for key_inner, val_inner in val.items(): + assert not isinstance( + val_inner, dict), "Un-expected log format" + log_res[f"{key}/{key_inner}"] = val_inner + + else: + exp_stop_normal = True + if key == "Results_raw": + for final_type, final_type_dict in res[ + "Results_raw"].items(): + for inner_key, inner_val in final_type_dict.items( + ): + log_res_best[ + f"{final_type}/{inner_key}"] = inner_val + # log_res_best = {} + # for best_res_type, val_dict in val.items(): + # for key_inner, val_inner in val_dict.items(): + # assert not isinstance(val_inner, dict), "Un-expected log format" + # log_res_best[f"{best_res_type}/{key_inner}"] = val_inner + # if log_res_best is not None and "Results_weighted_avg/val_loss" in log_res and \ + # log_res_best["client_summarized_weighted_avg/val_loss"] > \ + # log_res["Results_weighted_avg/val_loss"]: + # print("Missing the results of last round, update best results") + # for key, val in log_res.items(): + # log_res_best[key.replace("Results", "client_summarized")] = val + all_log_res.append(log_res) + return all_log_res, exp_stop_normal, last_line, log_res_best diff --git a/federatedscope/core/auxiliaries/worker_builder.py b/federatedscope/core/auxiliaries/worker_builder.py new file mode 100644 index 000000000..b8e1b1f0b --- /dev/null +++ b/federatedscope/core/auxiliaries/worker_builder.py @@ -0,0 +1,85 @@ +import logging + +from federatedscope.core.configs import constants +from federatedscope.core.worker import Server, Client + +logger = logging.getLogger(__name__) + + +def get_client_cls(cfg): + if cfg.hpo.fedex.use: + from federatedscope.autotune.fedex import FedExClient + return FedExClient + + if cfg.vertical.use: + from federatedscope.vertical_fl.worker import vFLClient + return vFLClient + + if cfg.federate.method.lower() in constants.CLIENTS_TYPE: + client_type = constants.CLIENTS_TYPE[cfg.federate.method.lower()] + else: + client_type = "normal" + logger.warning( + 'Clients for method {} is not implemented. Will use default one'. + format(cfg.federate.method)) + + if client_type == 'fedsageplus': + from federatedscope.gfl.fedsageplus.worker import FedSagePlusClient + client_class = FedSagePlusClient + elif client_type == 'gcflplus': + from federatedscope.gfl.gcflplus.worker import GCFLPlusClient + client_class = GCFLPlusClient + else: + client_class = Client + + # add attack related method to client_class + + if cfg.attack.attack_method.lower() in constants.CLIENTS_TYPE: + client_atk_type = constants.CLIENTS_TYPE[ + cfg.attack.attack_method.lower()] + else: + client_atk_type = None + + if client_atk_type == 'gradascent': + from federatedscope.attack.worker_as_attacker.active_client import add_atk_method_to_Client_GradAscent + logger.info("=========== add method to current client class ") + client_class = add_atk_method_to_Client_GradAscent(client_class) + return client_class + + +def get_server_cls(cfg): + if cfg.hpo.fedex.use: + from federatedscope.autotune.fedex import FedExServer + return FedExServer + + if cfg.attack.attack_method.lower() in ['dlg', 'ig']: + from federatedscope.attack.worker_as_attacker.server_attacker import PassiveServer + return PassiveServer + elif cfg.attack.attack_method.lower() in ['passivepia']: + from federatedscope.attack.worker_as_attacker.server_attacker import PassivePIAServer + return PassivePIAServer + + elif cfg.attack.attack_method.lower() in ['backdoor']: + from federatedscope.attack.worker_as_attacker.server_attacker import BackdoorServer + return BackdoorServer + + if cfg.vertical.use: + from federatedscope.vertical_fl.worker import vFLServer + return vFLServer + + if cfg.federate.method.lower() in constants.SERVER_TYPE: + client_type = constants.SERVER_TYPE[cfg.federate.method.lower()] + else: + client_type = "normal" + logger.warning( + 'Server for method {} is not implemented. Will use default one'. + format(cfg.federate.method)) + + if client_type == 'fedsageplus': + from federatedscope.gfl.fedsageplus.worker import FedSagePlusServer + return FedSagePlusServer + elif client_type == 'gcflplus': + from federatedscope.gfl.gcflplus.worker import GCFLPlusServer + return GCFLPlusServer + else: + return Server diff --git a/federatedscope/core/cmd_args.py b/federatedscope/core/cmd_args.py new file mode 100644 index 000000000..924a0196f --- /dev/null +++ b/federatedscope/core/cmd_args.py @@ -0,0 +1,26 @@ +import argparse +import sys + + +def parse_args(): + parser = argparse.ArgumentParser(description='FederatedScope') + parser.add_argument('--cfg', + dest='cfg_file', + help='Config file path', + required=True, + type=str) + parser.add_argument('--client_cfg', + dest='client_cfg_file', + help='Config file path for clients', + required=False, + default=None, + type=str) + parser.add_argument('opts', + help='See federatedscope/core/configs for all options', + default=None, + nargs=argparse.REMAINDER) + if len(sys.argv) == 1: + parser.print_help() + sys.exit(1) + + return parser.parse_args() diff --git a/federatedscope/core/communication.py b/federatedscope/core/communication.py new file mode 100644 index 000000000..35d4991dd --- /dev/null +++ b/federatedscope/core/communication.py @@ -0,0 +1,136 @@ +import grpc +from concurrent import futures + +from federatedscope.core.configs.config import global_cfg +from federatedscope.core.proto import gRPC_comm_manager_pb2, gRPC_comm_manager_pb2_grpc +from federatedscope.core.gRPC_server import gRPCComServeFunc +from federatedscope.core.message import Message + + +class StandaloneCommManager(object): + """ + The communicator used for standalone mode + """ + def __init__(self, comm_queue, monitor=None): + self.comm_queue = comm_queue + self.neighbors = dict() + self.monitor = monitor # used to track the communication related metrics + + def receive(self): + # we don't need receive() in standalone + pass + + def add_neighbors(self, neighbor_id, address=None): + self.neighbors[neighbor_id] = address + + def get_neighbors(self, neighbor_id=None): + address = dict() + if neighbor_id: + if isinstance(neighbor_id, list): + for each_neighbor in neighbor_id: + address[each_neighbor] = self.get_neighbors(each_neighbor) + return address + else: + return self.neighbors[neighbor_id] + else: + # Get all neighbors + return self.neighbors + + def send(self, message): + self.comm_queue.append(message) + download_bytes, upload_bytes = message.count_bytes() + self.monitor.track_upload_bytes(upload_bytes) + + +class gRPCCommManager(object): + """ + The implementation of gRPCCommManager is referred to the tutorial on https://grpc.io/docs/languages/python/ + """ + def __init__(self, host='0.0.0.0', port='50050', client_num=2): + self.host = host + self.port = port + options = [ + ("grpc.max_send_message_length", + global_cfg.distribute.grpc_max_send_message_length), + ("grpc.max_receive_message_length", + global_cfg.distribute.grpc_max_receive_message_length), + ("grpc.enable_http_proxy", + global_cfg.distribute.grpc_enable_http_proxy), + ] + self.server_funcs = gRPCComServeFunc() + self.grpc_server = self.serve(max_workers=client_num, + host=host, + port=port, + options=options) + self.neighbors = dict() + self.monitor = None # used to track the communication related metrics + + def serve(self, max_workers, host, port, options): + """ + This function is referred to https://grpc.io/docs/languages/python/basics/#starting-the-server + """ + server = grpc.server( + futures.ThreadPoolExecutor(max_workers=max_workers), + options=options) + gRPC_comm_manager_pb2_grpc.add_gRPCComServeFuncServicer_to_server( + self.server_funcs, server) + server.add_insecure_port("{}:{}".format(host, port)) + server.start() + + return server + + def add_neighbors(self, neighbor_id, address): + self.neighbors[neighbor_id] = '{}:{}'.format(address['host'], + address['port']) + + def get_neighbors(self, neighbor_id=None): + address = dict() + if neighbor_id: + if isinstance(neighbor_id, list): + for each_neighbor in neighbor_id: + address[each_neighbor] = self.get_neighbors(each_neighbor) + return address + else: + return self.neighbors[neighbor_id] + else: + #Get all neighbors + return self.neighbors + + def _send(self, receiver_address, message): + def _create_stub(receiver_address): + """ + This part is referred to https://grpc.io/docs/languages/python/basics/#creating-a-stub + """ + channel = grpc.insecure_channel(receiver_address, + options=(('grpc.enable_http_proxy', + 0), )) + stub = gRPC_comm_manager_pb2_grpc.gRPCComServeFuncStub(channel) + return stub, channel + + stub, channel = _create_stub(receiver_address) + request = message.transform(to_list=True) + try: + stub.sendMessage(request) + except grpc._channel._InactiveRpcError: + pass + channel.close() + + def send(self, message): + receiver = message.receiver + if receiver is not None: + if not isinstance(receiver, list): + receiver = [receiver] + for each_receiver in receiver: + if each_receiver in self.neighbors: + receiver_address = self.neighbors[each_receiver] + self._send(receiver_address, message) + else: + for each_receiver in self.neighbors: + receiver_address = self.neighbors[each_receiver] + self._send(receiver_address, message) + + def receive(self): + received_msg = self.server_funcs.receive() + message = Message() + message.parse(received_msg.msg) + return message diff --git a/federatedscope/core/configs/__init__.py b/federatedscope/core/configs/__init__.py new file mode 100644 index 000000000..5c3259a8d --- /dev/null +++ b/federatedscope/core/configs/__init__.py @@ -0,0 +1,29 @@ +import copy +from os.path import dirname, basename, isfile, join +import glob + +modules = glob.glob(join(dirname(__file__), "*.py")) +__all__ = [ + basename(f)[:-3] for f in modules + if isfile(f) and not f.endswith('__init__.py') +] + +# to ensure the sub-configs registered before set up the global config +all_sub_configs = copy.copy(__all__) +if "config" in all_sub_configs: + all_sub_configs.remove('config') + +from federatedscope.core.configs.config import CN, init_global_cfg +__all__ = __all__ + \ + [ + 'CN', + 'init_global_cfg' + ] + +# reorder the config to ensure the base config will be registered first +base_configs = [ + 'cfg_data', 'cfg_fl_setting', 'cfg_model', 'cfg_training', 'cfg_evaluation' +] +for base_config in base_configs: + all_sub_configs.pop(all_sub_configs.index(base_config)) + all_sub_configs.insert(0, base_config) diff --git a/federatedscope/core/configs/cfg_asyn.py b/federatedscope/core/configs/cfg_asyn.py new file mode 100644 index 000000000..7dc26a24c --- /dev/null +++ b/federatedscope/core/configs/cfg_asyn.py @@ -0,0 +1,55 @@ +import logging + +from federatedscope.core.configs.config import CN +from federatedscope.register import register_config + + +def extend_asyn_cfg(cfg): + # ------------------------------------------------------------------------ # + # Asynchronous related options + # ------------------------------------------------------------------------ # + cfg.asyn = CN() + + cfg.asyn.use = True + cfg.asyn.timeout = 0 + cfg.asyn.min_received_num = 2 + cfg.asyn.min_received_rate = -1.0 + + # --------------- register corresponding check function ---------- + cfg.register_cfg_check_fun(assert_asyn_cfg) + + +def assert_asyn_cfg(cfg): + # to ensure a valid timeout seconds + assert isinstance(cfg.asyn.timeout, int) or isinstance( + cfg.asyn.timeout, float + ), "The timeout (seconds) must be an int or a float value, but {} is got".format( + type(cfg.asyn.timeout)) + + # min received num pre-process + min_received_num_valid = (0 < cfg.asyn.min_received_num <= + cfg.federate.sample_client_num) + min_received_rate_valid = (0 < cfg.asyn.min_received_rate <= 1) + # (a) sampling case + if min_received_rate_valid: + # (a.1) use min_received_rate + old_min_received_num = cfg.asyn.min_received_num + cfg.asyn.min_received_num = max( + 1, + int(cfg.asyn.min_received_rate * cfg.federate.sample_client_num)) + if min_received_num_valid: + logging.warning( + f"Users specify both valid min_received_rate as {cfg.asyn.min_received_rate} " + f"and min_received_num as {old_min_received_num}.\n" + f"\t\tWe will use the min_received_rate value to calculate " + f"the actual number of participated clients as {cfg.asyn.min_received_num}." + ) + # (a.2) use min_received_num, commented since the below two lines do not change anything + # elif min_received_rate: + # cfg.asyn.min_received_num = cfg.asyn.min_received_num + if not (min_received_num_valid or min_received_rate_valid): + # (b) non-sampling case, use all clients + cfg.asyn.min_received_num = cfg.federate.sample_client_num + + +register_config("asyn", extend_asyn_cfg) diff --git a/federatedscope/core/configs/cfg_attack.py b/federatedscope/core/configs/cfg_attack.py new file mode 100644 index 000000000..c337876f5 --- /dev/null +++ b/federatedscope/core/configs/cfg_attack.py @@ -0,0 +1,70 @@ +from federatedscope.core.configs.config import CN +from federatedscope.register import register_config + + +def extend_attack_cfg(cfg): + + # ------------------------------------------------------------------------ # + # attack + # ------------------------------------------------------------------------ # + cfg.attack = CN() + cfg.attack.attack_method = '' + # for gan_attack and backdoor attack + cfg.attack.target_label_ind = -1 + cfg.attack.attacker_id = -1 + + # for backdoor attack + + cfg.attack.setting = 'fix' + cfg.attack.freq = 10 + cfg.attack.insert_round = 100000 + cfg.attack.mean = [0.1307] + cfg.attack.std = [0.3081] + cfg.attack.trigger_type = 'edge' + cfg.attack.label_type = 'dirty' + cfg.attack.edge_num = 100 + cfg.attack.poison_ratio = 0.5 + cfg.attack.scale_poisoning = False + cfg.attack.scale_para = 1.0 + cfg.attack.pgd_poisoning = False + cfg.attack.pgd_lr = 0.1 + cfg.attack.pgd_eps = 2 + cfg.attack.self_opt = False + cfg.attack.self_lr = 0.05 + cfg.attack.self_epoch = 6 + + # defense: + + cfg.attack.norm_clip = False + cfg.attack.norm_clip_value = 5.0 + cfg.attack.dp_noise = -1.0 + cfg.attack.krum = False + cfg.attack.multi_krum = False + + # Note: the mean and std should be the list type. + + # for reconstruct_opt + cfg.attack.reconstruct_lr = 0.01 + cfg.attack.reconstruct_optim = 'Adam' + cfg.attack.info_diff_type = 'l2' + cfg.attack.max_ite = 400 + cfg.attack.alpha_TV = 0.001 + + # for active PIA attack + cfg.attack.alpha_prop_loss = 0 + + # for passive PIA attack + cfg.attack.classifier_PIA = 'randomforest' + + # for gradient Ascent --- MIA attack + cfg.attack.inject_round = 0 + + # --------------- register corresponding check function ---------- + cfg.register_cfg_check_fun(assert_attack_cfg) + + +def assert_attack_cfg(cfg): + pass + + +register_config("attack", extend_attack_cfg) diff --git a/federatedscope/core/configs/cfg_data.py b/federatedscope/core/configs/cfg_data.py new file mode 100644 index 000000000..956cf9407 --- /dev/null +++ b/federatedscope/core/configs/cfg_data.py @@ -0,0 +1,64 @@ +from federatedscope.core.configs.config import CN +from federatedscope.register import register_config + + +def extend_data_cfg(cfg): + # ------------------------------------------------------------------------ # + # Dataset related options + # ------------------------------------------------------------------------ # + cfg.data = CN() + + cfg.data.seed = 1 + cfg.data.root = 'data' + cfg.data.type = 'toy' + cfg.data.args = [] # args for external dataset, eg. [{'download': True}] + cfg.data.splitter = '' + cfg.data.splitter_args = [] # args for splitter, eg. [{'alpha': 0.5}] + cfg.data.transform = [ + ] # transform for x, eg. [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + cfg.data.target_transform = [] # target_transform for y, use as above + cfg.data.pre_transform = [ + ] # pre_transform for `torch_geometric` dataset, use as above + cfg.data.batch_size = 64 + cfg.data.drop_last = False + cfg.data.sizes = [10, 5] + cfg.data.shuffle = True + cfg.data.subsample = 1.0 + cfg.data.splits = [0.8, 0.1, 0.1] # Train, valid, test splits + cfg.data.consistent_label_distribution = True + # we need to keep the consistency between training split and testing split. + cfg.data.cSBM_phi = [0.5, 0.5, 0.5] + cfg.data.loader = '' + cfg.data.num_workers = 0 + cfg.data.graphsaint = CN() + cfg.data.graphsaint.walk_length = 2 + cfg.data.graphsaint.num_steps = 30 + cfg.data.do_sta = False + cfg.data.plot_boxplot = False + cfg.data.probe_label_dist = False + cfg.data.labelwise_boxplot = False + + # new config: + cfg.data.dataset = ['train', 'val', 'test'] + + # quadratic + cfg.data.quadratic = CN() + cfg.data.quadratic.dim = 1 + cfg.data.quadratic.min_curv = 0.02 + cfg.data.quadratic.max_curv = 12.5 + + # --------------- register corresponding check function ---------- + cfg.register_cfg_check_fun(assert_data_cfg) + + +def assert_data_cfg(cfg): + if cfg.data.loader == 'graphsaint-rw': + assert cfg.model.layer == cfg.data.graphsaint.walk_length, 'Sample size mismatch' + if cfg.data.loader == 'neighbor': + assert cfg.model.layer == len(cfg.data.sizes), 'Sample size mismatch' + if '@' in cfg.data.type: + assert cfg.federate.client_num > 0, '`federate.client_num` should be greater than 0 when using external data' + assert cfg.data.splitter, '`data.splitter` should not be empty when using external data' + + +register_config("data", extend_data_cfg) diff --git a/federatedscope/core/configs/cfg_differential_privacy.py b/federatedscope/core/configs/cfg_differential_privacy.py new file mode 100644 index 000000000..f25461d22 --- /dev/null +++ b/federatedscope/core/configs/cfg_differential_privacy.py @@ -0,0 +1,38 @@ +from federatedscope.core.configs.config import CN +from federatedscope.register import register_config + + +def extend_dp_cfg(cfg): + # ------------------------------------------------------------------------ # + # nbafl(dp) related options + # ------------------------------------------------------------------------ # + cfg.nbafl = CN() + + # Params + cfg.nbafl.use = False + cfg.nbafl.mu = 0. + cfg.nbafl.epsilon = 100. + cfg.nbafl.w_clip = 1. + cfg.nbafl.constant = 30. + + # ------------------------------------------------------------------------ # + # VFL-SGDMF(dp) related options + # ------------------------------------------------------------------------ # + cfg.sgdmf = CN() + + cfg.sgdmf.use = False # if use sgdmf algorithm + cfg.sgdmf.R = 5. # The upper bound of rating + cfg.sgdmf.epsilon = 4. # \epsilon in dp + cfg.sgdmf.delta = 0.5 # \delta in dp + cfg.sgdmf.constant = 1. # constant + cfg.sgdmf.theta = -1 # -1 means per-rating privacy, otherwise per-user privacy + + # --------------- register corresponding check function ---------- + cfg.register_cfg_check_fun(assert_dp_cfg) + + +def assert_dp_cfg(cfg): + pass + + +register_config("dp", extend_dp_cfg) diff --git a/federatedscope/core/configs/cfg_evaluation.py b/federatedscope/core/configs/cfg_evaluation.py new file mode 100644 index 000000000..0496554b9 --- /dev/null +++ b/federatedscope/core/configs/cfg_evaluation.py @@ -0,0 +1,39 @@ +from federatedscope.core.configs.config import CN +from federatedscope.register import register_config + + +def extend_evaluation_cfg(cfg): + + # ------------------------------------------------------------------------ # + # Evaluation related options + # ------------------------------------------------------------------------ # + cfg.eval = CN() + + cfg.eval.save_data = False + cfg.eval.freq = 1 + cfg.eval.metrics = [] + cfg.eval.split = ['test', 'val'] + cfg.eval.report = ['weighted_avg', 'avg', 'fairness', + 'raw'] # by default, we report comprehensive results + cfg.eval.best_res_update_round_wise_key = "val_loss" + + # Monitoring, e.g., 'dissim' for B-local dissimilarity + cfg.eval.monitoring = [] + + # ------------------------------------------------------------------------ # + # wandb related options + # ------------------------------------------------------------------------ # + cfg.wandb = CN() + cfg.wandb.use = False + cfg.wandb.name_user = '' + cfg.wandb.name_project = '' + + # --------------- register corresponding check function ---------- + cfg.register_cfg_check_fun(assert_evaluation_cfg) + + +def assert_evaluation_cfg(cfg): + pass + + +register_config("eval", extend_evaluation_cfg) diff --git a/federatedscope/core/configs/cfg_fl_algo.py b/federatedscope/core/configs/cfg_fl_algo.py new file mode 100644 index 000000000..de51b0b47 --- /dev/null +++ b/federatedscope/core/configs/cfg_fl_algo.py @@ -0,0 +1,102 @@ +from federatedscope.core.configs.config import CN +from federatedscope.register import register_config + + +def extend_fl_algo_cfg(cfg): + # ------------------------------------------------------------------------ # + # fedopt related options, general fl + # ------------------------------------------------------------------------ # + cfg.fedopt = CN() + + cfg.fedopt.use = False + + cfg.fedopt.optimizer = CN(new_allowed=True) + cfg.fedopt.optimizer.type = 'SGD' + cfg.fedopt.optimizer.lr = 0.01 + + # ------------------------------------------------------------------------ # + # fedprox related options, general fl + # ------------------------------------------------------------------------ # + cfg.fedprox = CN() + + cfg.fedprox.use = False + cfg.fedprox.mu = 0. + + # ------------------------------------------------------------------------ # + # Personalization related options, pFL + # ------------------------------------------------------------------------ # + cfg.personalization = CN() + + # client-distinct param names, e.g., ['pre', 'post'] + cfg.personalization.local_param = [] + cfg.personalization.share_non_trainable_para = False + cfg.personalization.local_update_steps = -1 + # @regular_weight: + # The smaller the regular_weight is, the stronger emphasising on personalized model + # For Ditto, the default value=0.1, the search space is [0.05, 0.1, 0.2, 1, 2] + # For pFedMe, the default value=15 + cfg.personalization.regular_weight = 0.1 + + # @lr: + # 1) For pFedME, the personalized learning rate to calculate theta approximately using K steps + # 2) 0.0 indicates use the value according to optimizer.lr in case of users have not specify a valid lr + cfg.personalization.lr = 0.0 + + cfg.personalization.K = 5 # the local approximation steps for pFedMe + cfg.personalization.beta = 1.0 # the average moving parameter for pFedMe + + # parameters for FedRep: + cfg.personalization.lr_feature = 0.1 + cfg.personalization.lr_linear = 0.1 + cfg.personalization.epoch_feature = 1 + cfg.personalization.epoch_linear = 2 + cfg.personalization.weight_decay = 0.0 + # ------------------------------------------------------------------------ # + # FedSage+ related options, gfl + # ------------------------------------------------------------------------ # + cfg.fedsageplus = CN() + + cfg.fedsageplus.num_pred = 5 + cfg.fedsageplus.gen_hidden = 128 + cfg.fedsageplus.hide_portion = 0.5 + cfg.fedsageplus.fedgen_epoch = 200 + cfg.fedsageplus.loc_epoch = 1 + cfg.fedsageplus.a = 1.0 + cfg.fedsageplus.b = 1.0 + cfg.fedsageplus.c = 1.0 + + # ------------------------------------------------------------------------ # + # GCFL+ related options, gfl + # ------------------------------------------------------------------------ # + cfg.gcflplus = CN() + + cfg.gcflplus.EPS_1 = 0.05 + cfg.gcflplus.EPS_2 = 0.1 + cfg.gcflplus.seq_length = 5 + cfg.gcflplus.standardize = False + + # ------------------------------------------------------------------------ # + # FLIT+ related options, gfl + # ------------------------------------------------------------------------ # + cfg.flitplus = CN() + + cfg.flitplus.tmpFed = 0.5 # gamma in focal loss (Eq.4) + cfg.flitplus.lambdavat = 0.5 # lambda in phi (Eq.10) + cfg.flitplus.factor_ema = 0.8 # beta in omega (Eq.12) + cfg.flitplus.weightReg = 1.0 # balance lossLocalLabel and lossLocalVAT + + # --------------- register corresponding check function ---------- + cfg.register_cfg_check_fun(assert_fl_algo_cfg) + + +def assert_fl_algo_cfg(cfg): + if cfg.personalization.local_update_steps == -1: + # By default, use the same step to normal mode + cfg.personalization.local_update_steps = cfg.federate.local_update_steps + + if cfg.personalization.lr <= 0.0: + # By default, use the same lr to normal mode + cfg.personalization.lr = cfg.optimizer.lr + + +register_config("fl_algo", extend_fl_algo_cfg) diff --git a/federatedscope/core/configs/cfg_fl_setting.py b/federatedscope/core/configs/cfg_fl_setting.py new file mode 100644 index 000000000..98fda6df5 --- /dev/null +++ b/federatedscope/core/configs/cfg_fl_setting.py @@ -0,0 +1,155 @@ +import logging + +from federatedscope.core.configs.config import CN +from federatedscope.register import register_config + +logger = logging.getLogger(__name__) + + +def extend_fl_setting_cfg(cfg): + # ------------------------------------------------------------------------ # + # Federate learning related options + # ------------------------------------------------------------------------ # + cfg.federate = CN() + + cfg.federate.client_num = 0 + cfg.federate.sample_client_num = -1 + cfg.federate.sample_client_rate = -1.0 + cfg.federate.unseen_clients_rate = 0.0 + cfg.federate.total_round_num = 50 + cfg.federate.mode = 'standalone' + cfg.federate.local_update_steps = 1 + cfg.federate.batch_or_epoch = 'epoch' + cfg.federate.share_local_model = False + cfg.federate.data_weighted_aggr = False # If True, the weight of aggr is the number of training samples in dataset. + cfg.federate.online_aggr = False + cfg.federate.make_global_eval = False + cfg.federate.use_diff = False + cfg.federate.weight_avg = True + + # the method name is used to internally determine composition of different aggregators, messages, handlers, etc., + cfg.federate.method = "FedAvg" + cfg.federate.ignore_weight = False + cfg.federate.use_ss = False # Whether to apply Secret Sharing + cfg.federate.restore_from = '' + cfg.federate.save_to = '' + cfg.federate.join_in_info = [ + ] # The information requirements (from server) for join_in + + # ------------------------------------------------------------------------ # + # Distribute training related options + # ------------------------------------------------------------------------ # + cfg.distribute = CN() + + cfg.distribute.use = False + cfg.distribute.server_host = '0.0.0.0' + cfg.distribute.server_port = 50050 + cfg.distribute.client_host = '0.0.0.0' + cfg.distribute.client_port = 50050 + cfg.distribute.role = 'client' + cfg.distribute.data_file = 'data' + cfg.distribute.grpc_max_send_message_length = 100 * 1024 * 1024 + cfg.distribute.grpc_max_receive_message_length = 100 * 1024 * 1024 + cfg.distribute.grpc_enable_http_proxy = False + + # ------------------------------------------------------------------------ # + # Vertical FL related options (for demo) + # ------------------------------------------------------------------------ # + cfg.vertical = CN() + cfg.vertical.use = False + cfg.vertical.encryption = 'paillier' + cfg.vertical.dims = [5, 10] + cfg.vertical.key_size = 3072 + + # --------------- register corresponding check function ---------- + cfg.register_cfg_check_fun(assert_fl_setting_cfg) + + +def assert_fl_setting_cfg(cfg): + if cfg.federate.batch_or_epoch not in ['batch', 'epoch']: + raise ValueError( + "Value of 'cfg.federate.batch_or_epoch' must be chosen from ['batch', 'epoch']." + ) + + assert cfg.federate.mode in ["standalone", "distributed"], \ + f"Please specify the cfg.federate.mode as the string standalone or distributed. But got {cfg.federate.mode}." + + # ============= client num related ============== + assert not (cfg.federate.client_num == 0 + and cfg.federate.mode == 'distributed' + ), "Please configure the cfg.federate. in distributed mode. " + + assert 0 <= cfg.federate.unseen_clients_rate < 1, \ + "You specified in-valid cfg.federate.unseen_clients_rate" + if 0 < cfg.federate.unseen_clients_rate < 1 and cfg.federate.method in [ + "local", "global" + ]: + logger.warning( + "In local/global training mode, the unseen_clients_rate is " + "in-valid, plz check your config") + unseen_clients_rate = 0.0 + cfg.federate.unseen_clients_rate = unseen_clients_rate + else: + unseen_clients_rate = cfg.federate.unseen_clients_rate + participated_client_num = max( + 1, int((1 - unseen_clients_rate) * cfg.federate.client_num)) + + # sample client num pre-process + sample_client_num_valid = (0 < cfg.federate.sample_client_num <= + cfg.federate.client_num) + sample_client_rate_valid = (0 < cfg.federate.sample_client_rate <= 1) + + sample_cfg_valid = sample_client_rate_valid or sample_client_num_valid + non_sample_case = cfg.federate.method in ["local", "global"] + if non_sample_case and sample_cfg_valid: + logger.warning( + "In local/global training mode, the sampling related configs are in-valid, we will use all clients. " + ) + + if cfg.federate.method == "global": + cfg.federate.client_num = 1 + logger.info( + "In global training mode, we will put all data in a proxy client. " + ) + if cfg.federate.make_global_eval: + cfg.federate.make_global_eval = False + logger.warning( + "In global training mode, we will conduct global evaluation in a proxy client rather than the server. The configuration cfg.federate.make_global_eval will be False." + ) + + if non_sample_case or not sample_cfg_valid: + # (a) use all clients + cfg.federate.sample_client_num = cfg.federate.client_num + else: + # (b) sampling case + if sample_client_rate_valid: + # (b.1) use sample_client_rate + old_sample_client_num = cfg.federate.sample_client_num + cfg.federate.sample_client_num = max( + 1, + int(cfg.federate.sample_client_rate * cfg.federate.client_num)) + if sample_client_num_valid: + logger.warning( + f"Users specify both valid sample_client_rate as {cfg.federate.sample_client_rate} " + f"and sample_client_num as {old_sample_client_num}.\n" + f"\t\tWe will use the sample_client_rate value to calculate " + f"the actual number of participated clients as {cfg.federate.sample_client_num}." + ) + # (b.2) use sample_client_num, commented since the below two lines do not change anything + # elif sample_client_num_valid: + # cfg.federate.sample_client_num = cfg.federate.sample_client_num + + if cfg.federate.use_ss: + assert cfg.federate.client_num == cfg.federate.sample_client_num, \ + "Currently, we support secret sharing only in all-client-participation case" + + assert cfg.federate.method != "local", \ + "Secret sharing is not supported in local training mode" + + # ============= aggregator related ================ + assert (not cfg.federate.online_aggr) or ( + not cfg.federate.use_ss + ), "Have not supported to use online aggregator and secrete sharing at the same time" + + +register_config("fl_setting", extend_fl_setting_cfg) diff --git a/federatedscope/core/configs/cfg_hpo.py b/federatedscope/core/configs/cfg_hpo.py new file mode 100644 index 000000000..b1a6f82eb --- /dev/null +++ b/federatedscope/core/configs/cfg_hpo.py @@ -0,0 +1,87 @@ +from federatedscope.core.configs.config import CN +from federatedscope.register import register_config + + +def extend_hpo_cfg(cfg): + + # ------------------------------------------------------------------------ # + # hpo related options + # ------------------------------------------------------------------------ # + cfg.hpo = CN() + cfg.hpo.working_folder = 'hpo' + cfg.hpo.ss = '' + cfg.hpo.num_workers = 0 + #cfg.hpo.init_strategy = 'random' + cfg.hpo.init_cand_num = 16 + cfg.hpo.log_scale = False + cfg.hpo.larger_better = False + cfg.hpo.scheduler = 'rs' + # plot the performance + cfg.hpo.plot_interval = 1 + cfg.hpo.metric = 'client_summarized_weighted_avg.val_loss' + + # SHA + cfg.hpo.sha = CN() + cfg.hpo.sha.elim_round_num = 3 + cfg.hpo.sha.elim_rate = 3 + cfg.hpo.sha.budgets = [] + + # PBT + cfg.hpo.pbt = CN() + cfg.hpo.pbt.max_stage = 5 + cfg.hpo.pbt.perf_threshold = 0.1 + + # FedEx + cfg.hpo.fedex = CN() + cfg.hpo.fedex.use = False + cfg.hpo.fedex.ss = '' + cfg.hpo.fedex.flatten_ss = True + # If <= .0, use 'auto' + cfg.hpo.fedex.eta0 = -1.0 + cfg.hpo.fedex.sched = 'auto' + # cutoff: entropy level below which to stop updating the config probability and use MLE + cfg.hpo.fedex.cutoff = .0 + # discount factor; 0.0 is most recent, 1.0 is mean + cfg.hpo.fedex.gamma = .0 + cfg.hpo.fedex.num_arms = 16 + cfg.hpo.fedex.diff = False + + # Table + cfg.hpo.table = CN() + cfg.hpo.table.ss = '' + cfg.hpo.table.eps = 0.1 + cfg.hpo.table.num = 27 + #cfg.hpo.table.cand = 81 + cfg.hpo.table.idx = 0 + + +def assert_hpo_cfg(cfg): + # HPO related + #assert cfg.hpo.init_strategy in [ + # 'full', 'grid', 'random' + #], "initialization strategy for HPO should be \"full\", \"grid\", or \"random\", but the given choice is {}".format( + # cfg.hpo.init_strategy) + assert cfg.hpo.scheduler in ['rs', 'sha', + 'pbt'], "No HPO scheduler named {}".format( + cfg.hpo.scheduler) + assert cfg.hpo.num_workers >= 0, "#worker should be non-negative but given {}".format( + cfg.hpo.num_workers) + assert len(cfg.hpo.sha.budgets) == 0 or len( + cfg.hpo.sha.budgets + ) == cfg.hpo.sha.elim_round_num, \ + "Either do NOT specify the budgets or specify the budget for each SHA iteration, but the given budgets is {}".\ + format(cfg.hpo.sha.budgets) + + assert not (cfg.hpo.fedex.use and cfg.federate.use_ss + ), "Cannot use secret sharing and FedEx at the same time" + assert cfg.optimizer.type == 'SGD' or not cfg.hpo.fedex.use, "SGD is required if FedEx is considered" + assert cfg.hpo.fedex.sched in [ + 'adaptive', 'aggressive', 'auto', 'constant', 'scale' + ], "schedule of FedEx must be choice from {}".format( + ['adaptive', 'aggressive', 'auto', 'constant', 'scale']) + assert cfg.hpo.fedex.gamma >= .0 and cfg.hpo.fedex.gamma <= 1.0, "{} must be in [0, 1]".format( + cfg.hpo.fedex.gamma) + assert cfg.hpo.fedex.use == cfg.federate.use_diff, "Once FedEx is adopted, cfg.federate.use_diff must be True." + + +register_config("hpo", extend_hpo_cfg) diff --git a/federatedscope/core/configs/cfg_model.py b/federatedscope/core/configs/cfg_model.py new file mode 100644 index 000000000..dcbd955de --- /dev/null +++ b/federatedscope/core/configs/cfg_model.py @@ -0,0 +1,48 @@ +from federatedscope.core.configs.config import CN +from federatedscope.register import register_config + + +def extend_model_cfg(cfg): + # ------------------------------------------------------------------------ # + # Model related options + # ------------------------------------------------------------------------ # + cfg.model = CN() + + cfg.model.model_num_per_trainer = 1 # some methods may leverage more than one model in each trainer + cfg.model.type = 'lr' + cfg.model.use_bias = True + cfg.model.task = 'node' + cfg.model.hidden = 256 + cfg.model.dropout = 0.0 + cfg.model.in_channels = 0 # If 0, model will be built by data.shape + cfg.model.out_channels = 1 + cfg.model.layer = 2 # In GPR-GNN, K = layer + cfg.model.graph_pooling = 'mean' + cfg.model.embed_size = 8 + cfg.model.num_item = 0 + cfg.model.num_user = 0 + + # ------------------------------------------------------------------------ # + # Criterion related options + # ------------------------------------------------------------------------ # + cfg.criterion = CN() + + cfg.criterion.type = 'MSELoss' + + # ------------------------------------------------------------------------ # + # regularizer related options + # ------------------------------------------------------------------------ # + cfg.regularizer = CN() + + cfg.regularizer.type = '' + cfg.regularizer.mu = 0. + + # --------------- register corresponding check function ---------- + cfg.register_cfg_check_fun(assert_model_cfg) + + +def assert_model_cfg(cfg): + pass + + +register_config("model", extend_model_cfg) diff --git a/federatedscope/core/configs/cfg_training.py b/federatedscope/core/configs/cfg_training.py new file mode 100644 index 000000000..f47bacd43 --- /dev/null +++ b/federatedscope/core/configs/cfg_training.py @@ -0,0 +1,84 @@ +from federatedscope.core.configs.config import CN +from federatedscope.register import register_config + + +def extend_training_cfg(cfg): + # ------------------------------------------------------------------------ # + # Trainer related options + # ------------------------------------------------------------------------ # + cfg.trainer = CN() + + cfg.trainer.type = 'general' + cfg.trainer.finetune = CN() + cfg.trainer.finetune.before_eval = False + cfg.trainer.finetune.steps = 1 + cfg.trainer.finetune.epochs = 1 + cfg.trainer.finetune.lr = 0.01 + cfg.trainer.finetune.freeze_param = "" # parameters frozen in fine-tuning stage + # cfg.trainer.finetune.only_psn = True + + # ------------------------------------------------------------------------ # + # Optimizer related options + # ------------------------------------------------------------------------ # + cfg.optimizer = CN(new_allowed=True) + + cfg.optimizer.type = 'SGD' + cfg.optimizer.lr = 0.1 + + # ------------------------------------------------------------------------ # + # Gradient related options + # ------------------------------------------------------------------------ # + cfg.grad = CN() + cfg.grad.grad_clip = -1.0 # negative numbers indicate we do not clip grad + + # ------------------------------------------------------------------------ # + # lr_scheduler related options + # ------------------------------------------------------------------------ # + # cfg.lr_scheduler = CN() + # cfg.lr_scheduler.type = 'StepLR' + # cfg.lr_scheduler.schlr_params = dict() + + # ------------------------------------------------------------------------ # + # Early stopping related options + # ------------------------------------------------------------------------ # + cfg.early_stop = CN() + + # patience (int): How long to wait after last time the monitored metric improved. + # Note that the actual_checking_round = patience * cfg.eval.freq + # To disable the early stop, set the early_stop.patience a integer <=0 + cfg.early_stop.patience = 0 + # delta (float): Minimum change in the monitored metric to indicate an improvement. + cfg.early_stop.delta = 0.0 + # Early stop when no improve to last `patience` round, in ['mean', 'best'] + cfg.early_stop.improve_indicator_mode = 'best' + cfg.early_stop.the_smaller_the_better = True + + # --------------- register corresponding check function ---------- + cfg.register_cfg_check_fun(assert_training_cfg) + + +def assert_training_cfg(cfg): + if cfg.backend not in ['torch', 'tensorflow']: + raise ValueError( + "Value of 'cfg.backend' must be chosen from ['torch', 'tensorflow']." + ) + if cfg.backend == 'tensorflow' and cfg.federate.mode == 'standalone': + raise ValueError( + "We only support run with distribued mode when backend is tensorflow" + ) + if cfg.backend == 'tensorflow' and cfg.use_gpu is True: + raise ValueError( + "We only support run with cpu when backend is tensorflow") + + if cfg.trainer.finetune.before_eval is False and cfg.trainer.finetune.epochs <= 0: + raise ValueError( + f"When adopting fine-tuning, please set a valid local fine-tune epochs, got {cfg.trainer.finetune.epochs}" + ) + + # if cfg.trainer.finetune.before_eval is False and cfg.trainer.finetune.steps <= 0: + # raise ValueError( + # f"When adopting fine-tuning, please set a valid local fine-tune steps, got {cfg.trainer.finetune.steps}" + # ) + + +register_config("fl_training", extend_training_cfg) diff --git a/federatedscope/core/configs/config.py b/federatedscope/core/configs/config.py new file mode 100644 index 000000000..4e05fc7af --- /dev/null +++ b/federatedscope/core/configs/config.py @@ -0,0 +1,206 @@ +import copy +import logging +import os + +from yacs.config import CfgNode +from yacs.config import _assert_with_logging +from yacs.config import _check_and_coerce_cfg_value_type + +import federatedscope.register as register + +logger = logging.getLogger(__name__) + + +class CN(CfgNode): + """ + An extended configuration system based on [yacs](https://github.com/rbgirshick/yacs). + The two-level tree structure consists of several internal dict-like containers to allow simple key-value access and management. + + """ + def __init__(self, init_dict=None, key_list=None, new_allowed=False): + super().__init__(init_dict, key_list, new_allowed) + self.__dict__["cfg_check_funcs"] = list( + ) # to check the config values validity + + def __getattr__(self, name): + if name in self: + return self[name] + else: + raise AttributeError(name) + + def register_cfg_check_fun(self, cfg_check_fun): + self.cfg_check_funcs.append(cfg_check_fun) + + def merge_from_file(self, cfg_filename): + """ + load configs from a yaml file, another cfg instance or a list stores the keys and values. + + :param cfg_filename (string): + :return: + """ + super(CN, self).merge_from_file(cfg_filename) + self.assert_cfg() + + def merge_from_other_cfg(self, cfg_other): + """ + load configs from another cfg instance + + :param cfg_other (CN): + :return: + """ + super(CN, self).merge_from_other_cfg(cfg_other) + self.assert_cfg() + + def merge_from_list(self, cfg_list): + """ + load configs from a list stores the keys and values. + modified `merge_from_list` in `yacs.config.py` to allow adding new keys if `is_new_allowed()` returns True + + :param cfg_list (list): + :return: + """ + _assert_with_logging( + len(cfg_list) % 2 == 0, + "Override list has odd length: {}; it must be a list of pairs". + format(cfg_list), + ) + root = self + for full_key, v in zip(cfg_list[0::2], cfg_list[1::2]): + if root.key_is_deprecated(full_key): + continue + if root.key_is_renamed(full_key): + root.raise_key_rename_error(full_key) + key_list = full_key.split(".") + d = self + for subkey in key_list[:-1]: + _assert_with_logging(subkey in d, + "Non-existent key: {}".format(full_key)) + d = d[subkey] + subkey = key_list[-1] + _assert_with_logging(subkey in d or d.is_new_allowed(), + "Non-existent key: {}".format(full_key)) + value = self._decode_cfg_value(v) + if subkey in d: + value = _check_and_coerce_cfg_value_type( + value, d[subkey], subkey, full_key) + d[subkey] = value + + self.assert_cfg() + + def assert_cfg(self): + """ + check the validness of the configuration instance + + :return: + """ + for check_func in self.cfg_check_funcs: + check_func(self) + + def clean_unused_sub_cfgs(self): + """ + Clean the un-used secondary-level CfgNode, whose `.use` attribute is `True` + + :return: + """ + for v in self.values(): + if isinstance(v, CfgNode) or isinstance(v, CN): + # sub-config + if hasattr(v, "use") and v.use is False: + for k in copy.deepcopy(v).keys(): + # delete the un-used attributes + if k == "use": + continue + else: + del v[k] + + def freeze(self, inform=True): + """ + 1) make the cfg attributes immutable; + 2) save the frozen cfg_check_funcs into "self.outdir/config.yaml" for better reproducibility; + 3) if self.wandb.use=True, update the frozen config + + :return: + """ + self.assert_cfg() + self.clean_unused_sub_cfgs() + # save the final cfg + with open(os.path.join(self.outdir, "config.yaml"), 'w') as outfile: + from contextlib import redirect_stdout + with redirect_stdout(outfile): + tmp_cfg = copy.deepcopy(self) + tmp_cfg.cfg_check_funcs.clear() + print(tmp_cfg.dump()) + if self.wandb.use: + # update the frozen config + try: + import wandb + except ImportError: + logger.error( + "cfg.wandb.use=True but not install the wandb package") + exit() + + import yaml + cfg_yaml = yaml.safe_load(tmp_cfg.dump()) + wandb.config.update(cfg_yaml, allow_val_change=True) + + if inform: + logger.info("the used configs are: \n" + str(tmp_cfg)) + + super(CN, self).freeze() + + +# to ensure the sub-configs registered before set up the global config +from federatedscope.core.configs import all_sub_configs +for sub_config in all_sub_configs: + __import__("federatedscope.core.configs." + sub_config) + +from federatedscope.contrib.configs import all_sub_configs_contrib +for sub_config in all_sub_configs_contrib: + __import__("federatedscope.contrib.configs." + sub_config) + +# Global config object +global_cfg = CN() + + +def init_global_cfg(cfg): + r''' + This function sets the default config value. + 1) Note that for an experiment, only part of the arguments will be used + The remaining unused arguments won't affect anything. + So feel free to register any argument in graphgym.contrib.config + 2) We support *at most* two levels of configs, e.g., cfg.dataset.name + + :return: configuration use by the experiment. + ''' + + # ------------------------------------------------------------------------ # + # Basic options, first level configs + # ------------------------------------------------------------------------ # + + cfg.backend = 'torch' + + # Whether to use GPU + cfg.use_gpu = False + + # Whether to print verbose logging info + cfg.verbose = 1 + + # Specify the device + cfg.device = -1 + + # Random seed + cfg.seed = 0 + + # Path of configuration file + cfg.cfg_file = '' + + # The dir used to save log, exp_config, models, etc,. + cfg.outdir = 'exp' + cfg.expname = '' # detailed exp name to distinguish different sub-exp + + # extend user customized configs + for func in register.config_dict.values(): + func(cfg) + + +init_global_cfg(global_cfg) diff --git a/federatedscope/core/configs/constants.py b/federatedscope/core/configs/constants.py new file mode 100644 index 000000000..488384008 --- /dev/null +++ b/federatedscope/core/configs/constants.py @@ -0,0 +1,36 @@ +"""Configuration file for composition of different aggregators, messages, handlers, etc. + + - The method `local` indicates that the clients only locally train their model without sharing any training related information + - The method `global` indicates that the only one client locally trains using all data + +""" + +AGGREGATOR_TYPE = { + "local": "no_communication", # the clients locally train their model without sharing any training related info + "global": "no_communication", # only one client locally train all data, i.e., totally global training + "fedavg": "clients_avg", # FedAvg + "pfedme": "server_clients_interpolation", # pFedMe, + server-clients interpolation + "ditto": "clients_avg", # Ditto + "fedsageplus": "clients_avg", + "gcflplus": "clients_avg", + "fedopt": "fedopt" +} + +CLIENTS_TYPE = { + "local": "normal", + "fedavg": "normal", # FedAvg + "pfedme": "normal_loss_regular", # pFedMe, + regularization-based local loss + "ditto": "normal", # Ditto, + local training for distinct personalized models + "fedsageplus": "fedsageplus", # FedSage+ for graph data + "gcflplus": "gcflplus", # GCFL+ for graph data + "gradascent": "gradascent" +} + +SERVER_TYPE = { + "local": "normal", + "fedavg": "normal", # FedAvg + "pfedme": "normal", # pFedMe, + regularization-based local loss + "ditto": "normal", # Ditto, + local training for distinct personalized models + "fedsageplus": "fedsageplus", # FedSage+ for graph data + "gcflplus": "gcflplus", # GCFL+ for graph data +} diff --git a/federatedscope/core/fed_runner.py b/federatedscope/core/fed_runner.py new file mode 100644 index 000000000..0ce955d7b --- /dev/null +++ b/federatedscope/core/fed_runner.py @@ -0,0 +1,275 @@ +import logging + +from collections import deque + +from federatedscope.core.worker import Server, Client +from federatedscope.core.gpu_manager import GPUManager +from federatedscope.core.auxiliaries.model_builder import get_model + +logger = logging.getLogger(__name__) + + +class FedRunner(object): + """ + This class is used to construct an FL course, which includes `_set_up` and `run`. + + Arguments: + data: The data used in the FL courses, which are formatted as {'ID':data} for standalone mode. More details can be found in federatedscope.core.auxiliaries.data_builder . + server_class: The server class is used for instantiating a (customized) server. + client_class: The client class is used for instantiating a (customized) client. + config: The configurations of the FL course. + client_config: The clients' configurations. + """ + def __init__(self, + data, + server_class=Server, + client_class=Client, + config=None, + client_config=None): + self.data = data + self.server_class = server_class + self.client_class = client_class + self.cfg = config + self.client_cfg = client_config + + self.mode = self.cfg.federate.mode.lower() + self.gpu_manager = GPUManager(gpu_available=self.cfg.use_gpu, + specified_device=self.cfg.device) + + if self.mode == 'standalone': + self.shared_comm_queue = deque() + self._setup_for_standalone() + # in standalone mode, by default, we print the trainer info only once for better logs readability + trainer_representative = self.client[1].trainer + if trainer_representative is not None: + trainer_representative.print_trainer_meta_info() + elif self.mode == 'distributed': + self._setup_for_distributed() + + def _setup_for_standalone(self): + """ + To set up server and client for standalone mode. + """ + + if self.cfg.backend == 'torch': + import torch + torch.set_num_threads(1) + + self.server = self._setup_server() + + self.client = dict() + assert self.cfg.federate.client_num != 0, \ + "In standalone mode, self.cfg.federate.client_num should be non-zero. " \ + "This is usually cased by using synthetic data and users not specify a non-zero value for client_num" + + # assume the client-wise data are consistent in their input&output shape + self._shared_client_model = get_model( + self.cfg.model, self.data[1], backend=self.cfg.backend + ) if self.cfg.federate.share_local_model else None + + if self.cfg.federate.method == "global": + assert 0 in self.data and self.data[ + 0] is not None, "In global training mode, we will use a proxy client to hold all the data. Please put the whole dataset in data[0], i.e., the same style with global evaluation mode" + from federatedscope.core.auxiliaries.data_builder import merge_data + self.data[1] = merge_data(all_data=self.data) + + for client_id in range(1, self.cfg.federate.client_num + 1): + self.client[client_id] = self._setup_client( + client_id=client_id, client_model=self._shared_client_model) + + def _setup_for_distributed(self): + """ + To set up server or client for distributed mode. + """ + self.server_address = { + 'host': self.cfg.distribute.server_host, + 'port': self.cfg.distribute.server_port + } + if self.cfg.distribute.role == 'server': + self.server = self._setup_server() + elif self.cfg.distribute.role == 'client': + # When we set up the client in the distributed mode, we assume the server has been set up and number with #0 + self.client_address = { + 'host': self.cfg.distribute.client_host, + 'port': self.cfg.distribute.client_port + } + self.client = self._setup_client() + + def run(self): + """ + To run an FL course, which is called after server/client has been set up. + For the standalone mode, a shared message queue will be set up to simulate ``receiving message``. + """ + if self.mode == 'standalone': + # trigger the FL course + for each_client in self.client: + self.client[each_client].join_in() + + if self.cfg.federate.online_aggr: + # any broadcast operation would be executed client-by-client to avoid the existence of #clients messages at the same time. + # currently, only consider centralized topology + def is_broadcast(msg): + return len(msg.receiver) >= 1 and msg.sender == 0 + + cached_bc_msgs = [] + cur_idx = 0 + while True: + if len(self.shared_comm_queue) > 0: + msg = self.shared_comm_queue.popleft() + if is_broadcast(msg): + cached_bc_msgs.append(msg) + # assume there is at least one client + msg = cached_bc_msgs[0] + self._handle_msg(msg, rcv=msg.receiver[cur_idx]) + cur_idx += 1 + if cur_idx >= len(msg.receiver): + del cached_bc_msgs[0] + cur_idx = 0 + else: + self._handle_msg(msg) + elif len(cached_bc_msgs) > 0: + msg = cached_bc_msgs[0] + self._handle_msg(msg, rcv=msg.receiver[cur_idx]) + cur_idx += 1 + if cur_idx >= len(msg.receiver): + del cached_bc_msgs[0] + cur_idx = 0 + else: + # finished + break + + else: + while len(self.shared_comm_queue) > 0: + msg = self.shared_comm_queue.popleft() + self._handle_msg(msg) + + self.server._monitor.finish_fed_runner(fl_mode=self.mode) + + return self.server.best_results + + elif self.mode == 'distributed': + if self.cfg.distribute.role == 'server': + self.server.run() + return self.server.best_results + elif self.cfg.distribute.role == 'client': + self.client.join_in() + self.client.run() + + def _setup_server(self): + """ + Set up the server + """ + self.server_id = 0 + if self.mode == 'standalone': + if self.server_id in self.data: + server_data = self.data[self.server_id] + model = get_model(self.cfg.model, + server_data, + backend=self.cfg.backend) + else: + server_data = None + model = get_model( + self.cfg.model, self.data[1], backend=self.cfg.backend + ) # get the model according to client's data if the server does not own data + kw = {'shared_comm_queue': self.shared_comm_queue} + elif self.mode == 'distributed': + server_data = self.data + model = get_model(self.cfg.model, + server_data, + backend=self.cfg.backend) + kw = self.server_address + else: + raise ValueError('Mode {} is not provided'.format( + self.cfg.mode.type)) + + if self.server_class: + self._server_device = self.gpu_manager.auto_choice() + server = self.server_class( + ID=self.server_id, + config=self.cfg, + data=server_data, + model=model, + client_num=self.cfg.federate.client_num, + total_round_num=self.cfg.federate.total_round_num, + device=self._server_device, + **kw) + + if self.cfg.nbafl.use: + from federatedscope.core.trainers.trainer_nbafl import wrap_nbafl_server + wrap_nbafl_server(server) + + else: + raise ValueError + + logger.info('Server #{:d} has been set up ... '.format(self.server_id)) + + return server + + def _setup_client(self, client_id=-1, client_model=None): + """ + Set up the client + """ + self.server_id = 0 + if self.mode == 'standalone': + client_data = self.data[client_id] + kw = {'shared_comm_queue': self.shared_comm_queue} + elif self.mode == 'distributed': + client_data = self.data + kw = self.client_address + kw['server_host'] = self.server_address['host'] + kw['server_port'] = self.server_address['port'] + else: + raise ValueError('Mode {} is not provided'.format( + self.cfg.mode.type)) + + if self.client_class: + client_specific_config = self.cfg.clone() + if self.client_cfg: + client_specific_config.defrost() + client_specific_config.merge_from_other_cfg( + self.client_cfg.get('client_{}'.format(client_id))) + client_specific_config.freeze() + client_device = self._server_device if self.cfg.federate.share_local_model else self.gpu_manager.auto_choice( + ) + client = self.client_class( + ID=client_id, + server_id=self.server_id, + config=client_specific_config, + data=client_data, + model=client_model or get_model(client_specific_config.model, + client_data, + backend=self.cfg.backend), + device=client_device, + **kw) + else: + raise ValueError + + if client_id == -1: + logger.info('Client (address {}:{}) has been set up ... '.format( + self.client_address['host'], self.client_address['port'])) + else: + logger.info(f'Client {client_id} has been set up ... ') + + return client + + def _handle_msg(self, msg, rcv=-1): + """ + To simulate the message handling process (used only for the standalone mode) + """ + if rcv != -1: + # simulate broadcast one-by-one + self.client[rcv].msg_handlers[msg.msg_type](msg) + return + + sender, receiver = msg.sender, msg.receiver + download_bytes, upload_bytes = msg.count_bytes() + if not isinstance(receiver, list): + receiver = [receiver] + for each_receiver in receiver: + if each_receiver == 0: + self.server.msg_handlers[msg.msg_type](msg) + self.server._monitor.track_download_bytes(download_bytes) + else: + self.client[each_receiver].msg_handlers[msg.msg_type](msg) + self.client[each_receiver]._monitor.track_download_bytes( + download_bytes) diff --git a/federatedscope/core/gRPC_server.py b/federatedscope/core/gRPC_server.py new file mode 100644 index 000000000..9cf6c27c0 --- /dev/null +++ b/federatedscope/core/gRPC_server.py @@ -0,0 +1,20 @@ +import queue +from collections import deque + +from federatedscope.core.proto import gRPC_comm_manager_pb2, gRPC_comm_manager_pb2_grpc + + +class gRPCComServeFunc(gRPC_comm_manager_pb2_grpc.gRPCComServeFuncServicer): + def __init__(self): + self.msg_queue = deque() + + def sendMessage(self, request, context): + self.msg_queue.append(request) + + return gRPC_comm_manager_pb2.MessageResponse(msg='ACK') + + def receive(self): + while len(self.msg_queue) == 0: + continue + msg = self.msg_queue.popleft() + return msg diff --git a/federatedscope/core/gpu_manager.py b/federatedscope/core/gpu_manager.py new file mode 100644 index 000000000..6deb06e50 --- /dev/null +++ b/federatedscope/core/gpu_manager.py @@ -0,0 +1,88 @@ +import os + + +def check_gpus(): + if not 'NVIDIA System Management' in os.popen('nvidia-smi -h').read(): + print("'nvidia-smi' tool not found.") + return False + return True + + +class GPUManager(): + """ + To automatic allocate the gpu, which returns the gpu with the largest free memory rate, unless the specified_device has been set up + When gpus is unavailable, return 'cpu'; + The implementation of GPUManager is referred to https://github.com/QuantumLiu/tf_gpu_manager + """ + def __init__(self, gpu_available=False, specified_device=-1): + self.gpu_avaiable = gpu_available and check_gpus() + self.specified_device = specified_device + if self.gpu_avaiable: + self.gpus = self._query_gpus() + for gpu in self.gpus: + gpu['allocated'] = False + else: + self.gpus = None + + def _sort_by_memory(self, gpus, by_size=False): + if by_size: + return sorted(gpus, key=lambda d: d['memory.free'], reverse=True) + else: + print('Sorted by free memory rate') + return sorted( + gpus, + key=lambda d: float(d['memory.free']) / d['memory.total'], + reverse=True) + + def _query_gpus(self): + args = ['index', 'gpu_name', 'memory.free', 'memory.total'] + cmd = 'nvidia-smi --query-gpu={} --format=csv,noheader'.format( + ','.join(args)) + results = os.popen(cmd).readlines() + return [self._parse(line, args) for line in results] + + def _parse(self, line, args): + numberic_args = ['memory.free', 'memory.total'] + to_numberic = lambda v: float(v.upper().strip().replace('MIB', ''). + replace('W', '')) + process = lambda k, v: (int(to_numberic(v)) + if k in numberic_args else v.strip()) + return { + k: process(k, v) + for k, v in zip(args, + line.strip().split(',')) + } + + def auto_choice(self): + """ + To allocate a device + """ + if self.gpus == None: + return 'cpu' + elif self.specified_device >= 0: + # allow users to specify the device + return 'cuda:{}'.format(self.specified_device) + else: + for old_infos, new_infos in zip(self.gpus, self._query_gpus()): + old_infos.update(new_infos) + unallocated_gpus = [ + gpu for gpu in self.gpus if not gpu['allocated'] + ] + if len(unallocated_gpus) == 0: + # reset when all gpus have been allocated + unallocated_gpus = self.gpus + for gpu in self.gpus: + gpu['allocated'] = False + + chosen_gpu = self._sort_by_memory(unallocated_gpus, True)[0] + chosen_gpu['allocated'] = True + index = chosen_gpu['index'] + return 'cuda:{:s}'.format(index) + + +# for testing +if __name__ == '__main__': + + gpu_manager = GPUManager(gpu_available=True, specified_device=0) + for i in range(20): + print(gpu_manager.auto_choice()) diff --git a/federatedscope/core/lr.py b/federatedscope/core/lr.py new file mode 100644 index 000000000..16e846218 --- /dev/null +++ b/federatedscope/core/lr.py @@ -0,0 +1,10 @@ +import torch + + +class LogisticRegression(torch.nn.Module): + def __init__(self, in_channels, class_num, use_bias=True): + super(LogisticRegression, self).__init__() + self.fc = torch.nn.Linear(in_channels, class_num, bias=use_bias) + + def forward(self, x): + return self.fc(x) diff --git a/federatedscope/core/message.py b/federatedscope/core/message.py new file mode 100644 index 000000000..a7dab00d8 --- /dev/null +++ b/federatedscope/core/message.py @@ -0,0 +1,216 @@ +import sys +import json +import numpy as np +from federatedscope.core.proto import gRPC_comm_manager_pb2 + + +class Message(object): + """ + The data exchanged during an FL course are abstracted as 'Message' in FederatedScope. + A message object includes: + msg_type: The type of message, which is used to trigger the corresponding handlers of server/client + sender: The sender's ID + receiver: The receiver's ID + state: The training round of the message, which is determined by the sender and used to filter out the outdated messages. + strategy: redundant attribute + """ + def __init__(self, + msg_type=None, + sender=0, + receiver=0, + state=0, + content=None, + strategy=None): + self._msg_type = msg_type + self._sender = sender + self._receiver = receiver + self._state = state + self._content = content + self._strategy = strategy + + @property + def msg_type(self): + return self._msg_type + + @msg_type.setter + def msg_type(self, value): + self._msg_type = value + + @property + def sender(self): + return self._sender + + @sender.setter + def sender(self, value): + self._sender = value + + @property + def receiver(self): + return self._receiver + + @receiver.setter + def receiver(self, value): + self._receiver = value + + @property + def state(self): + return self._state + + @state.setter + def state(self, value): + self._state = value + + @property + def content(self): + return self._content + + @content.setter + def content(self, value): + self._content = value + + @property + def strategy(self): + return self._strategy + + @strategy.setter + def strategy(self, value): + self._strategy = value + + def transform_to_list(self, x): + if isinstance(x, list) or isinstance(x, tuple): + return [self.transform_to_list(each_x) for each_x in x] + elif isinstance(x, dict): + for key in x.keys(): + x[key] = self.transform_to_list(x[key]) + return x + else: + if hasattr(x, 'tolist'): + return x.tolist() + else: + return x + + def msg_to_json(self, to_list=False): + if to_list: + self.content = self.transform_to_list(self.content) + + json_msg = { + 'msg_type': self.msg_type, + 'sender': self.sender, + 'receiver': self.receiver, + 'state': self.state, + 'content': self.content, + 'strategy': self.strategy, + } + return json.dumps(json_msg) + + def json_to_msg(self, json_string): + json_msg = json.loads(json_string) + self.msg_type = json_msg['msg_type'] + self.sender = json_msg['sender'] + self.receiver = json_msg['receiver'] + self.state = json_msg['state'] + self.content = json_msg['content'] + self.strategy = json_msg['strategy'] + + def create_by_type(self, value, nested=False): + if isinstance(value, dict): + m_dict = gRPC_comm_manager_pb2.mDict() + for key in value.keys(): + m_dict.dict_value[key].MergeFrom( + self.create_by_type(value[key], nested=True)) + if nested: + msg_value = gRPC_comm_manager_pb2.MsgValue() + msg_value.dict_msg.MergeFrom(m_dict) + return msg_value + else: + return m_dict + elif isinstance(value, list) or isinstance(value, tuple): + m_list = gRPC_comm_manager_pb2.mList() + for each in value: + m_list.list_value.append(self.create_by_type(each, + nested=True)) + if nested: + msg_value = gRPC_comm_manager_pb2.MsgValue() + msg_value.list_msg.MergeFrom(m_list) + return msg_value + else: + return m_list + else: + m_single = gRPC_comm_manager_pb2.mSingle() + if type(value) in [int, np.int32]: + m_single.int_value = value + elif type(value) in [str]: + m_single.str_value = value + elif type(value) in [float, np.float32]: + m_single.float_value = value + else: + raise ValueError( + 'The data type {} has not been supported.'.format( + type(value))) + + if nested: + msg_value = gRPC_comm_manager_pb2.MsgValue() + msg_value.single_msg.MergeFrom(m_single) + return msg_value + else: + return m_single + + def build_msg_value(self, value): + msg_value = gRPC_comm_manager_pb2.MsgValue() + + if isinstance(value, list) or isinstance(value, tuple): + msg_value.list_msg.MergeFrom(self.create_by_type(value)) + elif isinstance(value, dict): + msg_value.dict_msg.MergeFrom(self.create_by_type(value)) + else: + msg_value.single_msg.MergeFrom(self.create_by_type(value)) + + return msg_value + + def transform(self, to_list=False): + if to_list: + self.content = self.transform_to_list(self.content) + + splited_msg = gRPC_comm_manager_pb2.MessageRequest() # map/dict + splited_msg.msg['sender'].MergeFrom(self.build_msg_value(self.sender)) + splited_msg.msg['receiver'].MergeFrom( + self.build_msg_value(self.receiver)) + splited_msg.msg['state'].MergeFrom(self.build_msg_value(self.state)) + splited_msg.msg['msg_type'].MergeFrom( + self.build_msg_value(self.msg_type)) + splited_msg.msg['content'].MergeFrom(self.build_msg_value( + self.content)) + return splited_msg + + def _parse_msg(self, value): + if isinstance(value, gRPC_comm_manager_pb2.MsgValue) or isinstance( + value, gRPC_comm_manager_pb2.mSingle): + return self._parse_msg(getattr(value, value.WhichOneof("type"))) + elif isinstance(value, gRPC_comm_manager_pb2.mList): + return [self._parse_msg(each) for each in value.list_value] + elif isinstance(value, gRPC_comm_manager_pb2.mDict): + return { + k: self._parse_msg(value.dict_value[k]) + for k in value.dict_value + } + else: + return value + + def parse(self, received_msg): + self.sender = self._parse_msg(received_msg['sender']) + self.receiver = self._parse_msg(received_msg['receiver']) + self.msg_type = self._parse_msg(received_msg['msg_type']) + self.state = self._parse_msg(received_msg['state']) + self.content = self._parse_msg(received_msg['content']) + + def count_bytes(self): + """ + calculate the message bytes to be sent/received + :return: tuple of bytes of the message to be sent and received + """ + from pympler import asizeof + download_bytes = asizeof.asizeof(self.content) + upload_cnt = len(self.receiver) if isinstance(self.receiver, + list) else 1 + upload_bytes = download_bytes * upload_cnt + return download_bytes, upload_bytes diff --git a/federatedscope/core/mlp.py b/federatedscope/core/mlp.py new file mode 100644 index 000000000..a71b76e03 --- /dev/null +++ b/federatedscope/core/mlp.py @@ -0,0 +1,40 @@ +import torch +import torch.nn.functional as F +from torch.nn import Linear, ModuleList +from torch.nn import BatchNorm1d, Identity + + +class MLP(torch.nn.Module): + """ + Multilayer Perceptron + """ + def __init__(self, + channel_list, + dropout=0., + batch_norm=True, + relu_first=False): + super().__init__() + assert len(channel_list) >= 2 + self.channel_list = channel_list + self.dropout = dropout + self.relu_first = relu_first + + self.linears = ModuleList() + self.norms = ModuleList() + for in_channel, out_channel in zip(channel_list[:-1], + channel_list[1:]): + self.linears.append(Linear(in_channel, out_channel)) + self.norms.append( + BatchNorm1d(out_channel) if batch_norm else Identity()) + + def forward(self, x): + x = self.linears[0](x) + for layer, norm in zip(self.linears[1:], self.norms[:-1]): + if self.relu_first: + x = F.relu(x) + x = norm(x) + if not self.relu_first: + x = F.relu(x) + x = F.dropout(x, p=self.dropout, training=self.training) + x = layer.forward(x) + return x diff --git a/federatedscope/core/monitors/__init__.py b/federatedscope/core/monitors/__init__.py new file mode 100644 index 000000000..3f945b5b0 --- /dev/null +++ b/federatedscope/core/monitors/__init__.py @@ -0,0 +1,5 @@ +from federatedscope.core.monitors.early_stopper import EarlyStopper +from federatedscope.core.monitors.metric_calculator import MetricCalculator +from federatedscope.core.monitors.monitor import Monitor + +__all__ = ['EarlyStopper', 'MetricCalculator', 'Monitor'] diff --git a/federatedscope/core/monitors/early_stopper.py b/federatedscope/core/monitors/early_stopper.py new file mode 100644 index 000000000..474809e0b --- /dev/null +++ b/federatedscope/core/monitors/early_stopper.py @@ -0,0 +1,97 @@ +import operator +import numpy as np + + +# TODO: make this as a sub-module of monitor class +class EarlyStopper(object): + """ + Track the history of metric (e.g., validation loss), + check whether should stop (training) process if the metric doesn't improve after a given patience. + """ + def __init__(self, + patience=5, + delta=0, + improve_indicator_mode='best', + the_smaller_the_better=True): + """ + Args: + patience (int): How long to wait after last time the monitored metric improved. + Note that the actual_checking_round = patience * cfg.eval.freq + Default: 5 + delta (float): Minimum change in the monitored metric to indicate an improvement. + Default: 0 + improve_indicator_mode (str): Early stop when no improve to last `patience` round, in ['mean', 'best'] + """ + assert 0 <= patience == int( + patience + ), "Please use a non-negtive integer to indicate the patience" + assert delta >= 0, "Please use a positive value to indicate the change" + assert improve_indicator_mode in [ + 'mean', 'best' + ], "Please make sure `improve_indicator_mode` is 'mean' or 'best']" + + self.patience = patience + self.counter_no_improve = 0 + self.best_metric = None + self.early_stopped = False + self.the_smaller_the_better = the_smaller_the_better + self.delta = delta + self.improve_indicator_mode = improve_indicator_mode + # For expansion usages of comparisons + self.comparator = operator.lt + self.improvement_operator = operator.add + + def track_and_check_dummy(self, new_result): + self.early_stopped = False + return self.early_stopped + + def track_and_check_best(self, history_result): + new_result = history_result[-1] + if self.best_metric is None: + self.best_metric = new_result + elif self.the_smaller_the_better and self.comparator( + self.improvement_operator(self.best_metric, -self.delta), + new_result): + # by default: add(val_loss, -delta) < new_result + self.counter_no_improve += 1 + elif not self.the_smaller_the_better and self.comparator( + self.improvement_operator(self.best_metric, self.delta), + new_result): + # typical case: add(eval_score, delta) > new_result + self.counter_no_improve += 1 + else: + self.best_metric = new_result + self.counter_no_improve = 0 + + self.early_stopped = self.counter_no_improve >= self.patience + return self.early_stopped + + def track_and_check_mean(self, history_result): + new_result = history_result[-1] + if len(history_result) > self.patience: + if self.the_smaller_the_better and self.comparator( + self.improvement_operator( + np.mean(history_result[-self.patience - 1:-1]), + -self.delta), new_result): + self.early_stopped = True + elif not self.the_smaller_the_better and self.comparator( + self.improvement_operator( + np.mean(history_result[-self.patience - 1:-1]), + self.delta), new_result): + self.early_stopped = True + else: + self.early_stopped = False + + return self.early_stopped + + def track_and_check(self, new_result): + + track_method = self.track_and_check_dummy # do nothing + if self.patience == 0: + track_method = self.track_and_check_dummy + elif self.improve_indicator_mode == 'best': + track_method = self.track_and_check_best + elif self.improve_indicator_mode == 'mean': + track_method = self.track_and_check_mean + + return track_method(new_result) diff --git a/federatedscope/core/monitors/metric_calculator.py b/federatedscope/core/monitors/metric_calculator.py new file mode 100644 index 000000000..41610e11e --- /dev/null +++ b/federatedscope/core/monitors/metric_calculator.py @@ -0,0 +1,206 @@ +import logging +from typing import Optional, Union, List, Set + +import numpy as np +from scipy.special import softmax +from sklearn.metrics import roc_auc_score, average_precision_score, f1_score + +from federatedscope.core.auxiliaries.metric_builder import get_metric + +# Blind torch +try: + import torch +except ImportError: + torch = None + +logger = logging.getLogger(__name__) + + +# TODO: make this as a sub-module of monitor class +class MetricCalculator(object): + def __init__(self, eval_metric: Union[Set[str], List[str], str]): + + # Add personalized metrics + if isinstance(eval_metric, str): + eval_metric = {eval_metric} + elif isinstance(eval_metric, list): + eval_metric = set(eval_metric) + + # Default metric is {'loss', 'avg_loss', 'total'} + self.eval_metric = self.get_metric_funcs(eval_metric) + + def get_metric_funcs(self, eval_metric): + metric_buildin = { + metric: SUPPORT_METRICS[metric] + for metric in {'loss', 'avg_loss', 'total'} | eval_metric + if metric in SUPPORT_METRICS + } + metric_register = get_metric(eval_metric - set(SUPPORT_METRICS.keys())) + return {**metric_buildin, **metric_register} + + def eval(self, ctx): + results = {} + y_true, y_pred, y_prob = self._check_and_parse(ctx) + for metric, func in self.eval_metric.items(): + results["{}_{}".format(ctx.cur_data_split, + metric)] = func(ctx=ctx, + y_true=y_true, + y_pred=y_pred, + y_prob=y_prob, + metric=metric) + return results + + def _check_and_parse(self, ctx): + if not '{}_y_true'.format(ctx.cur_data_split) in ctx: + raise KeyError('Missing key y_true!') + if not '{}_y_prob'.format(ctx.cur_data_split) in ctx: + raise KeyError('Missing key y_prob!') + + y_true = ctx.get("{}_y_true".format(ctx.cur_data_split)) + y_prob = ctx.get("{}_y_prob".format(ctx.cur_data_split)) + + if torch is not None and isinstance(y_true, torch.Tensor): + y_true = y_true.detach().cpu().numpy() + if torch is not None and isinstance(y_prob, torch.Tensor): + y_prob = y_prob.detach().cpu().numpy() + + if y_true.ndim == 1: + y_true = np.expand_dims(y_true, axis=-1) + if y_prob.ndim == 2: + y_prob = np.expand_dims(y_prob, axis=-1) + + y_pred = np.argmax(y_prob, axis=1) + + # check shape and type + if not isinstance(y_true, np.ndarray): + raise RuntimeError('Type not support!') + if not y_true.shape == y_pred.shape: + raise RuntimeError('Shape not match!') + if not y_true.ndim == 2: + raise RuntimeError( + 'y_true must be 2-dim arrray, {}-dim given'.format( + y_true.ndim)) + + return y_true, y_pred, y_prob + + +def eval_correct(y_true, y_pred, **kwargs): + correct_list = [] + + for i in range(y_true.shape[1]): + is_labeled = y_true[:, i] == y_true[:, i] + correct = y_true[is_labeled, i] == y_pred[is_labeled, i] + correct_list.append(np.sum(correct)) + return sum(correct_list) / len(correct_list) + + +def eval_acc(y_true, y_pred, **kwargs): + acc_list = [] + + for i in range(y_true.shape[1]): + is_labeled = y_true[:, i] == y_true[:, i] + correct = y_true[is_labeled, i] == y_pred[is_labeled, i] + acc_list.append(float(np.sum(correct)) / len(correct)) + return sum(acc_list) / len(acc_list) + + +def eval_ap(y_true, y_pred, **kwargs): + ap_list = [] + + for i in range(y_true.shape[1]): + # AUC is only defined when there is at least one positive data. + if np.sum(y_true[:, i] == 1) > 0 and np.sum(y_true[:, i] == 0) > 0: + # ignore nan values + is_labeled = y_true[:, i] == y_true[:, i] + ap = average_precision_score(y_true[is_labeled, i], + y_pred[is_labeled, i]) + + ap_list.append(ap) + + if len(ap_list) == 0: + logger.warning('No positively labeled data available. ') + return 0.0 + + return sum(ap_list) / len(ap_list) + + +def eval_f1_score(y_true, y_pred, **kwargs): + return f1_score(y_true, y_pred, average='macro') + + +def eval_hits(y_true, y_prob, metric, **kwargs): + n = int(metric.split('@')[1]) + hits_list = [] + for i in range(y_true.shape[1]): + idx = np.argsort(-y_prob[:, :, i], axis=1) + pred_rank = idx.argsort(axis=1) + # Obtain the label rank + arg = np.arange(0, pred_rank.shape[0]) + rank = pred_rank[arg, y_true[:, i]] + 1 + hits_num = (rank <= n).sum().item() + hits_list.append(float(hits_num) / len(rank)) + + return sum(hits_list) / len(hits_list) + + +def eval_roc_auc(y_true, y_prob, **kwargs): + rocauc_list = [] + + for i in range(y_true.shape[1]): + # AUC is only defined when there is at least one positive data. + if np.sum(y_true[:, i] == 1) > 0 and np.sum(y_true[:, i] == 0) > 0: + # ignore nan values + is_labeled = y_true[:, i] == y_true[:, i] + y_true_one_hot = np.eye(y_prob.shape[1])[y_true[is_labeled, i]] + rocauc_list.append( + roc_auc_score(y_true_one_hot, + softmax(y_prob[is_labeled, :, i], axis=-1))) + if len(rocauc_list) == 0: + logger.warning('No positively labeled data available.') + return 0.5 + + return sum(rocauc_list) / len(rocauc_list) + + +def eval_rmse(y_true, y_pred, **kwargs): + rmse_list = [] + + for i in range(y_true.shape[1]): + # ignore nan values + is_labeled = y_true[:, i] == y_true[:, i] + rmse_list.append( + np.sqrt(((y_true[is_labeled] - y_pred[is_labeled])**2).mean())) + + return sum(rmse_list) / len(rmse_list) + + +def eval_loss(ctx, **kwargs): + return ctx.get('loss_batch_total_{}'.format(ctx.cur_data_split)) + + +def eval_avg_loss(ctx, **kwargs): + return ctx.get("loss_batch_total_{}".format(ctx.cur_data_split)) / ctx.get( + "num_samples_{}".format(ctx.cur_data_split)) + + +def eval_total(ctx, **kwargs): + return ctx.get("num_samples_{}".format(ctx.cur_data_split)) + + +def eval_regular(ctx, **kwargs): + return ctx.get("loss_regular_total_{}".format(ctx.cur_data_split)) + + +SUPPORT_METRICS = { + 'loss': eval_loss, + 'avg_loss': eval_avg_loss, + 'total': eval_total, + 'correct': eval_correct, + 'acc': eval_acc, + 'ap': eval_ap, + 'f1': eval_f1_score, + 'roc_auc': eval_roc_auc, + 'rmse': eval_rmse, + 'loss_regular': eval_regular, + **dict.fromkeys([f'hits@{n}' for n in range(1, 101)], eval_hits) +} diff --git a/federatedscope/core/monitors/monitor.py b/federatedscope/core/monitors/monitor.py new file mode 100644 index 000000000..6242ca582 --- /dev/null +++ b/federatedscope/core/monitors/monitor.py @@ -0,0 +1,450 @@ +import copy +import json +import logging +import os +import gzip +import shutil +import datetime +from collections import defaultdict + +import numpy as np + +try: + import torch +except ImportError: + torch = None + +logger = logging.getLogger(__name__) + + +class Monitor(object): + """ + Provide the monitoring functionalities such as formatting the evaluation results into diverse metrics. + Besides the prediction related performance, the monitor also can track efficiency related metrics for a worker + """ + SUPPORTED_FORMS = ['weighted_avg', 'avg', 'fairness', 'raw'] + + def __init__(self, cfg, monitored_object=None): + self.outdir = cfg.outdir + self.use_wandb = cfg.wandb.use + # self.use_tensorboard = cfg.use_tensorboard + + self.monitored_object = monitored_object + + # ========= efficiency indicators of the worker to be monitored ================ + # leveraged the flops counter provided by [fvcore](https://github.com/facebookresearch/fvcore) + self.total_model_size = 0 # model size used in the worker, in terms of number of parameters + self.flops_per_sample = 0 # average flops for forwarding each data sample + self.flop_count = 0 # used to calculated the running mean for flops_per_sample + self.total_flops = 0 # total computation flops to convergence until current fl round + self.total_upload_bytes = 0 # total upload space cost in bytes until current fl round + self.total_download_bytes = 0 # total download space cost in bytes until current fl round + self.fl_begin_wall_time = datetime.datetime.now() + self.fl_end_wall_time = 0 + # for the metrics whose names includes "convergence", 0 indicates the worker does not converge yet + # Note: + # 1) the convergence wall time is prone to fluctuations due to possible resource competition during FL courses + # 2) the global/local indicates whether the early stopping triggered with global-aggregation/local-training + self.global_convergence_round = 0 # total fl rounds to convergence + self.global_convergence_wall_time = 0 + self.local_convergence_round = 0 # total fl rounds to convergence + self.local_convergence_wall_time = 0 + + def global_converged(self): + self.global_convergence_wall_time = datetime.datetime.now( + ) - self.fl_begin_wall_time + self.global_convergence_round = self.monitored_object.state + + def local_converged(self): + self.local_convergence_wall_time = datetime.datetime.now( + ) - self.fl_begin_wall_time + self.local_convergence_round = self.monitored_object.state + + def finish_fl(self): + self.fl_end_wall_time = datetime.datetime.now( + ) - self.fl_begin_wall_time + + system_metrics = { + "id": self.monitored_object.ID, + "fl_end_time_minutes": self.fl_end_wall_time.total_seconds() / + 60 if isinstance(self.fl_end_wall_time, datetime.timedelta) else 0, + "total_model_size": self.total_model_size, + "total_flops": self.total_flops, + "total_upload_bytes": self.total_upload_bytes, + "total_download_bytes": self.total_download_bytes, + "global_convergence_round": self.global_convergence_round, + "local_convergence_round": self.local_convergence_round, + "global_convergence_time_minutes": self. + global_convergence_wall_time.total_seconds() / 60 if isinstance( + self.global_convergence_wall_time, datetime.timedelta) else 0, + "local_convergence_time_minutes": self.local_convergence_wall_time. + total_seconds() / 60 if isinstance( + self.local_convergence_wall_time, datetime.timedelta) else 0, + } + logger.info( + f"In worker #{self.monitored_object.ID}, the system-related metrics are: {str(system_metrics)}" + ) + sys_metric_f_name = os.path.join(self.outdir, "system_metrics.log") + with open(sys_metric_f_name, "a") as f: + f.write(json.dumps(system_metrics) + "\n") + + def merge_system_metrics_simulation_mode(self): + """ + average the system metrics recorded in "system_metrics.json" by all workers + :return: + """ + sys_metric_f_name = os.path.join(self.outdir, "system_metrics.log") + if not os.path.exists(sys_metric_f_name): + logger.warning( + "You have not tracked the workers' system metrics in $outdir$/system_metrics.log, " + "we will skip the merging. Plz check whether you do not want to call monitor.finish_fl()" + ) + return + + all_sys_metrics = defaultdict(list) + avg_sys_metrics = defaultdict() + std_sys_metrics = defaultdict() + with open(sys_metric_f_name, "r") as f: + for line in f: + res = json.loads(line) + if all_sys_metrics is None: + all_sys_metrics = res + all_sys_metrics["id"] = "all" + else: + for k, v in res.items(): + all_sys_metrics[k].append(v) + + for k, v in all_sys_metrics.items(): + if k == "id": + avg_sys_metrics[k] = "sys_avg" + std_sys_metrics[k] = "sys_std" + else: + v = np.array(v) + avg_sys_metrics[f"sys_avg/{k}"] = np.mean(v) + std_sys_metrics[f"sys_std/{k}"] = np.std(v) + + logger.info( + f"After merging the system metrics from all works, we got avg: {avg_sys_metrics}" + ) + logger.info( + f"After merging the system metrics from all works, we got std: {std_sys_metrics}" + ) + with open(sys_metric_f_name, "a") as f: + f.write(json.dumps(avg_sys_metrics) + "\n") + f.write(json.dumps(std_sys_metrics) + "\n") + + def finish_fed_runner(self, fl_mode=None): + self.compress_raw_res_file() + if fl_mode == "standalone": + self.merge_system_metrics_simulation_mode() + + if self.use_wandb: + try: + import wandb + except ImportError: + logger.error( + "cfg.wandb.use=True but not install the wandb package") + exit() + + from federatedscope.core.auxiliaries.utils import logfile_2_wandb_dict + with open(os.path.join(self.outdir, "eval_results.log"), + "r") as exp_log_f: + # track the prediction related performance + all_log_res, exp_stop_normal, last_line, log_res_best = \ + logfile_2_wandb_dict(exp_log_f, raw_out=False) + for log_res in all_log_res: + wandb.log(log_res) + wandb.log(log_res_best) + + # track the system related performance + sys_metric_f_name = os.path.join(self.outdir, + "system_metrics.log") + with open(sys_metric_f_name, "r") as f: + for line in f: + res = json.loads(line) + if res["id"] in ["sys_avg", "sys_std"]: + wandb.log(res) + + def compress_raw_res_file(self): + old_f_name = os.path.join(self.outdir, "eval_results.raw") + if os.path.exists(old_f_name): + logger.info( + "We will compress the file eval_results.raw into a .gz file, and delete the old one" + ) + with open(old_f_name, 'rb') as f_in: + with gzip.open(old_f_name + ".gz", 'wb') as f_out: + shutil.copyfileobj(f_in, f_out) + os.remove(old_f_name) + + def format_eval_res(self, + results, + rnd, + role=-1, + forms=None, + return_raw=False): + """ + format the evaluation results from trainer.ctx.eval_results + + Args: + results (dict): a dict to store the evaluation results {metric: value} + rnd (int|string): FL round + role (int|string): the output role + forms (list): format type + return_raw (bool): return either raw results, or other results + + Returns: + round_formatted_results (dict): a formatted results with different forms and roles, + e.g., + { + 'Role': 'Server #', + 'Round': 200, + 'Results_weighted_avg': { + 'test_avg_loss': 0.58, 'test_acc': 0.67, 'test_correct': 3356, 'test_loss': 2892, 'test_total': 5000 + }, + 'Results_avg': { + 'test_avg_loss': 0.57, 'test_acc': 0.67, 'test_correct': 3356, 'test_loss': 2892, 'test_total': 5000 + }, + 'Results_fairness': { + 'test_correct': 3356, 'test_total': 5000, + 'test_avg_loss_std': 0.04, 'test_avg_loss_bottom_decile': 0.52, 'test_avg_loss_top_decile': 0.64, + 'test_acc_std': 0.06, 'test_acc_bottom_decile': 0.60, 'test_acc_top_decile': 0.75, + 'test_loss_std': 214.17, 'test_loss_bottom_decile': 2644.64, 'test_loss_top_decile': 3241.23 + }, + } + """ + if forms is None: + forms = ['weighted_avg', 'avg', 'fairness', 'raw'] + round_formatted_results = {'Role': role, 'Round': rnd} + round_formatted_results_raw = {'Role': role, 'Round': rnd} + for form in forms: + new_results = copy.deepcopy(results) + if not role.lower().startswith('server') or form == 'raw': + round_formatted_results_raw['Results_raw'] = new_results + elif form not in Monitor.SUPPORTED_FORMS: + continue + else: + for key in results.keys(): + dataset_name = key.split("_")[0] + if f'{dataset_name}_total' not in results: + raise ValueError( + "Results to be formatted should be include the dataset_num in the dict," + f"with key = {dataset_name}_total") + else: + dataset_num = np.array( + results[f'{dataset_name}_total']) + if key in [ + f'{dataset_name}_total', + f'{dataset_name}_correct' + ]: + new_results[key] = np.mean(new_results[key]) + + if key in [ + f'{dataset_name}_total', f'{dataset_name}_correct' + ]: + new_results[key] = np.mean(new_results[key]) + else: + all_res = np.array(copy.copy(results[key])) + if form == 'weighted_avg': + new_results[key] = np.sum( + np.array(new_results[key]) * + dataset_num) / np.sum(dataset_num) + if form == "avg": + new_results[key] = np.mean(new_results[key]) + if form == "fairness" and all_res.size > 1: + # by default, log the std and decile + new_results.pop( + key, None) # delete the redundant original one + all_res.sort() + new_results[f"{key}_std"] = np.std( + np.array(all_res)) + new_results[f"{key}_bottom_decile"] = all_res[ + all_res.size // 10] + new_results[f"{key}_top_decile"] = all_res[ + all_res.size * 9 // 10] + round_formatted_results[f'Results_{form}'] = new_results + + with open(os.path.join(self.outdir, "eval_results.raw"), + "a") as outfile: + outfile.write(str(round_formatted_results_raw) + "\n") + + return round_formatted_results_raw if return_raw else round_formatted_results + + def calc_blocal_dissim(self, last_model, local_updated_models): + ''' + Arguments: + last_model (dict): the state of last round. + local_updated_models (list): each element is ooxx. + Returns: + b_local_dissimilarity (dict): the measurements proposed in + "Tian Li, Anit Kumar Sahu, Manzil Zaheer, and et al. Federated Optimization in Heterogeneous Networks". + ''' + # for k, v in last_model.items(): + # print(k, v) + # for i, elem in enumerate(local_updated_models): + # print(i, elem) + local_grads = [] + weights = [] + local_gnorms = [] + for tp in local_updated_models: + weights.append(tp[0]) + grads = dict() + gnorms = dict() + for k, v in tp[1].items(): + grad = v - last_model[k] + grads[k] = grad + gnorms[k] = torch.sum(grad**2) + local_grads.append(grads) + local_gnorms.append(gnorms) + weights = np.asarray(weights) + weights = weights / np.sum(weights) + avg_gnorms = dict() + global_grads = dict() + for i in range(len(local_updated_models)): + gnorms = local_gnorms[i] + for k, v in gnorms.items(): + if k not in avg_gnorms: + avg_gnorms[k] = .0 + avg_gnorms[k] += weights[i] * v + grads = local_grads[i] + for k, v in grads.items(): + if k not in global_grads: + global_grads[k] = torch.zeros_like(v) + global_grads[k] += weights[i] * v + b_local_dissimilarity = dict() + for k in avg_gnorms: + b_local_dissimilarity[k] = np.sqrt( + avg_gnorms[k].item() / torch.sum(global_grads[k]**2).item()) + return b_local_dissimilarity + + def track_model_size(self, models): + """ + calculate the total model size given the models hold by the worker/trainer + + :param models: torch.nn.Module or list of torch.nn.Module + :return: + """ + if self.total_model_size != 0: + logger.warning( + "the total_model_size is not zero. You may have been calculated the total_model_size before" + ) + + if not hasattr(models, '__iter__'): + models = [models] + for model in models: + assert isinstance(model, torch.nn.Module), \ + f"the `model` should be type torch.nn.Module when calculating its size, but got {type(model)}" + for name, para in model.named_parameters(): + self.total_model_size += para.numel() + + def track_avg_flops(self, flops, sample_num=1): + """ + update the average flops for forwarding each data sample, for most models and tasks, + the averaging is not needed as the input shape is fixed + + :param flops: flops/ + :param sample_num: + :return: + """ + + self.flops_per_sample = (self.flops_per_sample * self.flop_count + + flops) / (self.flop_count + sample_num) + self.flop_count += 1 + + def track_upload_bytes(self, bytes): + self.total_upload_bytes += bytes + + def track_download_bytes(self, bytes): + self.total_download_bytes += bytes + + +def update_best_result(best_results, + new_results, + results_type, + round_wise_update_key="val_loss"): + """ + update best evaluation results. + by default, the update is based on validation loss with `round_wise_update_key="val_loss" ` + """ + update_best_this_round = False + if not isinstance(new_results, dict): + raise ValueError( + f"update best results require `results` a dict, but got {type(new_results)}" + ) + else: + if results_type not in best_results: + best_results[results_type] = dict() + best_result = best_results[results_type] + # update different keys separately: the best values can be in different rounds + if round_wise_update_key is None: + for key in new_results: + cur_result = new_results[key] + if 'loss' in key or 'std' in key: # the smaller, the better + if results_type == "client_individual": + cur_result = min(cur_result) + if key not in best_result or cur_result < best_result[key]: + best_result[key] = cur_result + update_best_this_round = True + + elif 'acc' in key: # the larger, the better + if results_type == "client_individual": + cur_result = max(cur_result) + if key not in best_result or cur_result > best_result[key]: + best_result[key] = cur_result + update_best_this_round = True + else: + # unconcerned metric + pass + # update different keys round-wise: if find better round_wise_update_key, update others at the same time + else: + if round_wise_update_key not in [ + "val_loss", "val_acc", "val_std", "test_loss", "test_acc", + "test_std", "test_avg_loss", "loss" + ]: + raise NotImplementedError( + f"We currently support round_wise_update_key as one of " + f"['val_loss', 'val_acc', 'val_std', 'test_loss', 'test_acc', 'test_std'] " + f"for round-wise best results update, but got {round_wise_update_key}." + ) + + found_round_wise_update_key = False + sorted_keys = [] + for key in new_results: + if round_wise_update_key in key: + sorted_keys.insert(0, key) + found_round_wise_update_key = True + else: + sorted_keys.append(key) + if not found_round_wise_update_key: + raise ValueError( + "Your specified eval.best_res_update_round_wise_key is not in target results, " + "use another key or check the name. \n" + f"Got eval.best_res_update_round_wise_key={round_wise_update_key}, " + f"the keys of results are {list(new_results.keys())}") + + for key in sorted_keys: + cur_result = new_results[key] + if update_best_this_round or \ + ('loss' in round_wise_update_key and 'loss' in key) or \ + ('std' in round_wise_update_key and 'std' in key): + # The smaller the better + if results_type == "client_individual": + cur_result = min(cur_result) + if update_best_this_round or \ + key not in best_result or cur_result < best_result[key]: + best_result[key] = cur_result + update_best_this_round = True + elif update_best_this_round or \ + 'acc' in round_wise_update_key and 'acc' in key: + # The larger the better + if results_type == "client_individual": + cur_result = max(cur_result) + if update_best_this_round or \ + key not in best_result or cur_result > best_result[key]: + best_result[key] = cur_result + update_best_this_round = True + else: + # unconcerned metric + pass + + if update_best_this_round: + logger.info(f"Find new best result: {best_results}") diff --git a/federatedscope/core/optimizer.py b/federatedscope/core/optimizer.py new file mode 100644 index 000000000..0736e245d --- /dev/null +++ b/federatedscope/core/optimizer.py @@ -0,0 +1,56 @@ +import copy +from typing import Dict, List + + +def wrap_regularized_optimizer(base_optimizer, regular_weight): + base_optimizer_type = type(base_optimizer) + internal_base_optimizer = copy.copy( + base_optimizer) # shallow copy to link the underlying model para + + class ParaRegularOptimizer(base_optimizer_type): + """ + Regularization-based optimizer wrapper + """ + def __init__(self, base_optimizer, regular_weight): + # inherit all the attributes of base optimizer + self.__dict__.update(base_optimizer.__dict__) + + # attributes used in the wrapper + self.optimizer = base_optimizer # internal torch optimizer + self.param_groups = self.optimizer.param_groups # link the para of internal optimizer with the wrapper + self.regular_weight = regular_weight + self.compared_para_groups = None + + def set_compared_para_group(self, compared_para_dict: List[Dict]): + if not (isinstance(compared_para_dict, list) + and isinstance(compared_para_dict[0], dict) + and 'params' in compared_para_dict[0]): + raise ValueError( + f"compared_para_dict should be a torch style para group, i.e., list[dict], " + f"in which the dict stores the para with key `params`") + self.compared_para_groups = copy.deepcopy(compared_para_dict) + + def reset_compared_para_group(self, target=None): + # by default, del stale compared_para to free memory + self.compared_para_groups = target + + def regularize_by_para_diff(self): + """ + before optim.step(), regularize the gradients based on para diff + """ + for group, compared_group in zip(self.param_groups, + self.compared_para_groups): + for p, compared_weight in zip(group['params'], + compared_group['params']): + if p.grad is not None: + if compared_weight.device != p.device: + # For Tensor, the to() is not in-place operation + compared_weight = compared_weight.to(p.device) + p.grad.data = p.grad.data + self.regular_weight * ( + p.data - compared_weight.data) + + def step(self): + self.regularize_by_para_diff() # key action + self.optimizer.step() + + return ParaRegularOptimizer(internal_base_optimizer, regular_weight) diff --git a/federatedscope/core/optimizers/__init__.py b/federatedscope/core/optimizers/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/federatedscope/core/proto/__init__.py b/federatedscope/core/proto/__init__.py new file mode 100644 index 000000000..4deaa8ea3 --- /dev/null +++ b/federatedscope/core/proto/__init__.py @@ -0,0 +1,2 @@ +from federatedscope.core.proto.gRPC_comm_manager_pb2 import * +from federatedscope.core.proto.gRPC_comm_manager_pb2_grpc import * diff --git a/federatedscope/core/proto/gRPC_comm_manager_pb2.py b/federatedscope/core/proto/gRPC_comm_manager_pb2.py new file mode 100644 index 000000000..94c80799c --- /dev/null +++ b/federatedscope/core/proto/gRPC_comm_manager_pb2.py @@ -0,0 +1,130 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: gRPC_comm_manager.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x17gRPC_comm_manager.proto\"n\n\x0eMessageRequest\x12%\n\x03msg\x18\x01 \x03(\x0b\x32\x18.MessageRequest.MsgEntry\x1a\x35\n\x08MsgEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x18\n\x05value\x18\x02 \x01(\x0b\x32\t.MsgValue:\x02\x38\x01\"j\n\x08MsgValue\x12\x1e\n\nsingle_msg\x18\x01 \x01(\x0b\x32\x08.mSingleH\x00\x12\x1a\n\x08list_msg\x18\x02 \x01(\x0b\x32\x06.mListH\x00\x12\x1a\n\x08\x64ict_msg\x18\x03 \x01(\x0b\x32\x06.mDictH\x00\x42\x06\n\x04type\"R\n\x07mSingle\x12\x15\n\x0b\x66loat_value\x18\x01 \x01(\x02H\x00\x12\x13\n\tint_value\x18\x02 \x01(\x05H\x00\x12\x13\n\tstr_value\x18\x03 \x01(\tH\x00\x42\x06\n\x04type\"&\n\x05mList\x12\x1d\n\nlist_value\x18\x01 \x03(\x0b\x32\t.MsgValue\"o\n\x05mDict\x12)\n\ndict_value\x18\x01 \x03(\x0b\x32\x15.mDict.DictValueEntry\x1a;\n\x0e\x44ictValueEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x18\n\x05value\x18\x02 \x01(\x0b\x32\t.MsgValue:\x02\x38\x01\"\x1e\n\x0fMessageResponse\x12\x0b\n\x03msg\x18\x01 \x01(\t2D\n\x10gRPCComServeFunc\x12\x30\n\x0bsendMessage\x12\x0f.MessageRequest\x1a\x10.MessageResponseb\x06proto3' +) + +_MESSAGEREQUEST = DESCRIPTOR.message_types_by_name['MessageRequest'] +_MESSAGEREQUEST_MSGENTRY = _MESSAGEREQUEST.nested_types_by_name['MsgEntry'] +_MSGVALUE = DESCRIPTOR.message_types_by_name['MsgValue'] +_MSINGLE = DESCRIPTOR.message_types_by_name['mSingle'] +_MLIST = DESCRIPTOR.message_types_by_name['mList'] +_MDICT = DESCRIPTOR.message_types_by_name['mDict'] +_MDICT_DICTVALUEENTRY = _MDICT.nested_types_by_name['DictValueEntry'] +_MESSAGERESPONSE = DESCRIPTOR.message_types_by_name['MessageResponse'] +MessageRequest = _reflection.GeneratedProtocolMessageType( + 'MessageRequest', + (_message.Message, ), + { + 'MsgEntry': _reflection.GeneratedProtocolMessageType( + 'MsgEntry', + (_message.Message, ), + { + 'DESCRIPTOR': _MESSAGEREQUEST_MSGENTRY, + '__module__': 'gRPC_comm_manager_pb2' + # @@protoc_insertion_point(class_scope:MessageRequest.MsgEntry) + }), + 'DESCRIPTOR': _MESSAGEREQUEST, + '__module__': 'gRPC_comm_manager_pb2' + # @@protoc_insertion_point(class_scope:MessageRequest) + }) +_sym_db.RegisterMessage(MessageRequest) +_sym_db.RegisterMessage(MessageRequest.MsgEntry) + +MsgValue = _reflection.GeneratedProtocolMessageType( + 'MsgValue', + (_message.Message, ), + { + 'DESCRIPTOR': _MSGVALUE, + '__module__': 'gRPC_comm_manager_pb2' + # @@protoc_insertion_point(class_scope:MsgValue) + }) +_sym_db.RegisterMessage(MsgValue) + +mSingle = _reflection.GeneratedProtocolMessageType( + 'mSingle', + (_message.Message, ), + { + 'DESCRIPTOR': _MSINGLE, + '__module__': 'gRPC_comm_manager_pb2' + # @@protoc_insertion_point(class_scope:mSingle) + }) +_sym_db.RegisterMessage(mSingle) + +mList = _reflection.GeneratedProtocolMessageType( + 'mList', + (_message.Message, ), + { + 'DESCRIPTOR': _MLIST, + '__module__': 'gRPC_comm_manager_pb2' + # @@protoc_insertion_point(class_scope:mList) + }) +_sym_db.RegisterMessage(mList) + +mDict = _reflection.GeneratedProtocolMessageType( + 'mDict', + (_message.Message, ), + { + 'DictValueEntry': _reflection.GeneratedProtocolMessageType( + 'DictValueEntry', + (_message.Message, ), + { + 'DESCRIPTOR': _MDICT_DICTVALUEENTRY, + '__module__': 'gRPC_comm_manager_pb2' + # @@protoc_insertion_point(class_scope:mDict.DictValueEntry) + }), + 'DESCRIPTOR': _MDICT, + '__module__': 'gRPC_comm_manager_pb2' + # @@protoc_insertion_point(class_scope:mDict) + }) +_sym_db.RegisterMessage(mDict) +_sym_db.RegisterMessage(mDict.DictValueEntry) + +MessageResponse = _reflection.GeneratedProtocolMessageType( + 'MessageResponse', + (_message.Message, ), + { + 'DESCRIPTOR': _MESSAGERESPONSE, + '__module__': 'gRPC_comm_manager_pb2' + # @@protoc_insertion_point(class_scope:MessageResponse) + }) +_sym_db.RegisterMessage(MessageResponse) + +_GRPCCOMSERVEFUNC = DESCRIPTOR.services_by_name['gRPCComServeFunc'] +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _MESSAGEREQUEST_MSGENTRY._options = None + _MESSAGEREQUEST_MSGENTRY._serialized_options = b'8\001' + _MDICT_DICTVALUEENTRY._options = None + _MDICT_DICTVALUEENTRY._serialized_options = b'8\001' + _MESSAGEREQUEST._serialized_start = 27 + _MESSAGEREQUEST._serialized_end = 137 + _MESSAGEREQUEST_MSGENTRY._serialized_start = 84 + _MESSAGEREQUEST_MSGENTRY._serialized_end = 137 + _MSGVALUE._serialized_start = 139 + _MSGVALUE._serialized_end = 245 + _MSINGLE._serialized_start = 247 + _MSINGLE._serialized_end = 329 + _MLIST._serialized_start = 331 + _MLIST._serialized_end = 369 + _MDICT._serialized_start = 371 + _MDICT._serialized_end = 482 + _MDICT_DICTVALUEENTRY._serialized_start = 423 + _MDICT_DICTVALUEENTRY._serialized_end = 482 + _MESSAGERESPONSE._serialized_start = 484 + _MESSAGERESPONSE._serialized_end = 514 + _GRPCCOMSERVEFUNC._serialized_start = 516 + _GRPCCOMSERVEFUNC._serialized_end = 584 +# @@protoc_insertion_point(module_scope) diff --git a/federatedscope/core/proto/gRPC_comm_manager_pb2_grpc.py b/federatedscope/core/proto/gRPC_comm_manager_pb2_grpc.py new file mode 100644 index 000000000..9a1bbeb41 --- /dev/null +++ b/federatedscope/core/proto/gRPC_comm_manager_pb2_grpc.py @@ -0,0 +1,68 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +import federatedscope.core.proto.gRPC_comm_manager_pb2 as gRPC__comm__manager__pb2 + + +class gRPCComServeFuncStub(object): + """Missing associated documentation comment in .proto file.""" + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.sendMessage = channel.unary_unary( + '/gRPCComServeFunc/sendMessage', + request_serializer=gRPC__comm__manager__pb2.MessageRequest. + SerializeToString, + response_deserializer=gRPC__comm__manager__pb2.MessageResponse. + FromString, + ) + + +class gRPCComServeFuncServicer(object): + """Missing associated documentation comment in .proto file.""" + def sendMessage(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_gRPCComServeFuncServicer_to_server(servicer, server): + rpc_method_handlers = { + 'sendMessage': grpc.unary_unary_rpc_method_handler( + servicer.sendMessage, + request_deserializer=gRPC__comm__manager__pb2.MessageRequest. + FromString, + response_serializer=gRPC__comm__manager__pb2.MessageResponse. + SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'gRPCComServeFunc', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler, )) + + +# This class is part of an EXPERIMENTAL API. +class gRPCComServeFunc(object): + """Missing associated documentation comment in .proto file.""" + @staticmethod + def sendMessage(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, target, '/gRPCComServeFunc/sendMessage', + gRPC__comm__manager__pb2.MessageRequest.SerializeToString, + gRPC__comm__manager__pb2.MessageResponse.FromString, options, + channel_credentials, insecure, call_credentials, compression, + wait_for_ready, timeout, metadata) diff --git a/federatedscope/core/regularizer/__init__.py b/federatedscope/core/regularizer/__init__.py new file mode 100644 index 000000000..5821bc72a --- /dev/null +++ b/federatedscope/core/regularizer/__init__.py @@ -0,0 +1 @@ +from federatedscope.core.regularizer.proximal_regularizer import * diff --git a/federatedscope/core/regularizer/proximal_regularizer.py b/federatedscope/core/regularizer/proximal_regularizer.py new file mode 100644 index 000000000..aab1eb058 --- /dev/null +++ b/federatedscope/core/regularizer/proximal_regularizer.py @@ -0,0 +1,39 @@ +from federatedscope.register import register_regularizer +try: + from torch.nn import Module + import torch +except ImportError: + Module = object + torch = None + +REGULARIZER_NAME = "proximal_regularizer" + + +class ProximalRegularizer(Module): + """Returns the norm of the specific weight update. + + Arguments: + p (int): The order of norm. + tensor_before: The original matrix or vector + tensor_after: The updated matrix or vector + + Returns: + Tensor: the norm of the given udpate. + """ + def __init__(self): + super(ProximalRegularizer, self).__init__() + + def forward(self, ctx, p=2): + norm = 0. + for w_init, w in zip(ctx.weight_init, ctx.model.parameters()): + norm += torch.pow(torch.norm(w - w_init, p), p) + return norm * 1. / float(p) + + +def call_proximal_regularizer(type): + if type == REGULARIZER_NAME: + regularizer = ProximalRegularizer + return regularizer + + +register_regularizer(REGULARIZER_NAME, call_proximal_regularizer) diff --git a/federatedscope/core/secret_sharing/__init__.py b/federatedscope/core/secret_sharing/__init__.py new file mode 100644 index 000000000..cf802c21f --- /dev/null +++ b/federatedscope/core/secret_sharing/__init__.py @@ -0,0 +1 @@ +from federatedscope.core.secret_sharing.secret_sharing import AdditiveSecretSharing diff --git a/federatedscope/core/secret_sharing/secret_sharing.py b/federatedscope/core/secret_sharing/secret_sharing.py new file mode 100644 index 000000000..5e7a22784 --- /dev/null +++ b/federatedscope/core/secret_sharing/secret_sharing.py @@ -0,0 +1,96 @@ +from abc import ABC, abstractmethod +import numpy as np +try: + import torch +except ImportError: + torch = None +from math import fmod + + +class SecretSharing(ABC): + def __init__(self): + pass + + @abstractmethod + def secret_split(self, secret): + pass + + @abstractmethod + def secret_reconstruct(self, secret_seq): + pass + + +class AdditiveSecretSharing(SecretSharing): + """ + AdditiveSecretSharing class, which can split a number into frames and recover it by summing up + """ + def __init__(self, shared_party_num, size=60): + super(SecretSharing, self).__init__() + assert shared_party_num > 1, "AdditiveSecretSharing require shared_party_num > 1" + self.shared_party_num = shared_party_num + self.maximum = 2**size + self.mod_number = 2 * self.maximum + 1 + self.epsilon = 1e8 + self.mod_funs = np.vectorize(lambda x: x % self.mod_number) + self.float2fixedpoint = np.vectorize(self._float2fixedpoint) + self.fixedpoint2float = np.vectorize(self._fixedpoint2float) + + def secret_split(self, secret): + """ + To split the secret into frames according to the shared_party_num + """ + if isinstance(secret, dict): + secret_list = [dict() for _ in range(self.shared_party_num)] + for key in secret: + for idx, each in enumerate(self.secret_split(secret[key])): + secret_list[idx][key] = each + return secret_list + + if isinstance(secret, list) or isinstance(secret, np.ndarray): + secret = np.asarray(secret) + shape = [self.shared_party_num - 1] + list(secret.shape) + elif isinstance(secret, torch.Tensor): + secret = secret.numpy() + shape = [self.shared_party_num - 1] + list(secret.shape) + else: + shape = [self.shared_party_num - 1] + + secret = self.float2fixedpoint(secret) + secret_seq = np.random.randint(low=0, high=self.mod_number, size=shape) + #last_seq = self.mod_funs(secret - self.mod_funs(np.sum(secret_seq, axis=0))) + last_seq = self.mod_funs(secret - + self.mod_funs(np.sum(secret_seq, axis=0))) + + secret_seq = np.append(secret_seq, + np.expand_dims(last_seq, axis=0), + axis=0) + return secret_seq + + def secret_reconstruct(self, secret_seq): + """ + To recover the secret + """ + assert len(secret_seq) == self.shared_party_num + merge_model = secret_seq[0].copy() + if isinstance(merge_model, dict): + for key in merge_model: + for idx in range(len(secret_seq)): + if idx == 0: + merge_model[key] = secret_seq[idx][key] + else: + merge_model[key] += secret_seq[idx][key] + merge_model[key] = self.fixedpoint2float(merge_model[key]) + + return merge_model + + def _float2fixedpoint(self, x): + x = round(x * self.epsilon, 0) + assert abs(x) < self.maximum + return x % self.mod_number + + def _fixedpoint2float(self, x): + x = x % self.mod_number + if x > self.maximum: + return -1 * (self.mod_number - x) / self.epsilon + else: + return x / self.epsilon diff --git a/federatedscope/core/splitters/__init__.py b/federatedscope/core/splitters/__init__.py new file mode 100644 index 000000000..f8e91f237 --- /dev/null +++ b/federatedscope/core/splitters/__init__.py @@ -0,0 +1,3 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division diff --git a/federatedscope/core/splitters/generic/__init__.py b/federatedscope/core/splitters/generic/__init__.py new file mode 100644 index 000000000..a01edd0da --- /dev/null +++ b/federatedscope/core/splitters/generic/__init__.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from federatedscope.core.splitters.generic.lda_splitter import LDASplitter + +__all__ = ['LDASplitter'] \ No newline at end of file diff --git a/federatedscope/core/splitters/generic/lda_splitter.py b/federatedscope/core/splitters/generic/lda_splitter.py new file mode 100644 index 000000000..797d4e810 --- /dev/null +++ b/federatedscope/core/splitters/generic/lda_splitter.py @@ -0,0 +1,22 @@ +import numpy as np +from federatedscope.core.splitters.utils import dirichlet_distribution_noniid_slice + + +class LDASplitter(object): + def __init__(self, client_num, alpha=0.5): + self.client_num = client_num + self.alpha = alpha + + def __call__(self, dataset, prior=None): + dataset = [ds for ds in dataset] + label = np.array([y for x, y in dataset]) + idx_slice = dirichlet_distribution_noniid_slice(label, + self.client_num, + self.alpha, + prior=prior) + data_list = [[dataset[idx] for idx in idxs] for idxs in idx_slice] + return data_list + + def __repr__(self): + return f'{self.__class__.__name__}(client_num={self.client_num}, ' \ + f'alpha={self.alpha})' diff --git a/federatedscope/core/splitters/graph/__init__.py b/federatedscope/core/splitters/graph/__init__.py new file mode 100644 index 000000000..3c1a35bdf --- /dev/null +++ b/federatedscope/core/splitters/graph/__init__.py @@ -0,0 +1,20 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from federatedscope.core.splitters.graph.louvain_splitter import LouvainSplitter +from federatedscope.core.splitters.graph.random_splitter import RandomSplitter + +from federatedscope.core.splitters.graph.reltype_splitter import RelTypeSplitter + +from federatedscope.core.splitters.graph.scaffold_splitter import ScaffoldSplitter +from federatedscope.core.splitters.graph.graphtype_splitter import GraphTypeSplitter +from federatedscope.core.splitters.graph.randchunk_splitter import RandChunkSplitter + +from federatedscope.core.splitters.graph.analyzer import Analyzer +from federatedscope.core.splitters.graph.scaffold_lda_splitter import ScaffoldLdaSplitter + +__all__ = [ + 'LouvainSplitter', 'RandomSplitter', 'RelTypeSplitter', 'ScaffoldSplitter', + 'GraphTypeSplitter', 'RandChunkSplitter', 'Analyzer', 'ScaffoldLdaSplitter' +] diff --git a/federatedscope/core/splitters/graph/analyzer.py b/federatedscope/core/splitters/graph/analyzer.py new file mode 100644 index 000000000..b131d5393 --- /dev/null +++ b/federatedscope/core/splitters/graph/analyzer.py @@ -0,0 +1,181 @@ +import torch + +from typing import List +from torch_geometric.data import Data +from torch_geometric.utils import to_networkx, to_dense_adj, dense_to_sparse + + +class Analyzer(object): + r"""Analyzer for raw graph and split subgraphs. + + Arguments: + raw_data (PyG.data): raw graph. + split_data (list): the list for subgraphs split by splitter. + + """ + def __init__(self, raw_data: Data, split_data: List[Data]): + + self.raw_data = raw_data + self.split_data = split_data + + self.raw_graph = to_networkx(raw_data, to_undirected=True) + self.sub_graphs = [ + to_networkx(g, to_undirected=True) for g in split_data + ] + + def num_missing_edge(self): + r""" + + Returns: + the number of missing edge and the rate of missing edge. + + """ + missing_edge = len(self.raw_graph.edges) - self.fl_adj().shape[1] // 2 + rate_missing_edge = missing_edge / len(self.raw_graph.edges) + + return missing_edge, rate_missing_edge + + def fl_adj(self): + r""" + + Returns: + the adj for missing edge ADJ. + + """ + raw_adj = to_dense_adj(self.raw_data.edge_index)[0] + adj = torch.zeros_like(raw_adj) + if 'index_orig' in self.split_data[0]: + for sub_g in self.split_data: + for row, col in sub_g.edge_index.T: + adj[sub_g.index_orig[row.item()]][sub_g.index_orig[ + col.item()]] = 1 + + else: + raise KeyError(f'index_orig not in Split Data.') + + return dense_to_sparse(adj)[0] + + def fl_data(self): + r""" + + Returns: + the split edge index. + + """ + fl_data = Data() + for key, item in self.raw_data: + if key == 'edge_index': + fl_data[key] = self.fl_adj() + else: + fl_data[key] = item + + return fl_data + + def missing_data(self): + r""" + + Returns: + the graph data built by missing edge index. + + """ + ms_data = Data() + raw_edge_set = {tuple(x) for x in self.raw_data.edge_index.T.numpy()} + split_edge_set = { + tuple(x) + for x in self.fl_data().edge_index.T.numpy() + } + ms_set = raw_edge_set - split_edge_set + for key, item in self.raw_data: + if key == 'edge_index': + ms_data[key] = torch.tensor([list(x) for x in ms_set], + dtype=torch.int64).T + else: + ms_data[key] = item + + return ms_data + + def portion_ms_node(self): + r""" + + Returns: + the proportion of nodes who miss egde. + + """ + cnt_list = [] + ms_set = {x.item() for x in set(self.missing_data().edge_index[0])} + for sub_data in self.split_data: + cnt = 0 + for idx in sub_data.index_orig: + if idx.item() in ms_set: + cnt += 1 + cnt_list.append(cnt / sub_data.num_nodes) + return cnt_list + + def average_clustering(self): + r""" + + Returns: + the average clustering coefficient for the raw G and split G + + """ + import networkx.algorithms.cluster as cluster + + return cluster.average_clustering( + self.raw_graph), cluster.average_clustering( + to_networkx(self.fl_data())) + + def homophily_value(self, edge_index, y): + r""" + + Returns: + calculate homophily_value + + """ + from torch_sparse import SparseTensor + + if isinstance(edge_index, SparseTensor): + row, col, _ = edge_index.coo() + else: + row, col = edge_index + + return int((y[row] == y[col]).sum()) / row.size(0) + + def homophily(self): + r""" + + Returns: + the homophily for the raw G and split G + + """ + + return self.homophily_value(self.raw_data.edge_index, + self.raw_data.y), self.homophily_value( + self.fl_data().edge_index, + self.fl_data().y) + + def hamming_distance_graph(self, data): + r""" + + Returns: + calculate the hamming distance of graph data + + """ + edge_index, x = data.edge_index, data.x + cnt = 0 + for row, col in edge_index.T: + row, col = row.item(), col.item() + cnt += torch.sum(x[row] != x[col]).item() + + return cnt / edge_index.shape[1] + + def hamming(self): + r""" + + Returns: + the average hamming distance of feature for the raw G, split G and missing edge G + + """ + return self.hamming_distance_graph( + self.raw_data), self.hamming_distance_graph( + self.fl_data()), self.hamming_distance_graph( + self.missing_data()) \ No newline at end of file diff --git a/federatedscope/core/splitters/graph/graphtype_splitter.py b/federatedscope/core/splitters/graph/graphtype_splitter.py new file mode 100644 index 000000000..a40bcfe8b --- /dev/null +++ b/federatedscope/core/splitters/graph/graphtype_splitter.py @@ -0,0 +1,27 @@ +import numpy as np +from federatedscope.core.splitters.utils import dirichlet_distribution_noniid_slice + + +class GraphTypeSplitter: + def __init__(self, client_num, alpha=0.5): + self.client_num = client_num + self.alpha = alpha + + def __call__(self, dataset): + r"""Split dataset via dirichlet distribution to generate non-i.i.d data split. + + Arguments: + dataset (List or PyG.dataset): The datasets. + + Returns: + data_list (List(List(PyG.data))): Splited dataset via dirichlet. + """ + dataset = [ds for ds in dataset] + label = np.array([ds.y.item() for ds in dataset]) + idx_slice = dirichlet_distribution_noniid_slice( + label, self.client_num, self.alpha) + data_list = [[dataset[idx] for idx in idxs] for idxs in idx_slice] + return data_list + + def __repr__(self): + return f'{self.__class__.__name__}()' diff --git a/federatedscope/core/splitters/graph/louvain_splitter.py b/federatedscope/core/splitters/graph/louvain_splitter.py new file mode 100644 index 000000000..50319dce6 --- /dev/null +++ b/federatedscope/core/splitters/graph/louvain_splitter.py @@ -0,0 +1,77 @@ +import torch + +from torch_geometric.transforms import BaseTransform +from torch_geometric.utils import to_networkx, to_undirected, from_networkx + +import networkx as nx +import community as community_louvain + + +class LouvainSplitter(BaseTransform): + r""" + Split Data into small data via louvain algorithm. + + Args: + client_num (int): Split data into client_num of pieces. + delta (int): The gap between the number of nodes on the each client. + + """ + def __init__(self, client_num, delta=20): + self.client_num = client_num + self.delta = delta + + def __call__(self, data): + + data.index_orig = torch.arange(data.num_nodes) + G = to_networkx( + data, + node_attrs=['x', 'y', 'train_mask', 'val_mask', 'test_mask'], + to_undirected=True) + nx.set_node_attributes(G, + dict([(nid, nid) + for nid in range(nx.number_of_nodes(G))]), + name="index_orig") + partition = community_louvain.best_partition(G) + + cluster2node = {} + for node in partition: + cluster = partition[node] + if cluster not in cluster2node: + cluster2node[cluster] = [node] + else: + cluster2node[cluster].append(node) + + max_len = len(G) // self.client_num - self.delta + max_len_client = len(G) // self.client_num + + tmp_cluster2node = {} + for cluster in cluster2node: + while len(cluster2node[cluster]) > max_len: + tmp_cluster = cluster2node[cluster][:max_len] + tmp_cluster2node[len(cluster2node) + len(tmp_cluster2node) + + 1] = tmp_cluster + cluster2node[cluster] = cluster2node[cluster][max_len:] + cluster2node.update(tmp_cluster2node) + + orderedc2n = (zip(cluster2node.keys(), cluster2node.values())) + orderedc2n = sorted(orderedc2n, key=lambda x: len(x[1]), reverse=True) + + client_node_idx = {idx: [] for idx in range(self.client_num)} + client_list = [idx for idx in range(self.client_num)] + idx = 0 + for (cluster, node_list) in orderedc2n: + while len(node_list) + len( + client_node_idx[idx]) > max_len_client + self.delta: + idx = (idx + 1) % self.client_num + client_node_idx[idx] += node_list + idx = (idx + 1) % self.client_num + + graphs = [] + for owner in client_node_idx: + nodes = client_node_idx[owner] + graphs.append(from_networkx(nx.subgraph(G, nodes))) + + return graphs + + def __repr__(self): + return f'{self.__class__.__name__}({self.client_num})' diff --git a/federatedscope/core/splitters/graph/randchunk_splitter.py b/federatedscope/core/splitters/graph/randchunk_splitter.py new file mode 100644 index 000000000..af7d56ffd --- /dev/null +++ b/federatedscope/core/splitters/graph/randchunk_splitter.py @@ -0,0 +1,35 @@ +import numpy as np + + +class RandChunkSplitter: + def __init__(self, client_num): + self.client_num = client_num + + def __call__(self, dataset): + r"""Split dataset via random chunk. + + Arguments: + dataset (List or PyG.dataset): The datasets. + + Returns: + data_list (List(List(PyG.data))): Splited dataset via random chunk split. + """ + data_list = [] + dataset = [ds for ds in dataset] + num_graph = len(dataset) + + # Split dataset + num_graph = len(dataset) + min_size = min(50, int(num_graph / self.client_num)) + + for i in range(self.client_num): + data_list.append(dataset[i * min_size:(i + 1) * min_size]) + for graph in dataset[self.client_num * min_size:]: + client_idx = np.random.randint(low=0, high=self.client_num, + size=1)[0] + data_list[client_idx].append(graph) + + return data_list + + def __repr__(self): + return f'{self.__class__.__name__}()' diff --git a/federatedscope/core/splitters/graph/random_splitter.py b/federatedscope/core/splitters/graph/random_splitter.py new file mode 100644 index 000000000..8f6cbcc4b --- /dev/null +++ b/federatedscope/core/splitters/graph/random_splitter.py @@ -0,0 +1,106 @@ +import torch + +from torch_geometric.transforms import BaseTransform +from torch_geometric.utils import to_networkx, from_networkx + +import numpy as np +import networkx as nx + +EPSILON = 1e-5 + + +class RandomSplitter(BaseTransform): + r""" + Split Data into small data via random sampling. + + Args: + client_num (int): Split data into client_num of pieces. + sampling_rate (str): Samples of the unique nodes for each client, eg. '0.2,0.2,0.2'. + overlapping_rate(float): Additional samples of overlapping data, eg. '0.4' + drop_edge(float): Drop edges (drop_edge / client_num) for each client whthin overlapping part. + + """ + def __init__(self, + client_num, + sampling_rate=None, + overlapping_rate=0, + drop_edge=0): + + self.ovlap = overlapping_rate + + if sampling_rate is not None: + self.sampling_rate = np.array( + [float(val) for val in sampling_rate.split(',')]) + else: + # Default: Average + self.sampling_rate = (np.ones(client_num) - + self.ovlap) / client_num + + if len(self.sampling_rate) != client_num: + raise ValueError( + f'The client_num ({client_num}) should be equal to the lenghth of sampling_rate and overlapping_rate.' + ) + + if abs((sum(self.sampling_rate) + self.ovlap) - 1) > EPSILON: + raise ValueError( + f'The sum of sampling_rate:{self.sampling_rate} and overlapping_rate({self.ovlap}) should be 1.' + ) + + self.client_num = client_num + self.drop_edge = drop_edge + + def __call__(self, data, prior): + + data.index_orig = torch.arange(data.num_nodes) + G = to_networkx( + data, + node_attrs=['x', 'y', 'train_mask', 'val_mask', 'test_mask'], + to_undirected=True) + nx.set_node_attributes(G, + dict([(nid, nid) + for nid in range(nx.number_of_nodes(G))]), + name="index_orig") + + client_node_idx = {idx: [] for idx in range(self.client_num)} + + indices = np.random.permutation(data.num_nodes) + sum_rate = 0 + for idx, rate in enumerate(self.sampling_rate): + client_node_idx[idx] = indices[round(sum_rate * + data.num_nodes):round( + (sum_rate + rate) * + data.num_nodes)] + sum_rate += rate + + if self.ovlap: + ovlap_nodes = indices[round(sum_rate * data.num_nodes):] + for idx in client_node_idx: + client_node_idx[idx] = np.concatenate( + (client_node_idx[idx], ovlap_nodes)) + + # Drop_edge index for each client + if self.drop_edge: + ovlap_graph = nx.Graph(nx.subgraph(G, ovlap_nodes)) + ovlap_edge_ind = np.random.permutation( + ovlap_graph.number_of_edges()) + drop_all = ovlap_edge_ind[:round(ovlap_graph.number_of_edges() * + self.drop_edge)] + drop_client = [ + drop_all[s:s + round(len(drop_all) / self.client_num)] + for s in range(0, len(drop_all), + round(len(drop_all) / self.client_num)) + ] + + graphs = [] + for owner in client_node_idx: + nodes = client_node_idx[owner] + sub_g = nx.Graph(nx.subgraph(G, nodes)) + if self.drop_edge: + sub_g.remove_edges_from( + np.array(ovlap_graph.edges)[drop_client[owner]]) + graphs.append(from_networkx(sub_g)) + + return graphs + + def __repr__(self): + return f'{self.__class__.__name__}({self.client_num})' diff --git a/federatedscope/core/splitters/graph/reltype_splitter.py b/federatedscope/core/splitters/graph/reltype_splitter.py new file mode 100644 index 000000000..7d38eb362 --- /dev/null +++ b/federatedscope/core/splitters/graph/reltype_splitter.py @@ -0,0 +1,67 @@ +import torch + +from torch_geometric.data import Data +from torch_geometric.utils import from_networkx, to_undirected +from torch_geometric.transforms import BaseTransform, RemoveIsolatedNodes + +from federatedscope.core.splitters.utils import dirichlet_distribution_noniid_slice + + +class RelTypeSplitter(BaseTransform): + r""" + Split Data into small data via dirichlet distribution to + generate non-i.i.d data split. + + Arguments: + client_num (int): Split data into client_num of pieces. + alpha (float): parameter controlling the identicalness among clients. + + """ + def __init__(self, client_num, alpha=0.5, realloc_mask=False): + self.client_num = client_num + self.alpha = alpha + self.realloc_mask = realloc_mask + + def __call__(self, data): + data_list = [] + label = data.edge_type.numpy() + idx_slice = dirichlet_distribution_noniid_slice( + label, self.client_num, self.alpha) + # Reallocation train/val/test mask + train_ratio = data.train_edge_mask.sum().item() / data.num_edges + valid_ratio = data.valid_edge_mask.sum().item() / data.num_edges + test_ratio = data.test_edge_mask.sum().item() / data.num_edges + for idx_j in idx_slice: + edge_index = data.edge_index.T[idx_j].T + edge_type = data.edge_type[idx_j] + train_edge_mask = data.train_edge_mask[idx_j] + valid_edge_mask = data.valid_edge_mask[idx_j] + test_edge_mask = data.test_edge_mask[idx_j] + if self.realloc_mask: + num_edges = edge_index.size(-1) + indices = torch.randperm(num_edges) + train_edge_mask = torch.zeros(num_edges, dtype=torch.bool) + train_edge_mask[indices[:round(train_ratio * + num_edges)]] = True + valid_edge_mask = torch.zeros(num_edges, dtype=torch.bool) + valid_edge_mask[ + indices[round(train_ratio * + num_edges):-round(test_ratio * + num_edges)]] = True + test_edge_mask = torch.zeros(num_edges, dtype=torch.bool) + test_edge_mask[indices[-round(test_ratio * num_edges):]] = True + sub_g = Data(x=data.x, + edge_index=edge_index, + index_orig=data.index_orig, + edge_type=edge_type, + train_edge_mask=train_edge_mask, + valid_edge_mask=valid_edge_mask, + test_edge_mask=test_edge_mask, + input_edge_index=to_undirected( + edge_index.T[train_edge_mask].T)) + data_list.append(sub_g) + + return data_list + + def __repr__(self): + return f'{self.__class__.__name__}({self.client_num})' diff --git a/federatedscope/core/splitters/graph/scaffold_lda_splitter.py b/federatedscope/core/splitters/graph/scaffold_lda_splitter.py new file mode 100644 index 000000000..da0e24a24 --- /dev/null +++ b/federatedscope/core/splitters/graph/scaffold_lda_splitter.py @@ -0,0 +1,178 @@ +import logging +import numpy as np +import torch + +from rdkit import Chem +from rdkit import RDLogger +from rdkit.Chem.Scaffolds import MurckoScaffold +from federatedscope.core.splitters.utils import dirichlet_distribution_noniid_slice +from federatedscope.core.splitters.graph.scaffold_splitter import generate_scaffold + +logger = logging.getLogger(__name__) + +RDLogger.DisableLog('rdApp.*') + + +class GenFeatures: + r"""Implementation of 'CanonicalAtomFeaturizer' and 'CanonicalBondFeaturizer' in DGL. + Source: https://lifesci.dgl.ai/_modules/dgllife/utils/featurizers.html + + Arguments: + data: PyG.data in PyG.dataset. + + Returns: + data: PyG.data, data passing featurizer. + + """ + def __init__(self): + self.symbols = [ + 'C', 'N', 'O', 'S', 'F', 'Si', 'P', 'Cl', 'Br', 'Mg', 'Na', 'Ca', + 'Fe', 'As', 'Al', 'I', 'B', 'V', 'K', 'Tl', 'Yb', 'Sb', 'Sn', 'Ag', + 'Pd', 'Co', 'Se', 'Ti', 'Zn', 'H', 'Li', 'Ge', 'Cu', 'Au', 'Ni', + 'Cd', 'In', 'Mn', 'Zr', 'Cr', 'Pt', 'Hg', 'Pb', 'other' + ] + + self.hybridizations = [ + Chem.rdchem.HybridizationType.SP, + Chem.rdchem.HybridizationType.SP2, + Chem.rdchem.HybridizationType.SP3, + Chem.rdchem.HybridizationType.SP3D, + Chem.rdchem.HybridizationType.SP3D2, + 'other', + ] + + self.stereos = [ + Chem.rdchem.BondStereo.STEREONONE, + Chem.rdchem.BondStereo.STEREOANY, + Chem.rdchem.BondStereo.STEREOZ, + Chem.rdchem.BondStereo.STEREOE, + Chem.rdchem.BondStereo.STEREOCIS, + Chem.rdchem.BondStereo.STEREOTRANS, + ] + + def __call__(self, data): + mol = Chem.MolFromSmiles(data.smiles) + + xs = [] + for atom in mol.GetAtoms(): + symbol = [0.] * len(self.symbols) + if atom.GetSymbol() in self.symbols: + symbol[self.symbols.index(atom.GetSymbol())] = 1. + else: + symbol[self.symbols.index('other')] = 1. + degree = [0.] * 10 + degree[atom.GetDegree()] = 1. + implicit = [0.] * 6 + implicit[atom.GetImplicitValence()] = 1. + formal_charge = atom.GetFormalCharge() + radical_electrons = atom.GetNumRadicalElectrons() + hybridization = [0.] * len(self.hybridizations) + if atom.GetHybridization() in self.hybridizations: + hybridization[self.hybridizations.index( + atom.GetHybridization())] = 1. + else: + hybridization[self.hybridizations.index('other')] = 1. + aromaticity = 1. if atom.GetIsAromatic() else 0. + hydrogens = [0.] * 5 + hydrogens[atom.GetTotalNumHs()] = 1. + + x = torch.tensor(symbol + degree + implicit + [formal_charge] + + [radical_electrons] + hybridization + + [aromaticity] + hydrogens) + xs.append(x) + + data.x = torch.stack(xs, dim=0) + + edge_attrs = [] + for bond in mol.GetBonds(): + bond_type = bond.GetBondType() + single = 1. if bond_type == Chem.rdchem.BondType.SINGLE else 0. + double = 1. if bond_type == Chem.rdchem.BondType.DOUBLE else 0. + triple = 1. if bond_type == Chem.rdchem.BondType.TRIPLE else 0. + aromatic = 1. if bond_type == Chem.rdchem.BondType.AROMATIC else 0. + conjugation = 1. if bond.GetIsConjugated() else 0. + ring = 1. if bond.IsInRing() else 0. + stereo = [0.] * 6 + stereo[self.stereos.index(bond.GetStereo())] = 1. + + edge_attr = torch.tensor( + [single, double, triple, aromatic, conjugation, ring] + stereo) + + edge_attrs += [edge_attr, edge_attr] + + if len(edge_attrs) == 0: + data.edge_index = torch.zeros((2, 0), dtype=torch.long) + data.edge_attr = torch.zeros((0, 10), dtype=torch.float) + else: + num_atoms = mol.GetNumAtoms() + feats = torch.stack(edge_attrs, dim=0) + feats = torch.cat([feats, torch.zeros(feats.shape[0], 1)], dim=1) + self_loop_feats = torch.zeros(num_atoms, feats.shape[1]) + self_loop_feats[:, -1] = 1 + feats = torch.cat([feats, self_loop_feats], dim=0) + data.edge_attr = feats + + return data + + +def gen_scaffold_lda_split(dataset, client_num=5, alpha=0.1): + r""" + return dict{ID:[idxs]} + """ + logger.info('Scaffold split might take minutes, please wait...') + scaffolds = {} + for idx, data in enumerate(dataset): + smiles = data.smiles + mol = Chem.MolFromSmiles(smiles) + scaffold = generate_scaffold(smiles) + if scaffold not in scaffolds: + scaffolds[scaffold] = [idx] + else: + scaffolds[scaffold].append(idx) + # Sort from largest to smallest scaffold sets + scaffolds = {key: sorted(value) for key, value in scaffolds.items()} + scaffold_list = [ + list(scaffold_set) + for (scaffold, + scaffold_set) in sorted(scaffolds.items(), + key=lambda x: (len(x[1]), x[1][0]), + reverse=True) + ] + label = np.zeros(len(dataset)) + for i in range(len(scaffold_list)): + label[scaffold_list[i]] = i + 1 + label = torch.LongTensor(label) + # Split data to list + idx_slice = dirichlet_distribution_noniid_slice(label, client_num, alpha) + return idx_slice + + +class ScaffoldLdaSplitter: + r"""First adopt scaffold splitting and then assign the samples to clients according to Latent Dirichlet Allocation. + + Arguments: + dataset (List or PyG.dataset): The molecular datasets. + alpha (float): Partition hyperparameter in LDA, smaller alpha generates more extreme heterogeneous scenario. + + Returns: + data_list (List(List(PyG.data))): Splited dataset via scaffold split. + + """ + def __init__(self, client_num, alpha): + self.client_num = client_num + self.alpha = alpha + + def __call__(self, dataset): + featurizer = GenFeatures() + data = [] + for ds in dataset: + ds = featurizer(ds) + data.append(ds) + dataset = data + idx_slice = gen_scaffold_lda_split(dataset, self.client_num, + self.alpha) + data_list = [[dataset[idx] for idx in idxs] for idxs in idx_slice] + return data_list + + def __repr__(self): + return f'{self.__class__.__name__}()' diff --git a/federatedscope/core/splitters/graph/scaffold_splitter.py b/federatedscope/core/splitters/graph/scaffold_splitter.py new file mode 100644 index 000000000..9e8eec40c --- /dev/null +++ b/federatedscope/core/splitters/graph/scaffold_splitter.py @@ -0,0 +1,58 @@ +import logging +import numpy as np +from rdkit import Chem +from rdkit import RDLogger +from rdkit.Chem.Scaffolds import MurckoScaffold + +logger = logging.getLogger(__name__) + +RDLogger.DisableLog('rdApp.*') + +def generate_scaffold(smiles, include_chirality=False): + """return scaffold string of target molecule""" + mol = Chem.MolFromSmiles(smiles) + scaffold = MurckoScaffold\ + .MurckoScaffoldSmiles(mol=mol, includeChirality=include_chirality) + return scaffold + + +def gen_scaffold_split(dataset, client_num=5): + r""" + return dict{ID:[idxs]} + """ + logger.info('Scaffold split might take minutes, please wait...') + scaffolds = {} + for idx, data in enumerate(dataset): + smiles = data.smiles + mol = Chem.MolFromSmiles(smiles) + scaffold = generate_scaffold(smiles) + if scaffold not in scaffolds: + scaffolds[scaffold] = [idx] + else: + scaffolds[scaffold].append(idx) + # Sort from largest to smallest scaffold sets + scaffolds = {key: sorted(value) for key, value in scaffolds.items()} + scaffold_list = [ + list(scaffold_set) + for (scaffold, + scaffold_set) in sorted(scaffolds.items(), + key=lambda x: (len(x[1]), x[1][0]), + reverse=True) + ] + scaffold_idxs = sum(scaffold_list, []) + # Split data to list + splits = np.array_split(scaffold_idxs, client_num) + return [splits[ID] for ID in range(client_num)] + +class ScaffoldSplitter: + def __init__(self, client_num): + self.client_num = client_num + + def __call__(self, dataset): + dataset = [ds for ds in dataset] + idx_slice = gen_scaffold_split(dataset) + data_list = [[dataset[idx] for idx in idxs] for idxs in idx_slice] + return data_list + + def __repr__(self): + return f'{self.__class__.__name__}()' diff --git a/federatedscope/core/splitters/utils.py b/federatedscope/core/splitters/utils.py new file mode 100644 index 000000000..62e46153a --- /dev/null +++ b/federatedscope/core/splitters/utils.py @@ -0,0 +1,130 @@ +# import numpy as np + +# def dirichlet_distribution_noniid_slice(label, client_num, alpha, min_size=10): +# r"""Get sample index list for each client from the Dirichlet distribution. +# https://github.com/FedML-AI/FedML/blob/master/fedml_core/non_iid_partition/noniid_partition.py + +# Arguments: +# label (np.array): Label list to be split. +# client_num (int): Split label into client_num parts. +# alpha (float): alpha of LDA. +# min_size (int): min number of sample in each client +# Returns: +# idx_slice (List): List of splited label index slice. +# """ +# if len(label.shape) != 1: +# raise ValueError('Only support single-label tasks!') +# num = len(label) +# classes = len(np.unique(label)) +# assert num > client_num * min_size, f'The number of sample should be greater than {client_num * min_size}.' +# size = 0 +# while size < min_size: +# idx_slice = [[] for _ in range(client_num)] +# for k in range(classes): +# # for label k +# idx_k = np.where(label == k)[0] +# np.random.shuffle(idx_k) +# prop = np.random.dirichlet(np.repeat(alpha, client_num)) +# prop = np.array([ +# p * (len(idx_j) < num / client_num) +# for p, idx_j in zip(prop, idx_slice) +# ]) +# prop = prop / sum(prop) +# prop = (np.cumsum(prop) * len(idx_k)).astype(int)[:-1] +# idx_slice = [ +# idx_j + idx.tolist() +# for idx_j, idx in zip(idx_slice, np.split(idx_k, prop)) +# ] +# size = min([len(idx_j) for idx_j in idx_slice]) +# for i in range(client_num): +# np.random.shuffle(idx_slice[i]) +# return idx_slice + +import numpy as np + + +def _split_according_to_prior(label, client_num, prior): + assert client_num == len(prior) + classes = len(np.unique(label)) + assert classes == len(np.unique(np.concatenate(prior, 0))) + + # counting + frequency = np.zeros(shape=(client_num, classes)) + for idx, client_prior in enumerate(prior): + for each in client_prior: + frequency[idx][each] += 1 + sum_frequency = np.sum(frequency, axis=0) + + idx_slice = [[] for _ in range(client_num)] + for k in range(classes): + idx_k = np.where(label == k)[0] + np.random.shuffle(idx_k) + nums_k = np.ceil(frequency[:, k] / sum_frequency[k] * + len(idx_k)).astype(int) + while len(idx_k) < np.sum(nums_k): + random_client = np.random.choice(range(client_num)) + if nums_k[random_client] > 0: + nums_k[random_client] -= 1 + assert len(idx_k) == np.sum(nums_k) + idx_slice = [ + idx_j + idx.tolist() for idx_j, idx in zip( + idx_slice, np.split(idx_k, + np.cumsum(nums_k)[:-1])) + ] + + for i in range(len(idx_slice)): + np.random.shuffle(idx_slice[i]) + return idx_slice + + +def dirichlet_distribution_noniid_slice(label, + client_num, + alpha, + min_size=1, + prior=None): + r"""Get sample index list for each client from the Dirichlet distribution. + https://github.com/FedML-AI/FedML/blob/master/fedml_core/non_iid + partition/noniid_partition.py + + Arguments: + label (np.array): Label list to be split. + client_num (int): Split label into client_num parts. + alpha (float): alpha of LDA. + min_size (int): min number of sample in each client + Returns: + idx_slice (List): List of splited label index slice. + """ + if len(label.shape) != 1: + raise ValueError('Only support single-label tasks!') + + if prior is not None: + return _split_according_to_prior(label, client_num, prior) + + num = len(label) + classes = len(np.unique(label)) + assert num > client_num * min_size, f'The number of sample should be ' \ + f'greater than' \ + f' {client_num * min_size}.' + size = 0 + while size < min_size: + idx_slice = [[] for _ in range(client_num)] + for k in range(classes): + # for label k + idx_k = np.where(label == k)[0] + np.random.shuffle(idx_k) + prop = np.random.dirichlet(np.repeat(alpha, client_num)) + # prop = np.array([ + # p * (len(idx_j) < num / client_num) + # for p, idx_j in zip(prop, idx_slice) + # ]) + # prop = prop / sum(prop) + # after commentting out this part, we may get more non-iid dataset for each client. + prop = (np.cumsum(prop) * len(idx_k)).astype(int)[:-1] + idx_slice = [ + idx_j + idx.tolist() + for idx_j, idx in zip(idx_slice, np.split(idx_k, prop)) + ] + size = min([len(idx_j) for idx_j in idx_slice]) + for i in range(client_num): + np.random.shuffle(idx_slice[i]) + return idx_slice diff --git a/federatedscope/core/strategy.py b/federatedscope/core/strategy.py new file mode 100644 index 000000000..5c4a80bdc --- /dev/null +++ b/federatedscope/core/strategy.py @@ -0,0 +1,23 @@ +import sys + + +class Strategy(object): + def __init__(self, stg_type=None, threshold=0): + self._stg_type = stg_type + self._threshold = threshold + + @property + def stg_type(self): + return self._stg_type + + @stg_type.setter + def stg_type(self, value): + self._stg_type = value + + @property + def threshold(self): + return self._threshold + + @threshold.setter + def threshold(self, value): + self._threshold = value diff --git a/federatedscope/core/trainers/__init__.py b/federatedscope/core/trainers/__init__.py new file mode 100644 index 000000000..c8cac5a89 --- /dev/null +++ b/federatedscope/core/trainers/__init__.py @@ -0,0 +1,18 @@ +from federatedscope.core.trainers.trainer import Trainer +from federatedscope.core.trainers.torch_trainer import GeneralTorchTrainer +from federatedscope.core.trainers.trainer_multi_model import GeneralMultiModelTrainer +from federatedscope.core.trainers.trainer_pFedMe import wrap_pFedMeTrainer +from federatedscope.core.trainers.trainer_Ditto import wrap_DittoTrainer +from federatedscope.core.trainers.trainer_FedEM import FedEMTrainer +from federatedscope.core.trainers.context import Context +from federatedscope.core.trainers.trainer_fedprox import wrap_fedprox_trainer +from federatedscope.core.trainers.trainer_nbafl import wrap_nbafl_trainer, wrap_nbafl_server +from federatedscope.core.trainers.benign_trainer import wrap_benignTrainer +from federatedscope.core.trainers.trainer_FedRep import wrap_FedRepTrainer + +__all__ = [ + 'Trainer', 'Context', 'GeneralTorchTrainer', 'GeneralMultiModelTrainer', + 'wrap_pFedMeTrainer', 'wrap_DittoTrainer', 'FedEMTrainer', + 'wrap_fedprox_trainer', 'wrap_nbafl_trainer', 'wrap_nbafl_server', + 'wrap_benignTrainer', 'wrap_FedRepTrainer' +] diff --git a/federatedscope/core/trainers/benign_trainer.py b/federatedscope/core/trainers/benign_trainer.py new file mode 100644 index 000000000..65ddaf6d3 --- /dev/null +++ b/federatedscope/core/trainers/benign_trainer.py @@ -0,0 +1,157 @@ +from calendar import c +import logging +from typing import Type +import torch +import numpy as np + +from federatedscope.core.trainers import GeneralTorchTrainer +from federatedscope.core.auxiliaries.transform_builder import get_transform +from federatedscope.attack.auxiliary.backdoor_utils import normalize +from federatedscope.core.auxiliaries.dataloader_builder import WrapDataset +from federatedscope.core.auxiliaries.dataloader_builder import get_dataloader +from federatedscope.core.auxiliaries.ReIterator import ReIterator + +logger = logging.getLogger(__name__) + + +def wrap_benignTrainer( + base_trainer: Type[GeneralTorchTrainer]) -> Type[GeneralTorchTrainer]: + ''' + Warp the benign trainer for backdoor attack: + + We just add the normalization operation. + + Args: + base_trainer: Type: core.trainers.GeneralTorchTrainer + + :returns: + The wrapped trainer; Type: core.trainers.GeneralTorchTrainer + + ''' + + base_trainer.register_hook_in_eval(new_hook=hook_on_fit_start_test_poison, + trigger='on_fit_start', + insert_pos=-1) + + base_trainer.register_hook_in_eval( + new_hook=hook_on_epoch_start_test_poison, + trigger='on_epoch_start', + insert_pos=-1) + + base_trainer.register_hook_in_eval( + new_hook=hook_on_batch_start_test_poison, + trigger='on_batch_start', + insert_pos=-1) + + base_trainer.register_hook_in_eval( + new_hook=hook_on_batch_forward_test_poison, + trigger='on_batch_forward', + insert_pos=-1) + + base_trainer.register_hook_in_eval(new_hook=hook_on_batch_end_test_poison, + trigger="on_batch_end", + insert_pos=-1) + + base_trainer.register_hook_in_eval(new_hook=hook_on_fit_end_test_poison, + trigger='on_fit_end', + insert_pos=0) + + return base_trainer + + +def hook_on_fit_start_test_poison(ctx): + + ctx['poison_' + ctx.cur_data_split + + '_loader'] = ctx.data['poison_' + ctx.cur_data_split] + ctx['poison_' + ctx.cur_data_split + + '_data'] = ctx.data['poison_' + ctx.cur_data_split].dataset + ctx['num_poison_' + ctx.cur_data_split + '_data'] = len( + ctx.data['poison_' + ctx.cur_data_split].dataset) + setattr(ctx, "poison_loss_batch_total_{}".format(ctx.cur_data_split), 0) + setattr(ctx, "poison_num_samples_{}".format(ctx.cur_data_split), 0) + setattr(ctx, "poison_{}_y_true".format(ctx.cur_data_split), []) + setattr(ctx, "poison_{}_y_prob".format(ctx.cur_data_split), []) + + +def hook_on_epoch_start_test_poison(ctx): + if ctx.get("poison_{}_loader".format(ctx.cur_data_split)) is None: + loader = get_dataloader( + WrapDataset(ctx.get("poison_{}_data".format(ctx.cur_data_split))), + ctx.cfg) + setattr(ctx, "poison_{}_loader".format(ctx.cur_data_split), + ReIterator(loader)) + elif not isinstance(ctx.get("poison_{}_loader".format(ctx.cur_data_split)), + ReIterator): + setattr( + ctx, "poison_{}_loader".format(ctx.cur_data_split), + ReIterator(ctx.get("poison_{}_loader".format(ctx.cur_data_split)))) + else: + ctx.get("poison_{}_loader".format(ctx.cur_data_split)).reset() + + +def hook_on_batch_start_test_poison(ctx): + try: + ctx.poison_data_batch = next( + ctx.get("poison_{}_loader".format(ctx.cur_data_split))) + except StopIteration: + raise StopIteration + + +def hook_on_batch_forward_test_poison(ctx): + + x, label = [_.to(ctx.device) for _ in ctx.poison_data_batch] + pred = ctx.model(x) + if len(label.size()) == 0: + label = label.unsqueeze(0) + ctx.poison_loss_batch = ctx.criterion(pred, label) + ctx.poison_y_true = label + ctx.poison_y_prob = pred + + ctx.poison_batch_size = len(label) + + +def hook_on_batch_end_test_poison(ctx): + + setattr( + ctx, "poison_loss_batch_total_{}".format(ctx.cur_data_split), + ctx.get("poison_loss_batch_total_{}".format(ctx.cur_data_split)) + + ctx.poison_loss_batch.item() * ctx.poison_batch_size) + + setattr( + ctx, "poison_num_samples_{}".format(ctx.cur_data_split), + ctx.get("poison_num_samples_{}".format(ctx.cur_data_split)) + + ctx.poison_batch_size) + + ctx.get("poison_{}_y_true".format(ctx.cur_data_split)).append( + ctx.poison_y_true.detach().cpu().numpy()) + + ctx.get("poison_{}_y_prob".format(ctx.cur_data_split)).append( + ctx.poison_y_prob.detach().cpu().numpy()) + + ctx.poison_data_batch = None + ctx.poison_batch_size = None + ctx.poison_loss_task = None + ctx.poison_loss_batch = None + ctx.poison_loss_regular = None + ctx.poison_y_true = None + ctx.poison_y_prob = None + + +def hook_on_fit_end_test_poison(ctx): + """Evaluate metrics of poisoning attacks. + + """ + setattr( + ctx, "poison_{}_y_true".format(ctx.cur_data_split), + np.concatenate(ctx.get("poison_{}_y_true".format(ctx.cur_data_split)))) + setattr( + ctx, "poison_{}_y_prob".format(ctx.cur_data_split), + np.concatenate(ctx.get("poison_{}_y_prob".format(ctx.cur_data_split)))) + + +def hook_on_fit_start_addnormalize(ctx): + ''' + for this function, we do not conduct anything. + ''' + + pass diff --git a/federatedscope/core/trainers/context.py b/federatedscope/core/trainers/context.py new file mode 100644 index 000000000..fb222a1de --- /dev/null +++ b/federatedscope/core/trainers/context.py @@ -0,0 +1,189 @@ +import logging + +import math + +from federatedscope.core.auxiliaries.criterion_builder import get_criterion +from federatedscope.core.auxiliaries.optimizer_builder import get_optimizer +from federatedscope.core.auxiliaries.model_builder import get_trainable_para_names +from federatedscope.core.auxiliaries.regularizer_builder import get_regularizer + + +class Context(dict): + """Record and pass variables among different hook functions. + + Arguments: + model (Module): training model + data (dict): a dict contains train/val/test dataset or dataloader + device: running device + + Record attributes: + - model (Module): the training model + - data (dict): a dict contains train/val/test dataset or dataloader + - device (torch.device): specific device to running to + - criterion: specific loss function + - optimizer: specific optimizer + - mode: maintain the current mode of the model + + - data_batch: current batch data from train/test/val data loader + + - trainable_para_names (list): a list of the names of the trainable parameters within ```ctx.model``` + - train_data: training dataset + - train_loader: training dataloader + - num_train_data (int): the number of training samples within one epoch + - num_train_epoch (int): the number of total training epochs + - num_train_batch (int): the number of batches within one completed training epoch + - num_train_batch_last_epoch (int): the number of batches within the last epoch + + - test_data: test data + - test_loader: test dataloader + - num_test_data (int): the number of test samples within one epoch + - num_test_epoch (int): the number of test epochs, default 1 + - num_test_batch (int): the number of batches within one completed test epoch + + - val_data: val data + - val_loader: val dataloader + - num_val_data (int): the number of val samples within one epoch + - num_val_epoch (int): the number of val epochs, default 1 + - num_val_batch (int): the number of batches within one completed val epoch + + Statistical variables: + - loss_batch (float): loss of the current data_batch, shared by train/test/val + - loss_regular (float): loss of the regularizer + - loss_task (float): the sum of loss_batch and loss_regular + + - loss_total_batch_train (float): accumulated batch loss during training + - loss_total_regular_train (float): accumulated regular loss during training + - num_samples_train (int): accumulated number of training samples involved at present + + - loss_total_test (float): accumulated batch loss during test + - num_samples_test (float): accumulated regular loss during test + + - loss_total_val (float): accumulated batch loss during val + - num_samples_val (float): accumulated regular loss during val + + - eval_metrics (dict): evaluation results + """ + + __setattr__ = dict.__setitem__ + __delattr__ = dict.__delitem__ + + def __getattr__(self, item): + try: + return self[item] + except KeyError: + raise AttributeError("Attribute {} is not found".format(item)) + + def __init__(self, + model, + cfg, + data=None, + device=None, + init_dict=None, + init_attr=True): + if init_dict is None: + super(Context, self).__init__() + else: + super(Context, self).__init__(init_dict) + + self.cfg = cfg + self.model = model + self.data = data + self.device = device + self.cur_mode = None + self.cur_data_split = None + + if init_attr: + # setup static variables for training/evaluation + self.setup_vars() + + def setup_vars(self): + if self.cfg.backend == 'torch': + self.trainable_para_names = get_trainable_para_names(self.model) + self.criterion = get_criterion(self.cfg.criterion.type, + self.device) + self.regularizer = get_regularizer(self.cfg.regularizer.type) + self.optimizer = get_optimizer(self.model, **self.cfg.optimizer) + self.grad_clip = self.cfg.grad.grad_clip + elif self.cfg.backend == 'tensorflow': + self.trainable_para_names = self.model.trainable_variables() + self.criterion = None + self.regularizer = None + self.optimizer = None + self.grad_clip = None + + self.mode = list() + self.cur_data_splits_used_by_routine = list() + + # Process training data + if self.train_data is not None or self.train_loader is not None: + # Calculate the number of update steps during training given the local_update_steps + num_train_batch, num_train_batch_last_epoch, num_train_epoch, num_total_train_batch = self.pre_calculate_batch_epoch_num( + self.cfg.federate.local_update_steps) + + self.num_train_epoch = num_train_epoch + self.num_train_batch = num_train_batch + self.num_train_batch_last_epoch = num_train_batch_last_epoch + self.num_total_train_batch = num_total_train_batch + + # Process evaluation data + # new function part + name_list = self.cfg.data.dataset + for mode in name_list: + if mode != 'train': + # new function part + setattr(self, "num_{}_epoch".format(mode), 1) + if self.get("{}_data".format(mode)) is not None or self.get( + "{}_loader".format(mode)) is not None: + setattr( + self, "num_{}_batch".format(mode), + getattr(self, "num_{}_data".format(mode)) // + self.cfg.data.batch_size + + int(not self.cfg.data.drop_last and bool( + getattr(self, "num_{}_data".format(mode)) % + self.cfg.data.batch_size))) + + def pre_calculate_batch_epoch_num(self, local_update_steps): + num_train_batch = self.num_train_data // self.cfg.data.batch_size + int( + not self.cfg.data.drop_last + and bool(self.num_train_data % self.cfg.data.batch_size)) + if self.cfg.federate.batch_or_epoch == "epoch": + num_train_epoch = local_update_steps + num_train_batch_last_epoch = num_train_batch + num_total_train_batch = local_update_steps * num_train_batch + elif num_train_batch == 0: + raise RuntimeError( + "The number of training batch is 0, please check 'batch_size' or set 'drop_last' as False" + ) + else: + num_train_epoch = math.ceil(local_update_steps / num_train_batch) + num_train_batch_last_epoch = local_update_steps % num_train_batch or num_train_batch + num_total_train_batch = local_update_steps + return num_train_batch, num_train_batch_last_epoch, num_train_epoch, num_total_train_batch + + def append_mode(self, mode): + self.mode.append(mode) + self.cur_mode = self.mode[-1] + self.change_mode(self.cur_mode) + + def pop_mode(self): + self.mode.pop() + self.cur_mode = self.mode[-1] if len(self.mode) != 0 else None + if len(self.mode) != 0: + self.change_mode(self.cur_mode) + + def change_mode(self, mode): + # change state + if self.cfg.backend == 'torch': + getattr(self.model, mode if mode == 'train' else 'eval')() + else: + pass + + def track_used_dataset(self, dataset): + # stack-style to enable mixture usage such as evaluation on train dataset + self.cur_data_splits_used_by_routine.append(dataset) + self.cur_data_split = self.cur_data_splits_used_by_routine[-1] + + def reset_used_dataset(self): + self.cur_data_splits_used_by_routine.pop() + self.cur_data_split = self.cur_data_splits_used_by_routine[-1] if \ + len(self.cur_data_splits_used_by_routine) != 0 else None diff --git a/federatedscope/core/trainers/tf_trainer.py b/federatedscope/core/trainers/tf_trainer.py new file mode 100644 index 000000000..ad372d16d --- /dev/null +++ b/federatedscope/core/trainers/tf_trainer.py @@ -0,0 +1,171 @@ +import tensorflow as tf +import numpy as np +from federatedscope.core.trainers import Trainer +from federatedscope.core.auxiliaries.utils import batch_iter + + +class GeneralTFTrainer(Trainer): + def train(self, target_data_split_name="train", hooks_set=None): + hooks_set = self.hooks_in_train if hooks_set is None else hooks_set + if self.ctx.get( + f"{target_data_split_name}_data") is None and self.ctx.get( + f"{target_data_split_name}_loader") is None: + raise ValueError( + f"No {target_data_split_name}_data or {target_data_split_name}_loader in the trainer" + ) + self._run_routine("train", hooks_set, target_data_split_name) + + # TODO: The return values should be more flexible? Now: sample_num, model_para, results={k:v} + + return self.ctx.num_samples_train, self.ctx.model.state_dict( + ), self.ctx.eval_metrics + + def parse_data(self, data): + """Populate "{}_data", "{}_loader" and "num_{}_data" for different modes + + """ + init_dict = dict() + if isinstance(data, dict): + for mode in ["train", "val", "test"]: + init_dict["{}_data".format(mode)] = None + init_dict["{}_loader".format(mode)] = None + init_dict["num_{}_data".format(mode)] = 0 + if data.get(mode, None) is not None: + init_dict["{}_data".format(mode)] = data.get(mode) + init_dict["num_{}_data".format(mode)] = len(data.get(mode)) + else: + raise TypeError("Type of data should be dict.") + return init_dict + + def register_default_hooks_train(self): + self.register_hook_in_train(self._hook_on_fit_start_init, + "on_fit_start") + self.register_hook_in_train(self._hook_on_epoch_start, + "on_epoch_start") + self.register_hook_in_train(self._hook_on_batch_start_init, + "on_batch_start") + self.register_hook_in_train(self._hook_on_batch_forward, + "on_batch_forward") + self.register_hook_in_train(self._hook_on_batch_forward_regularizer, + "on_batch_forward") + self.register_hook_in_train(self._hook_on_batch_backward, + "on_batch_backward") + self.register_hook_in_train(self._hook_on_batch_end, "on_batch_end") + self.register_hook_in_train(self._hook_on_fit_end, "on_fit_end") + + def register_default_hooks_eval(self): + # test/val + self.register_hook_in_eval(self._hook_on_fit_start_init, + "on_fit_start") + self.register_hook_in_eval(self._hook_on_epoch_start, "on_epoch_start") + self.register_hook_in_eval(self._hook_on_batch_start_init, + "on_batch_start") + self.register_hook_in_eval(self._hook_on_batch_forward, + "on_batch_forward") + self.register_hook_in_eval(self._hook_on_batch_end, "on_batch_end") + self.register_hook_in_eval(self._hook_on_fit_end, "on_fit_end") + + def _hook_on_fit_start_init(self, ctx): + # prepare model + ctx.model.to(ctx.device) + + # prepare statistics + setattr(ctx, "loss_batch_total_{}".format(ctx.cur_data_split), 0) + setattr(ctx, "loss_regular_total_{}".format(ctx.cur_data_split), 0) + setattr(ctx, "num_samples_{}".format(ctx.cur_data_split), 0) + setattr(ctx, "{}_y_true".format(ctx.cur_data_split), []) + setattr(ctx, "{}_y_prob".format(ctx.cur_data_split), []) + + def _hook_on_epoch_start(self, ctx): + # prepare dataloader + setattr(ctx, "{}_loader".format(ctx.cur_data_split), + batch_iter(ctx.get("{}_data".format(ctx.cur_data_split)))) + + def _hook_on_batch_start_init(self, ctx): + # prepare data batch + try: + ctx.data_batch = next( + ctx.get("{}_loader".format(ctx.cur_data_split))) + except StopIteration: + raise StopIteration + + def _hook_on_batch_forward(self, ctx): + + ctx.optimizer = ctx.model.optimizer + + ctx.batch_size = len(ctx.data_batch) + + with ctx.model.graph.as_default(): + with ctx.model.sess.as_default(): + feed_dict = { + ctx.model.input_x: ctx.data_batch['x'], + ctx.model.input_y: ctx.data_batch['y'] + } + _, batch_loss, y_true, y_prob = ctx.model.sess.run( + [ + ctx.model.train_op, ctx.model.losses, + ctx.model.input_y, ctx.model.out + ], + feed_dict=feed_dict) + ctx.loss_batch = batch_loss + ctx.y_true = y_true + ctx.y_prob = y_prob + + def _hook_on_batch_forward_regularizer(self, ctx): + pass + + def _hook_on_batch_backward(self, ctx): + pass + + def _hook_on_batch_end(self, ctx): + # update statistics + setattr( + ctx, "loss_batch_total_{}".format(ctx.cur_data_split), + ctx.get("loss_batch_total_{}".format(ctx.cur_data_split)) + + ctx.loss_batch * ctx.batch_size) + + loss_regular = 0. + setattr( + ctx, "loss_regular_total_{}".format(ctx.cur_data_split), + ctx.get("loss_regular_total_{}".format(ctx.cur_data_split)) + + loss_regular) + setattr( + ctx, "num_samples_{}".format(ctx.cur_data_split), + ctx.get("num_samples_{}".format(ctx.cur_data_split)) + + ctx.batch_size) + + # cache label for evaluate + ctx.get("{}_y_true".format(ctx.cur_data_split)).append(ctx.y_true) + + ctx.get("{}_y_prob".format(ctx.cur_data_split)).append(ctx.y_prob) + + # clean temp ctx + ctx.data_batch = None + ctx.batch_size = None + ctx.loss_task = None + ctx.loss_batch = None + ctx.loss_regular = None + ctx.y_true = None + ctx.y_prob = None + + def _hook_on_fit_end(self, ctx): + """Evaluate metrics. + + """ + setattr( + ctx, "{}_y_true".format(ctx.cur_data_split), + np.concatenate(ctx.get("{}_y_true".format(ctx.cur_data_split)))) + setattr( + ctx, "{}_y_prob".format(ctx.cur_data_split), + np.concatenate(ctx.get("{}_y_prob".format(ctx.cur_data_split)))) + results = self.metric_calculator.eval(ctx) + setattr(ctx, 'eval_metrics', results) + + def update(self, model_parameters): + self.ctx.model.load_state_dict(model_parameters) + + def save_model(self, path, cur_round=-1): + pass + + def load_model(self, path): + pass diff --git a/federatedscope/core/trainers/torch_trainer.py b/federatedscope/core/trainers/torch_trainer.py new file mode 100644 index 000000000..c02ab890c --- /dev/null +++ b/federatedscope/core/trainers/torch_trainer.py @@ -0,0 +1,372 @@ +import os +import logging + +import numpy as np + +import torch +from torch.utils.data import DataLoader, Dataset + +from federatedscope.core.trainers.trainer import Trainer +from federatedscope.core.auxiliaries.dataloader_builder import WrapDataset +from federatedscope.core.auxiliaries.dataloader_builder import get_dataloader +from federatedscope.core.auxiliaries.ReIterator import ReIterator +from federatedscope.core.monitors.monitor import Monitor + +logger = logging.getLogger(__name__) + + +class GeneralTorchTrainer(Trainer): + def get_model_para(self): + return self._param_filter( + self.ctx.model.state_dict() if self.cfg.federate. + share_local_model else self.ctx.model.cpu().state_dict()) + + def parse_data(self, data): + """Populate "{}_data", "{}_loader" and "num_{}_data" for different modes + + """ + # TODO: more robust for different data + + # new function part + init_dict = dict() + name_list = self.cfg.data.dataset + if isinstance(data, dict): + for mode in name_list: + # new function part + init_dict["{}_data".format(mode)] = None + init_dict["{}_loader".format(mode)] = None + init_dict["num_{}_data".format(mode)] = 0 + if data.get(mode, None) is not None: + if isinstance(data.get(mode), Dataset): + init_dict["{}_data".format(mode)] = data.get(mode) + init_dict["num_{}_data".format(mode)] = len( + data.get(mode)) + elif isinstance(data.get(mode), DataLoader): + init_dict["{}_loader".format(mode)] = data.get(mode) + init_dict["num_{}_data".format(mode)] = len( + data.get(mode).dataset) + elif isinstance(data.get(mode), dict): + init_dict["{}_data".format(mode)] = data.get(mode) + init_dict["num_{}_data".format(mode)] = len( + data.get(mode)['y']) + else: + raise TypeError("Type {} is not supported.".format( + type(data.get(mode)))) + else: + raise TypeError("Type of data should be dict.") + + return init_dict + + def train(self, target_data_split_name="train", hooks_set=None): + hooks_set = hooks_set or self.hooks_in_train + if self.ctx.get( + f"{target_data_split_name}_data") is None and self.ctx.get( + f"{target_data_split_name}_loader") is None: + raise ValueError( + f"No {target_data_split_name}_data or {target_data_split_name}_loader in the trainer" + ) + if self.cfg.federate.use_diff: + # TODO: any issue for subclasses? + before_metric = self.evaluate(target_data_split_name='val') + + self._run_routine("train", hooks_set, target_data_split_name) + result_metric = self.ctx.eval_metrics + + if self.cfg.federate.use_diff: + # TODO: any issue for subclasses? + after_metric = self.evaluate(target_data_split_name='val') + result_metric['val_total'] = before_metric['val_total'] + result_metric['val_avg_loss_before'] = before_metric[ + 'val_avg_loss'] + result_metric['val_avg_loss_after'] = after_metric['val_avg_loss'] + + # return self.ctx.num_samples_train, self.get_model_para(), result_metric + + ## new modification + ## TO DO + + if self.cfg.federate.weight_avg: + averaging_weight = self.ctx.num_train_data + else: + averaging_weight = 1 + + return averaging_weight, self.get_model_para(), result_metric + + def update(self, model_parameters): + ''' + Called by the FL client to update the model parameters + Arguments: + model_parameters (dict): PyTorch Module object's state_dict. + ''' + for key in model_parameters: + if isinstance(model_parameters[key], list): + model_parameters[key] = torch.FloatTensor( + model_parameters[key]) + self.ctx.model.load_state_dict(self._param_filter(model_parameters), + strict=False) + + def evaluate(self, target_data_split_name="test"): + with torch.no_grad(): + super(GeneralTorchTrainer, self).evaluate(target_data_split_name) + + return self.ctx.eval_metrics + + #def validate(self, target_data_split_name="val"): + # with torch.no_grad(): + # super(GeneralTorchTrainer, self).evaluate(target_data_split_name) + + # return self.ctx.eval_metrics + + def finetune(self, target_data_split_name="train", hooks_set=None): + + # freeze the parameters during the fine-tune stage + require_grad_changed_paras = set() + if self.cfg.trainer.finetune.freeze_param != "": + preserved_paras = self._param_filter( + self.ctx.model.state_dict(), + self.cfg.trainer.finetune.freeze_param) + for name, param in self.ctx.model.named_parameters(): + if name not in preserved_paras and param.requires_grad is True: + param.requires_grad = False + require_grad_changed_paras.add(name) + + # change the optimization configs + original_lrs = [] + for g in self.ctx.optimizer.param_groups: + original_lrs.append(g['lr']) + g['lr'] = self.cfg.trainer.finetune.lr + original_epoch_num = self.ctx["num_train_epoch"] + original_batch_num = self.ctx["num_train_batch"] + self.ctx["num_train_epoch"] = self.cfg.trainer.finetune.epochs + # self.ctx["num_train_batch"] = self.cfg.trainer.finetune.steps + + # self.ctx["num_train_epoch"] = 1 + # self.ctx["num_train_batch"] = self.cfg.trainer.finetune.steps + + # do the fine-tuning process + self.train(target_data_split_name, hooks_set) + + # restore the state before fine-tuning + if len(require_grad_changed_paras) > 0: + for name, param in self.ctx.model.named_parameters(): + if name in require_grad_changed_paras: + param.requires_grad = True + + for i, g in enumerate(self.ctx.optimizer.param_groups): + g['lr'] = original_lrs[i] + + self.ctx["num_train_epoch"] = original_epoch_num + self.ctx["num_train_batch"] = original_batch_num + + def register_default_hooks_train(self): + self.register_hook_in_train(self._hook_on_fit_start_init, + "on_fit_start") + self.register_hook_in_train( + self._hook_on_fit_start_calculate_model_size, "on_fit_start") + self.register_hook_in_train(self._hook_on_epoch_start, + "on_epoch_start") + self.register_hook_in_train(self._hook_on_batch_start_init, + "on_batch_start") + self.register_hook_in_train(self._hook_on_batch_forward, + "on_batch_forward") + self.register_hook_in_train(self._hook_on_batch_forward_regularizer, + "on_batch_forward") + self.register_hook_in_train(self._hook_on_batch_forward_flop_count, + "on_batch_forward") + self.register_hook_in_train(self._hook_on_batch_backward, + "on_batch_backward") + self.register_hook_in_train(self._hook_on_batch_end, "on_batch_end") + self.register_hook_in_train(self._hook_on_fit_end, "on_fit_end") + + def register_default_hooks_eval(self): + # test/val + self.register_hook_in_eval(self._hook_on_fit_start_init, + "on_fit_start") + self.register_hook_in_eval(self._hook_on_epoch_start, "on_epoch_start") + self.register_hook_in_eval(self._hook_on_batch_start_init, + "on_batch_start") + self.register_hook_in_eval(self._hook_on_batch_forward, + "on_batch_forward") + self.register_hook_in_eval(self._hook_on_batch_end, "on_batch_end") + self.register_hook_in_eval(self._hook_on_fit_end, "on_fit_end") + + def _hook_on_fit_start_init(self, ctx): + # prepare model + ctx.model.to(ctx.device) + + # + + # prepare statistics + setattr(ctx, "loss_batch_total_{}".format(ctx.cur_data_split), 0) + setattr(ctx, "loss_regular_total_{}".format(ctx.cur_data_split), 0) + setattr(ctx, "num_samples_{}".format(ctx.cur_data_split), 0) + setattr(ctx, "{}_y_true".format(ctx.cur_data_split), []) + setattr(ctx, "{}_y_prob".format(ctx.cur_data_split), []) + + def _hook_on_fit_start_calculate_model_size(self, ctx): + if not isinstance(self.ctx.monitor, Monitor): + logger.warning( + f"The trainer {type(self)} does contain a valid monitor, this may be caused by " + f"initializing trainer subclasses without passing a valid monitor instance." + f"Plz check whether this is you want.") + return + if self.ctx.monitor.total_model_size == 0: + self.ctx.monitor.track_model_size(ctx.models) + + def _hook_on_epoch_start(self, ctx): + # prepare dataloader + if ctx.get("{}_loader".format(ctx.cur_data_split)) is None: + loader = get_dataloader( + WrapDataset(ctx.get("{}_data".format(ctx.cur_data_split))), + self.cfg) + setattr(ctx, "{}_loader".format(ctx.cur_data_split), + ReIterator(loader)) + elif not isinstance(ctx.get("{}_loader".format(ctx.cur_data_split)), + ReIterator): + setattr( + ctx, "{}_loader".format(ctx.cur_data_split), + ReIterator(ctx.get("{}_loader".format(ctx.cur_data_split)))) + else: + ctx.get("{}_loader".format(ctx.cur_data_split)).reset() + + def _hook_on_batch_start_init(self, ctx): + # prepare data batch + try: + ctx.data_batch = next( + ctx.get("{}_loader".format(ctx.cur_data_split))) + except StopIteration: + raise StopIteration + + def _hook_on_batch_forward(self, ctx): + x, label = [_.to(ctx.device) for _ in ctx.data_batch] + pred = ctx.model(x) + if len(label.size()) == 0: + label = label.unsqueeze(0) + ctx.loss_batch = ctx.criterion(pred, label) + ctx.y_true = label + ctx.y_prob = pred + + ctx.batch_size = len(label) + + def _hook_on_batch_forward_flop_count(self, ctx): + """ + the monitoring hook to calculate the flops during the fl course + + Note: for customized cases that the forward process is not only based on ctx.model, + please override this function (inheritance case) or replace this hook (plug-in case) + + :param ctx: + :return: + """ + if not isinstance(self.ctx.monitor, Monitor): + logger.warning( + f"The trainer {type(self)} does contain a valid monitor, this may be caused by " + f"initializing trainer subclasses without passing a valid monitor instance." + f"Plz check whether this is you want.") + return + + if self.ctx.monitor.flops_per_sample == 0: + # calculate the flops_per_sample + try: + x, y = [_.to(ctx.device) for _ in ctx.data_batch] + from fvcore.nn import FlopCountAnalysis + flops_one_batch = FlopCountAnalysis(ctx.model, x).total() + if self.model_nums > 1 and ctx.mirrored_models: + flops_one_batch *= self.model_nums + logger.warning( + "the flops_per_batch is multiplied by internal model nums as self.mirrored_models=True." + "if this is not the case you want, please customize the count hook" + ) + self.ctx.monitor.track_avg_flops(flops_one_batch, + ctx.batch_size) + except: + logger.error( + "current flop count implementation is for general trainer case: " + "1) ctx.data_batch = [x, y]; and" + "2) the ctx.model takes only x as input." + "Please check the forward format or implement your own flop_count function" + ) + + # by default, we assume the data has the same input shape, + # thus simply multiply the flops to avoid redundant forward + self.ctx.monitor.total_flops += self.ctx.monitor.flops_per_sample * ctx.batch_size + + def _hook_on_batch_forward_regularizer(self, ctx): + ctx.loss_regular = float( + self.cfg.regularizer.mu) * ctx.regularizer(ctx) + ctx.loss_task = ctx.loss_batch + ctx.loss_regular + + def _hook_on_batch_backward(self, ctx): + ctx.optimizer.zero_grad() + ctx.loss_task.backward() + if ctx.grad_clip > 0: + torch.nn.utils.clip_grad_norm_(ctx.model.parameters(), + ctx.grad_clip) + ctx.optimizer.step() + + def _hook_on_batch_end(self, ctx): + # update statistics + setattr( + ctx, "loss_batch_total_{}".format(ctx.cur_data_split), + ctx.get("loss_batch_total_{}".format(ctx.cur_data_split)) + + ctx.loss_batch.item() * ctx.batch_size) + + if ctx.get("loss_regular", None) is None or ctx.loss_regular == 0: + loss_regular = 0. + else: + loss_regular = ctx.loss_regular.item() + setattr( + ctx, "loss_regular_total_{}".format(ctx.cur_data_split), + ctx.get("loss_regular_total_{}".format(ctx.cur_data_split)) + + loss_regular) + setattr( + ctx, "num_samples_{}".format(ctx.cur_data_split), + ctx.get("num_samples_{}".format(ctx.cur_data_split)) + + ctx.batch_size) + + # cache label for evaluate + ctx.get("{}_y_true".format(ctx.cur_data_split)).append( + ctx.y_true.detach().cpu().numpy()) + + ctx.get("{}_y_prob".format(ctx.cur_data_split)).append( + ctx.y_prob.detach().cpu().numpy()) + + # clean temp ctx + ctx.data_batch = None + ctx.batch_size = None + ctx.loss_task = None + ctx.loss_batch = None + ctx.loss_regular = None + ctx.y_true = None + ctx.y_prob = None + + def _hook_on_fit_end(self, ctx): + """Evaluate metrics. + + """ + # + setattr( + ctx, "{}_y_true".format(ctx.cur_data_split), + np.concatenate(ctx.get("{}_y_true".format(ctx.cur_data_split)))) + setattr( + ctx, "{}_y_prob".format(ctx.cur_data_split), + np.concatenate(ctx.get("{}_y_prob".format(ctx.cur_data_split)))) + results = self.metric_calculator.eval(ctx) + + setattr(ctx, 'eval_metrics', results) + + def save_model(self, path, cur_round=-1): + assert self.ctx.model is not None + + ckpt = {'cur_round': cur_round, 'model': self.ctx.model.state_dict()} + torch.save(ckpt, path) + + def load_model(self, path): + assert self.ctx.model is not None + + if os.path.exists(path): + ckpt = torch.load(path, map_location=self.ctx.device) + self.ctx.model.load_state_dict(ckpt['model']) + return ckpt['cur_round'] + else: + raise ValueError("The file {} does NOT exist".format(path)) diff --git a/federatedscope/core/trainers/trainer.py b/federatedscope/core/trainers/trainer.py new file mode 100644 index 000000000..f59f17536 --- /dev/null +++ b/federatedscope/core/trainers/trainer.py @@ -0,0 +1,343 @@ +import collections +import copy +import logging +import os +import numpy as np + +from federatedscope.core.auxiliaries import utils +from federatedscope.core.trainers.context import Context +from federatedscope.core.monitors.metric_calculator import MetricCalculator + +import torch +from torch.utils.data import DataLoader, Dataset + +logger = logging.getLogger(__name__) + + +class Trainer(object): + """ + Register, organize and run the train/test/val procedures + """ + + HOOK_TRIGGER = [ + "on_fit_start", "on_epoch_start", "on_batch_start", "on_batch_forward", + "on_batch_backward", "on_batch_end", "on_epoch_end", "on_fit_end" + ] + + def __init__(self, + model, + data, + device, + config, + only_for_eval=False, + monitor=None): + self.cfg = config + self.metric_calculator = MetricCalculator(config.eval.metrics) + + self.ctx = Context(model, + self.cfg, + data, + device, + init_dict=self.parse_data(data)) + + if monitor is None: + logger.warning( + f"Will not use monitor in trainer with class {type(self)}") + self.ctx.monitor = monitor + # the "model_nums", and "models" are used for multi-model case and model size calculation + self.model_nums = 1 + self.ctx.models = [model] + # "mirrored_models": whether the internal multi-models adopt the same architects and almost the same behaviors, + # which is used to simply the flops, model size calculation + self.ctx.mirrored_models = False + + # Atomic operation during training/evaluation + self.hooks_in_train = collections.defaultdict(list) + + # By default, use the same trigger keys + self.hooks_in_eval = copy.deepcopy(self.hooks_in_train) + + # register necessary hooks into self.hooks_in_train and self.hooks_in_eval + if not only_for_eval: + self.register_default_hooks_train() + self.register_default_hooks_eval() + + if self.cfg.federate.mode == 'distributed': + self.print_trainer_meta_info() + else: + # in standalone mode, by default, we print the trainer info only once for better logs readability + pass + + def parse_data(self, data): + pass + + def register_default_hooks_train(self): + pass + + def register_default_hooks_eval(self): + pass + + def reset_hook_in_train(self, target_trigger, target_hook_name=None): + hooks_dict = self.hooks_in_train + del_one_hook_idx = self._reset_hook_in_trigger(hooks_dict, + target_hook_name, + target_trigger) + return del_one_hook_idx + + def reset_hook_in_eval(self, target_trigger, target_hook_name=None): + hooks_dict = self.hooks_in_eval + del_one_hook_idx = self._reset_hook_in_trigger(hooks_dict, + target_hook_name, + target_trigger) + return del_one_hook_idx + + def replace_hook_in_train(self, new_hook, target_trigger, + target_hook_name): + del_one_hook_idx = self.reset_hook_in_train( + target_trigger=target_trigger, target_hook_name=target_hook_name) + self.register_hook_in_train(new_hook=new_hook, + trigger=target_trigger, + insert_pos=del_one_hook_idx) + + def replace_hook_in_eval(self, new_hook, target_trigger, target_hook_name): + del_one_hook_idx = self.reset_hook_in_eval( + target_trigger=target_trigger, target_hook_name=target_hook_name) + self.register_hook_in_eval(new_hook=new_hook, + trigger=target_trigger, + insert_pos=del_one_hook_idx) + + def _reset_hook_in_trigger(self, hooks_dict, target_hook_name, + target_trigger): + # clean/delete existing hooks for a specific trigger, + # if target_hook_name given, will clean only the specific one; otherwise, will clean all hooks for the trigger. + assert target_trigger in self.HOOK_TRIGGER, \ + f"Got {target_trigger} as hook trigger, you should specify a string within {self.HOOK_TRIGGER}." + del_one_hook_idx = None + if target_hook_name is None: + hooks_dict[target_trigger] = [] + del_one_hook_idx = -1 # -1 indicates del the whole list + else: + for hook_idx in range(len(hooks_dict[target_trigger])): + if target_hook_name == hooks_dict[target_trigger][ + hook_idx].__name__: + del_one = hooks_dict[target_trigger].pop(hook_idx) + logger.info( + f"Remove the hook `{del_one}` from hooks_set at trigger `{target_trigger}`" + ) + del_one_hook_idx = hook_idx + break + if del_one_hook_idx is None: + logger.warning( + f"In hook del procedure, can't find the target hook named {target_hook_name}" + ) + return del_one_hook_idx + + def register_hook_in_train(self, + new_hook, + trigger, + insert_pos=None, + base_hook=None, + insert_mode="before"): + hooks_dict = self.hooks_in_train + self._register_hook(base_hook, hooks_dict, insert_mode, insert_pos, + new_hook, trigger) + + def register_hook_in_eval(self, + new_hook, + trigger, + insert_pos=None, + base_hook=None, + insert_mode="before"): + hooks_dict = self.hooks_in_eval + self._register_hook(base_hook, hooks_dict, insert_mode, insert_pos, + new_hook, trigger) + + def _register_hook(self, base_hook, hooks_dict, insert_mode, insert_pos, + new_hook, trigger): + assert trigger in self.HOOK_TRIGGER, \ + f"Got {trigger} as hook trigger, you should specify a string within {self.HOOK_TRIGGER}." + # parse the insertion position + target_hook_set = hooks_dict[trigger] + if insert_pos is not None: + assert (insert_pos == -1) or (insert_pos == len(target_hook_set) == 0) or \ + (0 <= insert_pos <= (len(target_hook_set))), \ + f"Got {insert_pos} as insert pos, you should specify a integer (1) =-1 " \ + f"or (2) =0 for null target_hook_set;" \ + f"or (3) within [0, {(len(target_hook_set))}]." + elif base_hook is not None: + base_hook_pos = target_hook_set.index(base_hook) + insert_pos = base_hook_pos - 1 if insert_mode == "before" else base_hook_pos + 1 + # bounding the insert_pos in rational range + insert_pos = 0 if insert_pos < 0 else insert_pos + insert_pos = -1 if insert_pos > len( + target_hook_set) else insert_pos + else: + insert_pos = -1 # By default, the new hook is called finally + # register the new hook + if insert_pos == -1: + hooks_dict[trigger].append(new_hook) + else: + hooks_dict[trigger].insert(insert_pos, new_hook) + + def train(self, target_data_split_name="train", hooks_set=None): + pass + + def evaluate(self, target_data_split_name="test", hooks_set=None): + hooks_set = hooks_set or self.hooks_in_eval + if self.ctx.get( + f"{target_data_split_name}_data") is None and self.ctx.get( + f"{target_data_split_name}_loader") is None: + logger.warning( + f"No {target_data_split_name}_data or {target_data_split_name}_loader in the trainer, will skip evaluation" + f"If this is not the case you want, please check whether there is typo for the name" + ) + self.ctx.eval_metrics = {} + else: + self._run_routine("test", hooks_set, target_data_split_name) + + return self.ctx.eval_metrics + + def _run_routine(self, mode, hooks_set, dataset_name=None): + """Run the hooks_set and maintain the mode + + Arguments: + mode (str): running mode of client, chosen from train/test + hooks_set (dict): functions to be executed. + dataset_name (str): which split. + + Note: + Considering evaluation could be in ```hooks_set["on_epoch_end"]```, there could be two data loaders in + self.ctx, we must tell the running hooks which data_loader to call and which num_samples to count + + """ + if dataset_name is None: + dataset_name = mode + self.ctx.append_mode(mode) + self.ctx.track_used_dataset(dataset_name) + + # print(hooks_set["on_fit_start"]) + for hook in hooks_set["on_fit_start"]: + hook(self.ctx) + + for epoch_i in range(self.ctx.get( + "num_{}_epoch".format(dataset_name))): + self.ctx.cur_epoch_i = epoch_i + for hook in hooks_set["on_epoch_start"]: + hook(self.ctx) + + for batch_i in range( + self.ctx.get("num_{}_batch".format(dataset_name))): + self.ctx.cur_batch_i = batch_i + for hook in hooks_set["on_batch_start"]: + hook(self.ctx) + for hook in hooks_set["on_batch_forward"]: + hook(self.ctx) + if self.ctx.cur_mode == 'train': + for hook in hooks_set["on_batch_backward"]: + hook(self.ctx) + for hook in hooks_set["on_batch_end"]: + hook(self.ctx) + + # Break in the final epoch + if self.ctx.cur_mode == 'train' and epoch_i == self.ctx.num_train_epoch - 1: + if batch_i >= self.ctx.num_train_batch_last_epoch - 1: + break + + for hook in hooks_set["on_epoch_end"]: + hook(self.ctx) + for hook in hooks_set["on_fit_end"]: + hook(self.ctx) + + self.ctx.pop_mode() + self.ctx.reset_used_dataset() + # Avoid memory leak + if not self.cfg.federate.share_local_model: + if torch is None: + pass + else: + self.ctx.model.to(torch.device("cpu")) + + def update(self, model_parameters): + ''' + Called by the FL client to update the model parameters + Arguments: + model_parameters (dict): {model_name: model_val} + ''' + pass + + def get_model_para(self): + ''' + + :return: model_parameters (dict): {model_name: model_val} + ''' + pass + + def print_trainer_meta_info(self): + ''' + print some meta info for code-users, e.g., model type; the para names will be filtered out, etc., + ''' + logger.info(f"Model meta-info: {type(self.ctx.model)}.") + logger.debug(f"Model meta-info: {self.ctx.model}.") + # logger.info(f"Data meta-info: {self.ctx['data']}.") + + ori_para_names = set(self.ctx.model.state_dict().keys()) + preserved_paras = self._param_filter(self.ctx.model.state_dict()) + preserved_para_names = set(preserved_paras.keys()) + filtered_para_names = ori_para_names - preserved_para_names + logger.info(f"Num of original para names: {len(ori_para_names)}.") + logger.info( + f"Num of original trainable para names: {len(self.ctx['trainable_para_names'])}." + ) + logger.info( + f"Num of preserved para names in local update: {len(preserved_para_names)}. \n" + f"Preserved para names in local update: {preserved_para_names}.") + logger.info( + f"Num of filtered para names in local update: {len(filtered_para_names)}. \n" + f"Filtered para names in local update: {filtered_para_names}.") + + logger.info(f"After register default hooks,\n" + f"\tthe hooks_in_train is: {self.hooks_in_train};\n" + f"\tthe hooks_in_eval is {self.hooks_in_eval}") + + def finetune(self): + pass + + def _param_filter(self, state_dict, filter_keywords=None): + ''' + model parameter filter when transmit between local and gloabl, which is useful in personalization. + e.g., setting cfg.personalization.local_param= ['bn', 'norms'] indicates the implementation of + "FedBN: Federated Learning on Non-IID Features via Local Batch Normalization, ICML2021", which can be found in https://openreview.net/forum?id=6YEQUn0QICG + + Arguments: + state_dict (dict): PyTorch Module object's state_dict. + Returns: + state_dict (dict): remove the keys that match any of the given keywords. + ''' + if self.cfg.federate.method in ["local", "global"]: + return {} + + if filter_keywords is None: + filter_keywords = self.cfg.personalization.local_param + + trainable_filter = lambda p: True if self.cfg.personalization.share_non_trainable_para else \ + lambda p: p in self.ctx.trainable_para_names + keyword_filter = utils.filter_by_specified_keywords + hhh = dict( + filter( + lambda elem: trainable_filter(elem[1]) and keyword_filter( + elem[0], filter_keywords), state_dict.items())) + # + return dict( + filter( + lambda elem: trainable_filter(elem[1]) and keyword_filter( + elem[0], filter_keywords), state_dict.items())) + + def save_model(self, path, cur_round=-1): + raise NotImplementedError( + "The function `save_model` should be implemented according to the ML backend (Pytorch, Tensorflow ...)." + ) + + def load_model(self, path): + raise NotImplementedError( + "The function `load_model` should be implemented according to the ML backend (Pytorch, Tensorflow ...)." + ) diff --git a/federatedscope/core/trainers/trainer_Ditto.py b/federatedscope/core/trainers/trainer_Ditto.py new file mode 100644 index 000000000..aefbcadcd --- /dev/null +++ b/federatedscope/core/trainers/trainer_Ditto.py @@ -0,0 +1,196 @@ +import copy +import logging + +import torch + +from federatedscope.core.auxiliaries.optimizer_builder import get_optimizer +from federatedscope.core.trainers.torch_trainer import GeneralTorchTrainer +from federatedscope.core.optimizer import wrap_regularized_optimizer +# from federatedscope.core.auxiliaries.utils import calculate_batch_epoch_num +from typing import Type + +logger = logging.getLogger(__name__) + +DEBUG_DITTO = False + + +def wrap_DittoTrainer( + base_trainer: Type[GeneralTorchTrainer]) -> Type[GeneralTorchTrainer]: + """ + Build a `DittoTrainer` with a plug-in manner, by registering new + functions into specific `BaseTrainer` + + The Ditto implementation, "Ditto: Fair and Robust Federated Learning + Through Personalization. (ICML2021)" + based on the Algorithm 2 in their paper and official codes: + https://github.com/litian96/ditto + """ + + # ---------------- attribute-level plug-in ----------------------- + init_Ditto_ctx(base_trainer) + + # ---------------- action-level plug-in ----------------------- + base_trainer.register_hook_in_train(new_hook=_hook_on_fit_start_clean, + trigger='on_fit_start', + insert_pos=-1) + base_trainer.register_hook_in_train( + new_hook=hook_on_fit_start_set_regularized_para, + trigger="on_fit_start", + insert_pos=0) + base_trainer.register_hook_in_train( + new_hook=hook_on_batch_start_switch_model, + trigger="on_batch_start", + insert_pos=0) + base_trainer.register_hook_in_train(new_hook=hook_on_batch_forward_cnt_num, + trigger="on_batch_forward", + insert_pos=-1) + base_trainer.register_hook_in_train(new_hook=_hook_on_batch_end_flop_count, + trigger="on_batch_end", + insert_pos=-1) + + base_trainer.register_hook_in_eval( + new_hook=hook_on_fit_start_switch_local_model, + trigger="on_fit_start", + insert_pos=0) + + base_trainer.register_hook_in_eval( + new_hook=hook_on_fit_end_switch_global_model, + trigger="on_fit_end", + insert_pos=-1) + + base_trainer.register_hook_in_train(new_hook=hook_on_fit_end_free_cuda, + trigger="on_fit_end", + insert_pos=-1) + base_trainer.register_hook_in_eval(new_hook=hook_on_fit_end_free_cuda, + trigger="on_fit_end", + insert_pos=-1) + + return base_trainer + + + + +def init_Ditto_ctx(base_trainer): + """ + init necessary attributes used in Ditto, + `global_model` acts as the shared global model in FedAvg; + `local_model` acts as personalized model will be optimized with + regularization based on weights of `global_model` + + """ + ctx = base_trainer.ctx + cfg = base_trainer.cfg + + ctx.global_model = copy.deepcopy(ctx.model) + ctx.local_model = copy.deepcopy(ctx.model) + ctx.models = [ctx.local_model, ctx.global_model] + + ctx.model = ctx.global_model + ctx.use_local_model_current = False + + ctx.num_samples_local_model_train = 0 + + ctx.num_train_batch_for_local_model, \ + ctx.num_train_batch_last_epoch_for_local_model, \ + ctx.num_train_epoch_for_local_model, \ + ctx.num_total_train_batch \ + = ctx.pre_calculate_batch_epoch_num \ + (cfg.personalization.local_update_steps) + + if cfg.federate.batch_or_epoch == 'batch': + ctx.num_train_batch += ctx.num_train_batch_for_local_model + ctx.num_train_batch_last_epoch += \ + ctx.num_train_batch_last_epoch_for_local_model + else: + ctx.num_train_epoch += ctx.num_train_epoch_for_local_model + + + + +def hook_on_fit_start_set_regularized_para(ctx): + # set the compared model data for local personalized model + ctx.global_model.to(ctx.device) + ctx.local_model.to(ctx.device) + ctx.global_model.train() + ctx.local_model.train() + compared_global_model_para = [{ + "params": list(ctx.global_model.parameters()) + }] + + ctx.optimizer_for_global_model = get_optimizer(ctx.global_model, + **ctx.cfg.optimizer) + ctx.optimizer_for_local_model = get_optimizer(ctx.local_model, + **ctx.cfg.optimizer) + + ctx.optimizer_for_local_model = \ + wrap_regularized_optimizer(ctx.optimizer_for_local_model, \ + ctx.cfg.personalization.regular_weight) + + ctx.optimizer_for_local_model.set_compared_para_group( + compared_global_model_para) + + + +def _hook_on_fit_start_clean(ctx): + + del ctx.optimizer + ctx.num_samples_local_model_train = 0 + + + +def _hook_on_batch_end_flop_count(ctx): + + ctx.monitor.total_flops += ctx.monitor.total_model_size / 2 + + + +def hook_on_batch_forward_cnt_num(ctx): + if ctx.use_local_model_current: + ctx.num_samples_local_model_train += ctx.batch_size + + +def hook_on_batch_start_switch_model(ctx): + if ctx.cfg.federate.batch_or_epoch == 'batch': + if ctx.cur_epoch_i == (ctx.num_train_epoch - 1): + ctx.use_local_model_current = \ + ctx.cur_batch_i < \ + ctx.num_train_batch_last_epoch_for_local_model + else: + ctx.use_local_model_current = \ + ctx.cur_batch_i < ctx.num_train_batch_for_local_model + else: + ctx.use_local_model_current = \ + ctx.cur_epoch_i < ctx.num_train_epoch_for_local_model + + if DEBUG_DITTO: + logger.info("====================================================") + logger.info(f"cur_epoch_i: {ctx.cur_epoch_i}") + logger.info(f"num_train_epoch: {ctx.num_train_epoch}") + logger.info(f"cur_batch_i: {ctx.cur_batch_i}") + logger.info(f"num_train_batch: {ctx.num_train_batch}") + logger.info(f"num_train_batch_for_local_model: " + f"{ctx.num_train_batch_for_local_model}") + logger.info(f"num_train_epoch_for_local_model: " + f"{ctx.num_train_epoch_for_local_model}") + logger.info(f"use_local_model: {ctx.use_local_model_current}") + + if ctx.use_local_model_current: + ctx.model = ctx.local_model + ctx.optimizer = ctx.optimizer_for_local_model + else: + ctx.model = ctx.global_model + ctx.optimizer = ctx.optimizer_for_global_model + + +def hook_on_fit_start_switch_local_model(ctx): + ctx.model = ctx.local_model + ctx.model.eval() + + +def hook_on_fit_end_switch_global_model(ctx): + ctx.model = ctx.global_model + + +def hook_on_fit_end_free_cuda(ctx): + ctx.global_model.to(torch.device("cpu")) + ctx.local_model.to(torch.device("cpu")) diff --git a/federatedscope/core/trainers/trainer_FedEM.py b/federatedscope/core/trainers/trainer_FedEM.py new file mode 100644 index 000000000..d120045f7 --- /dev/null +++ b/federatedscope/core/trainers/trainer_FedEM.py @@ -0,0 +1,176 @@ +from typing import Type +import os +import numpy as np +import torch +from torch.nn.functional import softmax as f_softmax + +from federatedscope.core.trainers.torch_trainer import GeneralTorchTrainer +from federatedscope.core.trainers.trainer_multi_model import GeneralMultiModelTrainer + + +class FedEMTrainer(GeneralMultiModelTrainer): + """ + The FedEM implementation, "Federated Multi-Task Learning under a Mixture of Distributions (NeurIPS 2021)" + based on the Algorithm 1 in their paper and official codes: https://github.com/omarfoq/FedEM + """ + def __init__(self, + model_nums, + models_interact_mode="sequential", + model=None, + data=None, + device=None, + config=None, + base_trainer: Type[GeneralTorchTrainer] = None): + super(FedEMTrainer, + self).__init__(model_nums, models_interact_mode, model, data, + device, config, base_trainer) + device = self.ctx.device + + # ---------------- attribute-level modifications ----------------------- + # used to mixture the internal models + self.weights_internal_models = (torch.ones(self.model_nums) / + self.model_nums).to(device) + self.weights_data_sample = ( + torch.ones(self.model_nums, self.ctx.num_train_batch) / + self.model_nums).to(device) + + self.ctx.all_losses_model_batch = torch.zeros( + self.model_nums, self.ctx.num_train_batch).to(device) + self.ctx.cur_batch_idx = -1 + # `ctx[f"{cur_data}_y_prob_ensemble"] = 0` in func `_hook_on_fit_end_ensemble_eval` + # -> self.ctx.test_y_prob_ensemble = 0 + # -> self.ctx.train_y_prob_ensemble = 0 + # -> self.ctx.val_y_prob_ensemble = 0 + + # ---------------- action-level modifications ----------------------- + # see register_multiple_model_hooks(), which is called in the __init__ of `GeneralMultiModelTrainer` + + def register_multiple_model_hooks(self): + """ + customized multiple_model_hooks, which is called in the __init__ of `GeneralMultiModelTrainer` + """ + # First register hooks for model 0 + # ---------------- train hooks ----------------------- + self.register_hook_in_train( + new_hook=self.hook_on_fit_start_mixture_weights_update, + trigger="on_fit_start", + insert_pos=0) # insert at the front + self.register_hook_in_train( + new_hook=self._hook_on_fit_start_flop_count, + trigger="on_fit_start", + insert_pos=1 # follow the mixture operation + ) + self.register_hook_in_train(new_hook=self._hook_on_fit_end_flop_count, + trigger="on_fit_end", + insert_pos=-1) + self.register_hook_in_train( + new_hook=self.hook_on_batch_forward_weighted_loss, + trigger="on_batch_forward", + insert_pos=-1) + self.register_hook_in_train( + new_hook=self.hook_on_batch_start_track_batch_idx, + trigger="on_batch_start", + insert_pos=0) # insert at the front + # ---------------- eval hooks ----------------------- + self.register_hook_in_eval(new_hook=self.save_local_model, + trigger="on_fit_start", + insert_pos=-1) + self.register_hook_in_eval( + new_hook=self.hook_on_batch_end_gather_loss, + trigger="on_batch_end", + insert_pos=0 + ) # insert at the front, (we need gather the loss before clean it) + self.register_hook_in_eval( + new_hook=self.hook_on_batch_start_track_batch_idx, + trigger="on_batch_start", + insert_pos=0) # insert at the front + # replace the original evaluation into the ensemble one + self.replace_hook_in_eval(new_hook=self._hook_on_fit_end_ensemble_eval, + target_trigger="on_fit_end", + target_hook_name="_hook_on_fit_end") + + # Then for other models, set the same hooks as model 0 + # since we differentiate different models in the hook implementations via ctx.cur_model_idx + self.hooks_in_train_multiple_models.extend([ + self.hooks_in_train_multiple_models[0] + for _ in range(1, self.model_nums) + ]) + self.hooks_in_eval_multiple_models.extend([ + self.hooks_in_eval_multiple_models[0] + for _ in range(1, self.model_nums) + ]) + + def hook_on_batch_start_track_batch_idx(self, ctx): + # for both train & eval + ctx.cur_batch_idx = (self.ctx.cur_batch_idx + + 1) % self.ctx.num_train_batch + + def hook_on_batch_forward_weighted_loss(self, ctx): + # for only train + ctx.loss_batch *= self.weights_internal_models[ctx.cur_model_idx] + + def hook_on_batch_end_gather_loss(self, ctx): + # for only eval + # before clean the loss_batch; we record it for further weights_data_sample update + ctx.all_losses_model_batch[ctx.cur_model_idx][ + ctx.cur_batch_idx] = ctx.loss_batch.item() + + def hook_on_fit_start_mixture_weights_update(self, ctx): + # for only train + if ctx.cur_model_idx != 0: + # do the mixture_weights_update once + pass + else: + # gathers losses for all sample in iterator for each internal model, calling *evaluate()* + for model_idx in range(self.model_nums): + self._switch_model_ctx(model_idx) + self.evaluate(target_data_split_name="train") + + self.weights_data_sample = f_softmax( + (torch.log(self.weights_internal_models) - + ctx.all_losses_model_batch.T), + dim=1).T + self.weights_internal_models = self.weights_data_sample.mean(dim=1) + + # restore the model_ctx + self._switch_model_ctx(0) + + def _hook_on_fit_start_flop_count(self, ctx): + self.ctx.monitor.total_flops += self.ctx.monitor.flops_per_sample * self.model_nums * ctx.num_train_data + + def _hook_on_fit_end_flop_count(self, ctx): + self.ctx.monitor.total_flops += self.ctx.monitor.flops_per_sample * self.model_nums * ctx.num_train_data + + def _hook_on_fit_end_ensemble_eval(self, ctx): + """ + Ensemble evaluation + """ + cur_data = ctx.cur_data_split + if f"{cur_data}_y_prob_ensemble" not in ctx: + ctx[f"{cur_data}_y_prob_ensemble"] = 0 + ctx[f"{cur_data}_y_prob_ensemble"] += np.concatenate(ctx[f"{cur_data}_y_prob"]) * \ + self.weights_internal_models[ctx.cur_model_idx].item() + + # do metrics calculation after the last internal model evaluation done + if ctx.cur_model_idx == self.model_nums - 1: + ctx[f"{cur_data}_y_true"] = np.concatenate( + ctx[f"{cur_data}_y_true"]) + ctx[f"{cur_data}_y_prob"] = ctx[f"{cur_data}_y_prob_ensemble"] + ctx.eval_metrics = self.metric_calculator.eval(ctx) + # reset for next run_routine that may have different len([f"{cur_data}_y_prob"]) + ctx[f"{cur_data}_y_prob_ensemble"] = 0 + + ctx[f"{cur_data}_y_prob"] = [] + ctx[f"{cur_data}_y_true"] = [] + + def save_local_model(self, ctx): + i = 0 + for model_ in self.ctx.models: + path = '/mnt/zeyuqin/FederatedScope/exp/FedEM_resnet18_on_CIFAR10@torchvision_lr0.5_lepoch1/backdoor_hkTrigger_fix' + '/model_' + str( + i) + '.pth' + if os.path.exists(path): + break + else: + ckpt = {'model': model_.state_dict()} + torch.save(ckpt, path) + i += 1 diff --git a/federatedscope/core/trainers/trainer_FedRep.py b/federatedscope/core/trainers/trainer_FedRep.py new file mode 100644 index 000000000..d7afa2f9e --- /dev/null +++ b/federatedscope/core/trainers/trainer_FedRep.py @@ -0,0 +1,103 @@ +import copy +import torch +import logging + +from federatedscope.core.auxiliaries.optimizer_builder import get_optimizer +from federatedscope.core.trainers.torch_trainer import GeneralTorchTrainer + +from typing import Type + +logger = logging.getLogger(__name__) + + +def wrap_FedRepTrainer( + base_trainer: Type[GeneralTorchTrainer]) -> Type[GeneralTorchTrainer]: + """ + Build a `FedRapTrainer` with a plug-in manner, by registering new functions into specific `BaseTrainer` + + + """ + + init_FedRep_ctx(base_trainer) + + base_trainer.register_hook_in_train(new_hook=hook_on_fit_start_fedrep, + trigger="on_fit_start", + insert_pos=-1) + + base_trainer.register_hook_in_train(new_hook=hook_on_epoch_start_fedrep, + trigger="on_epoch_start", + insert_pos=-1) + + return base_trainer + + +def init_FedRep_ctx(base_trainer): + + ctx = base_trainer.ctx + cfg = base_trainer.cfg + + ctx.epoch_feature = cfg.personalization.epoch_feature + ctx.epoch_linear = cfg.personalization.epoch_linear + + ctx.num_train_epoch = ctx.epoch_feature + ctx.epoch_linear + + ctx.epoch_number = 0 + + ctx.lr_feature = cfg.personalization.lr_feature + ctx.lr_linear = cfg.personalization.lr_linear + ctx.weight_decay = cfg.personalization.weight_decay + + ctx.local_param = cfg.personalization.local_param + + ctx.local_update_param = [] + ctx.global_update_param = [] + + for name, param in ctx.model.named_parameters(): + if name.split(".")[0] in ctx.local_param: + ctx.local_update_param.append(param) + else: + ctx.global_update_param.append(param) + + del ctx.optimizer + + +def hook_on_fit_start_fedrep(ctx): + + ctx.num_train_epoch = ctx.epoch_feature + ctx.epoch_linear + ctx.epoch_number = 0 + + ctx.optimizer_for_feature = torch.optim.SGD(ctx.global_update_param, + lr=ctx.lr_feature, + momentum=0, + weight_decay=ctx.weight_decay) + ctx.optimizer_for_linear = torch.optim.SGD(ctx.local_update_param, + lr=ctx.lr_linear, + momentum=0, + weight_decay=ctx.weight_decay) + + for name, param in ctx.model.named_parameters(): + + if name.split(".")[0] in ctx.local_param: + param.requires_grad = True + else: + param.requires_grad = False + + ctx.optimizer = ctx.optimizer_for_linear + + +def hook_on_epoch_start_fedrep(ctx): + + ctx.epoch_number += 1 + + if ctx.epoch_number == ctx.epoch_linear + 1: + + for name, param in ctx.model.named_parameters(): + + if name.split(".")[0] in ctx.local_param: + param.requires_grad = False + else: + param.requires_grad = True + + ctx.optimizer = ctx.optimizer_for_feature + print('the linear classifier learning rate: {}'.format(ctx.lr_linear)) + print('the feature extractor learning rate: {}'.format(ctx.lr_feature)) diff --git a/federatedscope/core/trainers/trainer_fedprox.py b/federatedscope/core/trainers/trainer_fedprox.py new file mode 100644 index 000000000..7857fabc5 --- /dev/null +++ b/federatedscope/core/trainers/trainer_fedprox.py @@ -0,0 +1,70 @@ +from federatedscope.core.trainers.torch_trainer import GeneralTorchTrainer +from typing import Type +from copy import deepcopy + + +def wrap_fedprox_trainer( + base_trainer: Type[GeneralTorchTrainer]) -> Type[GeneralTorchTrainer]: + """Implementation of fedprox refer to `Federated Optimization in Heterogeneous Networks` [Tian Li, et al., 2020] + (https://proceedings.mlsys.org/paper/2020/file/38af86134b65d0f10fe33d30dd76442e-Paper.pdf) + + """ + + # ---------------- attribute-level plug-in ----------------------- + init_fedprox_ctx(base_trainer) + + # ---------------- action-level plug-in ----------------------- + base_trainer.register_hook_in_train(new_hook=record_initialization, + trigger='on_fit_start', + insert_pos=-1) + + base_trainer.register_hook_in_eval(new_hook=record_initialization, + trigger='on_fit_start', + insert_pos=-1) + + base_trainer.register_hook_in_train(new_hook=del_initialization, + trigger='on_fit_end', + insert_pos=-1) + + base_trainer.register_hook_in_eval(new_hook=del_initialization, + trigger='on_fit_end', + insert_pos=-1) + + return base_trainer + + +def init_fedprox_ctx(base_trainer): + """Set proximal regularizer and the factor of regularizer + + """ + ctx = base_trainer.ctx + cfg = base_trainer.cfg + + cfg.defrost() + cfg.regularizer.type = 'proximal_regularizer' + cfg.regularizer.mu = cfg.fedprox.mu + cfg.freeze() + + from federatedscope.core.auxiliaries.regularizer_builder import get_regularizer + ctx.regularizer = get_regularizer(cfg.regularizer.type) + + +# ------------------------------------------------------------------------ # +# Additional functions for FedProx algorithm +# ------------------------------------------------------------------------ # + + +# Trainer +def record_initialization(ctx): + """Record the initialized weights within local updates + + """ + ctx.weight_init = deepcopy( + [_.data.detach() for _ in ctx.model.parameters()]) + + +def del_initialization(ctx): + """Clear the variable to avoid memory leakage + + """ + ctx.weight_init = None diff --git a/federatedscope/core/trainers/trainer_multi_model.py b/federatedscope/core/trainers/trainer_multi_model.py new file mode 100644 index 000000000..c1575b119 --- /dev/null +++ b/federatedscope/core/trainers/trainer_multi_model.py @@ -0,0 +1,268 @@ +import copy +from types import FunctionType +from typing import Type + +from federatedscope.core.auxiliaries.optimizer_builder import get_optimizer +from federatedscope.core.trainers.torch_trainer import GeneralTorchTrainer + + +class GeneralMultiModelTrainer(GeneralTorchTrainer): + def __init__(self, + model_nums, + models_interact_mode="sequential", + model=None, + data=None, + device=None, + config=None, + base_trainer: Type[GeneralTorchTrainer] = None): + """ + `GeneralMultiModelTrainer` supports train/eval via multiple internal models + + Arguments: + model_nums (int): how many internal models and optimizers will be held by the trainer + models_interact_mode (str): how the models interact, can be "sequential" or "parallel". + model: training model + data: a dict contains train/val/test data + device: device to run + config: for trainer-related configuration + base_trainer: if given, the GeneralMultiModelTrainer init will based on base_trainer copy + + The sequential mode indicates the interaction at run_routine level + [one model runs its whole routine, then do sth. for interaction, then next model runs its whole routine] + ... -> run_routine_model_i + -> _switch_model_ctx + -> (on_fit_end, _interact_to_other_models) + -> run_routine_model_i+1 + -> ... + + The parallel mode indicates the interaction at point-in-time level + [At a specific point-in-time, one model call hooks (including interaction), then next model call hooks] + ... -> (on_xxx_point, hook_xxx_model_i) + -> (on_xxx_point, _interact_to_other_models) + -> (on_xxx_point, _switch_model_ctx) + -> (on_xxx_point, hook_xxx_model_i+1) + -> ... + + """ + # support two initialization methods for the `GeneralMultiModelTrainer` + # 1) from another trainer; or 2) standard init manner given (model, data, device, config) + if base_trainer is None: + assert model is not None and \ + data is not None and \ + device is not None and \ + config is not None, "when not copy construction, (model, data, device, config) should not be None" + super(GeneralMultiModelTrainer, + self).__init__(model, data, device, config) + else: + assert isinstance(base_trainer, GeneralMultiModelTrainer) or \ + issubclass(type(base_trainer), GeneralMultiModelTrainer) or \ + isinstance(base_trainer, GeneralTorchTrainer) or \ + issubclass(type(base_trainer), GeneralTorchTrainer) or \ + "can only copy instances of `GeneralMultiModelTrainer` and its subclasses, or " \ + "`GeneralTorchTrainer` and its subclasses" + self.__dict__ = copy.deepcopy(base_trainer.__dict__) + + assert models_interact_mode in ["sequential", "parallel"], \ + f"Invalid models_interact_mode, should be `sequential` or `parallel`, but got {models_interact_mode}" + self.models_interact_mode = models_interact_mode + + if int(model_nums) != model_nums or model_nums < 1: + raise ValueError( + f"model_nums should be integer and >= 1, got {model_nums}.") + self.model_nums = model_nums + + self.ctx.cur_model_idx = 0 # used to mark cur model + + # different internal models can have different hook_set + self.hooks_in_train_multiple_models = [self.hooks_in_train] + self.hooks_in_eval_multiple_models = [self.hooks_in_eval] + self.init_multiple_models() + self.init_multiple_model_hooks() + assert len(self.ctx.models) == model_nums == \ + len(self.hooks_in_train_multiple_models) == len(self.hooks_in_eval_multiple_models),\ + "After init, len(hooks_in_train_multiple_models), len(hooks_in_eval_multiple_models), " \ + "len(ctx.models) and model_nums should be the same" + + def init_multiple_models(self): + """ + init multiple models and optimizers: the default implementation is copy init manner; + ========================= Extension ============================= + users can override this function according to their own requirements + """ + + additional_models = [ + copy.deepcopy(self.ctx.model) for _ in range(self.model_nums - 1) + ] + self.ctx.models = [self.ctx.model] + additional_models + + additional_optimizers = [ + get_optimizer(self.ctx.models[i], **self.cfg.optimizer) + for i in range(1, self.model_nums) + ] + self.ctx.optimizers = [self.ctx.optimizer] + additional_optimizers + + def register_multiple_model_hooks(self): + """ + By default, all internal models adopt the same hook_set. + ========================= Extension ============================= + Users can override this function to register customized hooks for different internal models. + + Note: + for sequential mode, users can append interact_hook on begin/end triggers such as + " -> (on_fit_end, _interact_to_other_models) -> " + + for parallel mode, users can append interact_hook on any trigger they want such as + " -> (on_xxx_point, _interact_to_other_models) -> " + + self.ctx, we must tell the running hooks which data_loader to call and which num_samples to count + """ + + self.hooks_in_train_multiple_models.extend([ + self.hooks_in_train_multiple_models[0] + for _ in range(1, self.model_nums) + ]) + self.hooks_in_eval_multiple_models.extend([ + self.hooks_in_eval_multiple_models[0] + for _ in range(1, self.model_nums) + ]) + + def init_multiple_model_hooks(self): + self.register_multiple_model_hooks() + if self.models_interact_mode == "sequential": + # hooks_in_xxx is a list of dict, hooks_in_xxx[i] stores specific set for i-th internal model; + # for each dict, the key indicates point-in-time and the value indicates specific hook + self.hooks_in_train = self.hooks_in_train_multiple_models + self.hooks_in_eval = self.hooks_in_eval_multiple_models + elif self.models_interact_mode == "parallel": + # hooks_in_xxx is a dict whose key indicates point-in-time and value indicates specific hook + for trigger in list(self.hooks_in_train.keys()): + self.hooks_in_train[trigger] = [] + self.hooks_in_eval[trigger] = [] + for model_idx in range(len(self.ctx.models)): + self.hooks_in_train[trigger].extend( + self.hooks_in_train_multiple_models[model_idx] + [trigger]) + self.hooks_in_train[trigger].extend( + [self._switch_model_ctx]) + self.hooks_in_eval[trigger].extend( + self.hooks_in_eval_multiple_models[model_idx][trigger]) + self.hooks_in_eval[trigger].extend( + [self._switch_model_ctx]) + else: + raise RuntimeError( + f"Invalid models_interact_mode, should be `sequential` or `parallel`," + f" but got {self.models_interact_mode}") + + def register_hook_in_train(self, + new_hook, + trigger, + model_idx=0, + insert_pos=None, + base_hook=None, + insert_mode="before"): + hooks_dict = self.hooks_in_train_multiple_models[model_idx] + self._register_hook(base_hook, hooks_dict, insert_mode, insert_pos, + new_hook, trigger) + + def register_hook_in_eval(self, + new_hook, + trigger, + model_idx=0, + insert_pos=None, + base_hook=None, + insert_mode="before"): + hooks_dict = self.hooks_in_eval_multiple_models[model_idx] + self._register_hook(base_hook, hooks_dict, insert_mode, insert_pos, + new_hook, trigger) + + def _switch_model_ctx(self, next_model_idx=None): + if next_model_idx is None: + next_model_idx = (self.ctx.cur_model_idx + 1) % len( + self.ctx.models) + self.ctx.cur_model_idx = next_model_idx + self.ctx.model = self.ctx.models[next_model_idx] + self.ctx.optimizer = self.ctx.optimizers[next_model_idx] + + def _run_routine(self, mode, hooks_set, dataset_name=None): + """Run the hooks_set and maintain the mode for multiple internal models + + Arguments: + mode: running mode of client, chosen from train/val/test + + Note: + Considering evaluation could be in ```hooks_set["on_epoch_end"]```, there could be two data loaders in + self.ctx, we must tell the running hooks which data_loader to call and which num_samples to count + + """ + if self.models_interact_mode == "sequential": + assert isinstance(hooks_set, list) and isinstance(hooks_set[0], dict), \ + "When models_interact_mode=sequential, hooks_set should be a list of dict" \ + "hooks_set[i] stores specific set for i-th internal model." \ + "For each dict, the key indicates point-in-time and the value indicates specific hook" + for model_idx in range(len(self.ctx.models)): + # switch different hooks & ctx for different internal models + hooks_set_model_i = hooks_set[model_idx] + self._switch_model_ctx(model_idx) + # [Interaction at run_routine level] + # one model runs its whole routine, then do sth. for interaction, then next model runs its whole routine + # ... -> run_routine_model_i + # -> _switch_model_ctx + # -> (on_fit_end, _interact_to_other_models) + # -> run_routine_model_i+1 + # -> ... + super()._run_routine(mode, hooks_set_model_i, dataset_name) + elif self.models_interact_mode == "parallel": + assert isinstance(hooks_set, dict), \ + "When models_interact_mode=parallel, hooks_set should be a dict " \ + "whose key indicates point-in-time and value indicates specific hook" + # [Interaction at point-in-time level] + # at a specific point-in-time, one model call hooks (including interaction), then next model call hooks + # ... -> (on_xxx_point, hook_xxx_model_i) + # -> (on_xxx_point, _interact_to_other_models) + # -> (on_xxx_point, _switch_model_ctx) + # -> (on_xxx_point, hook_xxx_model_i+1) + # -> ... + super()._run_routine(mode, hooks_set, dataset_name) + else: + raise RuntimeError( + f"Invalid models_interact_mode, should be `sequential` or `parallel`," + f" but got {self.models_interact_mode}") + + def get_model_para(self): + """ + return multiple model parameters + :return: + """ + trained_model_para = [] + for model_idx in range(self.model_nums): + trained_model_para.append( + self._param_filter( + self.ctx.models[model_idx].cpu().state_dict())) + + return trained_model_para[ + 0] if self.model_nums == 1 else trained_model_para + + def update(self, model_parameters): + # update multiple model paras + """ + Arguments: + model_parameters (list[dict]): Multiple pyTorch Module object's state_dict. + """ + if self.model_nums == 1: + super().update(model_parameters) + else: + assert isinstance(model_parameters, list) and isinstance(model_parameters[0], dict), \ + "model_parameters should a list of multiple state_dict" + assert len(model_parameters) == self.model_nums, \ + f"model_parameters should has the same length to self.model_nums, " \ + f"but got {len(model_parameters)} and {self.model_nums} respectively" + for model_idx in range(self.model_nums): + self.ctx.models[model_idx].load_state_dict(self._param_filter( + model_parameters[model_idx]), + strict=False) + + def train(self, target_data_split_name="train"): + # return multiple model paras + sample_size, _, results = super().train(target_data_split_name) + + return sample_size, self.get_model_para(), results diff --git a/federatedscope/core/trainers/trainer_nbafl.py b/federatedscope/core/trainers/trainer_nbafl.py new file mode 100644 index 000000000..8b06d1fb9 --- /dev/null +++ b/federatedscope/core/trainers/trainer_nbafl.py @@ -0,0 +1,133 @@ +from federatedscope.core.auxiliaries.utils import get_random +from federatedscope.core.trainers.torch_trainer import GeneralTorchTrainer +#from federatedscope.core.worker.server import Server +from typing import Type +from copy import deepcopy + +import numpy as np +import torch + + +def wrap_nbafl_trainer( + base_trainer: Type[GeneralTorchTrainer]) -> Type[GeneralTorchTrainer]: + """Implementation of NbAFL refer to `Federated Learning with Differential Privacy: Algorithms and Performance Analysis` [et al., 2020] + (https://ieeexplore.ieee.org/abstract/document/9069945/) + + Arguments: + mu: the factor of the regularizer + epsilon: the distinguishable bound + w_clip: the threshold to clip weights + + """ + + # ---------------- attribute-level plug-in ----------------------- + init_nbafl_ctx(base_trainer) + + # ---------------- action-level plug-in ----------------------- + base_trainer.register_hook_in_train(new_hook=record_initialization, + trigger='on_fit_start', + insert_pos=-1) + + base_trainer.register_hook_in_eval(new_hook=record_initialization, + trigger='on_fit_start', + insert_pos=-1) + + base_trainer.register_hook_in_train(new_hook=del_initialization, + trigger='on_fit_end', + insert_pos=-1) + + base_trainer.register_hook_in_eval(new_hook=del_initialization, + trigger='on_fit_end', + insert_pos=-1) + + base_trainer.register_hook_in_train(new_hook=inject_noise_in_upload, + trigger='on_fit_end', + insert_pos=-1) + return base_trainer + + +def init_nbafl_ctx(base_trainer): + """Set proximal regularizer, and the scale of gaussian noise + + """ + ctx = base_trainer.ctx + cfg = base_trainer.cfg + + # set proximal regularizer + cfg.defrost() + cfg.regularizer.type = 'proximal_regularizer' + cfg.regularizer.mu = cfg.nbafl.mu + cfg.freeze() + from federatedscope.core.auxiliaries.regularizer_builder import get_regularizer + ctx.regularizer = get_regularizer(cfg.regularizer.type) + + # set noise scale during upload + ctx.nbafl_scale_u = cfg.nbafl.w_clip * cfg.federate.total_round_num * cfg.nbafl.constant / ctx.num_train_data / cfg.nbafl.epsilon + + +# ------------------------------------------------------------------------ # +# Additional functions for NbAFL algorithm +# ------------------------------------------------------------------------ # + + +# Trainer +def record_initialization(ctx): + """Record the initialized weights within local updates + + """ + ctx.weight_init = deepcopy( + [_.data.detach() for _ in ctx.model.parameters()]) + + +def del_initialization(ctx): + """Clear the variable to avoid memory leakage + + """ + ctx.weight_init = None + + +def inject_noise_in_upload(ctx): + """Inject noise into weights before the client upload them to server + + """ + for p in ctx.model.parameters(): + noise = get_random("Normal", p.shape, { + "loc": 0, + "scale": ctx.nbafl_scale_u + }, p.device) + p.data += noise + + +# Server +def inject_noise_in_broadcast(cfg, sample_client_num, model): + """Inject noise into weights before the server broadcasts them + + """ + + # Clip weight + for p in model.parameters(): + p.data = p.data / torch.max(torch.ones(size=p.shape), + torch.abs(p.data) / cfg.nbafl.w_clip) + + if len(sample_client_num) > 0: + # Inject noise + L = cfg.federate.sample_client_num if cfg.federate.sample_client_num > 0 else cfg.federate.client_num + if cfg.federate.total_round_num > np.sqrt(cfg.federate.client_num) * L: + scale_d = 2 * cfg.nbafl.w_clip * cfg.nbafl.constant * np.sqrt( + np.power(cfg.federate.total_round_num, 2) - + np.power(L, 2) * cfg.federate.client_num) / ( + min(sample_client_num.values()) * cfg.federate.client_num * + cfg.nbafl.epsilon) + for p in model.parameters(): + p.data += get_random("Normal", p.shape, { + "loc": 0, + "scale": scale_d + }, p.device) + + +#def wrap_nbafl_server(server: Type[Server]) -> Type[Server]: +def wrap_nbafl_server(server): + """Register noise injector for the server + + """ + server.register_noise_injector(inject_noise_in_broadcast) diff --git a/federatedscope/core/trainers/trainer_pFedMe.py b/federatedscope/core/trainers/trainer_pFedMe.py new file mode 100644 index 000000000..540808eaf --- /dev/null +++ b/federatedscope/core/trainers/trainer_pFedMe.py @@ -0,0 +1,149 @@ +import copy + +from federatedscope.core.trainers.torch_trainer import GeneralTorchTrainer +from federatedscope.core.optimizer import wrap_regularized_optimizer +from typing import Type + + +def wrap_pFedMeTrainer( + base_trainer: Type[GeneralTorchTrainer]) -> Type[GeneralTorchTrainer]: + """ + Build a `pFedMeTrainer` with a plug-in manner, by registering new functions into specific `BaseTrainer` + + The pFedMe implementation, "Personalized Federated Learning with Moreau Envelopes (NeurIPS 2020)" + is based on the Algorithm 1 in their paper and official codes: https://github.com/CharlieDinh/pFedMe + """ + + # ---------------- attribute-level plug-in ----------------------- + init_pFedMe_ctx(base_trainer) + + # ---------------- action-level plug-in ----------------------- + base_trainer.register_hook_in_train( + new_hook=hook_on_fit_start_set_local_para_tmp, + trigger="on_fit_start", + insert_pos=-1) + base_trainer.register_hook_in_train( + new_hook=hook_on_epoch_end_update_local, + trigger="on_epoch_end", + insert_pos=-1) + base_trainer.register_hook_in_train(new_hook=hook_on_fit_end_update_local, + trigger="on_fit_end", + insert_pos=-1) + + base_trainer.replace_hook_in_train( + new_hook=_hook_on_batch_forward_flop_count, + target_trigger="on_batch_forward", + target_hook_name="_hook_on_batch_forward_flop_count") + base_trainer.register_hook_in_train(new_hook=_hook_on_epoch_end_flop_count, + trigger="on_epoch_end", + insert_pos=-1) + + # for "on_batch_start" trigger: replace the original hooks into new ones of pFedMe + # 1) cache the original hooks for "on_batch_start" + base_trainer.ctx.original_hook_on_batch_start_train = base_trainer.hooks_in_train[ + "on_batch_start"] + # base_trainer.ctx.original_hook_on_batch_start_eval = base_trainer.hooks_in_eval[ + # "on_batch_start"] + # 2) replace the original hooks for "on_batch_start" + base_trainer.replace_hook_in_train( + new_hook=hook_on_batch_start_init_pfedme, + target_trigger="on_batch_start", + target_hook_name=None) + # base_trainer.replace_hook_in_eval(new_hook=hook_on_batch_start_init_pfedme, + # target_trigger="on_batch_start", + # target_hook_name=None) + + return base_trainer + + +def init_pFedMe_ctx(base_trainer): + """ + init necessary attributes used in pFedMe, + some new attributes will be with prefix `pFedMe` optimizer to avoid namespace pollution + """ + ctx = base_trainer.ctx + cfg = base_trainer.cfg + + # pFedMe finds approximate model with K steps using the same data batch + # the complexity of each pFedMe client is K times the one of FedAvg + ctx.pFedMe_K = cfg.personalization.K + ctx.num_train_epoch *= ctx.pFedMe_K + ctx.pFedMe_approx_fit_counter = 0 + + # the local_model_tmp is used to be the referenced parameter when finding the approximate \theta in paper + # will be copied from model every run_routine + ctx.pFedMe_local_model_tmp = None + + # the optimizer used in pFedMe is based on Moreau Envelopes regularization + # besides, there are two distinct lr for the approximate model and base model + ctx.optimizer = wrap_regularized_optimizer( + ctx.optimizer, cfg.personalization.regular_weight) + for g in ctx.optimizer.param_groups: + g['lr'] = cfg.personalization.lr + ctx.pFedMe_outer_lr = cfg.optimizer.lr + + +def hook_on_fit_start_set_local_para_tmp(ctx): + ctx.pFedMe_local_model_tmp = copy.deepcopy(ctx.model) + # set the compared model data, then the optimizer will find approximate model using trainer.cfg.personalization.lr + compared_global_model_para = [{ + "params": list(ctx.pFedMe_local_model_tmp.parameters()) + }] + ctx.optimizer.set_compared_para_group(compared_global_model_para) + + +def hook_on_batch_start_init_pfedme(ctx): + # refresh data every K step + if ctx.pFedMe_approx_fit_counter == 0: + if ctx.cur_mode == "train": + for hook in ctx.original_hook_on_batch_start_train: + hook(ctx) + else: + for hook in ctx.original_hook_on_batch_start_eval: + hook(ctx) + ctx.data_batch_cache = copy.deepcopy(ctx.data_batch) + else: + # reuse the data_cache since the original hook `_hook_on_batch_end` will clean `data_batch` + ctx.data_batch = copy.deepcopy(ctx.data_batch_cache) + ctx.pFedMe_approx_fit_counter = (ctx.pFedMe_approx_fit_counter + + 1) % ctx.pFedMe_K + + +def _hook_on_batch_forward_flop_count(ctx): + if ctx.monitor.flops_per_sample == 0: + # calculate the flops_per_sample + x, _ = [_.to(ctx.device) for _ in ctx.data_batch] + from fvcore.nn import FlopCountAnalysis + flops_one_batch = FlopCountAnalysis(ctx.model, x).total() + # besides the normal forward flops, pFedMe introduces + # 1) the regularization adds the cost of number of model parameters + flops_one_batch += ctx.monitor.total_model_size / 2 + ctx.monitor.track_avg_flops(flops_one_batch, ctx.batch_size) + ctx.monitor.total_flops += ctx.monitor.flops_per_sample * ctx.batch_size + + +def _hook_on_epoch_end_flop_count(ctx): + # due to the local weight updating + ctx.monitor.total_flops += ctx.monitor.total_model_size / 2 + + +def hook_on_epoch_end_update_local(ctx): + # update local weight after finding approximate theta + for client_param, local_para_tmp in zip( + ctx.model.parameters(), ctx.pFedMe_local_model_tmp.parameters()): + local_para_tmp.data = local_para_tmp.data - ctx.optimizer.regular_weight * \ + ctx.pFedMe_outer_lr * (local_para_tmp.data - client_param.data) + + # set the compared model data, then the optimizer will find approximate model using trainer.cfg.personalization.lr + compared_global_model_para = [{ + "params": list(ctx.pFedMe_local_model_tmp.parameters()) + }] + ctx.optimizer.set_compared_para_group(compared_global_model_para) + + +def hook_on_fit_end_update_local(ctx): + for param, local_para_tmp in zip(ctx.model.parameters(), + ctx.pFedMe_local_model_tmp.parameters()): + param.data = local_para_tmp.data + + del ctx.pFedMe_local_model_tmp diff --git a/federatedscope/core/worker/__init__.py b/federatedscope/core/worker/__init__.py new file mode 100644 index 000000000..05be87247 --- /dev/null +++ b/federatedscope/core/worker/__init__.py @@ -0,0 +1,10 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division +from __future__ import with_statement + +from federatedscope.core.worker.base_worker import Worker +from federatedscope.core.worker.server import Server +from federatedscope.core.worker.client import Client + +__all__ = ['Worker', 'Server', 'Client'] diff --git a/federatedscope/core/worker/base_worker.py b/federatedscope/core/worker/base_worker.py new file mode 100644 index 000000000..f7f064de9 --- /dev/null +++ b/federatedscope/core/worker/base_worker.py @@ -0,0 +1,55 @@ +from federatedscope.core.monitors.monitor import Monitor + + +class Worker(object): + """ + The base worker class. + """ + def __init__(self, ID=-1, state=0, config=None, model=None, strategy=None): + self._ID = ID + self._state = state + self._model = model + self._cfg = config + self._strategy = strategy + self._mode = self._cfg.federate.mode.lower() + self._monitor = Monitor(config, monitored_object=self) + + @property + def ID(self): + return self._ID + + @ID.setter + def ID(self, value): + self._ID = value + + @property + def state(self): + return self._state + + @state.setter + def state(self, value): + self._state = value + + @property + def model(self): + return self._model + + @model.setter + def model(self, value): + self._model = value + + @property + def strategy(self): + return self._strategy + + @strategy.setter + def strategy(self, value): + self._strategy = value + + @property + def mode(self): + return self._mode + + @mode.setter + def mode(self, value): + self._mode = value diff --git a/federatedscope/core/worker/client.py b/federatedscope/core/worker/client.py new file mode 100644 index 000000000..6d53a73b6 --- /dev/null +++ b/federatedscope/core/worker/client.py @@ -0,0 +1,404 @@ +import copy +import logging +import sys +import pickle + +from federatedscope.core.message import Message +from federatedscope.core.communication import StandaloneCommManager, \ + gRPCCommManager +from federatedscope.core.monitors.early_stopper import EarlyStopper +from federatedscope.core.monitors.monitor import update_best_result +from federatedscope.core.worker import Worker +from federatedscope.core.auxiliaries.trainer_builder import get_trainer +from federatedscope.core.secret_sharing import AdditiveSecretSharing +from federatedscope.core.auxiliaries.utils import merge_dict + +logger = logging.getLogger(__name__) + + +class Client(Worker): + """ + The Client class, which describes the behaviors of client in an FL course. + The behaviors are described by the handling functions (named as callback_funcs_for_xxx) + + Arguments: + ID: The unique ID of the client, which is assigned by the server when joining the FL course + server_id: (Default) 0 + state: The training round + config: The configuration + data: The data owned by the client + model: The model maintained locally + device: The device to run local training and evaluation + strategy: redundant attribute + """ + def __init__(self, + ID=-1, + server_id=None, + state=-1, + config=None, + data=None, + model=None, + device='cpu', + strategy=None, + *args, + **kwargs): + + super(Client, self).__init__(ID, state, config, model, strategy) + + # Attack only support the stand alone model; + # Check if is a attacker; a client is a attacker if the config.attack.attack_method is provided + self.is_attacker = config.attack.attacker_id == ID and \ + config.attack.attack_method != '' and config.federate.mode == 'standalone' + + # Build Trainer + # trainer might need configurations other than those of trainer node + self.trainer = get_trainer(model=model, + data=data, + device=device, + config=self._cfg, + is_attacker=self.is_attacker, + monitor=self._monitor) + + # For client-side evaluation + self.best_results = dict() + self.history_results = dict() + # in local or global training mode, we do use the early stopper. + # Otherwise, we set patience=0 to deactivate the local early-stopper + patience = self._cfg.early_stop.patience if self._cfg.federate.method in [ + "local", "global" + ] else 0 + self.early_stopper = EarlyStopper( + patience, self._cfg.early_stop.delta, + self._cfg.early_stop.improve_indicator_mode, + self._cfg.early_stop.the_smaller_the_better) + + # Secret Sharing Manager and message buffer + self.ss_manager = AdditiveSecretSharing( + shared_party_num=int(self._cfg.federate.sample_client_num + )) if self._cfg.federate.use_ss else None + self.msg_buffer = {'train': dict(), 'eval': dict()} + + # Register message handlers + self.msg_handlers = dict() + self._register_default_handlers() + + # Initialize communication manager + self.server_id = server_id + if self.mode == 'standalone': + comm_queue = kwargs['shared_comm_queue'] + self.comm_manager = StandaloneCommManager(comm_queue=comm_queue, + monitor=self._monitor) + self.local_address = None + elif self.mode == 'distributed': + host = kwargs['host'] + port = kwargs['port'] + server_host = kwargs['server_host'] + server_port = kwargs['server_port'] + self.comm_manager = gRPCCommManager( + host=host, port=port, client_num=self._cfg.federate.client_num) + logger.info('Client: Listen to {}:{}...'.format(host, port)) + self.comm_manager.add_neighbors(neighbor_id=server_id, + address={ + 'host': server_host, + 'port': server_port + }) + self.local_address = { + 'host': self.comm_manager.host, + 'port': self.comm_manager.port + } + + def register_handlers(self, msg_type, callback_func): + """ + To bind a message type with a handling function. + + Arguments: + msg_type (str): The defined message type + callback_func: The handling functions to handle the received message + """ + self.msg_handlers[msg_type] = callback_func + + def _register_default_handlers(self): + self.register_handlers('assign_client_id', + self.callback_funcs_for_assign_id) + self.register_handlers('ask_for_join_in_info', + self.callback_funcs_for_join_in_info) + self.register_handlers('address', self.callback_funcs_for_address) + self.register_handlers('model_para', + self.callback_funcs_for_model_para) + self.register_handlers('ss_model_para', + self.callback_funcs_for_model_para) + self.register_handlers('evaluate', self.callback_funcs_for_evaluate) + self.register_handlers('finish', self.callback_funcs_for_finish) + self.register_handlers('converged', self.callback_funcs_for_converged) + + def join_in(self): + """ + To send 'join_in' message to the server for joining in the FL course. + """ + self.comm_manager.send( + Message(msg_type='join_in', + sender=self.ID, + receiver=[self.server_id], + content=self.local_address)) + + def run(self): + """ + To listen to the message and handle them accordingly (used for distributed mode) + """ + while True: + msg = self.comm_manager.receive() + if self.state <= msg.state: + self.msg_handlers[msg.msg_type](msg) + + if msg.msg_type == 'finish': + break + + def callback_funcs_for_model_para(self, message: Message): + """ + The handling function for receiving model parameters, which triggers the local training process. + This handling function is widely used in various FL courses. + + Arguments: + message: The received message, which includes sender, receiver, state, and content. + More detail can be found in federatedscope.core.message + """ + if 'ss' in message.msg_type: + # A fragment of the shared secret + state, content = message.state, message.content + self.msg_buffer['train'][state].append(content) + + if len(self.msg_buffer['train'] + [state]) == self._cfg.federate.client_num: + # Check whether the received fragments are enough + model_list = self.msg_buffer['train'][state] + sample_size, first_aggregate_model_para = model_list[0] + single_model_case = True + if isinstance(first_aggregate_model_para, list): + assert isinstance(first_aggregate_model_para[0], dict), \ + "aggregate_model_para should a list of multiple state_dict for multiple models" + single_model_case = False + else: + assert isinstance(first_aggregate_model_para, dict), \ + "aggregate_model_para should a state_dict for single model case" + first_aggregate_model_para = [first_aggregate_model_para] + model_list = [[model] for model in model_list] + + for sub_model_idx, aggregate_single_model_para in enumerate( + first_aggregate_model_para): + for key in aggregate_single_model_para: + for i in range(1, len(model_list)): + aggregate_single_model_para[key] += model_list[i][ + sub_model_idx][key] + + self.comm_manager.send( + Message(msg_type='model_para', + sender=self.ID, + receiver=[self.server_id], + state=self.state, + content=(sample_size, first_aggregate_model_para[0] + if single_model_case else + first_aggregate_model_para))) + + else: + round, sender, content = message.state, message.sender, message.content + self.trainer.update(content) + self.state = round + if self.early_stopper.early_stopped and self._cfg.federate.method in [ + "local", "global" + ]: + sample_size, model_para_all, results = 0, self.trainer.get_model_para( + ), {} + logger.info( + f"Client #{self.ID} has been early stopped, we will skip the local training" + ) + self._monitor.local_converged() + else: + sample_size, model_para_all, results = self.trainer.train() + logger.info( + self._monitor.format_eval_res(results, + rnd=self.state, + role='Client #{}'.format( + self.ID), + return_raw=True)) + + # Return the feedbacks to the server after local update + if self._cfg.federate.use_ss: + single_model_case = True + if isinstance(model_para_all, list): + assert isinstance(model_para_all[0], dict), \ + "model_para should a list of multiple state_dict for multiple models" + single_model_case = False + else: + assert isinstance(model_para_all, dict), \ + "model_para should a state_dict for single model case" + model_para_all = [model_para_all] + model_para_list_all = [] + for model_para in model_para_all: + for key in model_para: + model_para[key] = model_para[key] * sample_size + model_para_list = self.ss_manager.secret_split(model_para) + model_para_list_all.append(model_para_list) + #print(model_para) + #print(self.ss_manager.secret_reconstruct(model_para_list)) + frame_idx = 0 + for neighbor in self.comm_manager.neighbors: + if neighbor != self.server_id: + content_frame = model_para_list_all[0][frame_idx] if single_model_case else \ + [model_para_list[frame_idx] for model_para_list in model_para_list_all] + self.comm_manager.send( + Message(msg_type='ss_model_para', + sender=self.ID, + receiver=[neighbor], + state=self.state, + content=content_frame)) + frame_idx += 1 + content_frame = model_para_list_all[0][frame_idx] if single_model_case else \ + [model_para_list[frame_idx] for model_para_list in model_para_list_all] + self.msg_buffer['train'][self.state] = [(sample_size, + content_frame)] + else: + self.comm_manager.send( + Message(msg_type='model_para', + sender=self.ID, + receiver=[sender], + state=self.state, + content=(sample_size, model_para_all))) + + def callback_funcs_for_assign_id(self, message: Message): + """ + The handling function for receiving the client_ID assigned by the server (during the joining process), + which is used in the distributed mode. + + Arguments: + message: The received message + """ + content = message.content + self.ID = int(content) + logger.info('Client (address {}:{}) is assigned with #{:d}.'.format( + self.comm_manager.host, self.comm_manager.port, self.ID)) + + def callback_funcs_for_join_in_info(self, message: Message): + """ + The handling function for receiving the request of join in information + (such as batch_size, num_of_samples) during the joining process. + + Arguments: + message: The received message + """ + requirements = message.content + join_in_info = dict() + for requirement in requirements: + if requirement.lower() == 'num_sample': + if self._cfg.federate.batch_or_epoch == 'batch': + num_sample = self._cfg.federate.local_update_steps * self._cfg.data.batch_size + else: + num_sample = self._cfg.federate.local_update_steps * self.trainer.ctx.num_train_batch + join_in_info['num_sample'] = num_sample + else: + raise ValueError( + 'Fail to get the join in information with type {}'.format( + requirement)) + self.comm_manager.send( + Message(msg_type='join_in_info', + sender=self.ID, + receiver=[self.server_id], + state=self.state, + content=join_in_info)) + + def callback_funcs_for_address(self, message: Message): + """ + The handling function for receiving other clients' IP addresses, which is used for constructing a complex topology + + Arguments: + message: The received message + """ + content = message.content + for neighbor_id, address in content.items(): + if int(neighbor_id) != self.ID: + self.comm_manager.add_neighbors(neighbor_id, address) + + def callback_funcs_for_evaluate(self, message: Message): + """ + The handling function for receiving the request of evaluating + + Arguments: + message: The received message + """ + + sender = message.sender + self.state = message.state + if message.content != None: + self.trainer.update(message.content) + if self.early_stopper.early_stopped and self._cfg.federate.method in [ + "local", "global" + ]: + metrics = list(self.best_results.values())[0] + else: + metrics = {} + if self._cfg.trainer.finetune.before_eval: + self.trainer.finetune() + for split in self._cfg.eval.split: + # new function part + if split in ['poison'] and self.is_attacker: + continue + # new function part + eval_metrics = self.trainer.evaluate( + target_data_split_name=split) + + if self._cfg.federate.mode == 'distributed': + logger.info( + self._monitor.format_eval_res(eval_metrics, + rnd=self.state, + role='Client #{}'.format( + self.ID))) + + metrics.update(**eval_metrics) + + formatted_eval_res = self._monitor.format_eval_res( + metrics, + rnd=self.state, + role='Client #{}'.format(self.ID), + forms='raw', + return_raw=True) + update_best_result(self.best_results, + formatted_eval_res['Results_raw'], + results_type=f"client #{self.ID}", + round_wise_update_key=self._cfg.eval. + best_res_update_round_wise_key) + self.history_results = merge_dict( + self.history_results, formatted_eval_res['Results_raw']) + self.early_stopper.track_and_check_best(self.history_results[ + self._cfg.eval.best_res_update_round_wise_key]) + + self.comm_manager.send( + Message(msg_type='metrics', + sender=self.ID, + receiver=[sender], + state=self.state, + content=metrics)) + + def callback_funcs_for_finish(self, message: Message): + """ + The handling function for receiving the signal of finishing the FL course + + Arguments: + message: The received message + """ + logger.info( + f"================= client {self.ID} received finish message ============================" + ) + + if message.content != None: + self.trainer.update(message.content) + + self._monitor.finish_fl() + + def callback_funcs_for_converged(self, message: Message): + """ + The handling function for receiving the signal that the FL course converged + + Arguments: + message: The received message + """ + + self._monitor.global_converged() diff --git a/federatedscope/core/worker/server.py b/federatedscope/core/worker/server.py new file mode 100644 index 000000000..6c042ba9a --- /dev/null +++ b/federatedscope/core/worker/server.py @@ -0,0 +1,707 @@ +from http import client +import logging +import copy +import os + +import numpy as np +import pickle + +from federatedscope.core.monitors.early_stopper import EarlyStopper +from federatedscope.core.message import Message +from federatedscope.core.communication import StandaloneCommManager, gRPCCommManager +from federatedscope.core.monitors.monitor import update_best_result +from federatedscope.core.worker import Worker +from federatedscope.core.auxiliaries.aggregator_builder import get_aggregator +from federatedscope.core.auxiliaries.utils import merge_dict, Timeout +from federatedscope.core.auxiliaries.trainer_builder import get_trainer +from federatedscope.core.secret_sharing import AdditiveSecretSharing + +logger = logging.getLogger(__name__) + + +class Server(Worker): + """ + The Server class, which describes the behaviors of server in an FL course. + The behaviors are described by the handled functions (named as callback_funcs_for_xxx). + + Arguments: + ID: The unique ID of the server, which is set to 0 by default + state: The training round + config: the configuration + data: The data owned by the server (for global evaluation) + model: The model used for aggregation + client_num: The (expected) client num to start the FL course + total_round_num: The total number of the training round + device: The device to run local training and evaluation + strategy: redundant attribute + """ + def __init__(self, + ID=-1, + state=0, + config=None, + data=None, + model=None, + client_num=5, + total_round_num=10, + device='cpu', + strategy=None, + **kwargs): + + super(Server, self).__init__(ID, state, config, model, strategy) + + self.data = data + self.device = device + self.best_results = dict() + self.history_results = dict() + self.early_stopper = EarlyStopper( + self._cfg.early_stop.patience, self._cfg.early_stop.delta, + self._cfg.early_stop.improve_indicator_mode, + self._cfg.early_stop.the_smaller_the_better) + + if self._cfg.federate.share_local_model: + # put the model to the specified device + model.to(device) + # Build aggregator + self.aggregator = get_aggregator(self._cfg.federate.method, + model=model, + device=device, + online=self._cfg.federate.online_aggr, + config=self._cfg) + if self._cfg.federate.restore_from != '': + cur_round = self.aggregator.load_model( + self._cfg.federate.restore_from) + logger.info("Restored the model from {}-th round's ckpt") + + if int(config.model.model_num_per_trainer) != config.model.model_num_per_trainer or \ + config.model.model_num_per_trainer < 1: + raise ValueError( + f"model_num_per_trainer should be integer and >= 1, " + f"got {config.model.model_num_per_trainer}.") + self.model_num = config.model.model_num_per_trainer + self.models = [self.model] + self.aggregators = [self.aggregator] + if self.model_num > 1: + self.models.extend( + [copy.deepcopy(self.model) for _ in range(self.model_num - 1)]) + self.aggregators.extend([ + copy.deepcopy(self.aggregator) + for _ in range(self.model_num - 1) + ]) + + # function for recovering shared secret + self.recover_fun = AdditiveSecretSharing( + shared_party_num=int(self._cfg.federate.sample_client_num) + ).fixedpoint2float if self._cfg.federate.use_ss else None + + if self._cfg.federate.make_global_eval: + # set up a trainer for conducting evaluation in server + assert self.model is not None + assert self.data is not None + self.trainer = get_trainer( + model=self.model, + data=self.data, + device=self.device, + config=self._cfg, + only_for_eval=True, + monitor=self._monitor + ) # the trainer is only used for global evaluation + self.trainers = [self.trainer] + if self.model_num > 1: + # By default, the evaluation is conducted by calling trainer[i].eval over all internal models + self.trainers.extend([ + copy.deepcopy(self.trainer) + for _ in range(self.model_num - 1) + ]) + + # Initialize the number of joined-in clients + self._client_num = client_num + self._total_round_num = total_round_num + self.sample_client_num = int(self._cfg.federate.sample_client_num) + self.join_in_client_num = 0 + self.join_in_info = dict() + + # Register message handlers + self.msg_handlers = dict() + self._register_default_handlers() + + # Initialize communication manager and message buffer + self.msg_buffer = {'train': dict(), 'eval': dict()} + if self.mode == 'standalone': + comm_queue = kwargs['shared_comm_queue'] + self.comm_manager = StandaloneCommManager(comm_queue=comm_queue, + monitor=self._monitor) + elif self.mode == 'distributed': + host = kwargs['host'] + port = kwargs['port'] + self.comm_manager = gRPCCommManager(host=host, + port=port, + client_num=client_num) + logger.info('Server #{:d}: Listen to {}:{}...'.format( + self.ID, host, port)) + + # inject noise before broadcast + self._noise_injector = None + + @property + def client_num(self): + return self._client_num + + @client_num.setter + def client_num(self, value): + self._client_num = value + + @property + def total_round_num(self): + return self._total_round_num + + @total_round_num.setter + def total_round_num(self, value): + self._total_round_num = value + + def register_noise_injector(self, func): + self._noise_injector = func + + def register_handlers(self, msg_type, callback_func): + """ + To bind a message type with a handling function. + + Arguments: + msg_type (str): The defined message type + callback_func: The handling functions to handle the received message + """ + self.msg_handlers[msg_type] = callback_func + + def _register_default_handlers(self): + self.register_handlers('join_in', self.callback_funcs_for_join_in) + self.register_handlers('join_in_info', self.callback_funcs_for_join_in) + self.register_handlers('model_para', self.callback_funcs_model_para) + self.register_handlers('metrics', self.callback_funcs_for_metrics) + + def run(self): + """ + To start the FL course, listen and handle messages (for distributed mode). + """ + + # Begin: Broadcast model parameters and start to FL train + while self.join_in_client_num < self.client_num: + msg = self.comm_manager.receive() + self.msg_handlers[msg.msg_type](msg) + + # Running: listen for message (updates from clients), + # aggregate and broadcast feedbacks (aggregated model parameters) + min_received_num = self._cfg.asyn.min_received_num if hasattr( + self._cfg, 'asyn') else self._cfg.federate.sample_client_num + num_failure = 0 + with Timeout(self._cfg.asyn.timeout) as time_counter: + while self.state <= self.total_round_num: + try: + msg = self.comm_manager.receive() + move_on_flag = self.msg_handlers[msg.msg_type](msg) + if move_on_flag: + time_counter.reset() + except TimeoutError: + logger.info('Time out at the training round #{}'.format( + self.state)) + move_on_flag_eval = self.check_and_move_on( + min_received_num=min_received_num, + check_eval_result=True) + move_on_flag = self.check_and_move_on( + min_received_num=min_received_num) + if not move_on_flag and not move_on_flag_eval: + num_failure += 1 + # Terminate the training if the number of failure exceeds the maximum number (default value: 10) + if time_counter.exceed_max_failure(num_failure): + logger.info( + '----------- Training fails at round #{:d} -------------' + .format(self.state)) + break + + # Time out, broadcast the model para and re-start the training round + logger.info( + '----------- Re-starting the training round (Round #{:d}) for {:d} time -------------' + .format(self.state, num_failure)) + # Clean the msg_buffer + self.msg_buffer['train'][self.state].clear() + + self.broadcast_model_para( + msg_type='model_para', + sample_client_num=self.sample_client_num) + else: + num_failure = 0 + time_counter.reset() + + self.terminate(msg_type='finish') + + def check_and_move_on(self, + check_eval_result=False, + min_received_num=None): + """ + To check the message_buffer. When enough messages are receiving, some events + (such as perform aggregation, evaluation, and move to the next training round) would be triggered. + + Arguments: + check_eval_result (bool): If True, check the message buffer for evaluation; + and check the message buffer for training otherwise. + """ + if min_received_num is None: + min_received_num = self._cfg.federate.sample_client_num + assert min_received_num <= self.sample_client_num + + if check_eval_result: + min_received_num = len(list(self.comm_manager.neighbors.keys())) + + move_on_flag = True # To record whether moving to a new training round or finishing the evaluation + if self.check_buffer(self.state, min_received_num, check_eval_result): + + if not check_eval_result: # in the training process + # Get all the message + train_msg_buffer = self.msg_buffer['train'][self.state] + for model_idx in range(self.model_num): + model = self.models[model_idx] + aggregator = self.aggregators[model_idx] + msg_list = list() + for client_id in train_msg_buffer: + if self.model_num == 1: + msg_list.append(train_msg_buffer[client_id]) + else: + train_data_size, model_para_multiple = train_msg_buffer[ + client_id] + msg_list.append((train_data_size, + model_para_multiple[model_idx])) + + # Trigger the monitor here (for training) + if 'dissim' in self._cfg.eval.monitoring: + B_val = self._monitor.calc_blocal_dissim( + model.load_state_dict(strict=False), msg_list) + formatted_eval_res = self._monitor.format_eval_res( + B_val, rnd=self.state, role='Server #') + logger.info(formatted_eval_res) + + # Aggregate + agg_info = { + 'client_feedback': msg_list, + 'recover_fun': self.recover_fun + } + result = aggregator.aggregate(agg_info) + model.load_state_dict(result, strict=False) + + self.state += 1 + if self.state % self._cfg.eval.freq == 0 and self.state != self.total_round_num: + # Evaluate + logger.info( + 'Server #{:d}: Starting evaluation at the end of round {:d}.' + .format(self.ID, self.state - 1)) + self.eval() + + if self.state < self.total_round_num: + # Move to next round of training + logger.info( + '----------- Starting a new training round (Round #{:d}) -------------' + .format(self.state)) + # Clean the msg_buffer + self.msg_buffer['train'][self.state - 1].clear() + + self.broadcast_model_para( + msg_type='model_para', + sample_client_num=self.sample_client_num) + else: + # Final Evaluate + logger.info( + 'Server #{:d}: Training is finished! Starting evaluation.' + .format(self.ID)) + self.eval() + + else: # in the evaluation process + # Get all the message & aggregate + formatted_eval_res = self.merge_eval_results_from_all_clients() + self.history_results = merge_dict(self.history_results, + formatted_eval_res) + self.check_and_save() + + else: + move_on_flag = False + + return move_on_flag + + def check_and_save(self): + """ + To save the results and save model after each evaluation. + """ + + # early stopping + if "Results_weighted_avg" in self.history_results and \ + self._cfg.eval.best_res_update_round_wise_key in self.history_results['Results_weighted_avg']: + should_stop = self.early_stopper.track_and_check( + self.history_results['Results_weighted_avg'][ + self._cfg.eval.best_res_update_round_wise_key]) + elif "Results_avg" in self.history_results and \ + self._cfg.eval.best_res_update_round_wise_key in self.history_results['Results_avg']: + should_stop = self.early_stopper.track_and_check( + self.history_results['Results_avg'][ + self._cfg.eval.best_res_update_round_wise_key]) + else: + should_stop = False + + if should_stop: + self._monitor.global_converged() + self.comm_manager.send( + Message( + msg_type="converged", + sender=self.ID, + receiver=list(self.comm_manager.neighbors.keys()), + state=self.state, + )) + self.state = self.total_round_num + 1 + + if should_stop or self.state == self.total_round_num: + logger.info( + 'Server #{:d}: Final evaluation is finished! Starting merging results.' + .format(self.ID)) + # last round or early stopped + self.save_best_results() + if not self._cfg.federate.make_global_eval: + self.save_client_eval_results() + self.terminate(msg_type='finish') + + # Clean the clients evaluation msg buffer + if not self._cfg.federate.make_global_eval: + round = max(self.msg_buffer['eval'].keys()) + self.msg_buffer['eval'][round].clear() + + if self.state == self.total_round_num: + # break out the loop for distributed mode + self.state += 1 + + def save_best_results(self): + """ + To Save the best evaluation results. + """ + + if self._cfg.federate.save_to != '': + self.aggregator.save_model(self._cfg.federate.save_to, self.state) + formatted_best_res = self._monitor.format_eval_res( + results=self.best_results, + rnd="Final", + role='Server #', + forms=["raw"], + return_raw=True) + logger.info(formatted_best_res) + self.save_formatted_results(formatted_best_res) + + def save_formatted_results(self, formatted_res): + with open(os.path.join(self._cfg.outdir, "eval_results.log"), + "a") as outfile: + outfile.write(str(formatted_res) + "\n") + + def save_client_eval_results(self): + """ + save the evaluation results of each client when the fl course early stopped or terminated + + :return: + """ + round = max(self.msg_buffer['eval'].keys()) + eval_msg_buffer = self.msg_buffer['eval'][round] + + with open(os.path.join(self._cfg.outdir, "eval_results.log"), + "a") as outfile: + for client_id, client_eval_results in eval_msg_buffer.items(): + formatted_res = self._monitor.format_eval_res( + client_eval_results, + rnd=self.state, + role='Client #{}'.format(client_id), + return_raw=True) + logger.info(formatted_res) + outfile.write(str(formatted_res) + "\n") + + def merge_eval_results_from_all_clients(self): + """ + Merge evaluation results from all clients, update best, + log the merged results and save them into eval_results.log + + :returns: the formatted merged results + """ + + round = max(self.msg_buffer['eval'].keys()) + eval_msg_buffer = self.msg_buffer['eval'][round] + metrics_all_clients = dict() + for each_client in eval_msg_buffer: + client_eval_results = eval_msg_buffer[each_client] + for key in client_eval_results.keys(): + if key not in metrics_all_clients: + metrics_all_clients[key] = list() + metrics_all_clients[key].append(float( + client_eval_results[key])) + formatted_logs = self._monitor.format_eval_res( + metrics_all_clients, + rnd=self.state, + role='Server #', + forms=self._cfg.eval.report) + logger.info(formatted_logs) + update_best_result(self.best_results, + metrics_all_clients, + results_type="client_individual", + round_wise_update_key=self._cfg.eval. + best_res_update_round_wise_key) + self.save_formatted_results(formatted_logs) + for form in self._cfg.eval.report: + if form != "raw": + update_best_result(self.best_results, + formatted_logs[f"Results_{form}"], + results_type=f"client_summarized_{form}", + round_wise_update_key=self._cfg.eval. + best_res_update_round_wise_key) + + return formatted_logs + + def broadcast_model_para(self, + msg_type='model_para', + sample_client_num=-1): + """ + To broadcast the message to all clients or sampled clients + + Arguments: + msg_type: 'model_para' or other user defined msg_type + sample_client_num: the number of sampled clients in the broadcast behavior. + And sample_client_num = -1 denotes to broadcast to all the clients. + """ + + if sample_client_num > 0: # only activated at training process + + receiver = np.random.choice(np.arange(1, self.client_num + 1), + size=sample_client_num, + replace=False).tolist() + + else: + # broadcast to all clients + receiver = list(self.comm_manager.neighbors.keys()) + + if self._noise_injector is not None and msg_type == 'model_para': + # Inject noise only when broadcast parameters + for model_idx_i in range(len(self.models)): + num_sample_clients = [ + v["num_sample"] for v in self.join_in_info.values() + ] + self._noise_injector(self._cfg, num_sample_clients, + self.models[model_idx_i]) + + skip_broadcast = self._cfg.federate.method in ["local", "global"] + if self.model_num > 1: + model_para = [{} if skip_broadcast else model.state_dict() + for model in self.models] + else: + model_para = {} if skip_broadcast else self.model.state_dict() + + self.comm_manager.send( + Message(msg_type=msg_type, + sender=self.ID, + receiver=receiver, + state=min(self.state, self.total_round_num), + content=model_para)) + if self._cfg.federate.online_aggr: + for idx in range(self.model_num): + self.aggregators[idx].reset() + + def broadcast_client_address(self): + """ + To broadcast the communication addresses of clients (used for additive secret sharing) + """ + + self.comm_manager.send( + Message(msg_type='address', + sender=self.ID, + receiver=list(self.comm_manager.neighbors.keys()), + state=self.state, + content=self.comm_manager.get_neighbors())) + + def check_buffer(self, + cur_round, + min_received_num, + check_eval_result=False): + """ + To check the message buffer + + Arguments: + cur_round (int): The current round number + min_received_num (int): The minimal number of the receiving messages + check_eval_result (bool): To check training results for evaluation results + :returns: Whether enough messages have been received or not + :rtype: bool + """ + + if check_eval_result: + if 'eval' not in self.msg_buffer.keys() or len( + self.msg_buffer['eval'].keys()) == 0: + return False + buffer = self.msg_buffer['eval'] + cur_round = max(buffer.keys()) + else: + buffer = self.msg_buffer['train'] + + if cur_round not in buffer or len( + buffer[cur_round]) < min_received_num: + return False + else: + return True + + def check_client_join_in(self): + """ + To check whether all the clients have joined in the FL course. + """ + + if len(self._cfg.federate.join_in_info) != 0: + return len(self.join_in_info) == self.client_num + else: + return self.join_in_client_num == self.client_num + + def trigger_for_start(self): + """ + To start the FL course when the expected number of clients have joined + """ + + if self.check_client_join_in(): + if self._cfg.federate.use_ss: + self.broadcast_client_address() + logger.info( + '----------- Starting training (Round #{:d}) -------------'. + format(self.state)) + self.broadcast_model_para(msg_type='model_para', + sample_client_num=self.sample_client_num) + + def terminate(self, msg_type='finish'): + """ + To terminate the FL course + """ + if self.model_num > 1: + model_para = [model.state_dict() for model in self.models] + else: + model_para = self.model.state_dict() + + self._monitor.finish_fl() + + self.comm_manager.send( + Message(msg_type=msg_type, + sender=self.ID, + receiver=list(self.comm_manager.neighbors.keys()), + state=self.state, + content=model_para)) + + def eval(self): + """ + To conduct evaluation. When cfg.federate.make_global_eval=True, a global evaluation is conducted by the server. + """ + + if self._cfg.federate.make_global_eval: + # By default, the evaluation is conducted one-by-one for all internal models; + # for other cases such as ensemble, override the eval function + for i in range(self.model_num): + trainer = self.trainers[i] + # Preform evaluation in server + metrics = {} + for split in self._cfg.eval.split: + eval_metrics = trainer.evaluate( + target_data_split_name=split) + metrics.update(**eval_metrics) + formatted_eval_res = self._monitor.format_eval_res( + metrics, + rnd=self.state, + role='Server #', + forms=self._cfg.eval.report, + return_raw=self._cfg.federate.make_global_eval) + update_best_result(self.best_results, + formatted_eval_res['Results_raw'], + results_type="server_global_eval", + round_wise_update_key=self._cfg.eval. + best_res_update_round_wise_key) + self.history_results = merge_dict(self.history_results, + formatted_eval_res) + self.save_formatted_results(formatted_eval_res) + logger.info(formatted_eval_res) + self.check_and_save() + else: + # Preform evaluation in clients + self.broadcast_model_para(msg_type='evaluate') + + def callback_funcs_model_para(self, message: Message): + """ + The handling function for receiving model parameters, which triggers check_and_move_on + (perform aggregation when enough feedback has been received). + This handling function is widely used in various FL courses. + + Arguments: + message: The received message, which includes sender, receiver, state, and content. + More detail can be found in federatedscope.core.message + """ + + round, sender, content = message.state, message.sender, message.content + # For a new round + if round not in self.msg_buffer['train'].keys(): + self.msg_buffer['train'][round] = dict() + + self.msg_buffer['train'][round][sender] = content + + if self._cfg.federate.online_aggr: + self.aggregator.inc(content) + + return self.check_and_move_on() + + def callback_funcs_for_join_in(self, message: Message): + """ + The handling function for receiving the join in information. The server might request for some information + (such as num_of_samples) if necessary, assign IDs for the servers. + If all the clients have joined in, the training process will be triggered. + + Arguments: + message: The received message + """ + + if 'info' in message.msg_type: + sender, info = message.sender, message.content + for key in self._cfg.federate.join_in_info: + assert key in info + self.join_in_info[sender] = info + logger.info('Server #{:d}: Client #{:d} has joined in !'.format( + self.ID, sender)) + else: + self.join_in_client_num += 1 + sender, address = message.sender, message.content + if int(sender) == -1: # assign number to client + sender = self.join_in_client_num + self.comm_manager.add_neighbors(neighbor_id=sender, + address=address) + self.comm_manager.send( + Message(msg_type='assign_client_id', + sender=self.ID, + receiver=[sender], + state=self.state, + content=str(sender))) + else: + self.comm_manager.add_neighbors(neighbor_id=sender, + address=address) + + if len(self._cfg.federate.join_in_info) != 0: + self.comm_manager.send( + Message(msg_type='ask_for_join_in_info', + sender=self.ID, + receiver=[sender], + state=self.state, + content=self._cfg.federate.join_in_info.copy())) + + self.trigger_for_start() + + def callback_funcs_for_metrics(self, message: Message): + """ + The handling function for receiving the evaluation results, which triggers check_and_move_on + (perform aggregation when enough feedback has been received). + + Arguments: + message: The received message + """ + + round, sender, content = message.state, message.sender, message.content + + if round not in self.msg_buffer['eval'].keys(): + self.msg_buffer['eval'][round] = dict() + + self.msg_buffer['eval'][round][sender] = content + + return self.check_and_move_on(check_eval_result=True) diff --git a/federatedscope/cross_backends/__init__.py b/federatedscope/cross_backends/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/federatedscope/cross_backends/tf_aggregator.py b/federatedscope/cross_backends/tf_aggregator.py new file mode 100644 index 000000000..6c59fb335 --- /dev/null +++ b/federatedscope/cross_backends/tf_aggregator.py @@ -0,0 +1,44 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from copy import deepcopy +import numpy as np + + +class FedAvgAggregator(object): + def __init__(self, model=None, device='cpu'): + self.model = model + self.device = device + + def aggregate(self, agg_info): + models = agg_info["client_feedback"] + avg_model = self._para_weighted_avg(models) + + return avg_model + + def _para_weighted_avg(self, models): + + training_set_size = 0 + for i in range(len(models)): + sample_size, _ = models[i] + training_set_size += sample_size + + sample_size, avg_model = models[0] + for key in avg_model: + for i in range(len(models)): + local_sample_size, local_model = models[i] + weight = local_sample_size / training_set_size + if i == 0: + avg_model[key] = np.asarray(local_model[key]) * weight + else: + avg_model[key] += np.asarray(local_model[key]) * weight + + return avg_model + + def update(self, model_parameters): + ''' + Arguments: + model_parameters (dict): PyTorch Module object's state_dict. + ''' + self.model.load_state_dict(model_parameters) diff --git a/federatedscope/cross_backends/tf_lr.py b/federatedscope/cross_backends/tf_lr.py new file mode 100644 index 000000000..2777562c5 --- /dev/null +++ b/federatedscope/cross_backends/tf_lr.py @@ -0,0 +1,81 @@ +import tensorflow as tf +import numpy as np + + +class LogisticRegression(object): + def __init__(self, in_channels, class_num, use_bias=True): + + self.input_x = tf.placeholder(tf.float32, [None, in_channels], + name='input_x') + self.input_y = tf.placeholder(tf.float32, [None, 1], name='input_y') + + self.out = self.fc_layer(input_x=self.input_x, + in_channels=in_channels, + class_num=class_num, + use_bias=use_bias) + + with tf.name_scope('loss'): + self.losses = tf.losses.mean_squared_error(predictions=self.out, + labels=self.input_y) + + with tf.name_scope('train_op'): + self.optimizer = tf.train.GradientDescentOptimizer( + learning_rate=0.001) + self.train_op = self.optimizer.minimize(self.losses) + + self.sess = tf.Session() + self.graph = tf.get_default_graph() + + with self.graph.as_default(): + with self.sess.as_default(): + tf.global_variables_initializer().run() + + def fc_layer(self, input_x, in_channels, class_num, use_bias=True): + with tf.name_scope('fc'): + fc_w = tf.Variable(tf.truncated_normal([in_channels, class_num], + stddev=0.1), + name='weight') + if use_bias: + fc_b = tf.Variable(tf.constant(0.0, shape=[ + class_num, + ]), + name='bias') + fc_out = tf.nn.bias_add(tf.matmul(input_x, fc_w), fc_b) + else: + fc_out = tf.matmul(input_x, fc_w) + + return fc_out + + def to(self, device): + pass + + def trainable_variables(self): + return tf.trainable_variables() + + def state_dict(self): + with self.graph.as_default(): + with self.sess.as_default(): + model_param = list() + param_name = list() + for var in tf.global_variables(): + param = self.graph.get_tensor_by_name(var.name).eval() + if 'weight' in var.name: + param = np.transpose(param, (1, 0)) + model_param.append(param) + param_name.append(var.name.split(':')[0].replace("/", '.')) + + model_dict = {k: v for k, v in zip(param_name, model_param)} + + return model_dict + + def load_state_dict(self, model_para, strict=False): + with self.graph.as_default(): + with self.sess.as_default(): + for name in model_para.keys(): + new_param = model_para[name] + + param = self.graph.get_tensor_by_name( + name.replace('.', '/') + (':0')) + if 'weight' in name: + new_param = np.transpose(new_param, (1, 0)) + tf.assign(param, new_param).eval() diff --git a/federatedscope/cv/__init__.py b/federatedscope/cv/__init__.py new file mode 100644 index 000000000..f8e91f237 --- /dev/null +++ b/federatedscope/cv/__init__.py @@ -0,0 +1,3 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division diff --git a/federatedscope/cv/dataloader/__init__.py b/federatedscope/cv/dataloader/__init__.py new file mode 100644 index 000000000..1b4d542c4 --- /dev/null +++ b/federatedscope/cv/dataloader/__init__.py @@ -0,0 +1,3 @@ +from federatedscope.cv.dataloader.dataloader import load_cv_dataset + +__all__ = ['load_cv_dataset'] \ No newline at end of file diff --git a/federatedscope/cv/dataloader/dataloader.py b/federatedscope/cv/dataloader/dataloader.py new file mode 100644 index 000000000..706d22c34 --- /dev/null +++ b/federatedscope/cv/dataloader/dataloader.py @@ -0,0 +1,83 @@ +from random import sample +from torch.utils.data import DataLoader, Dataset + +from federatedscope.cv.dataset.leaf_cv import LEAF_CV +from federatedscope.core.auxiliaries.transform_builder import get_transform + +# from torch.utils.data import Dataset + + +class TensorDataset(Dataset): + ''' + tuple tensor is a list + ''' + def __init__(self, tuple_tensor): + self.data_tensor = tuple_tensor + + def __getitem__(self, index): + sample, target = self.data_tensor[index] + return sample, target + + def __len__(self): + return len(self.data_tensor) + + +def load_cv_dataset(config=None): + r""" + return { + 'client_id': { + 'train': DataLoader(), + 'test': DataLoader(), + 'val': DataLoader() + } + } + or return + dataset + """ + splits = config.data.splits + + path = config.data.root + name = config.data.type.lower() + batch_size = config.data.batch_size + transforms_funcs = get_transform(config, 'torchvision') + + if name in ['femnist', 'celeba']: + dataset = LEAF_CV(root=path, + name=name, + s_frac=config.data.subsample, + tr_frac=splits[0], + val_frac=splits[1], + seed=1234, + **transforms_funcs) + else: + raise ValueError(f'No dataset named: {name}!') + + client_num = min(len(dataset), config.federate.client_num + ) if config.federate.client_num > 0 else len(dataset) + config.merge_from_list(['federate.client_num', client_num]) + + # get local dataset + data_local_dict = dict() + for client_idx in range(client_num): + + dataloader = { + 'train': DataLoader(dataset[client_idx]['train'], + batch_size, + shuffle=config.data.shuffle, + num_workers=config.data.num_workers), + 'test': DataLoader(dataset[client_idx]['test'], + batch_size, + shuffle=False, + num_workers=config.data.num_workers) + } + if 'val' in dataset[client_idx]: + dataloader['val'] = DataLoader(dataset[client_idx]['val'], + batch_size, + shuffle=False, + num_workers=config.data.num_workers) + + data_local_dict[client_idx + 1] = dataloader + # we can return two forms, dataset or dataloader based on te needs of users. + # + + return data_local_dict, config diff --git a/federatedscope/cv/dataset/__init__.py b/federatedscope/cv/dataset/__init__.py new file mode 100644 index 000000000..42638817a --- /dev/null +++ b/federatedscope/cv/dataset/__init__.py @@ -0,0 +1,8 @@ +from os.path import dirname, basename, isfile, join +import glob + +modules = glob.glob(join(dirname(__file__), "*.py")) +__all__ = [ + basename(f)[:-3] for f in modules + if isfile(f) and not f.endswith('__init__.py') +] \ No newline at end of file diff --git a/federatedscope/cv/dataset/leaf.py b/federatedscope/cv/dataset/leaf.py new file mode 100644 index 000000000..bd1c70b2a --- /dev/null +++ b/federatedscope/cv/dataset/leaf.py @@ -0,0 +1,86 @@ +import zipfile +import os +import os.path as osp + +from torch.utils.data import Dataset + +LEAF_NAMES = [ + 'femnist', 'celeba', 'synthetic', 'shakespeare', 'twitter', 'subreddit' +] + + +def is_exists(path, names): + exists_list = [osp.exists(osp.join(path, name)) for name in names] + return False not in exists_list + + +class LEAF(Dataset): + """Base class for LEAF dataset from "LEAF: A Benchmark for Federated Settings" + + Arguments: + root (str): root path. + name (str): name of dataset, in `LEAF_NAMES`. + transform: transform for x. + target_transform: transform for y. + + """ + def __init__(self, root, name, transform, target_transform): + self.root = root + self.name = name + self.data_dict = {} + if name not in LEAF_NAMES: + raise ValueError(f'No leaf dataset named {self.name}') + self.transform = transform + self.target_transform = target_transform + self.process_file() + + @property + def raw_file_names(self): + names = ['all_data.zip'] + return names + + @property + def extracted_file_names(self): + names = ['all_data'] + return names + + @property + def raw_dir(self): + return osp.join(self.root, self.name, 'raw') + + @property + def processed_dir(self): + return osp.join(self.root, self.name, 'processed') + + def __repr__(self): + return f'{self.__class__.__name__}({self.__len__()})' + + def __len__(self): + return len(self.data_dict) + + def __getitem__(self, index): + raise NotImplementedError + + def __iter__(self): + for index in range(len(self.data_dict)): + yield self.__getitem__(index) + + def download(self): + raise NotImplementedError + + def extract(self): + for name in self.raw_file_names: + with zipfile.ZipFile(osp.join(self.raw_dir, name), 'r') as f: + f.extractall(self.raw_dir) + + def process_file(self): + os.makedirs(self.processed_dir, exist_ok=True) + if len(os.listdir(self.processed_dir)) == 0: + if not is_exists(self.raw_dir, self.extracted_file_names): + if not is_exists(self.raw_dir, self.raw_file_names): + self.download() + self.extract() + self.process() + + def process(self): + raise NotImplementedError diff --git a/federatedscope/cv/dataset/leaf_cv.py b/federatedscope/cv/dataset/leaf_cv.py new file mode 100644 index 000000000..f1be136e0 --- /dev/null +++ b/federatedscope/cv/dataset/leaf_cv.py @@ -0,0 +1,179 @@ +import os +import random +import json +import torch +import math + +import numpy as np +import os.path as osp + +from PIL import Image +from tqdm import tqdm + +from sklearn.model_selection import train_test_split + +from federatedscope.core.auxiliaries.utils import save_local_data, download_url +from federatedscope.cv.dataset.leaf import LEAF + +IMAGE_SIZE = {'femnist': (28, 28), 'celeba': (84, 84, 3)} +MODE = {'femnist': 'L', 'celeba': 'RGB'} + + +class LEAF_CV(LEAF): + """ + LEAF CV dataset from "LEAF: A Benchmark for Federated Settings" + + leaf.cmu.edu + + Arguments: + root (str): root path. + name (str): name of dataset, ‘femnist’ or ‘celeba’. + s_frac (float): fraction of the dataset to be used; default=0.3. + tr_frac (float): train set proportion for each task; default=0.8. + val_frac (float): valid set proportion for each task; default=0.0. + train_tasks_frac (float): fraction of test tasks; default=1.0. + transform: transform for x. + target_transform: transform for y. + + """ + def __init__(self, + root, + name, + s_frac=0.3, + tr_frac=0.8, + val_frac=0.0, + train_tasks_frac=1.0, + seed=123, + transform=None, + target_transform=None): + self.s_frac = s_frac + self.tr_frac = tr_frac + self.val_frac = val_frac + self.seed = seed + self.train_tasks_frac = train_tasks_frac + super(LEAF_CV, self).__init__(root, name, transform, target_transform) + files = os.listdir(self.processed_dir) + files = [f for f in files if f.startswith('task_')] + if len(files): + # Sort by idx + files.sort(key=lambda k: int(k[5:])) + + for file in files: + train_data, train_targets = torch.load( + osp.join(self.processed_dir, file, 'train.pt')) + test_data, test_targets = torch.load( + osp.join(self.processed_dir, file, 'test.pt')) + self.data_dict[int(file[5:])] = { + 'train': (train_data, train_targets), + 'test': (test_data, test_targets) + } + if osp.exists(osp.join(self.processed_dir, file, 'val.pt')): + val_data, val_targets = torch.load( + osp.join(self.processed_dir, file, 'val.pt')) + self.data_dict[int(file[5:])]['val'] = (val_data, + val_targets) + else: + raise RuntimeError( + 'Please delete ‘processed’ folder and try again!') + + @property + def raw_file_names(self): + names = [f'{self.name}_all_data.zip'] + return names + + def download(self): + # Download to `self.raw_dir`. + url = 'https://federatedscope.oss-cn-beijing.aliyuncs.com' + os.makedirs(self.raw_dir, exist_ok=True) + for name in self.raw_file_names: + download_url(f'{url}/{name}', self.raw_dir) + + def __getitem__(self, index): + """ + Arguments: + index (int): Index + + :returns: + dict: {'train':[(image, target)], + 'test':[(image, target)], + 'val':[(image, target)]} + where target is the target class. + """ + img_dict = {} + data = self.data_dict[index] + for key in data: + img_dict[key] = [] + imgs, targets = data[key] + for idx in range(targets.shape[0]): + img = np.resize(imgs[idx].numpy().astype(np.uint8), + IMAGE_SIZE[self.name]) + img = Image.fromarray(img, mode=MODE[self.name]) + target = targets[idx] + if self.transform is not None: + img = self.transform(img) + + if self.target_transform is not None: + target = self.target_transform(target) + + img_dict[key].append((img, targets[idx])) + + return img_dict + + def process(self): + raw_path = osp.join(self.raw_dir, "all_data") + files = os.listdir(raw_path) + files = [f for f in files if f.endswith('.json')] + + n_tasks = math.ceil(len(files) * self.s_frac) + random.shuffle(files) + files = files[:n_tasks] + + print("Preprocess data (Please leave enough space)...") + + idx = 0 + for num, file in enumerate(tqdm(files)): + + with open(osp.join(raw_path, file), 'r') as f: + raw_data = json.load(f) + + # Numpy to Tensor + for writer, v in raw_data['user_data'].items(): + data, targets = v['x'], v['y'] + + if len(v['x']) > 2: + data = torch.tensor(np.stack(data)) + targets = torch.LongTensor(np.stack(targets)) + else: + data = torch.tensor(data) + targets = torch.LongTensor(targets) + + train_data, test_data, train_targets, test_targets =\ + train_test_split( + data, + targets, + train_size=self.tr_frac, + random_state=self.seed + ) + + if self.val_frac > 0: + val_data, test_data, val_targets, test_targets = \ + train_test_split( + test_data, + test_targets, + train_size=self.val_frac / (1.-self.tr_frac), + random_state=self.seed + ) + + else: + val_data, val_targets = None, None + save_path = osp.join(self.processed_dir, f"task_{idx}") + os.makedirs(save_path, exist_ok=True) + + save_local_data(dir_path=save_path, + train_data=train_data, + train_targets=train_targets, + test_data=test_data, + test_targets=test_targets, + val_data=val_data, + val_targets=val_targets) + idx += 1 diff --git a/federatedscope/cv/model/__init__.py b/federatedscope/cv/model/__init__.py new file mode 100644 index 000000000..7144c1a88 --- /dev/null +++ b/federatedscope/cv/model/__init__.py @@ -0,0 +1,8 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from federatedscope.cv.model.cnn import ConvNet2, ConvNet2, VGG11 +from federatedscope.cv.model.model_builder import get_cnn + +__all__ = ['ConvNet2', 'ConvNet2', 'VGG11', 'get_cnn'] \ No newline at end of file diff --git a/federatedscope/cv/model/cnn.py b/federatedscope/cv/model/cnn.py new file mode 100644 index 000000000..595fef772 --- /dev/null +++ b/federatedscope/cv/model/cnn.py @@ -0,0 +1,204 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + +from torch.nn import Module +from torch.nn import Sequential +from torch.nn import Conv2d, BatchNorm2d +from torch.nn import Flatten +from torch.nn import Linear +from torch.nn import MaxPool2d +from torch.nn import ReLU + + +class ConvNet2(Module): + def __init__(self, + in_channels, + h=32, + w=32, + hidden=2048, + class_num=10, + use_bn=True, + dropout=.0): + super(ConvNet2, self).__init__() + + self.conv1 = Conv2d(in_channels, 32, 5, padding=2) + self.conv2 = Conv2d(32, 64, 5, padding=2) + self.use_bn = use_bn + if use_bn: + self.bn1 = BatchNorm2d(32) + self.bn2 = BatchNorm2d(64) + + self.fc1 = Linear((h // 2 // 2) * (w // 2 // 2) * 64, hidden) + self.fc2 = Linear(hidden, class_num) + + self.relu = ReLU(inplace=True) + self.maxpool = MaxPool2d(2) + self.dropout = dropout + + def feature(self, x): + x = self.bn1(self.conv1(x)) if self.use_bn else self.conv1(x) + x = self.maxpool(self.relu(x)) + x = self.bn2(self.conv2(x)) if self.use_bn else self.conv2(x) + x = self.maxpool(self.relu(x)) + x = Flatten()(x) + x = F.dropout(x, p=self.dropout, training=self.training) + x = self.relu(self.fc1(x)) + + return x + + def forward(self, x): + x = self.bn1(self.conv1(x)) if self.use_bn else self.conv1(x) + x = self.maxpool(self.relu(x)) + x = self.bn2(self.conv2(x)) if self.use_bn else self.conv2(x) + x = self.maxpool(self.relu(x)) + x = Flatten()(x) + x = F.dropout(x, p=self.dropout, training=self.training) + x = self.relu(self.fc1(x)) + x = F.dropout(x, p=self.dropout, training=self.training) + x = self.fc2(x) + + return x + + +class ConvNet5(Module): + def __init__(self, + in_channels, + h=32, + w=32, + hidden=2048, + class_num=10, + dropout=.0): + super(ConvNet5, self).__init__() + + self.conv1 = Conv2d(in_channels, 32, 5, padding=2) + self.bn1 = BatchNorm2d(32) + + self.conv2 = Conv2d(32, 64, 5, padding=2) + self.bn2 = BatchNorm2d(64) + + self.conv3 = Conv2d(64, 64, 5, padding=2) + self.bn3 = BatchNorm2d(64) + + self.conv4 = Conv2d(64, 128, 5, padding=2) + self.bn4 = BatchNorm2d(128) + + self.conv5 = Conv2d(128, 128, 5, padding=2) + self.bn5 = BatchNorm2d(128) + + self.relu = ReLU(inplace=True) + self.maxpool = MaxPool2d(2) + + self.fc1 = Linear( + (h // 2 // 2 // 2 // 2 // 2) * (w // 2 // 2 // 2 // 2 // 2) * 128, + hidden) + self.fc2 = Linear(hidden, class_num) + + self.dropout = dropout + + def forward(self, x): + x = self.relu(self.bn1(self.conv1(x))) + x = self.maxpool(x) + + x = self.relu(self.bn2(self.conv2(x))) + x = self.maxpool(x) + + x = self.relu(self.bn3(self.conv3(x))) + x = self.maxpool(x) + + x = self.relu(self.bn4(self.conv4(x))) + x = self.maxpool(x) + + x = self.relu(self.bn5(self.conv5(x))) + x = self.maxpool(x) + + x = Flatten()(x) + x = F.dropout(x, p=self.dropout, training=self.training) + x = self.relu(self.fc1(x)) + x = F.dropout(x, p=self.dropout, training=self.training) + x = self.fc2(x) + + return x + + +class VGG11(Module): + def __init__(self, + in_channels, + h=32, + w=32, + hidden=128, + class_num=10, + dropout=.0): + super(VGG11, self).__init__() + + cfg = [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'], + + self.conv1 = Conv2d(in_channels, 64, 3, padding=1) + self.bn1 = BatchNorm2d(64) + + self.conv2 = Conv2d(64, 128, 3, padding=1) + self.bn2 = BatchNorm2d(128) + + self.conv3 = Conv2d(128, 256, 3, padding=1) + self.bn3 = BatchNorm2d(256) + + self.conv4 = Conv2d(256, 256, 3, padding=1) + self.bn4 = BatchNorm2d(256) + + self.conv5 = Conv2d(256, 512, 3, padding=1) + self.bn5 = BatchNorm2d(512) + + self.conv6 = Conv2d(512, 512, 3, padding=1) + self.bn6 = BatchNorm2d(512) + + self.conv7 = Conv2d(512, 512, 3, padding=1) + self.bn7 = BatchNorm2d(512) + + self.conv8 = Conv2d(512, 512, 3, padding=1) + self.bn8 = BatchNorm2d(512) + + self.relu = ReLU(inplace=True) + self.maxpool = MaxPool2d(2) + + self.fc1 = Linear( + (h // 2 // 2 // 2 // 2 // 2) * (w // 2 // 2 // 2 // 2 // 2) * 512, + hidden) + self.fc2 = Linear(hidden, hidden) + self.fc3 = Linear(hidden, class_num) + + self.dropout = dropout + + def forward(self, x): + x = self.relu(self.bn1(self.conv1(x))) + x = self.maxpool(x) + + x = self.relu(self.bn2(self.conv2(x))) + x = self.maxpool(x) + + x = self.relu(self.bn3(self.conv3(x))) + x = self.maxpool(x) + + x = self.relu(self.bn4(self.conv4(x))) + x = self.maxpool(x) + + x = self.relu(self.bn5(self.conv5(x))) + x = self.maxpool(x) + + x = self.relu(self.bn6(self.conv6(x))) + x = self.maxpool(x) + + x = self.relu(self.bn7(self.conv7(x))) + x = self.maxpool(x) + + x = self.relu(self.bn8(self.conv8(x))) + x = self.maxpool(x) + + x = Flatten()(x) + x = F.dropout(x, p=self.dropout, training=self.training) + x = self.relu(self.fc1(x)) + x = F.dropout(x, p=self.dropout, training=self.training) + x = self.relu(self.fc2(x)) + x = F.dropout(x, p=self.dropout, training=self.training) + x = self.fc3(x) + + return x diff --git a/federatedscope/cv/model/model_builder.py b/federatedscope/cv/model/model_builder.py new file mode 100644 index 000000000..2d45e8c07 --- /dev/null +++ b/federatedscope/cv/model/model_builder.py @@ -0,0 +1,49 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from federatedscope.cv.model.cnn import ConvNet2, ConvNet5, VGG11 + + +def get_cnn(model_config, local_data): + if isinstance(local_data, dict): + if 'data' in local_data.keys(): + data = local_data['data'] + elif 'train' in local_data.keys(): + # local_data['train'] is Dataloader + data = next(iter(local_data['train'])) + else: + raise TypeError('Unsupported data type.') + else: + data = local_data + + x, _ = data + # + # if len(list[x.shape]) == 3: + # x = x.unsqueeze(0) + # check the task + if model_config.type == 'convnet2': + model = ConvNet2(in_channels=x.shape[-3], + h=x.shape[-2], + w=x.shape[-1], + hidden=model_config.hidden, + class_num=model_config.out_channels, + dropout=model_config.dropout) + elif model_config.type == 'convnet5': + model = ConvNet5(in_channels=x.shape[-3], + h=x.shape[-2], + w=x.shape[-1], + hidden=model_config.hidden, + class_num=model_config.out_channels, + dropout=model_config.dropout) + elif model_config.type == 'vgg11': + model = VGG11(in_channels=x.shape[-3], + h=x.shape[-2], + w=x.shape[-1], + hidden=model_config.hidden, + class_num=model_config.out_channels, + dropout=model_config.dropout) + else: + raise ValueError(f'No model named {model_config.type}!') + + return model diff --git a/federatedscope/cv/trainer/__init__.py b/federatedscope/cv/trainer/__init__.py new file mode 100644 index 000000000..8ec5ce7cd --- /dev/null +++ b/federatedscope/cv/trainer/__init__.py @@ -0,0 +1,30 @@ +""" +Copyright (c) 2021 Matthias Fey, Jiaxuan You + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +""" + +from os.path import dirname, basename, isfile, join +import glob + +modules = glob.glob(join(dirname(__file__), "*.py")) +__all__ = [ + basename(f)[:-3] for f in modules + if isfile(f) and not f.endswith('__init__.py') +] diff --git a/federatedscope/cv/trainer/trainer.py b/federatedscope/cv/trainer/trainer.py new file mode 100644 index 000000000..b00ebd66a --- /dev/null +++ b/federatedscope/cv/trainer/trainer.py @@ -0,0 +1,15 @@ +from federatedscope.register import register_trainer +from federatedscope.core.trainers import GeneralTorchTrainer + + +class CVTrainer(GeneralTorchTrainer): + pass + + +def call_cv_trainer(trainer_type): + if trainer_type == 'cvtrainer': + trainer_builder = CVTrainer + return trainer_builder + + +register_trainer('cvtrainer', call_cv_trainer) diff --git a/federatedscope/gfl/__init__.py b/federatedscope/gfl/__init__.py new file mode 100644 index 000000000..f8e91f237 --- /dev/null +++ b/federatedscope/gfl/__init__.py @@ -0,0 +1,3 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division diff --git a/federatedscope/gfl/baseline/__init__.py b/federatedscope/gfl/baseline/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/federatedscope/gfl/dataloader/__init__.py b/federatedscope/gfl/dataloader/__init__.py new file mode 100644 index 000000000..31a526c3c --- /dev/null +++ b/federatedscope/gfl/dataloader/__init__.py @@ -0,0 +1,8 @@ +from federatedscope.gfl.dataloader.dataloader_node import load_nodelevel_dataset +from federatedscope.gfl.dataloader.dataloader_graph import load_graphlevel_dataset +from federatedscope.gfl.dataloader.dataloader_link import load_linklevel_dataset + +__all__ = [ + 'load_nodelevel_dataset', 'load_graphlevel_dataset', + 'load_linklevel_dataset' +] diff --git a/federatedscope/gfl/dataloader/dataloader_graph.py b/federatedscope/gfl/dataloader/dataloader_graph.py new file mode 100644 index 000000000..13b260e54 --- /dev/null +++ b/federatedscope/gfl/dataloader/dataloader_graph.py @@ -0,0 +1,155 @@ +import numpy as np + +from torch_geometric import transforms +from torch_geometric.loader import DataLoader +from torch_geometric.datasets import TUDataset, MoleculeNet + +from federatedscope.core.auxiliaries.splitter_builder import get_splitter +from federatedscope.core.auxiliaries.transform_builder import get_transform + + +def get_numGraphLabels(dataset): + s = set() + for g in dataset: + s.add(g.y.item()) + return len(s) + + +def load_graphlevel_dataset(config=None): + r"""Convert dataset to Dataloader. + :returns: + data_local_dict + :rtype: Dict { + 'client_id': { + 'train': DataLoader(), + 'val': DataLoader(), + 'test': DataLoader() + } + } + """ + splits = config.data.splits + path = config.data.root + name = config.data.type.upper() + client_num = config.federate.client_num + batch_size = config.data.batch_size + + # Splitter + splitter = get_splitter(config) + + # Transforms + transforms_funcs = get_transform(config, 'torch_geometric') + + if name in [ + 'MUTAG', 'BZR', 'COX2', 'DHFR', 'PTC_MR', 'AIDS', 'NCI1', + 'ENZYMES', 'DD', 'PROTEINS', 'COLLAB', 'IMDB-BINARY', 'IMDB-MULTI', + 'REDDIT-BINARY' + ]: + # Add feat for datasets without attrubute + if name in ['IMDB-BINARY', 'IMDB-MULTI' + ] and 'pre_transform' not in transforms_funcs: + transforms_funcs['pre_transform'] = transforms.Constant(value=1.0, + cat=False) + dataset = TUDataset(path, name, **transforms_funcs) + if splitter is None: + raise ValueError('Please set the graph.') + dataset = splitter(dataset) + + elif name in [ + 'HIV', 'ESOL', 'FREESOLV', 'LIPO', 'PCBA', 'MUV', 'BACE', 'BBBP', + 'TOX21', 'TOXCAST', 'SIDER', 'CLINTOX' + ]: + dataset = MoleculeNet(path, name, **transforms_funcs) + if splitter is None: + raise ValueError('Please set the graph.') + dataset = splitter(dataset) + elif name.startswith('graph_multi_domain'.upper()): + if name.endswith('mol'.upper()): + dnames = ['MUTAG', 'BZR', 'COX2', 'DHFR', 'PTC_MR', 'AIDS', 'NCI1'] + elif name.endswith('small'.upper()): + dnames = [ + 'MUTAG', 'BZR', 'COX2', 'DHFR', 'PTC_MR', 'ENZYMES', 'DD', + 'PROTEINS' + ] + elif name.endswith('mix'.upper()): + if 'pre_transform' not in transforms_funcs: + raise ValueError(f'pre_transform is None!') + dnames = [ + 'MUTAG', 'BZR', 'COX2', 'DHFR', 'PTC_MR', 'AIDS', 'NCI1', + 'ENZYMES', 'DD', 'PROTEINS', 'COLLAB', 'IMDB-BINARY', + 'IMDB-MULTI' + ] + elif name.endswith('biochem'.upper()): + dnames = [ + 'MUTAG', 'BZR', 'COX2', 'DHFR', 'PTC_MR', 'AIDS', 'NCI1', + 'ENZYMES', 'DD', 'PROTEINS' + ] + # We provide kddcup dataset here. + elif name.endswith('kddcupv1'.upper()): + dnames = [ + 'MUTAG', 'BZR', 'COX2', 'DHFR', 'PTC_MR', 'AIDS', 'NCI1', + 'Mutagenicity', 'NCI109', 'PTC_MM', 'PTC_FR' + ] + elif name.endswith('kddcupv2'.upper()): + dnames = ['TBD'] + else: + raise ValueError(f'No dataset named: {name}!') + dataset = [] + # Some datasets contain x + for dname in dnames: + if dname.startswith('IMDB') or dname == 'COLLAB': + tmp_dataset = TUDataset(path, dname, **transforms_funcs) + else: + tmp_dataset = TUDataset( + path, + dname, + pre_transform=None, + transform=transforms_funcs['transform'] + if 'transform' in transforms_funcs else None) + dataset.append(tmp_dataset) + else: + raise ValueError(f'No dataset named: {name}!') + + client_num = min(len(dataset), config.federate.client_num + ) if config.federate.client_num > 0 else len(dataset) + config.merge_from_list(['federate.client_num', client_num]) + + # get local dataset + data_local_dict = dict() + + # Build train/valid/test dataloader + raw_train = [] + raw_valid = [] + raw_test = [] + for client_idx, gs in enumerate(dataset): + index = np.random.permutation(np.arange(len(gs))) + train_idx = index[:int(len(gs) * splits[0])] + valid_idx = index[int(len(gs) * + splits[0]):int(len(gs) * sum(splits[:2]))] + test_idx = index[int(len(gs) * sum(splits[:2])):] + dataloader = { + 'num_label': get_numGraphLabels(gs), + 'train': DataLoader([gs[idx] for idx in train_idx], + batch_size, + shuffle=True, + num_workers=config.data.num_workers), + 'val': DataLoader([gs[idx] for idx in valid_idx], + batch_size, + shuffle=False, + num_workers=config.data.num_workers), + 'test': DataLoader([gs[idx] for idx in test_idx], + batch_size, + shuffle=False, + num_workers=config.data.num_workers), + } + data_local_dict[client_idx + 1] = dataloader + raw_train = raw_train + [gs[idx] for idx in train_idx] + raw_valid = raw_valid + [gs[idx] for idx in valid_idx] + raw_test = raw_test + [gs[idx] for idx in test_idx] + if not name.startswith('graph_multi_domain'.upper()): + data_local_dict[0] = { + 'train': DataLoader(raw_train, batch_size, shuffle=True), + 'val': DataLoader(raw_valid, batch_size, shuffle=False), + 'test': DataLoader(raw_test, batch_size, shuffle=False), + } + + return data_local_dict, config diff --git a/federatedscope/gfl/dataloader/dataloader_link.py b/federatedscope/gfl/dataloader/dataloader_link.py new file mode 100644 index 000000000..282e0da97 --- /dev/null +++ b/federatedscope/gfl/dataloader/dataloader_link.py @@ -0,0 +1,128 @@ +import torch + +from torch_geometric.data import Data +from torch_geometric.loader import GraphSAINTRandomWalkSampler, NeighborSampler + +from federatedscope.core.auxiliaries.splitter_builder import get_splitter +from federatedscope.core.auxiliaries.transform_builder import get_transform + + +def raw2loader(raw_data, config=None): + """Transform a graph into either dataloader for graph-sampling-based mini-batch training + or still a graph for full-batch training. + Arguments: + raw_data (PyG.Data): a raw graph. + :returns: + sampler (object): a Dict containing loader and subgraph_sampler or still a PyG.Data object. + """ + + if config.data.loader == '': + sampler = raw_data + elif config.data.loader == 'graphsaint-rw': + loader = GraphSAINTRandomWalkSampler( + raw_data, + batch_size=config.data.batch_size, + walk_length=config.data.graphsaint.walk_length, + num_steps=config.data.graphsaint.num_steps, + sample_coverage=0) + subgraph_sampler = NeighborSampler(raw_data.edge_index, + sizes=[-1], + batch_size=4096, + shuffle=False, + num_workers=config.data.num_workers) + sampler = dict(data=raw_data, + train=loader, + val=subgraph_sampler, + test=subgraph_sampler) + else: + raise TypeError('Unsupported DataLoader Type {}'.format( + config.data.loader)) + + return sampler + + +def load_linklevel_dataset(config=None): + r""" + :returns: + data_local_dict + :rtype: + (Dict): dict{'client_id': Data()} + """ + path = config.data.root + name = config.data.type.lower() + + # Splitter + splitter = get_splitter(config) + + # Transforms + transforms_funcs = get_transform(config, 'torch_geometric') + + if name in ['epinions', 'ciao']: + from federatedscope.gfl.dataset.recsys import RecSys + dataset = RecSys(path, + name, + FL=True, + splits=config.data.splits, + **transforms_funcs) + global_dataset = RecSys(path, + name, + FL=False, + splits=config.data.splits, + **transforms_funcs) + elif name in ['fb15k-237', 'wn18', 'fb15k', 'toy']: + from federatedscope.gfl.dataset.kg import KG + dataset = KG(path, name, **transforms_funcs) + dataset = splitter(dataset[0]) + global_dataset = KG(path, name, **transforms_funcs) + else: + raise ValueError(f'No dataset named: {name}!') + + dataset = [ds for ds in dataset] + client_num = min(len(dataset), config.federate.client_num + ) if config.federate.client_num > 0 else len(dataset) + config.merge_from_list(['federate.client_num', client_num]) + + # get local dataset + data_local_dict = dict() + + for client_idx in range(len(dataset)): + local_data = raw2loader(dataset[client_idx], config) + data_local_dict[client_idx + 1] = local_data + + if global_dataset is not None: + # Recode train & valid & test mask for global data + global_graph = global_dataset[0] + train_edge_mask = torch.BoolTensor([]) + valid_edge_mask = torch.BoolTensor([]) + test_edge_mask = torch.BoolTensor([]) + global_edge_index = torch.LongTensor([[], []]) + global_edge_type = torch.LongTensor([]) + + for client_sampler in data_local_dict.values(): + if isinstance(client_sampler, Data): + client_subgraph = client_sampler + else: + client_subgraph = client_sampler['data'] + orig_index = torch.zeros_like(client_subgraph.edge_index) + orig_index[0] = client_subgraph.index_orig[ + client_subgraph.edge_index[0]] + orig_index[1] = client_subgraph.index_orig[ + client_subgraph.edge_index[1]] + train_edge_mask = torch.cat( + (train_edge_mask, client_subgraph.train_edge_mask), dim=-1) + valid_edge_mask = torch.cat( + (valid_edge_mask, client_subgraph.valid_edge_mask), dim=-1) + test_edge_mask = torch.cat( + (test_edge_mask, client_subgraph.test_edge_mask), dim=-1) + global_edge_index = torch.cat((global_edge_index, orig_index), + dim=-1) + global_edge_type = torch.cat( + (global_edge_type, client_subgraph.edge_type), dim=-1) + global_graph.train_edge_mask = train_edge_mask + global_graph.valid_edge_mask = valid_edge_mask + global_graph.test_edge_mask = test_edge_mask + global_graph.edge_index = global_edge_index + global_graph.edge_type = global_edge_type + data_local_dict[0] = raw2loader(global_graph, config) + + return data_local_dict, config diff --git a/federatedscope/gfl/dataloader/dataloader_node.py b/federatedscope/gfl/dataloader/dataloader_node.py new file mode 100644 index 000000000..1b36c84d4 --- /dev/null +++ b/federatedscope/gfl/dataloader/dataloader_node.py @@ -0,0 +1,183 @@ +import torch +import numpy as np + +from torch_geometric.datasets import Planetoid +from torch_geometric.utils import add_self_loops, remove_self_loops, to_undirected +from torch_geometric.data import Data +from torch_geometric.loader import GraphSAINTRandomWalkSampler, NeighborSampler + +from federatedscope.core.auxiliaries.splitter_builder import get_splitter +from federatedscope.core.auxiliaries.transform_builder import get_transform + +INF = np.iinfo(np.int64).max + + +def raw2loader(raw_data, config=None): + """Transform a graph into either dataloader for graph-sampling-based mini-batch training + or still a graph for full-batch training. + Arguments: + raw_data (PyG.Data): a raw graph. + :returns: + sampler (object): a Dict containing loader and subgraph_sampler or still a PyG.Data object. + """ + # change directed graph to undirected + raw_data.edge_index = to_undirected( + remove_self_loops(raw_data.edge_index)[0]) + + if config.data.loader == '': + sampler = raw_data + elif config.data.loader == 'graphsaint-rw': + # Sampler would crash if there was isolated node. + raw_data.edge_index = add_self_loops(raw_data.edge_index, + num_nodes=raw_data.x.shape[0])[0] + loader = GraphSAINTRandomWalkSampler( + raw_data, + batch_size=config.data.batch_size, + walk_length=config.data.graphsaint.walk_length, + num_steps=config.data.graphsaint.num_steps, + sample_coverage=0) + #save_dir=dataset.processed_dir) + subgraph_sampler = NeighborSampler(raw_data.edge_index, + sizes=[-1], + batch_size=4096, + shuffle=False, + num_workers=config.data.num_workers) + sampler = dict(data=raw_data, + train=loader, + val=subgraph_sampler, + test=subgraph_sampler) + elif config.data.loader == 'neighbor': + # Sampler would crash if there was isolated node. + raw_data.edge_index = add_self_loops(raw_data.edge_index, + num_nodes=raw_data.x.shape[0])[0] + + train_idx = raw_data.train_mask.nonzero(as_tuple=True)[0] + loader = NeighborSampler(raw_data.edge_index, + node_idx=train_idx, + sizes=config.data.sizes, + batch_size=config.data.batch_size, + shuffle=config.data.shuffle, + num_workers=config.data.num_workers) + subgraph_sampler = NeighborSampler(raw_data.edge_index, + sizes=[-1], + batch_size=4096, + shuffle=False, + num_workers=config.data.num_workers) + sampler = dict(data=raw_data, + train=loader, + val=subgraph_sampler, + test=subgraph_sampler) + + return sampler + + +def load_nodelevel_dataset(config=None): + r""" + :returns: + data_local_dict + :rtype: + Dict: dict{'client_id': Data()} + """ + path = config.data.root + name = config.data.type.lower() + + # Splitter + splitter = get_splitter(config) + + # Transforms + transforms_funcs = get_transform(config, 'torch_geometric') + + # Dataset + if name in ["cora", "citeseer", "pubmed"]: + num_split = { + 'cora': [232, 542, INF], + 'citeseer': [332, 665, INF], + 'pubmed': [3943, 3943, INF], + } + + dataset = Planetoid(path, + name, + split='random', + num_train_per_class=num_split[name][0], + num_val=num_split[name][1], + num_test=num_split[name][2], + **transforms_funcs) + dataset = splitter(dataset[0]) + global_dataset = Planetoid(path, + name, + split='random', + num_train_per_class=num_split[name][0], + num_val=num_split[name][1], + num_test=num_split[name][2], + **transforms_funcs) + elif name == "dblp_conf": + from federatedscope.gfl.dataset.dblp_new import DBLPNew + dataset = DBLPNew(path, + FL=1, + splits=config.data.splits, + **transforms_funcs) + global_dataset = DBLPNew(path, + FL=0, + splits=config.data.splits, + **transforms_funcs) + elif name == "dblp_org": + from federatedscope.gfl.dataset.dblp_new import DBLPNew + dataset = DBLPNew(path, + FL=2, + splits=config.data.splits, + **transforms_funcs) + global_dataset = DBLPNew(path, + FL=0, + splits=config.data.splits, + **transforms_funcs) + elif name.startswith("csbm"): + from federatedscope.gfl.dataset.cSBM_dataset import dataset_ContextualSBM + dataset = dataset_ContextualSBM( + root=path, + name=name if len(name) > len("csbm") else None, + theta=config.data.cSBM_phi, + epsilon=3.25, + n=2500, + d=5, + p=1000, + train_percent=0.2) + global_dataset = None + else: + raise ValueError(f'No dataset named: {name}!') + + dataset = [ds for ds in dataset] + client_num = min(len(dataset), config.federate.client_num + ) if config.federate.client_num > 0 else len(dataset) + config.merge_from_list(['federate.client_num', client_num]) + + # get local dataset + data_local_dict = dict() + + for client_idx in range(len(dataset)): + local_data = raw2loader(dataset[client_idx], config) + data_local_dict[client_idx + 1] = local_data + + if global_dataset is not None: + global_graph = global_dataset[0] + train_mask = torch.zeros_like(global_graph.train_mask) + val_mask = torch.zeros_like(global_graph.val_mask) + test_mask = torch.zeros_like(global_graph.test_mask) + + for client_sampler in data_local_dict.values(): + if isinstance(client_sampler, Data): + client_subgraph = client_sampler + else: + client_subgraph = client_sampler['data'] + train_mask[client_subgraph.index_orig[ + client_subgraph.train_mask]] = True + val_mask[client_subgraph.index_orig[ + client_subgraph.val_mask]] = True + test_mask[client_subgraph.index_orig[ + client_subgraph.test_mask]] = True + global_graph.train_mask = train_mask + global_graph.val_mask = val_mask + global_graph.test_mask = test_mask + + data_local_dict[0] = raw2loader(global_graph, config) + + return data_local_dict, config diff --git a/federatedscope/gfl/dataset/__init__.py b/federatedscope/gfl/dataset/__init__.py new file mode 100644 index 000000000..0479564bb --- /dev/null +++ b/federatedscope/gfl/dataset/__init__.py @@ -0,0 +1,10 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from federatedscope.gfl.dataset.recsys import RecSys +from federatedscope.gfl.dataset.dblp_new import DBLPNew +from federatedscope.gfl.dataset.kg import KG +from federatedscope.gfl.dataset.cSBM_dataset import dataset_ContextualSBM + +__all__ = ['RecSys', 'DBLPNew', 'KG', 'dataset_ContextualSBM'] diff --git a/federatedscope/gfl/dataset/cSBM_dataset.py b/federatedscope/gfl/dataset/cSBM_dataset.py new file mode 100644 index 000000000..a1f65c820 --- /dev/null +++ b/federatedscope/gfl/dataset/cSBM_dataset.py @@ -0,0 +1,372 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- +# vim:fenc=utf-8 +# +# +# Distributed under terms of the MIT license. +""" +cSBM is a configurable random graph model for studying homophily and heterophily. +Source: https://github.com/jianhao2016/GPRGNN + +This is a script for contexual SBM model and its dataset generator. +contains functions: + ContextualSBM + parameterized_Lambda_and_mu + save_data_to_pickle + class: + dataset_ContextualSBM + +""" +import pickle +from datetime import datetime +import os +import os.path as osp + +import numpy as np +import torch +from torch_geometric.data import Data, InMemoryDataset + +from federatedscope.gfl.dataset.utils import random_planetoid_splits + + +def ContextualSBM(n, d, Lambda, p, mu, train_percent=0.01, u=None): + """To generate a graph with specified homophilic degree, avg node degree, feature dimension, etc. + Arguments: + n (int): the number of nodes. + d (int): the average node degree. + Lambda (float): the parameter controlling homophilic degree. + p (float): the dimension of node feature. + mu (float): the mean of node feature. + train_percent (float): (optional) the fraction of nodes used for training. + u (numpy.Array): (optional) the parameter controlling the node feature. + :returns: + data : the constructed graph. + u : the parameter controlling the node feature. + :rtype: + tuple: (PyG.Data, numpy.Array) + + """ + # n = 800 #number of nodes + # d = 5 # average degree + # Lambda = 1 # parameters + # p = 1000 # feature dim + # mu = 1 # mean of Gaussian + gamma = n / p + + c_in = d + np.sqrt(d) * Lambda + c_out = d - np.sqrt(d) * Lambda + y = np.ones(n) + y[n // 2:] = -1 + y = np.asarray(y, dtype=int) + + quarter_len = n // 4 + # creating edge_index + edge_index = [[], []] + for i in range(n - 1): + for j in range(i + 1, n): + if y[i] * y[j] > 0 and ((i // quarter_len) == (j // quarter_len)): + if (i // quarter_len == 0) or (i // quarter_len == 2): + Flip = np.random.binomial(1, c_in / n) + else: + Flip = np.random.binomial(1, c_out / n) + elif (y[i] * y[j] > 0) or (i // quarter_len + j // quarter_len + == 3): + Flip = np.random.binomial(1, 0.5 * (c_in / n + c_out / n)) + else: + if i // quarter_len == 0: + Flip = np.random.binomial(1, c_out / n) + else: + Flip = np.random.binomial(1, c_in / n) + if Flip > 0.5: + edge_index[0].append(i) + edge_index[1].append(j) + edge_index[0].append(j) + edge_index[1].append(i) + + # creating node features + x = np.zeros([n, p]) + u = np.random.normal(0, 1 / np.sqrt(p), [1, p]) if u is None else u + for i in range(n): + Z = np.random.normal(0, 1, [1, p]) + x[i] = np.sqrt(mu / n) * y[i] * u + Z / np.sqrt(p) + data = Data(x=torch.tensor(x, dtype=torch.float32), + edge_index=torch.tensor(edge_index), + y=torch.tensor((y + 1) // 2, dtype=torch.int64)) + # order edge list and remove duplicates if any. + data.coalesce() + + num_class = len(np.unique(y)) + val_lb = int(n * train_percent) + percls_trn = int(round(train_percent * n / num_class)) + data = random_planetoid_splits(data, num_class, percls_trn, val_lb) + + # add parameters to attribute + data.Lambda = Lambda + data.mu = mu + data.n = n + data.p = p + data.d = d + data.train_percent = train_percent + + return data, u + + +def parameterized_Lambda_and_mu(theta, p, n, epsilon=0.1): + ''' + based on claim 3 in the paper, + + lambda^2 + mu^2/gamma = 1 + epsilon. + + 1/gamma = p/n + longer axis: 1 + shorter axis: 1/gamma. + => + lambda = sqrt(1 + epsilon) * sin(theta * pi / 2) + mu = sqrt(gamma * (1 + epsilon)) * cos(theta * pi / 2) + Arguments: + theta (float): controlling the homophilic degree. + p (int): the dimension of node feature. + n (int): the number of nodes. + epsilon (float): (optional) controlling the var of node feature. + :returns: + Lambda : controlling the homophilic degree. + mu : the mean of node feature. + :rtype: + tuple: (float, float) + ''' + from math import pi + gamma = n / p + assert (theta >= -1) and (theta <= 1) + Lambda = np.sqrt(1 + epsilon) * np.sin(theta * pi / 2) + mu = np.sqrt(gamma * (1 + epsilon)) * np.cos(theta * pi / 2) + return Lambda, mu + + +def save_data_to_pickle(data, p2root='../data/', file_name=None): + ''' + if file name not specified, use time stamp. + Arguments: + data (PyG.Data): the graph to be saved. + p2root (str): the path of dataset folder. + file_name (str): (optional) the name of output file. + :returns: + p2cSBM_data : the path of saved file. + :returns: + string + ''' + now = datetime.now() + surfix = now.strftime('%b_%d_%Y-%H:%M') + if file_name is None: + tmp_data_name = '_'.join(['cSBM_data', surfix]) + else: + tmp_data_name = file_name + p2cSBM_data = osp.join(p2root, tmp_data_name) + if not osp.isdir(p2root): + os.makedirs(p2root) + with open(p2cSBM_data, 'bw') as f: + pickle.dump(data, f) + return p2cSBM_data + + +class dataset_ContextualSBM(InMemoryDataset): + r"""Create synthetic dataset based on the contextual SBM from the paper: + https://arxiv.org/pdf/1807.09596.pdf + + Use the similar class as InMemoryDataset, but not requiring the root folder. + + See `here `__ for the accompanying + tutorial. + + Arguments: + root (string): Root directory where the dataset should be saved. + name (string): The name of the dataset if not specified use time stamp. + + for {n, d, p, Lambda, mu}, with '_' as prefix: intial/feed in argument. + without '_' as prefix: loaded from data information + + n: number nodes + d: avg degree of nodes + p: dimenstion of feature vector. + + Lambda, mu: parameters balancing the mixture of information, + if not specified, use parameterized method to generate. + + epsilon, theta: gap between boundary and chosen ellipsoid. theta is + angle of between the selected parameter and x-axis. + choosen between [0, 1] => 0 = 0, 1 = pi/2 + + transform (callable, optional): A function/transform that takes in an + :obj:`torch_geometric.data.Data` object and returns a transformed + version. The data object will be transformed before every access. + (default: :obj:`None`) + pre_transform (callable, optional): A function/transform that takes in + an :obj:`torch_geometric.data.Data` object and returns a + transformed version. The data object will be transformed before + being saved to disk. (default: :obj:`None`) + """ + + # url = 'https://github.com/kimiyoung/planetoid/raw/master/data' + + def __init__(self, + root, + name=None, + n=800, + d=5, + p=100, + Lambda=None, + mu=None, + epsilon=0.1, + theta=[-0.5, -0.25, 0.25, 0.5], + train_percent=0.01, + transform=None, + pre_transform=None): + + now = datetime.now() + surfix = now.strftime('%b_%d_%Y-%H:%M').lower() + if name is None: + # not specifing the dataset name, create one with time stamp. + self.name = '_'.join(['csbm_data', surfix]) + else: + self.name = name + + self._n = n + self._d = d + self._p = p + + self._Lambda = Lambda + self._mu = mu + self._epsilon = epsilon + self._theta = theta + + self._train_percent = train_percent + + root = osp.join(root, self.name) + if not osp.isdir(root): + os.makedirs(root) + super(dataset_ContextualSBM, self).__init__(root, transform, + pre_transform) + + # ipdb.set_trace() + self.data, self.slices = torch.load(self.processed_paths[0]) + # overwrite the dataset attribute n, p, d, Lambda, mu + if isinstance(self._Lambda, list): + self.Lambda = self.data.Lambda.numpy() + self.mu = self.data.mu.numpy() + self.n = self.data.n.numpy() + self.p = self.data.p.numpy() + self.d = self.data.d.numpy() + self.train_percent = self.data.train_percent.numpy() + else: + self.Lambda = self.data.Lambda.item() + self.mu = self.data.mu.item() + self.n = self.data.n.item() + self.p = self.data.p.item() + self.d = self.data.d.item() + self.train_percent = self.data.train_percent.item() + + +# @property +# def raw_dir(self): +# return osp.join(self.root, self.name, 'raw') + +# @property +# def processed_dir(self): +# return osp.join(self.root, self.name, 'processed') + + @property + def raw_file_names(self): + file_names = [self.name] + return file_names + + @property + def processed_file_names(self): + return ['data.pt'] + + def download(self): + for name in self.raw_file_names: + p2f = osp.join(self.raw_dir, name) + if not osp.isfile(p2f): + # file not exist, so we create it and save it there. + if self._Lambda is None or self._mu is None: + # auto generate the lambda and mu parameter by angle theta. + self._Lambda = [] + self._mu = [] + for theta in self._theta: + Lambda, mu = parameterized_Lambda_and_mu( + theta, self._p, self._n, self._epsilon) + self._Lambda.append(Lambda) + self._mu.append(mu) + + if isinstance(self._Lambda, list): + u = None + for i, (Lambda, + mu) in enumerate(zip(self._Lambda, self._mu)): + tmp_data, u = ContextualSBM(self._n, self._d, Lambda, + self._p, mu, + self._train_percent, u) + name_split_idx = self.name.index('_', 2) + name = self.name[:name_split_idx] + '_{}'.format( + i) + self.name[name_split_idx:] + _ = save_data_to_pickle(tmp_data, + p2root=self.raw_dir, + file_name=name) + + else: + tmp_data, _ = ContextualSBM(self._n, self._d, self._Lambda, + self._p, self._mu, + self._train_percent) + + _ = save_data_to_pickle(tmp_data, + p2root=self.raw_dir, + file_name=self.name) + else: + # file exists already. Do nothing. + pass + + def process(self): + if isinstance(self._Lambda, list): + all_data = [] + for i, Lambda in enumerate(self._Lambda): + name_split_idx = self.name.index('_', 2) + name = self.name[:name_split_idx] + '_{}'.format( + i) + self.name[name_split_idx:] + p2f = osp.join(self.raw_dir, name) + with open(p2f, 'rb') as f: + data = pickle.load(f) + all_data.append(data) + for i in range(len(all_data)): + all_data[i] = all_data[ + i] if self.pre_transform is None else self.pre_transform( + all_data[i]) + torch.save(self.collate(all_data), self.processed_paths[0]) + else: + p2f = osp.join(self.raw_dir, self.name) + with open(p2f, 'rb') as f: + data = pickle.load(f) + data = data if self.pre_transform is None else self.pre_transform( + data) + torch.save(self.collate([data]), self.processed_paths[0]) + + def __repr__(self): + return '{}()'.format(self.name) + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--phi', type=float, default=1) + parser.add_argument('--epsilon', type=float, default=3.25) + parser.add_argument('--root', default='../data/') + parser.add_argument('--name', default='cSBM_demo') + parser.add_argument('--num_nodes', type=int, default=800) + parser.add_argument('--num_features', type=int, default=1000) + parser.add_argument('--avg_degree', type=float, default=5) + + args = parser.parse_args() + + dataset_ContextualSBM(root=args.root, + name=args.name, + theta=args.phi, + epsilon=args.epsilon, + n=args.num_nodes, + d=args.avg_degree, + p=args.num_features) diff --git a/federatedscope/gfl/dataset/dblp_new.py b/federatedscope/gfl/dataset/dblp_new.py new file mode 100644 index 000000000..38f671b47 --- /dev/null +++ b/federatedscope/gfl/dataset/dblp_new.py @@ -0,0 +1,184 @@ +import os.path as osp +import numpy as np +import networkx as nx +import torch +from torch_geometric.data import InMemoryDataset, download_url +from torch_geometric.utils import from_networkx +from sklearn.feature_extraction.text import CountVectorizer +from sklearn.feature_extraction._stop_words import ENGLISH_STOP_WORDS as sklearn_stopwords + + +class LemmaTokenizer(object): + def __init__(self): + from nltk.stem import WordNetLemmatizer + self.wnl = WordNetLemmatizer() + + def __call__(self, doc): + from nltk import word_tokenize + return [self.wnl.lemmatize(t) for t in word_tokenize(doc)] + + +def build_feature(words, threshold): + from nltk.corpus import stopwords as nltk_stopwords + # use bag-of-words representation of paper titles as the features of papers + stopwords = sklearn_stopwords.union(set(nltk_stopwords.words('english'))) + vectorizer = CountVectorizer(min_df=int(threshold), + stop_words=stopwords, + tokenizer=LemmaTokenizer()) + features_paper = vectorizer.fit_transform(words) + + return features_paper + + +def build_graph(path, filename, FL=0, threshold=15): + with open(osp.join(path, filename), 'r') as f: + node_cnt = sum([1 for line in f]) + + G = nx.DiGraph() + desc = node_cnt * [None] + neighbors = node_cnt * [None] + if FL == 1: + conf2paper = dict() + elif FL == 2: + org2paper = dict() + + # Build node feature from title + with open(osp.join(path, filename), 'r') as f: + for line in f: + cols = line.strip().split('\t') + nid, title = int(cols[0]), cols[3] + desc[nid] = title + + features = np.array(build_feature(desc, threshold).todense(), + dtype=np.float32) + + # Build graph structure + with open(osp.join(path, filename), 'r') as f: + for line in f: + cols = line.strip().split('\t') + nid, conf, org, label = int(cols[0]), cols[1], cols[2], int( + cols[4]) + neighbors[nid] = [int(val) for val in cols[-1].split(',')] + + if FL == 1: + if conf not in conf2paper: + conf2paper[conf] = [nid] + else: + conf2paper[conf].append(nid) + elif FL == 2: + if org not in org2paper: + org2paper[org] = [nid] + else: + org2paper[org].append(nid) + + G.add_node(nid, y=label, x=features[nid], index_orig=nid) + + for nid, nbs in enumerate(neighbors): + for vid in nbs: + G.add_edge(nid, vid) + + # Sort node id for index_orig + H = nx.Graph() + H.add_nodes_from(sorted(G.nodes(data=True))) + H.add_edges_from(G.edges(data=True)) + G = H + graphs = [] + if FL == 1: + for conf in conf2paper: + graphs.append(from_networkx(nx.subgraph(G, conf2paper[conf]))) + elif FL == 2: + for org in org2paper: + graphs.append(from_networkx(nx.subgraph(G, org2paper[org]))) + else: + graphs.append(from_networkx(G)) + + return graphs + + +class DBLPNew(InMemoryDataset): + r""" + Args: + root (string): Root directory where the dataset should be saved. + FL (Bool): Federated setting, `0` for DBLP, `1` for FLDBLPbyConf, `2` for FLDBLPbyOrg + transform (callable, optional): A function/transform that takes in an + :obj:`torch_geometric.data.Data` object and returns a transformed + version. The data object will be transformed before every access. + (default: :obj:`None`) + pre_transform (callable, optional): A function/transform that takes in + an :obj:`torch_geometric.data.Data` object and returns a + transformed version. The data object will be transformed before + being saved to disk. (default: :obj:`None`) + """ + def __init__(self, + root, + FL=0, + splits=[0.5, 0.2, 0.3], + transform=None, + pre_transform=None): + self.FL = FL + if self.FL == 0: + self.name = 'DBLPNew' + elif self.FL == 1: + self.name = 'FLDBLPbyConf' + else: + self.name = 'FLDBLPbyOrg' + self._customized_splits = splits + super(DBLPNew, self).__init__(root, transform, pre_transform) + self.data, self.slices = torch.load(self.processed_paths[0]) + + @property + def raw_file_names(self): + names = ['dblp_new.tsv'] + return names + + @property + def processed_file_names(self): + return ['data.pt'] + + @property + def raw_dir(self): + return osp.join(self.root, self.name, 'raw') + + @property + def processed_dir(self): + return osp.join(self.root, self.name, 'processed') + + def download(self): + # Download to `self.raw_dir`. + url = 'https://federatedscope.oss-cn-beijing.aliyuncs.com' + for name in self.raw_file_names: + download_url(f'{url}/{name}', self.raw_dir) + + def process(self): + # Read data into huge `Data` list. + data_list = build_graph(self.raw_dir, self.raw_file_names[0], self.FL) + + data_list_w_masks = [] + for data in data_list: + if data.num_nodes == 0: + continue + indices = torch.randperm(data.num_nodes) + data.train_mask = torch.zeros(data.num_nodes, dtype=torch.bool) + data.train_mask[indices[:round(self._customized_splits[0] * + len(data.y))]] = True + data.val_mask = torch.zeros(data.num_nodes, dtype=torch.bool) + data.val_mask[ + indices[round(self._customized_splits[0] * + len(data.y)):round((self._customized_splits[0] + + self._customized_splits[1]) * + len(data.y))]] = True + data.test_mask = torch.zeros(data.num_nodes, dtype=torch.bool) + data.test_mask[indices[round((self._customized_splits[0] + + self._customized_splits[1]) * + len(data.y)):]] = True + data_list_w_masks.append(data) + data_list = data_list_w_masks + + if self.pre_filter is not None: + data_list = [data for data in data_list if self.pre_filter(data)] + + if self.pre_transform is not None: + data_list = [self.pre_transform(data) for data in data_list] + + data, slices = self.collate(data_list) + torch.save((data, slices), self.processed_paths[0]) diff --git a/federatedscope/gfl/dataset/kg.py b/federatedscope/gfl/dataset/kg.py new file mode 100644 index 000000000..994f91a10 --- /dev/null +++ b/federatedscope/gfl/dataset/kg.py @@ -0,0 +1,130 @@ +"""This file is part of https://github.com/pyg-team/pytorch_geometric +Copyright (c) 2021 Matthias Fey, Jiaxuan You + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +""" + +import os +import os.path as osp + +import torch +from torch_geometric.data import InMemoryDataset, Data, download_url + + +class KG(InMemoryDataset): + def __init__(self, root, name, transform=None, pre_transform=None): + self.name = name + super().__init__(root, transform, pre_transform) + self.data, self.slices = torch.load(self.processed_paths[0]) + + @property + def num_relations(self): + return int(self.data.edge_type.max()) + 1 + + @property + def raw_dir(self): + return os.path.join(self.root, self.name, 'raw') + + @property + def processed_dir(self): + return os.path.join(self.root, self.name, 'processed') + + @property + def processed_file_names(self): + return 'data.pt' + + @property + def raw_file_names(self): + return [ + 'entities.dict', 'relations.dict', 'test.txt', 'train.txt', + 'valid.txt' + ] + + def download(self): + url = 'https://github.com/MichSchli/RelationPrediction/tree/master/data/' + urls = { + 'fb15k': url + 'FB15k', + 'fb15k-237': url + 'FB-Toutanova', + 'wn18': url + 'wn18', + 'toy': url + 'Toy' + } + for file_name in self.raw_file_names: + download_url(f'{urls[self.name]}/{file_name}', self.raw_dir) + + def process(self): + with open(osp.join(self.raw_dir, 'entities.dict'), 'r') as f: + lines = [row.split('\t') for row in f.read().split('\n')[:-1]] + entities_dict = {key: int(value) for value, key in lines} + + with open(osp.join(self.raw_dir, 'relations.dict'), 'r') as f: + lines = [row.split('\t') for row in f.read().split('\n')[:-1]] + relations_dict = {key: int(value) for value, key in lines} + + kwargs = {} + for split in ['train', 'valid', 'test']: + with open(osp.join(self.raw_dir, f'{split}.txt'), 'r') as f: + lines = [row.split('\t') for row in f.read().split('\n')[:-1]] + src = [entities_dict[row[0]] for row in lines] + rel = [relations_dict[row[1]] for row in lines] + dst = [entities_dict[row[2]] for row in lines] + kwargs[f'{split}_edge_index'] = torch.tensor([src, dst]) + kwargs[f'{split}_edge_type'] = torch.tensor(rel) + + # For message passing, we add reverse edges and types to the graph: + row, col = kwargs['train_edge_index'] + edge_type = kwargs['train_edge_type'] + row, col = torch.cat([row, col], dim=0), torch.cat([col, row], dim=0) + edge_index = torch.stack([row, col], dim=0) + edge_type = torch.cat([edge_type, edge_type + len(relations_dict)]) + num_nodes = len(entities_dict) + data = Data(num_nodes=num_nodes, + edge_index=edge_index, + edge_type=edge_type, + **kwargs) + edge_index = torch.cat((data.train_edge_index, data.valid_edge_index, + data.test_edge_index), + dim=-1) + edge_type = torch.cat( + (data.train_edge_type, data.valid_edge_type, data.test_edge_type), + dim=0) + num_edges = edge_index.size(-1) + train_edge_mask = torch.zeros(num_edges, dtype=torch.bool) + train_edge_mask[:data.train_edge_index.size(-1)] = True + valid_edge_mask = torch.zeros(num_edges, dtype=torch.bool) + valid_edge_mask[data.train_edge_index. + size(-1):-data.test_edge_index.size(-1)] = True + test_edge_mask = torch.zeros(num_edges, dtype=torch.bool) + test_edge_mask[-data.test_edge_index.size(-1):] = True + data = Data(edge_index=edge_index, + index_orig=torch.arange(num_nodes), + edge_type=edge_type, + num_nodes=num_nodes, + train_edge_mask=train_edge_mask, + valid_edge_mask=valid_edge_mask, + test_edge_mask=test_edge_mask, + input_edge_index=data.edge_index) + + data_list = [data] + if self.pre_filter is not None: + data_list = [data for data in data_list if self.pre_filter(data)] + + if self.pre_transform is not None: + data_list = [self.pre_transform(data) for data in data_list] + + torch.save((self.collate([data])), self.processed_paths[0]) \ No newline at end of file diff --git a/federatedscope/gfl/dataset/preprocess/__init__.py b/federatedscope/gfl/dataset/preprocess/__init__.py new file mode 100644 index 000000000..f8e91f237 --- /dev/null +++ b/federatedscope/gfl/dataset/preprocess/__init__.py @@ -0,0 +1,3 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division diff --git a/federatedscope/gfl/dataset/preprocess/dblp_related.py b/federatedscope/gfl/dataset/preprocess/dblp_related.py new file mode 100644 index 000000000..38aec84b2 --- /dev/null +++ b/federatedscope/gfl/dataset/preprocess/dblp_related.py @@ -0,0 +1,288 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +import argparse +import re +from bson.json_util import loads + +KEYWORDS = ['AAAI', 'Association for the Advancement of Artificial Intelligence', \ + 'CIKM', 'Conference on Information and Knowledge Management', \ + 'CVPR', 'Conference on Computer Vision and Pattern Recognition', \ + 'ECIR', 'European Conference on Information Retrieval', \ + 'ECML', 'European Conference on Machine Learning', \ + 'EDBT', 'International Conference on Extending Database Technology', \ + 'ICDE', 'International Conference on Data Engineering', \ + 'ICDM', 'International Conference on Data Mining', \ + 'ICML', 'International Conference on Machine Learning', \ + 'IJCAI', 'International Joint Conference on Artificial Intelligence', \ + 'PAKDD', 'Pacific-Asia Conference on Knowledge Discovery and Data Mining', \ + 'PKDD', 'Principles and Practice of Knowledge Discovery in Databases', \ + 'KDD', 'Knowledge Discovery and Data Mining', \ + 'PODS', 'Principles of Database Systems', \ + 'SIGIR', 'Special Interest Group on Information Retrieval', \ + 'SIGMOD', 'Special Interest Group on Management of Data', \ + 'VLDB', 'Very Large Data Bases', \ + 'WWW', 'World Wide Web Conference', \ + 'WSDM', 'Web Search and Data Mining', \ + 'SDM', 'SIAM International Conference on Data Mining'] + +CONF2ORG = { + 'AAAI': 'AAAI', + 'CIKM': 'ACM', + 'CVPR': 'IEEE', + 'ECIR': 'Springer', + 'ECML': 'Springer', + 'EDBT': 'Springer', + 'ICDE': 'IEEE', + 'ICDM': 'IEEE', + 'ICML': 'PMLR', + 'IJCAI': 'the IJCAI, Inc.', + 'KDD': 'ACM', + 'PAKDD': 'Springer', + 'PKDD': 'Springer', + 'PODS': 'ACM', + 'SDM': 'SIAM', + 'SIGIR': 'ACM', + 'SIGMOD': 'ACM', + 'VLDB': 'VLDB', + 'WWW': 'ACM', + 'WSDM': 'ACM' +} + +LABELS = [ + 'Database', 'Data mining', 'Artificial intelligence', + 'Information retrieval' +] + +parser = argparse.ArgumentParser() +parser.add_argument('--choice', type=int, default=-1) +parser.add_argument('--input_path', type=str, default='') +parser.add_argument('--output_path', type=str, default='') +args = parser.parse_args() + + +def extract_considered(): + keywords = [val.lower() for val in KEYWORDS] + pat = re.compile(r'|'.join(keywords)) + + ent = 0 + cnt = 0 + rsvd = 0 + ops = open(args.output_path, 'w') + try: + with open(args.input_path, 'r') as ips: + ele_contents = [] + is_first = True + for line in ips: + if is_first: + is_first = False + continue + + if line[0] == '{': + ent += 1 + elif line[0] == '}': + ent -= 1 + + ele_contents.append(line.strip()) + + if ent == 0 and len(ele_contents): + json_text = ''.join(ele_contents) + json_text = re.sub(r'NumberInt\s*\(\s*(\S+)\s*\)', + r'{"$numberInt": "\1"}', json_text) + #print(json_text[:-1]) + #ele = json.loads(json_text[:-1]) + if json_text[-1] == ',': + ele = loads(json_text[:-1]) + else: + ele = loads(json_text) + #if ('venue' in ele and '_id' in ele['venue']) and 'fos' in ele and 'references' in ele: + if '_id' in ele and 'venue' in ele and 'raw' in ele[ + 'venue'] and ele['venue']['raw'] and 'fos' in ele and ele[ + 'fos'] and 'references' in ele and 'title' in ele and ele[ + 'title']: + raw_vanue_name = ele['venue']['raw'].lower() + if re.search(pat, raw_vanue_name): + ops.write("{}\t{}\t{}\t{}\t{}\n".format( + ele['_id'], ele['venue']['raw'].replace( + '\n', '').replace('\t', ' '), + ele['title'].replace('\n', + '').replace('\t', ' '), + ','.join(ele['fos']).replace('\n', '').replace( + '\t', ' '), ','.join(ele['references']))) + rsvd += 1 + #print(ele) + cnt += 1 + if cnt % 100000 == 0: + print(rsvd, cnt, "======>") + ele_contents = [] + except Exception as ex: + print(ex) + finally: + ops.close() + + +""" +{'ICDM': 4589, 'KDD': 5476, 'IJCAI': 7586, 'VLDB': 5314, 'PAKDD': 2242, 'ECIR': 1482, 'ICML': 8322, 'CIKM': 5931, 'WWW': 5553, 'CVPR': 13355, 'EDBT': 1636, 'AAAI': 9695, 'ECML': 2216, 'SIGMOD': 4206, 'ICDE': 4330, 'PODS': 1670, 'SDM': 1624, 'SIGIR': 4619, 'WSDM': 746, 'PKDD': 547} +====================== +{'IEEE': 22274, 'ACM': 28201, 'the IJCAI, Inc.': 7586, 'VLDB': 5314, 'Springer': 8123, 'PMLR': 8322, 'AAAI': 9695, 'SIAM': 1624} +""" + + +def be_canonical(): + keywords = [val.lower() for val in KEYWORDS] + conf_cnts = dict() + org_cnts = dict() + ops = open(args.output_path, 'w') + with open(args.input_path, 'r') as ips: + for line in ips: + num_of_tab = line.count('\t') + if num_of_tab != 4: + print(num_of_tab) + print(line.replace('\t', 'TAB')) + continue + cols = line.strip().split('\t') + conf_raw_name = cols[1].lower() + org, conf_name = '', '' + for i, kw in enumerate(keywords): + if kw in conf_raw_name: + conf_name = keywords[i if (i % 2 == 0) else + (i - 1)].upper() + org = CONF2ORG[conf_name] + break + if conf_name == '': + print(cols[1]) + continue + if conf_name not in conf_cnts: + conf_cnts[conf_name] = 0 + if org not in org_cnts: + org_cnts[org] = 0 + conf_cnts[conf_name] += 1 + org_cnts[org] += 1 + ops.write("{}\t{}\t{}\t{}\t{}\t{}\n".format( + cols[0], conf_name, org, cols[2], cols[3], cols[4])) + ops.close() + + print(conf_cnts) + print("======================") + print(org_cnts) + + +def be_fourclass_data(): + labels = [val.lower() for val in LABELS] + cnt = 0 + vset = dict() + with open(args.input_path, 'r') as ips: + for line in ips: + cols = line.strip().split('\t') + fos = [val.lower() for val in cols[4].split(',')] + for val in fos: + if val in labels: + cnt += 1 + vset[cols[0]] = [0, 0] + # assume single label or say the classes are exclusive + break + print(cnt) + + e_cnt = 0 + with open(args.input_path, 'r') as ips: + for line in ips: + cols = line.strip().split('\t') + if cols[0] not in vset: + continue + refs = cols[-1].split(',') + for val in refs: + if val in vset: + e_cnt += 1 + vset[cols[0]][0] += 1 + vset[val][1] += 1 + print(e_cnt) + + connected = dict([(val, i) for i, val in enumerate( + [k for k, v in vset.items() if (v[0] > 0 or v[1] > 0)])]) + print(len(connected)) + + ops = open(args.output_path, 'w') + with open(args.input_path, 'r') as ips: + for line in ips: + cols = line.strip().split('\t') + nid = cols[0] + if nid not in connected: + continue + for val in cols[4].split(','): + can_val = val.lower() + if can_val in labels: + lb = labels.index(can_val) + break + adjs = ','.join([ + str(connected[val]) for val in cols[-1].split(',') + if val in connected + ]) + ops.write("{}\t{}\t{}\t{}\t{}\t{}\n".format( + connected[nid], cols[1], cols[2], cols[3], lb, adjs)) + ops.close() + + +def stats(): + p2c = dict() + p2o = dict() + with open(args.input_path, 'r') as ips: + for line in ips: + cols = line.strip().split('\t') + p2c[cols[0]] = cols[1] + p2o[cols[0]] = cols[2] + + stats = dict() + with open(args.input_path, 'r') as ips: + for line in ips: + cols = line.strip().split('\t') + conf = cols[1] + if conf not in stats: + stats[conf] = [0, 0, 0, [0, 0, 0, 0]] + stats[conf][0] += 1 + adjs = cols[-1].split(',') + for v in adjs: + if p2c[v] == conf: + stats[conf][1] += 1 + else: + stats[conf][2] += 1 + lb = int(cols[4]) + stats[conf][3][lb] += 1 + + for k, v in stats.items(): + print(k, v) + + stats = dict() + with open(args.input_path, 'r') as ips: + for line in ips: + cols = line.strip().split('\t') + org = cols[2] + if org not in stats: + stats[org] = [0, 0, 0, [0, 0, 0, 0]] + stats[org][0] += 1 + adjs = cols[-1].split(',') + for v in adjs: + if p2o[v] == org: + stats[org][1] += 1 + else: + stats[org][2] += 1 + lb = int(cols[4]) + stats[org][3][lb] += 1 + + for k, v in stats.items(): + print(k, v) + + +def main(): + if args.choice == 0: + extract_considered() + elif args.choice == 1: + be_canonical() + elif args.choice == 2: + be_fourclass_data() + elif args.choice == 3: + stats() + + +if __name__ == "__main__": + main() diff --git a/federatedscope/gfl/dataset/recsys.py b/federatedscope/gfl/dataset/recsys.py new file mode 100644 index 000000000..924c568d9 --- /dev/null +++ b/federatedscope/gfl/dataset/recsys.py @@ -0,0 +1,169 @@ +import os + +import numpy as np +import os.path as osp +import networkx as nx + +import torch +from torch_geometric.data import InMemoryDataset, download_url, Data +from torch_geometric.utils import from_networkx + +from federatedscope.gfl.dataset.utils import random_planetoid_splits + + +# RecSys +def read_mapping(path, filename): + mapping = {} + with open(os.path.join(path, filename)) as f: + for line in f: + s = line.strip().split() + mapping[int(s[0])] = int(s[1]) + + return mapping + + +def partition_by_category(graph, mapping_item2category): + partition = {} + for key in mapping_item2category: + partition[key] = [mapping_item2category[key]] + for neighbor in graph.neighbors(key): + if neighbor not in partition: + partition[neighbor] = [] + partition[neighbor].append(mapping_item2category[key]) + return partition + + +def subgraphing(g, partion, mapping_item2category): + nodelist = [[] for i in set(mapping_item2category.keys())] + for k, v in partion.items(): + for category in v: + nodelist[category].append(k) + + graphs = [] + for nodes in nodelist: + if len(nodes) < 2: + continue + graph = nx.subgraph(g, nodes) + graphs.append(from_networkx(graph)) + return graphs + + +def read_RecSys(path, FL=False): + mapping_user = read_mapping(path, 'user.dict') + mapping_item = read_mapping(path, 'item.dict') + + G = nx.Graph() + with open(osp.join(path, 'graph.txt')) as f: + for line in f: + s = line.strip().split() + s = [int(i) for i in s] + G.add_edge(mapping_user[s[0]], mapping_item[s[1]], edge_type=s[2]) + dic = {} + for node in G.nodes: + dic[node] = node + nx.set_node_attributes(G, dic, "index_orig") + H = nx.Graph() + H.add_nodes_from(sorted(G.nodes(data=True))) + H.add_edges_from(G.edges(data=True)) + G = H + if FL: + mapping_item2category = read_mapping(path, "category.dict") + partition = partition_by_category(G, mapping_item2category) + graphs = subgraphing(G, partition, mapping_item2category) + return graphs + else: + return [from_networkx(G)] + + +class RecSys(InMemoryDataset): + r""" + Arguments: + root (string): Root directory where the dataset should be saved. + name (string): The name of the dataset (:obj:`"epinions"`, :obj:`"ciao"`). + FL (Bool): Federated setting or centralized setting. + transform (callable, optional): A function/transform that takes in an + :obj:`torch_geometric.data.Data` object and returns a transformed + version. The data object will be transformed before every access. + (default: :obj:`None`) + pre_transform (callable, optional): A function/transform that takes in + an :obj:`torch_geometric.data.Data` object and returns a + transformed version. The data object will be transformed before + being saved to disk. (default: :obj:`None`) + """ + def __init__(self, + root, + name, + FL=False, + splits=[0.8, 0.1, 0.1], + transform=None, + pre_transform=None): + self.FL = FL + if self.FL: + self.name = 'FL' + name + else: + self.name = name + self._customized_splits = splits + super().__init__(root, transform, pre_transform) + self.data, self.slices = torch.load(self.processed_paths[0]) + + @property + def raw_file_names(self): + names = ['user.dict', 'item.dict', 'category.dict', 'graph.txt'] + return names + + @property + def processed_file_names(self): + return ['data.pt'] + + @property + def raw_dir(self): + return osp.join(self.root, self.name, 'raw') + + @property + def processed_dir(self): + return osp.join(self.root, self.name, 'processed') + + def download(self): + # Download to `self.raw_dir`. + url = 'https://github.com/FedML-AI/FedGraphNN/tree/main/data/recommender_system' + url = osp.join(url, self.name) + for name in self.raw_file_names: + download_url(f'{url}/{name}', self.raw_dir) + + def process(self): + # Read data into huge `Data` list. + data_list = read_RecSys(self.raw_dir, self.FL) + + data_list_w_masks = [] + for data in data_list: + if self.name.endswith('epinions'): + data.edge_type = data.edge_type - 1 + if data.num_edges == 0: + continue + indices = torch.randperm(data.num_edges) + data.train_edge_mask = torch.zeros(data.num_edges, + dtype=torch.bool) + data.train_edge_mask[indices[:round(self._customized_splits[0] * + data.num_edges)]] = True + data.valid_edge_mask = torch.zeros(data.num_edges, + dtype=torch.bool) + data.valid_edge_mask[indices[ + round(self._customized_splits[0] * + data.num_edges):round((self._customized_splits[0] + + self._customized_splits[1]) * + data.num_edges)]] = True + data.test_edge_mask = torch.zeros(data.num_edges, dtype=torch.bool) + data.test_edge_mask[indices[round((self._customized_splits[0] + + self._customized_splits[1]) * + data.num_edges):]] = True + data_list_w_masks.append(data) + data_list = data_list_w_masks + + if self.pre_filter is not None: + data_list = [data for data in data_list if self.pre_filter(data)] + + if self.pre_transform is not None: + data_list = [self.pre_transform(data) for data in data_list] + + data, slices = self.collate(data_list) + torch.save((data, slices), self.processed_paths[0]) diff --git a/federatedscope/gfl/dataset/utils.py b/federatedscope/gfl/dataset/utils.py new file mode 100644 index 000000000..3f43af354 --- /dev/null +++ b/federatedscope/gfl/dataset/utils.py @@ -0,0 +1,53 @@ +import torch +from torch_geometric.utils import to_networkx + + +def index_to_mask(index, size, device='cpu'): + mask = torch.zeros(size, dtype=torch.bool, device=device) + mask[index] = 1 + return mask + + +def random_planetoid_splits(data, + num_classes, + percls_trn=20, + val_lb=500, + Flag=0): + + indices = [] + for i in range(num_classes): + index = (data.y == i).nonzero().view(-1) + index = index[torch.randperm(index.size(0))] + indices.append(index) + + train_index = torch.cat([i[:percls_trn] for i in indices], dim=0) + + if Flag == 0: + rest_index = torch.cat([i[percls_trn:] for i in indices], dim=0) + rest_index = rest_index[torch.randperm(rest_index.size(0))] + + data.train_mask = index_to_mask(train_index, size=data.num_nodes) + data.val_mask = index_to_mask(rest_index[:val_lb], size=data.num_nodes) + data.test_mask = index_to_mask(rest_index[val_lb:], + size=data.num_nodes) + else: + val_index = torch.cat( + [i[percls_trn:percls_trn + val_lb] for i in indices], dim=0) + rest_index = torch.cat([i[percls_trn + val_lb:] for i in indices], + dim=0) + rest_index = rest_index[torch.randperm(rest_index.size(0))] + + data.train_mask = index_to_mask(train_index, size=data.num_nodes) + data.val_mask = index_to_mask(val_index, size=data.num_nodes) + data.test_mask = index_to_mask(rest_index, size=data.num_nodes) + return data + + +def get_maxDegree(graphs): + maxdegree = 0 + for i, graph in enumerate(graphs): + g = to_networkx(graph, to_undirected=True) + gdegree = max(dict(g.degree).values()) + if gdegree > maxdegree: + maxdegree = gdegree + return maxdegree diff --git a/federatedscope/gfl/fedsageplus/__init__.py b/federatedscope/gfl/fedsageplus/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/federatedscope/gfl/fedsageplus/trainer.py b/federatedscope/gfl/fedsageplus/trainer.py new file mode 100644 index 000000000..86d2334a8 --- /dev/null +++ b/federatedscope/gfl/fedsageplus/trainer.py @@ -0,0 +1,148 @@ +import torch +import copy +import numpy as np +import torch.nn.functional as F + +from federatedscope.gfl.loss import GreedyLoss +from federatedscope.gfl.trainer.nodetrainer import NodeFullBatchTrainer + + +class LocalGenTrainer(NodeFullBatchTrainer): + def __init__(self, + model, + data, + device, + config, + only_for_eval=False, + monitor=None): + super(LocalGenTrainer, self).__init__(model, data, device, config, + only_for_eval, monitor) + self.criterion_num = F.smooth_l1_loss + self.criterion_feat = GreedyLoss + + def _hook_on_batch_forward(self, ctx): + batch = ctx.data_batch.to(ctx.device) + mask = batch['{}_mask'.format(ctx.cur_mode)] + pred_missing, pred_feat, nc_pred = ctx.model(batch) + pred_missing, pred_feat, nc_pred = pred_missing[mask], pred_feat[ + mask], nc_pred[mask] + loss_num = self.criterion_num(pred_missing, batch.num_missing[mask]) + loss_feat = self.criterion_feat( + pred_feats=pred_feat, + true_feats=batch.x_missing[mask], + pred_missing=pred_missing, + true_missing=batch.num_missing[mask], + num_pred=self.cfg.fedsageplus.num_pred).requires_grad_() + loss_clf = ctx.criterion(nc_pred, batch.y[mask]) + ctx.batch_size = torch.sum(mask).item() + ctx.loss_batch = (self.cfg.fedsageplus.a * loss_num + + self.cfg.fedsageplus.b * loss_feat + + self.cfg.fedsageplus.c * loss_clf).float() + + ctx.y_true = batch.num_missing[mask] + ctx.y_prob = pred_missing + + +class FedGenTrainer(LocalGenTrainer): + def _hook_on_batch_forward(self, ctx): + batch = ctx.data_batch.to(ctx.device) + mask = batch['{}_mask'.format(ctx.cur_mode)] + pred_missing, pred_feat, nc_pred = ctx.model(batch) + pred_missing, pred_feat, nc_pred = pred_missing[mask], pred_feat[ + mask], nc_pred[mask] + loss_num = self.criterion_num(pred_missing, batch.num_missing[mask]) + loss_feat = self.criterion_feat(pred_feats=pred_feat, + true_feats=batch.x_missing[mask], + pred_missing=pred_missing, + true_missing=batch.num_missing[mask], + num_pred=self.cfg.fedsageplus.num_pred) + loss_clf = ctx.criterion(nc_pred, batch.y[mask]) + ctx.batch_size = torch.sum(mask).item() + ctx.loss_batch = (self.cfg.fedsageplus.a * loss_num + + self.cfg.fedsageplus.b * loss_feat + + self.cfg.fedsageplus.c * + loss_clf).float() / self.cfg.federate.client_num + + ctx.y_true = batch.num_missing[mask] + ctx.y_prob = pred_missing + + def update_by_grad(self, grads): + """ + Arguments: + grads: grads of other clients to optimize the local model + :returns: + state_dict of generation model + """ + for key in grads.keys(): + if isinstance(grads[key], list): + grads[key] = torch.FloatTensor(grads[key]).to(self.ctx.device) + + for key, value in self.ctx.model.named_parameters(): + value.grad += grads[key] + self.ctx.optimizer.step() + return self.ctx.model.cpu().state_dict() + + def cal_grad(self, raw_data, model_para, embedding, true_missing): + """ + Arguments: + raw_data (Pyg.Data): raw graph + model_para: model parameters + embedding: output embeddings after local encoder + true_missing: number of missing node + :returns: + grads: grads to optimize the model of other clients + """ + para_backup = copy.deepcopy(self.ctx.model.cpu().state_dict()) + + for key in model_para.keys(): + if isinstance(model_para[key], list): + model_para[key] = torch.FloatTensor(model_para[key]) + self.ctx.model.load_state_dict(model_para) + self.ctx.model = self.ctx.model.to(self.ctx.device) + self.ctx.model.train() + + raw_data = raw_data.to(self.ctx.device) + embedding = torch.FloatTensor(embedding).to(self.ctx.device) + true_missing = true_missing.long().to(self.ctx.device) + pred_missing = self.ctx.model.reg_model(embedding) + pred_feat = self.ctx.model.gen(embedding) + + # Random pick node and compare its neighbors with predicted nodes + choice = np.random.choice(raw_data.num_nodes, embedding.shape[0]) + global_target_feat = [] + for c_i in choice: + neighbors_ids = raw_data.edge_index[1][torch.where( + raw_data.edge_index[0] == c_i)[0]] + while len(neighbors_ids) == 0: + id_i = np.random.choice(raw_data.num_nodes, 1)[0] + neighbors_ids = raw_data.edge_index[1][torch.where( + raw_data.edge_index[0] == id_i)[0]] + choice_i = np.random.choice(neighbors_ids.detach().cpu().numpy(), + self.cfg.fedsageplus.num_pred) + for ch_i in choice_i: + global_target_feat.append( + raw_data.x[ch_i].detach().cpu().numpy()) + global_target_feat = np.asarray(global_target_feat).reshape( + (embedding.shape[0], self.cfg.fedsageplus.num_pred, + raw_data.num_node_features)) + loss_feat = self.criterion_feat(pred_feats=pred_feat, + true_feats=global_target_feat, + pred_missing=pred_missing, + true_missing=true_missing, + num_pred=self.cfg.fedsageplus.num_pred) + loss = self.cfg.fedsageplus.b * loss_feat + loss = (1.0 / self.cfg.federate.client_num * loss).requires_grad_() + loss.backward() + grads = { + key: value.grad + for key, value in self.ctx.model.named_parameters() + } + # Rollback + self.ctx.model.load_state_dict(para_backup) + return grads + + @torch.no_grad() + def embedding(self): + model = self.ctx.model.to(self.ctx.device) + data = self.ctx.data.to(self.ctx.device) + return model.encoder_model(data).to('cpu') diff --git a/federatedscope/gfl/fedsageplus/utils.py b/federatedscope/gfl/fedsageplus/utils.py new file mode 100644 index 000000000..ba7f1880c --- /dev/null +++ b/federatedscope/gfl/fedsageplus/utils.py @@ -0,0 +1,134 @@ +import torch + +from torch_geometric.data import Data +from torch_geometric.transforms import BaseTransform +from torch_geometric.utils import to_networkx, from_networkx + +import networkx as nx +import numpy as np + +from federatedscope.core.configs.config import global_cfg + + +class HideGraph(BaseTransform): + r""" + Generate impaired graph with labels and features to train NeighGen, + hide Node from validation set from raw graph. + + Arguments: + hidden_portion (int): hidden_portion of validation set. + num_pred (int): hyperparameters which limit the maximum value of the prediction + + :returns: + filled_data : impaired graph with attribute "num_missing" + :rtype: + nx.Graph + """ + def __init__(self, hidden_portion=0.5, num_pred=5): + self.hidden_portion = hidden_portion + self.num_pred = num_pred + + def __call__(self, data): + + val_ids = torch.where(data.val_mask == True)[0] + hide_ids = np.random.choice(val_ids, + int(len(val_ids) * self.hidden_portion), + replace=False) + remaining_mask = torch.ones(data.num_nodes, dtype=torch.bool) + remaining_mask[hide_ids] = False + remaining_nodes = torch.where(remaining_mask == True)[0].numpy() + + data.ids_missing = [[] for _ in range(data.num_nodes)] + + G = to_networkx(data, + node_attrs=[ + 'x', 'y', 'train_mask', 'val_mask', 'test_mask', + 'index_orig', 'ids_missing' + ], + to_undirected=True) + + for missing_node in hide_ids: + neighbors = G.neighbors(missing_node) + for i in neighbors: + G.nodes[i]['ids_missing'].append(missing_node) + for i in G.nodes: + ids_missing = G.nodes[i]['ids_missing'] + del G.nodes[i]['ids_missing'] + G.nodes[i]['num_missing'] = np.array([len(ids_missing)], + dtype=np.float32) + if len(ids_missing) > 0: + if len(ids_missing) <= self.num_pred: + G.nodes[i]['x_missing'] = np.vstack( + (data.x[ids_missing], + np.zeros((self.num_pred - len(ids_missing), + data.x.shape[1])))) + else: + G.nodes[i]['x_missing'] = data.x[ + ids_missing[:self.num_pred]] + else: + G.nodes[i]['x_missing'] = np.zeros( + (self.num_pred, data.x.shape[1])) + + return from_networkx(nx.subgraph(G, remaining_nodes)) + + def __repr__(self): + return f'{self.__class__.__name__}({self.hidden_portion})' + + +def FillGraph(impaired_data, original_data, pred_missing, pred_feats, + num_pred): + # Mend the original data + original_data = original_data.detach().cpu() + new_features = original_data.x + new_edge_index = original_data.edge_index.T + pred_missing = pred_missing.detach().cpu().numpy() + pred_feats = pred_feats.detach().cpu().reshape( + (-1, num_pred, original_data.num_node_features)) + + start_id = original_data.num_nodes + for node in range(len(pred_missing)): + num_fill_node = np.around(pred_missing[node]).astype(np.int32).item() + if num_fill_node > 0: + new_ids_i = np.arange(start_id, + start_id + min(num_pred, num_fill_node)) + org_id = impaired_data.index_orig[node] + org_node = torch.where( + original_data.index_orig == org_id)[0].item() + new_edges = torch.tensor([[org_node, fill_id] + for fill_id in new_ids_i], + dtype=torch.int64) + new_features = torch.vstack( + (new_features, pred_feats[node][:num_fill_node])) + new_edge_index = torch.vstack((new_edge_index, new_edges)) + start_id = start_id + min(num_pred, num_fill_node) + new_y = torch.zeros(new_features.shape[0], dtype=torch.int64) + new_y[:original_data.num_nodes] = original_data.y + filled_data = Data( + x=new_features, + edge_index=new_edge_index.T, + train_idx=torch.where(original_data.train_mask == True)[0], + valid_idx=torch.where(original_data.val_mask == True)[0], + test_idx=torch.where(original_data.test_mask == True)[0], + y=new_y, + ) + return filled_data + + +@torch.no_grad() +def GraphMender(model, impaired_data, original_data): + r"""Mend the graph with generation model + Arguments: + model (torch.nn.module): trained generation model + impaired_data (PyG.Data): impaired graph + original_data (PyG.Data): raw graph + :returns: + filled_data : Graph after Data Enhancement + :rtype: + PyG.data + """ + device = impaired_data.x.device + model = model.to(device) + pred_missing, pred_feats, _ = model(impaired_data) + + return FillGraph(impaired_data, original_data, pred_missing, pred_feats, + global_cfg.fedsageplus.num_pred) \ No newline at end of file diff --git a/federatedscope/gfl/fedsageplus/worker.py b/federatedscope/gfl/fedsageplus/worker.py new file mode 100644 index 000000000..cafc4ccbe --- /dev/null +++ b/federatedscope/gfl/fedsageplus/worker.py @@ -0,0 +1,392 @@ +import torch +import logging + +from torch_geometric.loader import NeighborSampler + +from federatedscope.core.message import Message +from federatedscope.core.worker.server import Server +from federatedscope.core.worker.client import Client +from federatedscope.core.auxiliaries.utils import merge_dict + +from federatedscope.gfl.trainer.nodetrainer import NodeMiniBatchTrainer +from federatedscope.gfl.model.fedsageplus import LocalSage_Plus, FedSage_Plus +from federatedscope.gfl.fedsageplus.utils import GraphMender, HideGraph +from federatedscope.gfl.fedsageplus.trainer import LocalGenTrainer, FedGenTrainer + +logger = logging.getLogger(__name__) + + +class FedSagePlusServer(Server): + def __init__(self, + ID=-1, + state=0, + config=None, + data=None, + model=None, + client_num=5, + total_round_num=10, + device='cpu', + strategy=None, + **kwargs): + r""" + FedSage+ consists of three of training stages. + Stage1: 0, local pre-train for generator. + Stage2: -> 2 * fedgen_epoch, federated training for generator. + Stage3: -> 2 * fedgen_epoch + total_round_num: federated training for GraphSAGE Classifier + """ + super(FedSagePlusServer, + self).__init__(ID, state, config, data, model, client_num, + total_round_num, device, strategy, **kwargs) + + assert self.model_num == 1, "Not supported multi-model for FedSagePlusServer" + + # If state < fedgen_epoch and state % 2 == 0: + # Server receive [model, embedding, label] + # If state < fedgen_epoch and state % 2 == 1: + # Server receive [gradient] + self.fedgen_epoch = 2 * self._cfg.fedsageplus.fedgen_epoch + self.total_round_num = total_round_num + self.fedgen_epoch + self.grad_cnt = 0 + + def _register_default_handlers(self): + self.register_handlers('join_in', self.callback_funcs_for_join_in) + self.register_handlers('join_in_info', self.callback_funcs_for_join_in) + self.register_handlers('clf_para', self.callback_funcs_model_para) + self.register_handlers('gen_para', self.callback_funcs_model_para) + self.register_handlers('gradient', self.callback_funcs_gradient) + self.register_handlers('metrics', self.callback_funcs_for_metrics) + + def callback_funcs_for_join_in(self, message: Message): + if 'info' in message.msg_type: + sender, info = message.sender, message.content + for key in self._cfg.federate.join_in_info: + assert key in info + self.join_in_info[sender] = info + logger.info('Server #{:d}: Client #{:d} has joined in !'.format( + self.ID, sender)) + else: + self.join_in_client_num += 1 + sender, address = message.sender, message.content + if int(sender) == -1: # assign number to client + sender = self.join_in_client_num + self.comm_manager.add_neighbors(neighbor_id=sender, + address=address) + self.comm_manager.send( + Message(msg_type='assign_client_id', + sender=self.ID, + receiver=[sender], + state=self.state, + content=str(sender))) + else: + self.comm_manager.add_neighbors(neighbor_id=sender, + address=address) + + if len(self._cfg.federate.join_in_info) != 0: + self.comm_manager.send( + Message(msg_type='ask_for_join_in_info', + sender=self.ID, + receiver=[sender], + state=self.state, + content=self._cfg.federate.join_in_info.copy())) + + if self.check_client_join_in(): + if self._cfg.federate.use_ss: + self.broadcast_client_address() + + self.comm_manager.send( + Message(msg_type='local_pretrain', + sender=self.ID, + receiver=list(self.comm_manager.neighbors.keys()), + state=self.state)) + + def callback_funcs_gradient(self, message: Message): + round, sender, content = message.state, message.sender, message.content + gen_grad, ID = content + # For a new round + if round not in self.msg_buffer['train'].keys(): + self.msg_buffer['train'][round] = dict() + self.grad_cnt += 1 + # Sum up all grad from other client + if ID not in self.msg_buffer['train'][round]: + self.msg_buffer['train'][round][ID] = dict() + for key in gen_grad.keys(): + self.msg_buffer['train'][round][ID][key] = torch.FloatTensor( + gen_grad[key].cpu()) + else: + for key in gen_grad.keys(): + self.msg_buffer['train'][round][ID][key] += torch.FloatTensor( + gen_grad[key].cpu()) + self.check_and_move_on() + + def check_and_move_on(self, check_eval_result=False): + client_IDs = [i for i in range(1, self.client_num + 1)] + + if check_eval_result: + # all clients are participating in evaluation + minimal_number = self.client_num + else: + # sampled clients are participating in training + minimal_number = self.sample_client_num + + # Transmit model and embedding to get gradient back + if self.check_buffer( + self.state, self.client_num + ) and self.state < self._cfg.fedsageplus.fedgen_epoch and self.state % 2 == 0: + # FedGen: we should wait for all messages + for sender in self.msg_buffer['train'][self.state]: + content = self.msg_buffer['train'][self.state][sender] + gen_para, embedding, label = content + receiver_IDs = client_IDs[:sender - 1] + client_IDs[sender:] + self.comm_manager.send( + Message(msg_type='gen_para', + sender=self.ID, + receiver=receiver_IDs, + state=self.state + 1, + content=[gen_para, embedding, label, sender])) + logger.info( + f'\tServer #{self.ID}: Transmit gen_para to {receiver_IDs} @{self.state//2}.' + ) + self.state += 1 + + # Sum up gradient client-wisely and send back + if self.check_buffer( + self.state, self.client_num + ) and self.state < self._cfg.fedsageplus.fedgen_epoch and self.state % 2 == 1 and self.grad_cnt == self.client_num * ( + self.client_num - 1): + for ID in self.msg_buffer['train'][self.state]: + grad = self.msg_buffer['train'][self.state][ID] + self.comm_manager.send( + Message(msg_type='gradient', + sender=self.ID, + receiver=[ID], + state=self.state + 1, + content=grad)) + # reset num of grad counter + self.grad_cnt = 0 + self.state += 1 + + if self.check_buffer( + self.state, self.client_num + ) and self.state == self._cfg.fedsageplus.fedgen_epoch: + self.state += 1 + # Setup Clf_trainer for each client + self.comm_manager.send( + Message(msg_type='setup', + sender=self.ID, + receiver=list(self.comm_manager.neighbors.keys()), + state=self.state)) + + if self.check_buffer( + self.state, minimal_number, check_eval_result + ) and self.state >= self._cfg.fedsageplus.fedgen_epoch: + + if not check_eval_result: # in the training process + # Get all the message + train_msg_buffer = self.msg_buffer['train'][self.state] + msg_list = list() + for client_id in train_msg_buffer: + msg_list.append(train_msg_buffer[client_id]) + + # Trigger the monitor here (for training) + if 'dissim' in self._cfg.eval.monitoring: + B_val = self._monitor.calc_blocal_dissim( + self.model.load_state_dict(), msg_list) + formatted_logs = self._monitor.format_eval_res( + B_val, rnd=self.state, role='Server #') + logger.info(formatted_logs) + + # Aggregate + agg_info = { + 'client_feedback': msg_list, + 'recover_fun': self.recover_fun + } + result = self.aggregator.aggregate(agg_info) + self.model.load_state_dict(result) + self.aggregator.update(result) + + self.state += 1 + if self.state % self._cfg.eval.freq == 0 and self.state != self.total_round_num: + # Evaluate + logger.info( + 'Server #{:d}: Starting evaluation at round {:d}.'. + format(self.ID, self.state)) + self.eval() + + if self.state < self.total_round_num: + # Move to next round of training + logger.info( + '----------- Starting a new training round (Round #{:d}) -------------' + .format(self.state)) + self.broadcast_model_para( + msg_type='model_para', + sample_client_num=self.sample_client_num) + else: + # Final Evaluate + logger.info( + 'Server #{:d}: Training is finished! Starting evaluation.' + .format(self.ID)) + self.eval() + + else: # in the evaluation process + # Get all the message & aggregate + formatted_eval_res = self.merge_eval_results_from_all_clients() + self.history_results = merge_dict(self.history_results, + formatted_eval_res) + self.check_and_save() + + +class FedSagePlusClient(Client): + def __init__(self, + ID=-1, + server_id=None, + state=-1, + config=None, + data=None, + model=None, + device='cpu', + strategy=None, + *args, + **kwargs): + super(FedSagePlusClient, + self).__init__(ID, server_id, state, config, data, model, device, + strategy, *args, **kwargs) + self.data = data + self.hide_data = HideGraph(self._cfg.fedsageplus.hide_portion)(data) + self.device = device + self.sage_batch_size = 64 + self.gen = LocalSage_Plus(data.x.shape[-1], + self._cfg.model.out_channels, + hidden=self._cfg.model.hidden, + gen_hidden=self._cfg.fedsageplus.gen_hidden, + dropout=self._cfg.model.dropout, + num_pred=self._cfg.fedsageplus.num_pred) + self.clf = model + self.trainer_loc = LocalGenTrainer(self.gen, + self.hide_data, + self.device, + self._cfg, + monitor=self._monitor) + + self.register_handlers('clf_para', self.callback_funcs_for_model_para) + self.register_handlers('local_pretrain', + self.callback_funcs_for_local_pre_train) + self.register_handlers('gradient', self.callback_funcs_for_gradient) + self.register_handlers('gen_para', self.callback_funcs_for_gen_para) + self.register_handlers('setup', self.callback_funcs_for_setup_fedsage) + + def callback_funcs_for_local_pre_train(self, message: Message): + round, sender, content = message.state, message.sender, message.content + # Local pre-train + logger.info(f'\tClient #{self.ID} pre-train start...') + for i in range(self._cfg.fedsageplus.loc_epoch): + num_samples_train, _, _ = self.trainer_loc.train() + logger.info(f'\tClient #{self.ID} local pre-train @Epoch {i}.') + # Build fedgen base on locgen + self.fedgen = FedSage_Plus(self.gen) + # Build trainer for fedgen + self.trainer_fedgen = FedGenTrainer(self.fedgen, + self.hide_data, + self.device, + self._cfg, + monitor=self._monitor) + + gen_para = self.fedgen.cpu().state_dict() + embedding = self.trainer_fedgen.embedding() + self.state = round + logger.info(f'\tClient #{self.ID} pre-train finish!') + # Start the training of fedgen + self.comm_manager.send( + Message(msg_type='gen_para', + sender=self.ID, + receiver=[sender], + state=self.state, + content=[gen_para, embedding, self.hide_data.num_missing])) + logger.info(f'\tClient #{self.ID} send gen_para to Server #{sender}.') + + def callback_funcs_for_gen_para(self, message: Message): + round, sender, content = message.state, message.sender, message.content + gen_para, embedding, label, ID = content + + gen_grad = self.trainer_fedgen.cal_grad(self.data, gen_para, embedding, + label) + self.state = round + self.comm_manager.send( + Message(msg_type='gradient', + sender=self.ID, + receiver=[sender], + state=self.state, + content=[gen_grad, ID])) + logger.info(f'\tClient #{self.ID}: send gradient to Server #{sender}.') + + def callback_funcs_for_gradient(self, message): + # Aggregate gen_grad on server + round, sender, content = message.state, message.sender, message.content + gen_grad = content + self.trainer_fedgen.train() + gen_para = self.trainer_fedgen.update_by_grad(gen_grad) + embedding = self.trainer_fedgen.embedding() + self.state = round + self.comm_manager.send( + Message(msg_type='gen_para', + sender=self.ID, + receiver=[sender], + state=self.state, + content=[gen_para, embedding, self.hide_data.num_missing])) + logger.info(f'\tClient #{self.ID}: send gen_para to Server #{sender}.') + + def callback_funcs_for_setup_fedsage(self, message: Message): + round, sender, content = message.state, message.sender, message.content + self.filled_data = GraphMender(model=self.fedgen, + impaired_data=self.hide_data.cpu(), + original_data=self.data) + subgraph_sampler = NeighborSampler( + self.filled_data.edge_index, + sizes=[-1], + batch_size=4096, + shuffle=False, + num_workers=self._cfg.data.num_workers) + fill_dataloader = { + 'data': self.filled_data, + 'train': NeighborSampler(self.filled_data.edge_index, + node_idx=self.filled_data.train_idx, + sizes=self._cfg.data.sizes, + batch_size=self.sage_batch_size, + shuffle=self._cfg.data.shuffle, + num_workers=self._cfg.data.num_workers), + 'val': subgraph_sampler, + 'test': subgraph_sampler + } + self._cfg.merge_from_list(['data.batch_size', self.sage_batch_size]) + self.trainer_clf = NodeMiniBatchTrainer(self.clf, + fill_dataloader, + self.device, + self._cfg, + monitor=self._monitor) + sample_size, clf_para, results = self.trainer_clf.train() + self.state = round + logger.info( + self._monitor.format_eval_res(results, + rnd=self.state, + role='Client #{}'.format(self.ID))) + self.comm_manager.send( + Message(msg_type='clf_para', + sender=self.ID, + receiver=[sender], + state=self.state, + content=(sample_size, clf_para))) + + def callback_funcs_for_model_para(self, message: Message): + round, sender, content = message.state, message.sender, message.content + self.trainer_clf.update(content) + self.state = round + sample_size, clf_para, results = self.trainer_clf.train() + logger.info( + self._monitor.format_eval_res(results, + rnd=self.state, + role='Client #{}'.format(self.ID))) + self.comm_manager.send( + Message(msg_type='clf_para', + sender=self.ID, + receiver=[sender], + state=self.state, + content=(sample_size, clf_para))) diff --git a/federatedscope/gfl/flitplus/__init__.py b/federatedscope/gfl/flitplus/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/federatedscope/gfl/flitplus/trainer.py b/federatedscope/gfl/flitplus/trainer.py new file mode 100644 index 000000000..65a45ba2e --- /dev/null +++ b/federatedscope/gfl/flitplus/trainer.py @@ -0,0 +1,264 @@ +import torch +from copy import deepcopy + +from federatedscope.gfl.loss.vat import VATLoss +from federatedscope.core.trainers.trainer import GeneralTorchTrainer + + +class FLITTrainer(GeneralTorchTrainer): + def register_default_hooks_train(self): + super(FLITTrainer, self).register_default_hooks_train() + self.register_hook_in_train(new_hook=record_initialization_local, + trigger='on_fit_start', + insert_pos=-1) + self.register_hook_in_train(new_hook=del_initialization_local, + trigger='on_fit_end', + insert_pos=-1) + self.register_hook_in_train(new_hook=record_initialization_global, + trigger='on_fit_start', + insert_pos=-1) + self.register_hook_in_train(new_hook=del_initialization_global, + trigger='on_fit_end', + insert_pos=-1) + + def register_default_hooks_eval(self): + super(FLITTrainer, self).register_default_hooks_eval() + self.register_hook_in_eval(new_hook=record_initialization_local, + trigger='on_fit_start', + insert_pos=-1) + self.register_hook_in_eval(new_hook=del_initialization_local, + trigger='on_fit_end', + insert_pos=-1) + self.register_hook_in_eval(new_hook=record_initialization_global, + trigger='on_fit_start', + insert_pos=-1) + self.register_hook_in_eval(new_hook=del_initialization_global, + trigger='on_fit_end', + insert_pos=-1) + + def _hook_on_batch_forward(self, ctx): + batch = ctx.data_batch.to(ctx.device) + pred = ctx.model(batch) + ctx.global_model.to(ctx.device) + predG = ctx.global_model(batch) + if ctx.criterion._get_name() == 'CrossEntropyLoss': + label = batch.y.squeeze(-1).long() + elif ctx.criterion._get_name() == 'MSELoss': + label = batch.y.float() + else: + raise ValueError( + f'FLIT trainer not support {ctx.criterion._get_name()}.') + if len(label.size()) == 0: + label = label.unsqueeze(0) + + lossGlobalLabel = ctx.criterion(predG, label) + lossLocalLabel = ctx.criterion(pred, label) + + weightloss = lossLocalLabel + torch.relu(lossLocalLabel - + lossGlobalLabel.detach()) + if ctx.weight_denomaitor == None: + ctx.weight_denomaitor = weightloss.mean(dim=0, + keepdim=True).detach() + else: + ctx.weight_denomaitor = self.cfg.flitplus.factor_ema * ctx.weight_denomaitor + ( + 1 - self.cfg.flitplus.factor_ema) * weightloss.mean( + dim=0, keepdim=True).detach() + + loss = (1 - torch.exp(-weightloss / (ctx.weight_denomaitor + 1e-7)) + + 1e-7)**self.cfg.flitplus.tmpFed * (lossLocalLabel) + ctx.loss_batch = loss.mean() + + ctx.batch_size = len(label) + ctx.y_true = label + ctx.y_prob = pred + + +class FLITPlusTrainer(FLITTrainer): + def _hook_on_batch_forward(self, ctx): + # LDS should be calculated before the forward for cross entropy + batch = ctx.data_batch.to(ctx.device) + ctx.global_model.to(ctx.device) + if ctx.cur_mode == 'test': + lossLocalVAT, lossGlobalVAT = torch.tensor(0.), torch.tensor(0.) + else: + vat_loss = VATLoss() # xi, and eps + lossLocalVAT = vat_loss(deepcopy(ctx.model), batch, + deepcopy(ctx.criterion)) + lossGlobalVAT = vat_loss(deepcopy(ctx.global_model), batch, + deepcopy(ctx.criterion)) + + pred = ctx.model(batch) + predG = ctx.global_model(batch) + if ctx.criterion._get_name() == 'CrossEntropyLoss': + label = batch.y.squeeze(-1).long() + elif ctx.criterion._get_name() == 'MSELoss': + label = batch.y.float() + else: + raise ValueError( + f'FLITPLUS trainer not support {ctx.criterion._get_name()}.') + if len(label.size()) == 0: + label = label.unsqueeze(0) + lossGlobalLabel = ctx.criterion(predG, label) + lossLocalLabel = ctx.criterion(pred, label) + + weightloss_loss = lossLocalLabel + torch.relu(lossLocalLabel - + lossGlobalLabel.detach()) + weightloss_vat = (lossLocalVAT + + torch.relu(lossLocalVAT - lossGlobalVAT.detach())) + weightloss = weightloss_loss + self.cfg.flitplus.lambdavat * weightloss_vat + if ctx.weight_denomaitor == None: + ctx.weight_denomaitor = weightloss.mean(dim=0, + keepdim=True).detach() + else: + ctx.weight_denomaitor = self.cfg.flitplus.factor_ema * ctx.weight_denomaitor + ( + 1 - self.cfg.flitplus.factor_ema) * weightloss.mean( + dim=0, keepdim=True).detach() + + loss = (1 - torch.exp(-weightloss / (ctx.weight_denomaitor + 1e-7)) + + 1e-7)**self.cfg.flitplus.tmpFed * ( + lossLocalLabel + + self.cfg.flitplus.weightReg * lossLocalVAT) + ctx.loss_batch = loss.mean() + + ctx.batch_size = len(label) + ctx.y_true = label + ctx.y_prob = pred + + +class FedFocalTrainer(GeneralTorchTrainer): + def register_default_hooks_train(self): + super(FedFocalTrainer, self).register_default_hooks_train() + self.register_hook_in_train(new_hook=record_initialization_local, + trigger='on_fit_start', + insert_pos=-1) + self.register_hook_in_train(new_hook=del_initialization_local, + trigger='on_fit_end', + insert_pos=-1) + + def register_default_hooks_eval(self): + super(FedFocalTrainer, self).register_default_hooks_eval() + self.register_hook_in_eval(new_hook=record_initialization_local, + trigger='on_fit_start', + insert_pos=-1) + self.register_hook_in_eval(new_hook=del_initialization_local, + trigger='on_fit_end', + insert_pos=-1) + + def _hook_on_batch_forward(self, ctx): + batch = ctx.data_batch.to(ctx.device) + pred = ctx.model(batch) + if ctx.criterion._get_name() == 'CrossEntropyLoss': + label = batch.y.squeeze(-1).long() + elif ctx.criterion._get_name() == 'MSELoss': + label = batch.y.float() + else: + raise ValueError( + f'FLIT trainer not support {ctx.criterion._get_name()}.') + if len(label.size()) == 0: + label = label.unsqueeze(0) + + lossLocalLabel = ctx.criterion(pred, label) + weightloss = lossLocalLabel + if ctx.weight_denomaitor == None: + ctx.weight_denomaitor = weightloss.mean(dim=0, + keepdim=True).detach() + else: + ctx.weight_denomaitor = self.cfg.flitplus.factor_ema * ctx.weight_denomaitor + ( + 1 - self.cfg.flitplus.factor_ema) * weightloss.mean( + dim=0, keepdim=True).detach() + + loss = (1 - torch.exp(-weightloss / (ctx.weight_denomaitor + 1e-7)) + + 1e-7)**self.cfg.flitplus.tmpFed * (lossLocalLabel) + ctx.loss_batch = loss.mean() + + ctx.batch_size = len(label) + ctx.y_true = label + ctx.y_prob = pred + + +class FedVATTrainer(GeneralTorchTrainer): + def register_default_hooks_train(self): + super(FedVATTrainer, self).register_default_hooks_train() + self.register_hook_in_train(new_hook=record_initialization_local, + trigger='on_fit_start', + insert_pos=-1) + self.register_hook_in_train(new_hook=del_initialization_local, + trigger='on_fit_end', + insert_pos=-1) + + def register_default_hooks_eval(self): + super(FedVATTrainer, self).register_default_hooks_eval() + self.register_hook_in_eval(new_hook=record_initialization_local, + trigger='on_fit_start', + insert_pos=-1) + self.register_hook_in_eval(new_hook=del_initialization_local, + trigger='on_fit_end', + insert_pos=-1) + + def _hook_on_batch_forward(self, ctx): + batch = ctx.data_batch.to(ctx.device) + if ctx.cur_mode == 'test': + lossLocalVAT = torch.tensor(0.) + else: + vat_loss = VATLoss() # xi, and eps + lossLocalVAT = vat_loss(deepcopy(ctx.model), batch, + deepcopy(ctx.criterion)) + + pred = ctx.model(batch) + if ctx.criterion._get_name() == 'CrossEntropyLoss': + label = batch.y.squeeze(-1).long() + elif ctx.criterion._get_name() == 'MSELoss': + label = batch.y.float() + else: + raise ValueError( + f'FedVAT trainer not support {ctx.criterion._get_name()}.') + if len(label.size()) == 0: + label = label.unsqueeze(0) + lossLocalLabel = ctx.criterion(pred, label) + weightloss = lossLocalLabel + self.cfg.flitplus.lambdavat * lossLocalVAT + if ctx.weight_denomaitor == None: + ctx.weight_denomaitor = weightloss.mean(dim=0, + keepdim=True).detach() + else: + ctx.weight_denomaitor = self.cfg.flitplus.factor_ema * ctx.weight_denomaitor + ( + 1 - self.cfg.flitplus.factor_ema) * weightloss.mean( + dim=0, keepdim=True).detach() + + loss = (1 - torch.exp(-weightloss / (ctx.weight_denomaitor + 1e-7)) + + 1e-7)**self.cfg.flitplus.tmpFed * ( + lossLocalLabel + + self.cfg.flitplus.weightReg * lossLocalVAT) + ctx.loss_batch = loss.mean() + + ctx.batch_size = len(label) + ctx.y_true = label + ctx.y_prob = pred + + +def record_initialization_local(ctx): + """Record weight denomaitor to cpu + + """ + ctx.weight_denomaitor = None + + +def del_initialization_local(ctx): + """Clear the variable to avoid memory leakage + + """ + ctx.weight_denomaitor = None + + +def record_initialization_global(ctx): + """Record the shared global model to cpu + + """ + ctx.global_model = deepcopy(ctx.model) + ctx.global_model.to(torch.device("cpu")) + + +def del_initialization_global(ctx): + """Clear the variable to avoid memory leakage + + """ + ctx.global_model = None diff --git a/federatedscope/gfl/gcflplus/__init__.py b/federatedscope/gfl/gcflplus/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/federatedscope/gfl/gcflplus/utils.py b/federatedscope/gfl/gcflplus/utils.py new file mode 100644 index 000000000..ba8042033 --- /dev/null +++ b/federatedscope/gfl/gcflplus/utils.py @@ -0,0 +1,33 @@ +import torch +import numpy as np +from dtaidistance import dtw +""" + Utils from: https://github.com/Oxfordblue7/GCFL +""" + + +def norm(w): + return torch.norm(torch.cat([v.flatten() for v in w.values()])).item() + + +def compute_pairwise_distances(seqs, standardize=False): + """ computes DTW distances for gcfl+""" + if standardize: + # standardize to only focus on the trends + seqs = np.array(seqs) + seqs = seqs / seqs.std(axis=1).reshape(-1, 1) + distances = dtw.distance_matrix(seqs) + else: + distances = dtw.distance_matrix(seqs) + return distances + + +def min_cut(similarity, cluster): + g = nx.Graph() + for i in range(len(similarity)): + for j in range(len(similarity)): + g.add_edge(i, j, weight=similarity[i][j]) + cut, partition = nx.stoer_wagner(g) + c1 = np.array([cluster[x] for x in partition[0]]) + c2 = np.array([cluster[x] for x in partition[1]]) + return c1, c2 diff --git a/federatedscope/gfl/gcflplus/worker.py b/federatedscope/gfl/gcflplus/worker.py new file mode 100644 index 000000000..e69f66ee9 --- /dev/null +++ b/federatedscope/gfl/gcflplus/worker.py @@ -0,0 +1,208 @@ +import torch +import logging +import copy +import numpy as np + +from federatedscope.core.message import Message +from federatedscope.core.worker.server import Server +from federatedscope.core.worker.client import Client +from federatedscope.core.auxiliaries.utils import merge_dict +from federatedscope.gfl.gcflplus.utils import compute_pairwise_distances, min_cut, norm + +logger = logging.getLogger(__name__) + + +class GCFLPlusServer(Server): + def __init__(self, + ID=-1, + state=0, + config=None, + data=None, + model=None, + client_num=5, + total_round_num=10, + device='cpu', + strategy=None, + **kwargs): + super(GCFLPlusServer, + self).__init__(ID, state, config, data, model, client_num, + total_round_num, device, strategy, **kwargs) + # Initial cluster + self.cluster_indices = [ + np.arange(1, self._cfg.federate.client_num + 1).astype("int") + ] + self.client_clusters = [[ID for ID in cluster_id] + for cluster_id in self.cluster_indices] + # Maintain a grad sequence + self.seqs_grads = { + idx: [] + for idx in range(1, self._cfg.federate.client_num + 1) + } + + def compute_update_norm(self, cluster): + max_norm = -np.inf + cluster_dWs = [] + for key in cluster: + content = self.msg_buffer['train'][self.state][key] + _, model_para, client_dw, _ = content + dW = {} + for k in model_para.keys(): + dW[k] = client_dw[k] + update_norm = norm(dW) + if update_norm > max_norm: + max_norm = update_norm + cluster_dWs.append( + torch.cat([value.flatten() for value in dW.values()])) + mean_norm = torch.norm(torch.mean(torch.stack(cluster_dWs), + dim=0)).item() + return max_norm, mean_norm + + def check_and_move_on(self, check_eval_result=False): + + if check_eval_result: + # all clients are participating in evaluation + minimal_number = self.client_num + else: + # sampled clients are participating in training + minimal_number = self.sample_client_num + + if self.check_buffer(self.state, minimal_number, check_eval_result): + + if not check_eval_result: # in the training process + # Get all the message + train_msg_buffer = self.msg_buffer['train'][self.state] + for model_idx in range(self.model_num): + model = self.models[model_idx] + aggregator = self.aggregators[model_idx] + msg_list = list() + for client_id in train_msg_buffer: + if self.model_num == 1: + train_data_size, model_para, _, convGradsNorm = train_msg_buffer[ + client_id] + self.seqs_grads[client_id].append(convGradsNorm) + msg_list.append((train_data_size, model_para)) + else: + raise ValueError( + 'GCFL server not support multi-model.') + + cluster_indices_new = [] + for cluster in self.cluster_indices: + max_norm, mean_norm = self.compute_update_norm(cluster) + # create new cluster + if mean_norm < self._cfg.gcflplus.EPS_1 and max_norm > self._cfg.gcflplus.EPS_2 and len( + cluster) > 2 and self.state > 20 and all( + len(value) >= self._cfg.gcflplus.seq_length + for value in self.seqs_grads.values()): + _, model_para_cluster, _, _ = self.msg_buffer[ + 'train'][self.state][cluster[0]] + tmp = [ + self.seqs_grads[ID] + [-self._cfg.gcflplus.seq_length:] + for ID in cluster + ] + dtw_distances = compute_pairwise_distances( + tmp, self._cfg.gcflplus.standardize) + c1, c2 = min_cut( + np.max(dtw_distances) - dtw_distances, cluster) + cluster_indices_new += [c1, c2] + # reset seqs_grads for all clients + self.seqs_grads = { + idx: [] + for idx in range( + 1, self._cfg.federate.client_num + 1) + } + # keep this cluster + else: + cluster_indices_new += [cluster] + + self.cluster_indices = cluster_indices_new + self.client_clusters = [[ + ID for ID in cluster_id + ] for cluster_id in self.cluster_indices] + + self.state += 1 + if self.state % self._cfg.eval.freq == 0 and self.state != self.total_round_num: + # Evaluate + logger.info( + 'Server #{:d}: Starting evaluation at round {:d}.'. + format(self.ID, self.state)) + self.eval() + + if self.state < self.total_round_num: + for cluster in self.cluster_indices: + msg_lsit = list() + for key in cluster: + content = self.msg_buffer['train'][self.state - + 1][key] + train_data_size, model_para, client_dw, convGradsNorm = content + msg_lsit.append((train_data_size, model_para)) + + agg_info = { + 'client_feedback': msg_list, + 'recover_fun': self.recover_fun + } + result = aggregator.aggregate(agg_info) + model.load_state_dict(result, strict=False) + # aggregator.update(result) + # Send to Clients + self.comm_manager.send( + Message(msg_type='model_para', + sender=self.ID, + receiver=cluster.tolist(), + state=self.state, + content=result)) + + # Move to next round of training + logger.info( + '----------- Starting a new training round (Round #{:d}) -------------' + .format(self.state)) + # Clean the msg_buffer + self.msg_buffer['train'][self.state - 1].clear() + + else: + # Final Evaluate + logger.info( + 'Server #{:d}: Training is finished! Starting evaluation.' + .format(self.ID)) + self.eval() + + else: # in the evaluation process + # Get all the message & aggregate + formatted_eval_res = self.merge_eval_results_from_all_clients() + self.history_results = merge_dict(self.history_results, + formatted_eval_res) + self.check_and_save() + + +class GCFLPlusClient(Client): + def callback_funcs_for_model_para(self, message: Message): + round, sender, content = message.state, message.sender, message.content + # Cache old W + W_old = copy.deepcopy(content) + self.trainer.update(content) + self.state = round + sample_size, model_para, results = self.trainer.train() + logger.info( + self._monitor.format_eval_res(results, + rnd=self.state, + role='Client #{}'.format(self.ID))) + + # Compute norm of W & norm of grad + dW = dict() + for key in model_para.keys(): + dW[key] = model_para[key] - W_old[key].cpu() + + self.W = {key: value for key, value in self.model.named_parameters()} + + convGradsNorm = dict() + for key in model_para.keys(): + if key in self.W and self.W[key].grad is not None: + convGradsNorm[key] = self.W[key].grad + convGradsNorm = norm(convGradsNorm) + + self.comm_manager.send( + Message(msg_type='model_para', + sender=self.ID, + receiver=[sender], + state=self.state, + content=(sample_size, model_para, dW, convGradsNorm))) diff --git a/federatedscope/gfl/loss/__init__.py b/federatedscope/gfl/loss/__init__.py new file mode 100644 index 000000000..bb0c1a585 --- /dev/null +++ b/federatedscope/gfl/loss/__init__.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from federatedscope.gfl.loss.greedy_loss import GreedyLoss + +__all__ = ['GreedyLoss'] \ No newline at end of file diff --git a/federatedscope/gfl/loss/greedy_loss.py b/federatedscope/gfl/loss/greedy_loss.py new file mode 100644 index 000000000..9d20be2f6 --- /dev/null +++ b/federatedscope/gfl/loss/greedy_loss.py @@ -0,0 +1,67 @@ +import numpy as np +import torch +import torch.nn.functional as F + + +def GreedyLoss(pred_feats, true_feats, pred_missing, true_missing, num_pred): + r"""Greedy loss is a loss function of cacluating the MSE loss for the feature. + https://proceedings.neurips.cc//paper/2021/file/34adeb8e3242824038aa65460a47c29e-Paper.pdf + Fedsageplus models from the "Subgraph Federated Learning with Missing Neighbor Generation" (FedSage+) paper, in NeurIPS'21 + Source: https://github.com/zkhku/fedsage + + Arguments: + pred_feats (torch.Tensor): generated missing features + true_feats (torch.Tensor): real missing features + pred_missing (torch.Tensor): number of predicted missing node + true_missing (torch.Tensor): number of missing node + num_pred (int): hyperparameters which limit the maximum value of the prediction + :returns: + loss : the Greedy Loss + :rtype: + torch.FloatTensor + """ + CUDA, device = (pred_feats.device.type != 'cpu'), pred_feats.device + if CUDA: + true_missing = true_missing.cpu() + pred_missing = pred_missing.cpu() + loss = torch.zeros(pred_feats.shape) + if CUDA: + loss = loss.to(device) + pred_len = len(pred_feats) + pred_missing_np = np.round( + pred_missing.detach().numpy()).reshape(-1).astype(np.int32) + true_missing_np = true_missing.detach().numpy().reshape(-1).astype( + np.int32) + true_missing_np = np.clip(true_missing_np, 0, num_pred) + pred_missing_np = np.clip(pred_missing_np, 0, num_pred) + for i in range(pred_len): + for pred_j in range(min(num_pred, pred_missing_np[i])): + if true_missing_np[i] > 0: + if isinstance(true_feats[i][true_missing_np[i] - 1], + np.ndarray): + true_feats_tensor = torch.tensor( + true_feats[i][true_missing_np[i] - 1]) + if CUDA: + true_feats_tensor = true_feats_tensor.to(device) + else: + true_feats_tensor = true_feats[i][true_missing_np[i] - 1] + loss[i][pred_j] += F.mse_loss( + pred_feats[i][pred_j].unsqueeze(0).float(), + true_feats_tensor.unsqueeze(0).float()).squeeze(0) + + for true_k in range(min(num_pred, true_missing_np[i])): + if isinstance(true_feats[i][true_k], np.ndarray): + true_feats_tensor = torch.tensor(true_feats[i][true_k]) + if CUDA: + true_feats_tensor = true_feats_tensor.to(device) + else: + true_feats_tensor = true_feats[i][true_k] + + loss_ijk = F.mse_loss( + pred_feats[i][pred_j].unsqueeze(0).float(), + true_feats_tensor.unsqueeze(0).float()).squeeze(0) + if torch.sum(loss_ijk) < torch.sum(loss[i][pred_j].data): + loss[i][pred_j] = loss_ijk + else: + continue + return loss.unsqueeze(0).mean().float() diff --git a/federatedscope/gfl/loss/vat.py b/federatedscope/gfl/loss/vat.py new file mode 100644 index 000000000..9fb03a28c --- /dev/null +++ b/federatedscope/gfl/loss/vat.py @@ -0,0 +1,88 @@ +import contextlib +import torch +import torch.nn as nn +import torch.nn.functional as F +from torch_geometric.data.batch import Batch + + +@contextlib.contextmanager +def _disable_tracking_bn_stats(model): + def switch_attr(m): + if hasattr(m, 'track_running_stats'): + m.track_running_stats ^= True + + model.apply(switch_attr) + yield + model.apply(switch_attr) + + +def _l2_normalize(d): + d_reshaped = d.view(d.shape[0], -1, *(1 for _ in range(d.dim() - 2))) + d /= torch.norm(d_reshaped, dim=1, keepdim=True) + 1e-8 + return d + + +class VATLoss(nn.Module): + def __init__(self, xi=1e-3, eps=2.5, ip=1): + r"""VAT loss + Source: https://github.com/lyakaap/VAT-pytorch + + Arguments: + xi: hyperparameter of VAT in Eq.9, default: 0.0001 + eps: hyperparameter of VAT in Eq.9, default: 2.5 + ip: iteration times of computing adv noise + + Returns: + loss : the VAT Loss + + """ + super(VATLoss, self).__init__() + self.xi = xi + self.eps = eps + self.ip = ip + + def forward(self, model, graph, criterion): + pred = model(graph) + if criterion._get_name() == 'CrossEntropyLoss': + pred = torch.max(pred, dim=1).indices.long().view(-1) + + # prepare random unit tensor + nodefea = graph.x + dn = torch.rand(nodefea.shape).sub(0.5).to(nodefea.device) + dn = _l2_normalize(dn) + + with _disable_tracking_bn_stats(model): + # calc adversarial direction + with torch.enable_grad(): + for _ in range(self.ip): + dn.requires_grad_() + x_neighbor = Batch(x=nodefea + self.xi * dn, + edge_index=graph.edge_index, + y=graph.y, + edge_attr=graph.edge_attr, + batch=graph.batch) + pred_hat = model(x_neighbor) + # logp_hat = F.log_softmax(pred_hat, dim=1) + # adv_distance = F.kl_div(logp_hat, logp, reduction='batchmean') + # adv_distance = ((pred - pred_hat) ** 2).sum(axis=0).sqrt() + adv_distance = criterion(pred_hat, pred) + # adv_distance.backward() + # dn = _l2_normalize(dn.grad) + dn = _l2_normalize( + torch.autograd.grad(outputs=adv_distance, + inputs=dn, + retain_graph=True)[0]) + model.zero_grad() + del x_neighbor, pred_hat, adv_distance + + # calc LDS + rn_adv = dn * self.eps + x_adv = Batch(x=nodefea + rn_adv, + edge_index=graph.edge_index, + y=graph.y, + edge_attr=graph.edge_attr, + batch=graph.batch) + pred_hat = model(x_adv) + lds = criterion(pred_hat, pred) + + return lds diff --git a/federatedscope/gfl/model/__init__.py b/federatedscope/gfl/model/__init__.py new file mode 100644 index 000000000..ec5bf0316 --- /dev/null +++ b/federatedscope/gfl/model/__init__.py @@ -0,0 +1,19 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from federatedscope.core.mlp import MLP +from federatedscope.gfl.model.model_builder import get_gnn +from federatedscope.gfl.model.gcn import GCN_Net +from federatedscope.gfl.model.sage import SAGE_Net +from federatedscope.gfl.model.gin import GIN_Net +from federatedscope.gfl.model.gat import GAT_Net +from federatedscope.gfl.model.gpr import GPR_Net +from federatedscope.gfl.model.graph_level import GNN_Net_Graph +from federatedscope.gfl.model.link_level import GNN_Net_Link +from federatedscope.gfl.model.fedsageplus import LocalSage_Plus, FedSage_Plus + +__all__ = [ + 'get_gnn', 'GCN_Net', 'SAGE_Net', 'GIN_Net', 'GAT_Net', 'GPR_Net', + 'GNN_Net_Graph', 'GNN_Net_Link', 'LocalSage_Plus', 'FedSage_Plus', 'MLP' +] diff --git a/federatedscope/gfl/model/fedsageplus.py b/federatedscope/gfl/model/fedsageplus.py new file mode 100644 index 000000000..d067ddf3b --- /dev/null +++ b/federatedscope/gfl/model/fedsageplus.py @@ -0,0 +1,175 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +import torch +import numpy as np +import scipy.sparse as sp + +import torch.nn as nn +import torch.nn.functional as F +from torch_geometric.data import Data + +from federatedscope.gfl.model import SAGE_Net +""" +https://proceedings.neurips.cc//paper/2021/file/34adeb8e3242824038aa65460a47c29e-Paper.pdf +Fedsageplus models from the "Subgraph Federated Learning with Missing Neighbor Generation" (FedSage+) paper, in NeurIPS'21 +Source: https://github.com/zkhku/fedsage +""" + + +class Sampling(nn.Module): + def __init__(self): + super(Sampling, self).__init__() + + def forward(self, inputs): + rand = torch.normal(0, 1, size=inputs.shape) + + return inputs + rand.to(inputs.device) + + +class FeatGenerator(nn.Module): + def __init__(self, latent_dim, dropout, num_pred, feat_shape): + super(FeatGenerator, self).__init__() + self.num_pred = num_pred + self.feat_shape = feat_shape + self.dropout = dropout + self.sample = Sampling() + self.fc1 = nn.Linear(latent_dim, 256) + self.fc2 = nn.Linear(256, 2048) + self.fc_flat = nn.Linear(2048, self.num_pred * self.feat_shape) + + def forward(self, x): + x = self.sample(x) + x = F.relu(self.fc1(x)) + x = F.relu(self.fc2(x)) + x = F.dropout(x, self.dropout, training=self.training) + x = torch.tanh(self.fc_flat(x)) + + return x + + +class NumPredictor(nn.Module): + def __init__(self, latent_dim): + self.latent_dim = latent_dim + super(NumPredictor, self).__init__() + self.reg_1 = nn.Linear(self.latent_dim, 1) + + def forward(self, x): + x = F.relu(self.reg_1(x)) + return x + + +# Mend the graph via NeighGen +class MendGraph(nn.Module): + def __init__(self, num_pred): + super(MendGraph, self).__init__() + self.num_pred = num_pred + for param in self.parameters(): + param.requires_grad = False + + def mend_graph(self, x, edge_index, pred_degree, gen_feats): + device = gen_feats.device + num_node, num_feature = x.shape + new_edges = [] + gen_feats = gen_feats.view(-1, self.num_pred, num_feature) + + if pred_degree.device.type != 'cpu': + pred_degree = pred_degree.cpu() + pred_degree = torch._cast_Int(torch.round(pred_degree)).detach() + x = x.detach() + fill_feats = torch.vstack((x, gen_feats.view(-1, num_feature))) + + for i in range(num_node): + for j in range(min(self.num_pred, max(0, pred_degree[i]))): + new_edges.append( + np.asarray([i, num_node + i * self.num_pred + j])) + + new_edges = torch.tensor(np.asarray(new_edges).reshape((-1, 2)), + dtype=torch.int64).T + new_edges = new_edges.to(device) + if len(new_edges) > 0: + fill_edges = torch.hstack((edge_index, new_edges)) + else: + fill_edges = torch.clone(edge_index) + return fill_feats, fill_edges + + def forward(self, x, edge_index, pred_missing, gen_feats): + fill_feats, fill_edges = self.mend_graph(x, edge_index, pred_missing, + gen_feats) + + return fill_feats, fill_edges + + +class LocalSage_Plus(nn.Module): + def __init__(self, + in_channels, + out_channels, + hidden, + gen_hidden, + dropout=0.5, + num_pred=5): + super(LocalSage_Plus, self).__init__() + + self.encoder_model = SAGE_Net(in_channels=in_channels, + out_channels=gen_hidden, + hidden=hidden, + max_depth=2, + dropout=dropout) + self.reg_model = NumPredictor(latent_dim=gen_hidden) + self.gen = FeatGenerator(latent_dim=gen_hidden, + dropout=dropout, + num_pred=num_pred, + feat_shape=in_channels) + self.mend_graph = MendGraph(num_pred) + + self.classifier = SAGE_Net(in_channels=in_channels, + out_channels=out_channels, + hidden=hidden, + max_depth=2, + dropout=dropout) + + def forward(self, data): + x = self.encoder_model(data) + degree = self.reg_model(x) + gen_feat = self.gen(x) + mend_feats, mend_edge_index = self.mend_graph(data.x, data.edge_index, + degree, gen_feat) + nc_pred = self.classifier( + Data(x=mend_feats, edge_index=mend_edge_index)) + return degree, gen_feat, nc_pred[:data.num_nodes] + + def inference(self, impared_data, raw_data): + x = self.encoder_model(data) + degree = self.reg_model(x) + gen_feat = self.gen(x) + mend_feats, mend_edge_index = self.mend_graph(raw_data.x, + raw_data.edge_index, + degree, gen_feat) + nc_pred = self.classifier( + Data(x=mend_feats, edge_index=mend_edge_index)) + return degree, gen_feat, nc_pred[:raw_data.num_nodes] + + +class FedSage_Plus(nn.Module): + def __init__(self, local_graph: LocalSage_Plus): + super(FedSage_Plus, self).__init__() + self.encoder_model = local_graph.encoder_model + self.reg_model = local_graph.reg_model + self.gen = local_graph.gen + self.mend_graph = local_graph.mend_graph + self.classifier = local_graph.classifier + self.encoder_model.requires_grad_(False) + self.reg_model.requires_grad_(False) + self.mend_graph.requires_grad_(False) + self.classifier.requires_grad_(False) + + def forward(self, data): + x = self.encoder_model(data) + degree = self.reg_model(x) + gen_feat = self.gen(x) + mend_feats, mend_edge_index = self.mend_graph(data.x, data.edge_index, + degree, gen_feat) + nc_pred = self.classifier( + Data(x=mend_feats, edge_index=mend_edge_index)) + return degree, gen_feat, nc_pred[:data.num_nodes] \ No newline at end of file diff --git a/federatedscope/gfl/model/gat.py b/federatedscope/gfl/model/gat.py new file mode 100644 index 000000000..07449adcd --- /dev/null +++ b/federatedscope/gfl/model/gat.py @@ -0,0 +1,53 @@ +import torch +import torch.nn.functional as F +from torch.nn import ModuleList +from torch_geometric.data import Data +from torch_geometric.nn import GATConv + + +class GAT_Net(torch.nn.Module): + r"""GAT model from the "Graph Attention Networks" paper, in ICLR'18 + + Arguments: + in_channels (int): dimension of input. + out_channels (int): dimension of output. + hidden (int): dimension of hidden units, default=64. + max_depth (int): layers of GNN, default=2. + dropout (float): dropout ratio, default=.0. + + """ + def __init__(self, + in_channels, + out_channels, + hidden=64, + max_depth=2, + dropout=.0): + super(GAT_Net, self).__init__() + self.convs = ModuleList() + for i in range(max_depth): + if i == 0: + self.convs.append(GATConv(in_channels, hidden)) + elif (i + 1) == max_depth: + self.convs.append(GATConv(hidden, out_channels)) + else: + self.convs.append(GATConv(hidden, hidden)) + self.dropout = dropout + + def reset_parameters(self): + for m in self.convs: + m.reset_parameters() + + def forward(self, data): + if isinstance(data, Data): + x, edge_index = data.x, data.edge_index + elif isinstance(data, tuple): + x, edge_index = data + else: + raise TypeError('Unsupported data type!') + + for i, conv in enumerate(self.convs): + x = conv(x, edge_index) + if (i + 1) == len(self.convs): + break + x = F.relu(F.dropout(x, p=self.dropout, training=self.training)) + return x \ No newline at end of file diff --git a/federatedscope/gfl/model/gcn.py b/federatedscope/gfl/model/gcn.py new file mode 100644 index 000000000..c1fedf75c --- /dev/null +++ b/federatedscope/gfl/model/gcn.py @@ -0,0 +1,53 @@ +import torch +import torch.nn.functional as F +from torch.nn import ModuleList +from torch_geometric.data import Data +from torch_geometric.nn import GCNConv + + +class GCN_Net(torch.nn.Module): + r""" GCN model from the "Semi-supervised Classification with Graph Convolutional Networks" paper, in ICLR'17. + + Arguments: + in_channels (int): dimension of input. + out_channels (int): dimension of output. + hidden (int): dimension of hidden units, default=64. + max_depth (int): layers of GNN, default=2. + dropout (float): dropout ratio, default=.0. + + """ + def __init__(self, + in_channels, + out_channels, + hidden=64, + max_depth=2, + dropout=.0): + super(GCN_Net, self).__init__() + self.convs = ModuleList() + for i in range(max_depth): + if i == 0: + self.convs.append(GCNConv(in_channels, hidden)) + elif (i + 1) == max_depth: + self.convs.append(GCNConv(hidden, out_channels)) + else: + self.convs.append(GCNConv(hidden, hidden)) + self.dropout = dropout + + def reset_parameters(self): + for m in self.convs: + m.reset_parameters() + + def forward(self, data): + if isinstance(data, Data): + x, edge_index = data.x, data.edge_index + elif isinstance(data, tuple): + x, edge_index = data + else: + raise TypeError('Unsupported data type!') + + for i, conv in enumerate(self.convs): + x = conv(x, edge_index) + if (i + 1) == len(self.convs): + break + x = F.relu(F.dropout(x, p=self.dropout, training=self.training)) + return x \ No newline at end of file diff --git a/federatedscope/gfl/model/gin.py b/federatedscope/gfl/model/gin.py new file mode 100644 index 000000000..73c6d1514 --- /dev/null +++ b/federatedscope/gfl/model/gin.py @@ -0,0 +1,68 @@ +import torch +import torch.nn.functional as F +from torch.nn import ModuleList +from torch_geometric.data import Data +from torch_geometric.nn import GINConv + +from federatedscope.core.mlp import MLP +""" +Model param names of GIN: +['convs.0.eps', 'convs.0.nn.linears.0.weight', 'convs.0.nn.linears.0.bias', 'convs.0.nn.linears.1.weight', +'convs.0.nn.linears.1.bias', 'convs.0.nn.norms.0.weight', 'convs.0.nn.norms.0.bias', 'convs.0.nn.norms.0.running_mean', +'convs.0.nn.norms.0.running_var', 'convs.0.nn.norms.0.num_batches_tracked', 'convs.0.nn.norms.1.weight', +'convs.0.nn.norms.1.bias', 'convs.0.nn.norms.1.running_mean', 'convs.0.nn.norms.1.running_var', +'convs.0.nn.norms.1.num_batches_tracked', 'convs.1.eps', 'convs.1.nn.linears.0.weight', 'convs.1.nn.linears.0.bias', +'convs.1.nn.linears.1.weight', 'convs.1.nn.linears.1.bias', 'convs.1.nn.norms.0.weight', 'convs.1.nn.norms.0.bias', +'convs.1.nn.norms.0.running_mean', 'convs.1.nn.norms.0.running_var', 'convs.1.nn.norms.0.num_batches_tracked', +'convs.1.nn.norms.1.weight', 'convs.1.nn.norms.1.bias', 'convs.1.nn.norms.1.running_mean', +'convs.1.nn.norms.1.running_var', 'convs.1.nn.norms.1.num_batches_tracked',] +""" + + +class GIN_Net(torch.nn.Module): + r"""Graph Isomorphism Network model from the "How Powerful are Graph Neural Networks?" paper, in ICLR'19 + + Arguments: + in_channels (int): dimension of input. + out_channels (int): dimension of output. + hidden (int): dimension of hidden units, default=64. + max_depth (int): layers of GNN, default=2. + dropout (float): dropout ratio, default=.0. + + """ + def __init__(self, + in_channels, + out_channels, + hidden=64, + max_depth=2, + dropout=.0): + super(GIN_Net, self).__init__() + self.convs = ModuleList() + for i in range(max_depth): + if i == 0: + self.convs.append( + GINConv(MLP([in_channels, hidden, hidden], + batch_norm=True))) + elif (i + 1) == max_depth: + self.convs.append( + GINConv( + MLP([hidden, hidden, out_channels], batch_norm=True))) + else: + self.convs.append( + GINConv(MLP([hidden, hidden, hidden], batch_norm=True))) + self.dropout = dropout + + def forward(self, data): + if isinstance(data, Data): + x, edge_index = data.x, data.edge_index + elif isinstance(data, tuple): + x, edge_index = data + else: + raise TypeError('Unsupported data type!') + + for i, conv in enumerate(self.convs): + x = conv(x, edge_index) + if (i + 1) == len(self.convs): + break + x = F.relu(F.dropout(x, p=self.dropout, training=self.training)) + return x diff --git a/federatedscope/gfl/model/gpr.py b/federatedscope/gfl/model/gpr.py new file mode 100644 index 000000000..c932a7c91 --- /dev/null +++ b/federatedscope/gfl/model/gpr.py @@ -0,0 +1,133 @@ +import torch +import torch.nn.functional as F +import numpy as np + +from torch.nn import Parameter +from torch.nn import Linear +from torch_geometric.data import Data +from torch_geometric.nn.conv.gcn_conv import gcn_norm +from torch_geometric.nn import MessagePassing, APPNP + + +class GPR_prop(MessagePassing): + ''' + propagation class for GPR_GNN + source: https://github.com/jianhao2016/GPRGNN/blob/master/src/GNN_models.py + ''' + def __init__(self, K, alpha, Init, Gamma=None, bias=True, **kwargs): + super(GPR_prop, self).__init__(aggr='add', **kwargs) + self.K = K + self.Init = Init + self.alpha = alpha + + assert Init in ['SGC', 'PPR', 'NPPR', 'Random', 'WS'] + if Init == 'SGC': + # SGC-like, note that in this case, alpha has to be a integer. + # It means where the peak at when initializing GPR weights. + TEMP = 0.0 * np.ones(K + 1) + TEMP[alpha] = 1.0 + elif Init == 'PPR': + # PPR-like + TEMP = alpha * (1 - alpha)**np.arange(K + 1) + TEMP[-1] = (1 - alpha)**K + elif Init == 'NPPR': + # Negative PPR + TEMP = (alpha)**np.arange(K + 1) + TEMP = TEMP / np.sum(np.abs(TEMP)) + elif Init == 'Random': + # Random + bound = np.sqrt(3 / (K + 1)) + TEMP = np.random.uniform(-bound, bound, K + 1) + TEMP = TEMP / np.sum(np.abs(TEMP)) + elif Init == 'WS': + # Specify Gamma + TEMP = Gamma + + self.temp = Parameter(torch.tensor(TEMP)) + + def reset_parameters(self): + torch.nn.init.zeros_(self.temp) + for k in range(self.K + 1): + self.temp.data[k] = self.alpha * (1 - self.alpha)**k + self.temp.data[-1] = (1 - self.alpha)**self.K + + def forward(self, x, edge_index, edge_weight=None): + edge_index, norm = gcn_norm(edge_index, + edge_weight, + num_nodes=x.size(0), + dtype=x.dtype) + + hidden = x * (self.temp[0]) + for k in range(self.K): + x = self.propagate(edge_index, x=x, norm=norm) + gamma = self.temp[k + 1] + hidden = hidden + gamma * x + return hidden + + def message(self, x_j, norm): + return norm.view(-1, 1) * x_j + + def __repr__(self): + return '{}(K={}, temp={})'.format(self.__class__.__name__, self.K, + self.temp) + + +class GPR_Net(torch.nn.Module): + r"""GPR-GNN model from the "Adaptive Universal Generalized PageRank Graph Neural Network" paper, in ICLR'21 + + Arguments: + in_channels (int): dimension of input. + out_channels (int): dimension of output. + hidden (int): dimension of hidden units, default=64. + K (int): power of GPR-GNN, default=10. + dropout (float): dropout ratio, default=.0. + ppnp (str): propagation method in ['PPNP', 'GPR_prop'] + Init (str): init method in ['SGC', 'PPR', 'NPPR', 'Random', 'WS'] + + """ + def __init__(self, + in_channels, + out_channels, + hidden=64, + K=10, + dropout=.0, + ppnp='GPR_prop', + alpha=0.1, + Init='PPR', + Gamma=None): + super(GPR_Net, self).__init__() + self.lin1 = Linear(in_channels, hidden) + self.lin2 = Linear(hidden, out_channels) + + if ppnp == 'PPNP': + self.prop1 = APPNP(K, alpha) + elif ppnp == 'GPR_prop': + self.prop1 = GPR_prop(K, alpha, Init, Gamma) + + self.Init = Init + self.dprate = 0.5 + self.dropout = dropout + + def reset_parameters(self): + self.prop1.reset_parameters() + + def forward(self, data): + if isinstance(data, Data): + x, edge_index = data.x, data.edge_index + elif isinstance(data, tuple): + x, edge_index = data + else: + raise TypeError('Unsupported data type!') + + x = F.dropout(x, p=self.dropout, training=self.training) + x = F.relu(self.lin1(x)) + x = F.dropout(x, p=self.dropout, training=self.training) + x = self.lin2(x) + + if self.dprate == 0.0: + x = self.prop1(x, edge_index) + return F.log_softmax(x, dim=1) + else: + x = F.dropout(x, p=self.dprate, training=self.training) + x = self.prop1(x, edge_index) + return F.log_softmax(x, dim=1) diff --git a/federatedscope/gfl/model/graph_level.py b/federatedscope/gfl/model/graph_level.py new file mode 100644 index 000000000..5418d2622 --- /dev/null +++ b/federatedscope/gfl/model/graph_level.py @@ -0,0 +1,124 @@ +import torch +import torch.nn.functional as F +from torch.nn import Linear, Sequential +from torch_geometric.data import Data +from torch_geometric.data.batch import Batch +from torch_geometric.nn.glob import global_add_pool, global_mean_pool, global_max_pool + +from federatedscope.gfl.model.gcn import GCN_Net +from federatedscope.gfl.model.sage import SAGE_Net +from federatedscope.gfl.model.gat import GAT_Net +from federatedscope.gfl.model.gin import GIN_Net +from federatedscope.gfl.model.gpr import GPR_Net + +EMD_DIM = 200 + + +class AtomEncoder(torch.nn.Module): + def __init__(self, in_channels, hidden): + super(AtomEncoder, self).__init__() + self.atom_embedding_list = torch.nn.ModuleList() + for i in range(in_channels): + emb = torch.nn.Embedding(EMD_DIM, hidden) + torch.nn.init.xavier_uniform_(emb.weight.data) + self.atom_embedding_list.append(emb) + + def forward(self, x): + x_embedding = 0 + for i in range(x.shape[1]): + x_embedding += self.atom_embedding_list[i](x[:, i]) + return x_embedding + + +class GNN_Net_Graph(torch.nn.Module): + r"""GNN model with pre-linear layer, pooling layer + and output layer for graph classification tasks. + + Arguments: + in_channels (int): input channels. + out_channels (int): output channels. + hidden (int): hidden dim for all modules. + max_depth (int): number of layers for gnn. + dropout (float): dropout probability. + gnn (str): name of gnn type, use ("gcn" or "gin"). + pooling (str): pooling method, use ("add", "mean" or "max"). + """ + def __init__(self, + in_channels, + out_channels, + hidden=64, + max_depth=2, + dropout=.0, + gnn='gcn', + pooling='add'): + super(GNN_Net_Graph, self).__init__() + self.dropout = dropout + # Embedding (pre) layer + self.encoder_atom = AtomEncoder(in_channels, hidden) + self.encoder = Linear(in_channels, hidden) + # GNN layer + if gnn == 'gcn': + self.gnn = GCN_Net(in_channels=hidden, + out_channels=hidden, + hidden=hidden, + max_depth=max_depth, + dropout=dropout) + elif gnn == 'sage': + self.gnn = SAGE_Net(in_channels=hidden, + out_channels=hidden, + hidden=hidden, + max_depth=max_depth, + dropout=dropout) + elif gnn == 'gat': + self.gnn = GAT_Net(in_channels=hidden, + out_channels=hidden, + hidden=hidden, + max_depth=max_depth, + dropout=dropout) + elif gnn == 'gin': + self.gnn = GIN_Net(in_channels=hidden, + out_channels=hidden, + hidden=hidden, + max_depth=max_depth, + dropout=dropout) + elif gnn == 'gpr': + self.gnn = GPR_Net(in_channels=hidden, + out_channels=hidden, + hidden=hidden, + K=max_depth, + dropout=dropout) + else: + raise ValueError(f'Unsupported gnn type: {gnn}.') + + # Pooling layer + if pooling == 'add': + self.pooling = global_add_pool + elif pooling == 'mean': + self.pooling = global_mean_pool + elif pooling == 'max': + self.pooling = global_max_pool + else: + raise ValueError(f'Unsupported pooling type: {pooling}.') + # Output layer + self.linear = Sequential(Linear(hidden, hidden), torch.nn.ReLU()) + self.clf = Linear(hidden, out_channels) + + def forward(self, data): + if isinstance(data, Batch): + x, edge_index, batch = data.x, data.edge_index, data.batch + elif isinstance(data, tuple): + x, edge_index, batch = data + else: + raise TypeError('Unsupported data type!') + + if x.dtype == torch.int64: + x = self.encoder_atom(x) + else: + x = self.encoder(x) + + x = self.gnn((x, edge_index)) + x = self.pooling(x, batch) + x = self.linear(x) + x = F.dropout(x, self.dropout, training=self.training) + x = self.clf(x) + return x diff --git a/federatedscope/gfl/model/link_level.py b/federatedscope/gfl/model/link_level.py new file mode 100644 index 000000000..cc53c2d43 --- /dev/null +++ b/federatedscope/gfl/model/link_level.py @@ -0,0 +1,88 @@ +import torch +from torch_geometric.data import Data + +from federatedscope.core.mlp import MLP +from federatedscope.gfl.model.gcn import GCN_Net +from federatedscope.gfl.model.sage import SAGE_Net +from federatedscope.gfl.model.gat import GAT_Net +from federatedscope.gfl.model.gin import GIN_Net +from federatedscope.gfl.model.gpr import GPR_Net + + +class GNN_Net_Link(torch.nn.Module): + def __init__(self, + in_channels, + out_channels, + hidden=64, + max_depth=2, + dropout=.0, + gnn='gcn', + layers=2): + r"""GNN model with LinkPredictor for link prediction tasks. + + Arguments: + in_channels (int): input channels. + out_channels (int): output channels. + hidden (int): hidden dim for all modules. + max_depth (int): number of layers for gnn. + dropout (float): dropout probability. + gnn (str): name of gnn type, use ("gcn" or "gin"). + layers (int): number of layers for LinkPredictor. + + """ + super(GNN_Net_Link, self).__init__() + self.dropout = dropout + + # GNN layer + if gnn == 'gcn': + self.gnn = GCN_Net(in_channels=in_channels, + out_channels=hidden, + hidden=hidden, + max_depth=max_depth, + dropout=dropout) + elif gnn == 'sage': + self.gnn = SAGE_Net(in_channels=in_channels, + out_channels=hidden, + hidden=hidden, + max_depth=max_depth, + dropout=dropout) + elif gnn == 'gat': + self.gnn = GAT_Net(in_channels=in_channels, + out_channels=hidden, + hidden=hidden, + max_depth=max_depth, + dropout=dropout) + elif gnn == 'gin': + self.gnn = GIN_Net(in_channels=in_channels, + out_channels=hidden, + hidden=hidden, + max_depth=max_depth, + dropout=dropout) + elif gnn == 'gpr': + self.gnn = GPR_Net(in_channels=in_channels, + out_channels=hidden, + hidden=hidden, + K=max_depth, + dropout=dropout) + else: + raise ValueError(f'Unsupported gnn type: {gnn}.') + + dim_list = [hidden for _ in range(layers)] + self.output = MLP([hidden] + dim_list + [out_channels], + batch_norm=True) + + def forward(self, data): + if isinstance(data, Data): + x, edge_index = data.x, data.edge_index + elif isinstance(data, tuple): + x, edge_index = data + else: + raise TypeError('Unsupported data type!') + + x = self.gnn((x, edge_index)) + return x + + def link_predictor(self, x, edge_index): + x = x[edge_index[0]] * x[edge_index[1]] + x = self.output(x) + return x diff --git a/federatedscope/gfl/model/model_builder.py b/federatedscope/gfl/model/model_builder.py new file mode 100644 index 000000000..614d69f17 --- /dev/null +++ b/federatedscope/gfl/model/model_builder.py @@ -0,0 +1,90 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from federatedscope.gfl.model.gcn import GCN_Net +from federatedscope.gfl.model.sage import SAGE_Net +from federatedscope.gfl.model.gat import GAT_Net +from federatedscope.gfl.model.gin import GIN_Net +from federatedscope.gfl.model.gpr import GPR_Net +from federatedscope.gfl.model.link_level import GNN_Net_Link +from federatedscope.gfl.model.graph_level import GNN_Net_Graph +from federatedscope.gfl.model.mpnn import MPNNs2s + + +def get_gnn(model_config, local_data): + num_label = 0 + if isinstance(local_data, dict): + if 'data' in local_data.keys(): + data = local_data['data'] + elif 'train' in local_data.keys(): + # local_data['train'] is Dataloader + data = next(iter(local_data['train'])) + if 'num_label' in local_data.keys(): + num_label = local_data['num_label'] + else: + raise TypeError('Unsupported data type.') + else: + data = local_data + + if model_config.task == 'node': + if model_config.type == 'gcn': + # assume `data` is a dict where key is the client index, and value is a PyG object + model = GCN_Net(data.x.shape[-1], + model_config.out_channels, + hidden=model_config.hidden, + max_depth=model_config.layer, + dropout=model_config.dropout) + elif model_config.type == 'sage': + model = SAGE_Net(data.x.shape[-1], + model_config.out_channels, + hidden=model_config.hidden, + max_depth=model_config.layer, + dropout=model_config.dropout) + elif model_config.type == 'gat': + model = GAT_Net(data.x.shape[-1], + model_config.out_channels, + hidden=model_config.hidden, + max_depth=model_config.layer, + dropout=model_config.dropout) + elif model_config.type == 'gin': + model = GIN_Net(data.x.shape[-1], + model_config.out_channels, + hidden=model_config.hidden, + max_depth=model_config.layer, + dropout=model_config.dropout) + elif model_config.type == 'gpr': + model = GPR_Net(data.x.shape[-1], + model_config.out_channels, + hidden=model_config.hidden, + K=model_config.layer, + dropout=model_config.dropout) + else: + raise ValueError('not recognized gnn model {}'.format( + model_config.type)) + + elif model_config.task == 'link': + model = GNN_Net_Link(data.x.shape[-1], + model_config.out_channels, + hidden=model_config.hidden, + max_depth=model_config.layer, + dropout=model_config.dropout, + gnn=model_config.type) + elif model_config.task == 'graph': + if model_config.type == 'mpnn': + model = MPNNs2s(in_channels=data.x.shape[-1], + out_channels=model_config.out_channels, + num_nn=data.num_edge_features, + hidden=model_config.hidden) + else: + model = GNN_Net_Graph(data.x.shape[-1], + max(model_config.out_channels, num_label), + hidden=model_config.hidden, + max_depth=model_config.layer, + dropout=model_config.dropout, + gnn=model_config.type, + pooling=model_config.graph_pooling) + else: + raise ValueError('not recognized data task {}'.format( + model_config.task)) + return model diff --git a/federatedscope/gfl/model/mpnn.py b/federatedscope/gfl/model/mpnn.py new file mode 100644 index 000000000..2c1058e21 --- /dev/null +++ b/federatedscope/gfl/model/mpnn.py @@ -0,0 +1,56 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + +from torch_geometric.data import Data +from torch_geometric.data.batch import Batch + +from torch.nn import GRU, Linear, ReLU, Sequential +from torch_geometric.nn import NNConv, Set2Set + + +class MPNNs2s(nn.Module): + r"""MPNN from "Neural Message Passing for Quantum Chemistry" for regression and classification on graphs. + Source: https://github.com/pyg-team/pytorch_geometric/blob/master/examples/qm9_nn_conv.py + + Arguments: + in_channels (int): Size for the input node features. + out_channels (int): dimension of output. + num_nn (int): num_edge_features. + hidden (int): Size for the output node representations. Default to 64. + + """ + def __init__(self, in_channels, out_channels, num_nn, hidden=64): + super(MPNNs2s, self).__init__() + self.lin0 = torch.nn.Linear(in_channels, hidden) + + nn = Sequential(Linear(num_nn, 16), ReLU(), + Linear(16, hidden * hidden)) + self.conv = NNConv(hidden, hidden, nn, aggr='add') + self.gru = GRU(hidden, hidden) + + self.set2set = Set2Set(hidden, processing_steps=3, num_layers=3) + self.lin1 = torch.nn.Linear(2 * hidden, hidden) + self.lin2 = torch.nn.Linear(hidden, out_channels) + + def forward(self, data): + if isinstance(data, Batch): + x, edge_index, edge_attr, batch = data.x, data.edge_index, data.edge_attr, data.batch + elif isinstance(data, tuple): + x, edge_index, edge_attr, batch = data.x, data.edge_index, data.edge_attr, data.batch + else: + raise TypeError('Unsupported data type!') + + self.gru.flatten_parameters() + out = F.relu(self.lin0(x.float())) + h = out.unsqueeze(0) + + for i in range(3): + m = F.relu(self.conv(out, edge_index, edge_attr.float())) + out, h = self.gru(m.unsqueeze(0), h) + out = out.squeeze(0) + + out = self.set2set(out, batch) + out = F.relu(self.lin1(out)) + out = self.lin2(out) + return out diff --git a/federatedscope/gfl/model/sage.py b/federatedscope/gfl/model/sage.py new file mode 100644 index 000000000..3bd410d60 --- /dev/null +++ b/federatedscope/gfl/model/sage.py @@ -0,0 +1,125 @@ +import torch +import torch.nn.functional as F +from torch.nn import ModuleList +from torch_geometric.data import Data +from torch_geometric.nn import SAGEConv + + +class SAGE_Net(torch.nn.Module): + r"""GraphSAGE model from the "Inductive Representation Learning on Large Graphs" paper, in NeurIPS'17 + + Source: https://github.com/pyg-team/pytorch_geometric/blob/master/examples/ogbn_products_sage.py + + Arguments: + in_channels (int): dimension of input. + out_channels (int): dimension of output. + hidden (int): dimension of hidden units, default=64. + max_depth (int): layers of GNN, default=2. + dropout (float): dropout ratio, default=.0. + + """ + def __init__(self, + in_channels, + out_channels, + hidden=64, + max_depth=2, + dropout=.0): + super(SAGE_Net, self).__init__() + + self.num_layers = max_depth + self.dropout = dropout + + self.convs = torch.nn.ModuleList() + self.convs.append(SAGEConv(in_channels, hidden)) + for _ in range(self.num_layers - 2): + self.convs.append(SAGEConv(hidden, hidden)) + self.convs.append(SAGEConv(hidden, out_channels)) + + def reset_parameters(self): + for conv in self.convs: + conv.reset_parameters() + + def forward_full(self, data): + if isinstance(data, Data): + x, edge_index = data.x, data.edge_index + elif isinstance(data, tuple): + x, edge_index = data + else: + raise TypeError('Unsupported data type!') + + for i, conv in enumerate(self.convs): + x = conv(x, edge_index) + if (i + 1) == len(self.convs): + break + x = F.relu(F.dropout(x, p=self.dropout, training=self.training)) + return x + + def forward(self, x, edge_index=None, edge_weight=None, adjs=None): + r""" + `train_loader` computes the k-hop neighborhood of a batch of nodes, + and returns, for each layer, a bipartite graph object, holding the + bipartite edges `edge_index`, the index `e_id` of the original edges, + and the size/shape `size` of the bipartite graph. + Target nodes are also included in the source nodes so that one can + easily apply skip-connections or add self-loops. + + Arguments: + x (torch.Tensor or PyG.data or tuple): node features or full-batch data + edge_index (torch.Tensor): edge index. + edge_weight (torch.Tensor): edge weight. + adjs (List[PyG.loader.neighbor_sampler.EdgeIndex]): batched edge index + :returns: + x: output + :rtype: + torch.Tensor + """ + if isinstance(x, torch.Tensor): + if edge_index is None: + for i, (edge_index, _, size) in enumerate(adjs): + x_target = x[:size[1]] + x = self.convs[i]((x, x_target), edge_index) + if i != self.num_layers - 1: + x = F.relu(x) + x = F.dropout(x, + p=self.dropout, + training=self.training) + else: + for conv in self.convs[:-1]: + x = conv(x, edge_index, edge_weight) + x = F.relu(x) + x = F.dropout(x, p=self.dropout, training=self.training) + x = self.convs[-1](x, edge_index, edge_weight) + return x + elif isinstance(x, Data) or isinstance(x, tuple): + return self.forward_full(x) + else: + raise TypeError + + def inference(self, x_all, subgraph_loader, device): + r""" + Compute representations of nodes layer by layer, using *all* + available edges. This leads to faster computation in contrast to + immediately computing the final representations of each batch. + + Arguments: + x_all (torch.Tensor): all node features + subgraph_loader (PyG.dataloader): dataloader + device (str): device + :returns: + x_all: output + """ + total_edges = 0 + for i in range(self.num_layers): + xs = [] + for batch_size, n_id, adj in subgraph_loader: + edge_index, _, size = adj.to(device) + total_edges += edge_index.size(1) + x = x_all[n_id].to(device) + x_target = x[:size[1]] + x = self.convs[i]((x, x_target), edge_index) + if i != self.num_layers - 1: + x = F.relu(x) + xs.append(x.cpu()) + x_all = torch.cat(xs, dim=0) + + return x_all \ No newline at end of file diff --git a/federatedscope/gfl/trainer/__init__.py b/federatedscope/gfl/trainer/__init__.py new file mode 100644 index 000000000..55b5e6759 --- /dev/null +++ b/federatedscope/gfl/trainer/__init__.py @@ -0,0 +1,12 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from federatedscope.gfl.trainer.graphtrainer import GraphMiniBatchTrainer +from federatedscope.gfl.trainer.linktrainer import LinkFullBatchTrainer, LinkMiniBatchTrainer +from federatedscope.gfl.trainer.nodetrainer import NodeFullBatchTrainer, NodeMiniBatchTrainer + +__all__ = [ + 'GraphMiniBatchTrainer', 'LinkFullBatchTrainer', 'LinkMiniBatchTrainer', + 'NodeFullBatchTrainer', 'NodeMiniBatchTrainer' +] \ No newline at end of file diff --git a/federatedscope/gfl/trainer/graphtrainer.py b/federatedscope/gfl/trainer/graphtrainer.py new file mode 100644 index 000000000..8e8e8e538 --- /dev/null +++ b/federatedscope/gfl/trainer/graphtrainer.py @@ -0,0 +1,67 @@ +import logging + +from federatedscope.core.monitors import Monitor +from federatedscope.register import register_trainer +from federatedscope.core.trainers import GeneralTorchTrainer + +logger = logging.getLogger(__name__) + + +class GraphMiniBatchTrainer(GeneralTorchTrainer): + def _hook_on_batch_forward(self, ctx): + batch = ctx.data_batch.to(ctx.device) + pred = ctx.model(batch) + label = batch.y.squeeze(-1).long() + if len(label.size()) == 0: + label = label.unsqueeze(0) + ctx.loss_batch = ctx.criterion(pred, label) + + ctx.batch_size = len(label) + ctx.y_true = label + ctx.y_prob = pred + + def _hook_on_batch_forward_flop_count(self, ctx): + if not isinstance(self.ctx.monitor, Monitor): + logger.warning( + f"The trainer {type(self)} does contain a valid monitor, this may be caused by " + f"initializing trainer subclasses without passing a valid monitor instance." + f"Plz check whether this is you want.") + return + + if self.ctx.monitor.flops_per_sample == 0: + # calculate the flops_per_sample + try: + batch = ctx.data_batch.to(ctx.device) + from torch_geometric.data import Data + if isinstance(batch, Data): + x, edge_index = batch.x, batch.edge_index + from fvcore.nn import FlopCountAnalysis + flops_one_batch = FlopCountAnalysis(ctx.model, + (x, edge_index)).total() + if self.model_nums > 1 and ctx.mirrored_models: + flops_one_batch *= self.model_nums + logger.warning( + "the flops_per_batch is multiplied by internal model nums as self.mirrored_models=True." + "if this is not the case you want, please customize the count hook" + ) + self.ctx.monitor.track_avg_flops(flops_one_batch, + ctx.batch_size) + except: + logger.error( + "current flop count implementation is for general NodeFullBatchTrainer case: " + "1) the ctx.model takes only batch = ctx.data_batch as input." + "Please check the forward format or implement your own flop_count function" + ) + + # by default, we assume the data has the same input shape, + # thus simply multiply the flops to avoid redundant forward + self.ctx.monitor.total_flops += self.ctx.monitor.flops_per_sample * ctx.batch_size + + +def call_graph_level_trainer(trainer_type): + if trainer_type == 'graphminibatch_trainer': + trainer_builder = GraphMiniBatchTrainer + return trainer_builder + + +register_trainer('graphminibatch_trainer', call_graph_level_trainer) diff --git a/federatedscope/gfl/trainer/linktrainer.py b/federatedscope/gfl/trainer/linktrainer.py new file mode 100644 index 000000000..c7f102f01 --- /dev/null +++ b/federatedscope/gfl/trainer/linktrainer.py @@ -0,0 +1,206 @@ +import torch + +from torch.utils.data import DataLoader +from torch_geometric.loader import DataLoader as PyGDataLoader +from torch_geometric.data import Data +from torch_geometric.loader import GraphSAINTRandomWalkSampler, NeighborSampler + +from federatedscope.core.monitors import Monitor +from federatedscope.register import register_trainer +from federatedscope.core.trainers import GeneralTorchTrainer +from federatedscope.core.auxiliaries.ReIterator import ReIterator + +import logging + +logger = logging.getLogger(__name__) + +MODE2MASK = { + 'train': 'train_edge_mask', + 'val': 'valid_edge_mask', + 'test': 'test_edge_mask' +} + + +class LinkFullBatchTrainer(GeneralTorchTrainer): + def register_default_hooks_eval(self): + super().register_default_hooks_eval() + self.register_hook_in_eval( + new_hook=self._hook_on_epoch_start_data2device, + trigger='on_fit_start', + insert_pos=-1) + + def register_default_hooks_train(self): + super().register_default_hooks_train() + self.register_hook_in_train( + new_hook=self._hook_on_epoch_start_data2device, + trigger='on_fit_start', + insert_pos=-1) + + def parse_data(self, data): + """Populate "{}_data", "{}_loader" and "num_{}_data" for different modes + + """ + init_dict = dict() + if isinstance(data, Data): + for mode in ["train", "val", "test"]: + edges = data.edge_index.T[data[MODE2MASK[mode]]] + # Use an index loader + index_loader = DataLoader(range(edges.size(0)), + self.cfg.data.batch_size, + shuffle=self.cfg.data.shuffle + if mode == 'train' else False, + drop_last=self.cfg.data.drop_last + if mode == 'train' else False) + init_dict["{}_loader".format(mode)] = index_loader + init_dict["num_{}_data".format(mode)] = edges.size(0) + init_dict["{}_data".format(mode)] = None + else: + raise TypeError("Type of data should be PyG data.") + return init_dict + + def _hook_on_epoch_start_data2device(self, ctx): + ctx.data = ctx.data.to(ctx.device) + # For handling different dict key + if "input_edge_index" in ctx.data: + ctx.input_edge_index = ctx.data.input_edge_index + else: + ctx.input_edge_index = ctx.data.edge_index.T[ + ctx.data.train_edge_mask].T + + def _hook_on_batch_forward(self, ctx): + data = ctx.data + perm = ctx.data_batch + mask = ctx.data[MODE2MASK[ctx.cur_data_split]] + edges = data.edge_index.T[mask] + if ctx.cur_data_split in ['train', 'val']: + h = ctx.model((data.x, ctx.input_edge_index)) + else: + h = ctx.model((data.x, data.edge_index)) + pred = ctx.model.link_predictor(h, edges[perm].T) + label = data.edge_type[mask][perm] # edge_type is y + + ctx.loss_batch = ctx.criterion(pred, label) + + ctx.batch_size = len(label) + ctx.y_true = label + ctx.y_prob = pred + + def _hook_on_batch_forward_flop_count(self, ctx): + if not isinstance(self.ctx.monitor, Monitor): + logger.warning( + f"The trainer {type(self)} does contain a valid monitor, this may be caused by " + f"initializing trainer subclasses without passing a valid monitor instance." + f"Plz check whether this is you want.") + return + + if self.ctx.monitor.flops_per_sample == 0: + # calculate the flops_per_sample + try: + data = ctx.data + from fvcore.nn import FlopCountAnalysis + if ctx.cur_data_split in ['train', 'val']: + flops_one_batch = FlopCountAnalysis( + ctx.model, (data.x, ctx.input_edge_index)).total() + else: + flops_one_batch = FlopCountAnalysis( + ctx.model, (data.x, data.edge_index)).total() + if self.model_nums > 1 and ctx.mirrored_models: + flops_one_batch *= self.model_nums + logger.warning( + "the flops_per_batch is multiplied by internal model nums as self.mirrored_models=True." + "if this is not the case you want, please customize the count hook" + ) + self.ctx.monitor.track_avg_flops(flops_one_batch, + ctx.batch_size) + except: + logger.error( + "current flop count implementation is for general NodeFullBatchTrainer case: " + "1) the ctx.model takes the " + "tuple (data.x, data.edge_index) or tuple (data.x, ctx.input_edge_index) as input." + "Please check the forward format or implement your own flop_count function" + ) + + +class LinkMiniBatchTrainer(GeneralTorchTrainer): + """ + # Support GraphSAGE with GraphSAINTRandomWalkSampler in train ONLY! + """ + def parse_data(self, data): + """Populate "{}_data", "{}_loader" and "num_{}_data" for different modes + + """ + init_dict = dict() + if isinstance(data, dict): + for mode in ["train", "val", "test"]: + init_dict["{}_data".format(mode)] = None + init_dict["{}_loader".format(mode)] = None + init_dict["num_{}_data".format(mode)] = 0 + if data.get(mode, None) is not None: + if isinstance( + data.get(mode), NeighborSampler) or isinstance( + data.get(mode), GraphSAINTRandomWalkSampler): + if mode == 'train': + init_dict["{}_loader".format(mode)] = data.get( + mode) + init_dict["num_{}_data".format(mode)] = len( + data.get(mode).dataset) + else: + # We need to pass Full Dataloader to model + init_dict["{}_loader".format(mode)] = [ + data.get(mode) + ] + init_dict["num_{}_data".format( + mode)] = self.cfg.data.batch_size + else: + raise TypeError("Type {} is not supported.".format( + type(data.get(mode)))) + else: + raise TypeError("Type of data should be dict.") + return init_dict + + def _hook_on_batch_forward(self, ctx): + if ctx.cur_data_split == 'train': + batch = ctx.data_batch.to(ctx.device) + mask = batch[MODE2MASK[ctx.cur_data_split]] + edges = batch.edge_index.T[mask].T + h = ctx.model((batch.x, edges)) + pred = ctx.model.link_predictor(h, edges) + label = batch.edge_type[mask] + ctx.batch_size = torch.sum( + ctx.data_batch[MODE2MASK[ctx.cur_data_split]]).item() + else: + # For inference + mask = ctx.data['data'][MODE2MASK[ctx.cur_data_split]] + subgraph_loader = ctx.data_batch + h = ctx.model.gnn.inference(ctx.data['data'].x, subgraph_loader, + ctx.device).to(ctx.device) + edges = ctx.data['data'].edge_index.T[mask].to(ctx.device) + pred = [] + + for perm in DataLoader(range(edges.size(0)), + self.cfg.data.batch_size): + edge = edges[perm].T + pred += [ctx.model.link_predictor(h, edge).squeeze()] + pred = torch.cat(pred, dim=0) + label = ctx.data['data'].edge_type[mask].to(ctx.device) + ctx.batch_size = torch.sum( + ctx.data['data'][MODE2MASK[ctx.cur_data_split]]).item() + + ctx.loss_batch = ctx.criterion(pred, label) + ctx.y_true = label + ctx.y_prob = pred + + +def call_link_level_trainer(trainer_type): + if trainer_type == 'linkfullbatch_trainer': + trainer_builder = LinkFullBatchTrainer + elif trainer_type == 'linkminibatch_trainer': + trainer_builder = LinkMiniBatchTrainer + else: + raise ValueError + + return trainer_builder + + +register_trainer('linkfullbatch_trainer', call_link_level_trainer) +register_trainer('linkminibatch_trainer', call_link_level_trainer) diff --git a/federatedscope/gfl/trainer/nodetrainer.py b/federatedscope/gfl/trainer/nodetrainer.py new file mode 100644 index 000000000..e24c21234 --- /dev/null +++ b/federatedscope/gfl/trainer/nodetrainer.py @@ -0,0 +1,177 @@ +import torch + +from torch_geometric.loader import DataLoader as PyGDataLoader +from torch_geometric.data import Data +from torch_geometric.loader import GraphSAINTRandomWalkSampler, NeighborSampler + +from federatedscope.core.monitors import Monitor +from federatedscope.register import register_trainer +from federatedscope.core.trainers import GeneralTorchTrainer +from federatedscope.core.auxiliaries.ReIterator import ReIterator +import logging + +logger = logging.getLogger(__name__) + + +class NodeFullBatchTrainer(GeneralTorchTrainer): + def parse_data(self, data): + """Populate "{}_data", "{}_loader" and "num_{}_data" for different modes + + """ + init_dict = dict() + if isinstance(data, Data): + for mode in ["train", "val", "test"]: + init_dict["{}_loader".format(mode)] = PyGDataLoader([data]) + init_dict["{}_data".format(mode)] = None + # For node-level task dataloader contains one graph + init_dict["num_{}_data".format(mode)] = 1 + + else: + raise TypeError("Type of data should be PyG data.") + return init_dict + + def _hook_on_batch_forward(self, ctx): + batch = ctx.data_batch.to(ctx.device) + pred = ctx.model(batch)[batch['{}_mask'.format(ctx.cur_data_split)]] + label = batch.y[batch['{}_mask'.format(ctx.cur_data_split)]] + ctx.batch_size = torch.sum(ctx.data_batch['{}_mask'.format( + ctx.cur_data_split)]).item() + + ctx.loss_batch = ctx.criterion(pred, label) + ctx.y_true = label + ctx.y_prob = pred + + def _hook_on_batch_forward_flop_count(self, ctx): + if not isinstance(self.ctx.monitor, Monitor): + logger.warning( + f"The trainer {type(self)} does contain a valid monitor, this may be caused by " + f"initializing trainer subclasses without passing a valid monitor instance." + f"Plz check whether this is you want.") + return + + if self.ctx.monitor.flops_per_sample == 0: + # calculate the flops_per_sample + try: + batch = ctx.data_batch.to(ctx.device) + from torch_geometric.data import Data + if isinstance(batch, Data): + x, edge_index = batch.x, batch.edge_index + from fvcore.nn import FlopCountAnalysis + flops_one_batch = FlopCountAnalysis(ctx.model, + (x, edge_index)).total() + + if self.model_nums > 1 and ctx.mirrored_models: + flops_one_batch *= self.model_nums + logger.warning( + "the flops_per_batch is multiplied by internal model nums as self.mirrored_models=True." + "if this is not the case you want, please customize the count hook" + ) + self.ctx.monitor.track_avg_flops(flops_one_batch, + ctx.batch_size) + except: + logger.error( + "current flop count implementation is for general NodeFullBatchTrainer case: " + "1) the ctx.model takes only batch = ctx.data_batch as input." + "Please check the forward format or implement your own flop_count function" + ) + + # by default, we assume the data has the same input shape, + # thus simply multiply the flops to avoid redundant forward + self.ctx.monitor.total_flops += self.ctx.monitor.flops_per_sample * ctx.batch_size + + +class NodeMiniBatchTrainer(GeneralTorchTrainer): + def parse_data(self, data): + """Populate "{}_data", "{}_loader" and "num_{}_data" for different modes + + """ + init_dict = dict() + if isinstance(data, dict): + for mode in ["train", "val", "test"]: + init_dict["{}_data".format(mode)] = None + init_dict["{}_loader".format(mode)] = None + init_dict["num_{}_data".format(mode)] = 0 + if data.get(mode, None) is not None: + if isinstance( + data.get(mode), NeighborSampler) or isinstance( + data.get(mode), GraphSAINTRandomWalkSampler): + if mode == 'train': + init_dict["{}_loader".format(mode)] = data.get( + mode) + init_dict["num_{}_data".format(mode)] = len( + data.get(mode).dataset) + else: + # We need to pass Full Dataloader to model + init_dict["{}_loader".format(mode)] = [ + data.get(mode) + ] + init_dict["num_{}_data".format( + mode)] = self.cfg.data.batch_size + else: + raise TypeError("Type {} is not supported.".format( + type(data.get(mode)))) + else: + raise TypeError("Type of data should be dict.") + return init_dict + + def _hook_on_epoch_start(self, ctx): + # TODO: blind torch + if not isinstance(ctx.get("{}_loader".format(ctx.cur_data_split)), + ReIterator): + if isinstance(ctx.get("{}_loader".format(ctx.cur_data_split)), + NeighborSampler): + self.is_NeighborSampler = True + ctx.data['data'].x = ctx.data['data'].x.to(ctx.device) + ctx.data['data'].y = ctx.data['data'].y.to(ctx.device) + else: + self.is_NeighborSampler = False + setattr( + ctx, "{}_loader".format(ctx.cur_data_split), + ReIterator(ctx.get("{}_loader".format(ctx.cur_data_split)))) + + def _hook_on_batch_forward(self, ctx): + if ctx.cur_data_split == 'train': + # For training + if self.is_NeighborSampler: + # For NeighborSamper + batch_size, n_id, adjs = ctx.data_batch + adjs = [adj.to(ctx.device) for adj in adjs] + pred = ctx.model(ctx.data['data'].x[n_id], adjs=adjs) + label = ctx.data['data'].y[n_id[:batch_size]] + ctx.batch_size, _, _ = ctx.data_batch + else: + # For GraphSAINTRandomWalkSampler or PyGDataLoader + batch = ctx.data_batch.to(ctx.device) + pred = ctx.model(batch.x, + batch.edge_index)[batch['{}_mask'.format( + ctx.cur_data_split)]] + label = batch.y[batch['{}_mask'.format(ctx.cur_data_split)]] + ctx.batch_size = torch.sum(ctx.data_batch['train_mask']).item() + else: + # For inference + subgraph_loader = ctx.data_batch + mask = ctx.data['data']['{}_mask'.format(ctx.cur_data_split)] + pred = ctx.model.inference(ctx.data['data'].x, subgraph_loader, + ctx.device)[mask] + label = ctx.data['data'].y[mask] + ctx.batch_size = torch.sum(ctx.data['data']['{}_mask'.format( + ctx.cur_data_split)]).item() + + ctx.loss_batch = ctx.criterion(pred, label) + ctx.y_true = label + ctx.y_prob = pred + + +def call_node_level_trainer(trainer_type): + if trainer_type == 'nodefullbatch_trainer': + trainer_builder = NodeFullBatchTrainer + elif trainer_type == 'nodeminibatch_trainer': + trainer_builder = NodeMiniBatchTrainer + else: + raise ValueError + + return trainer_builder + + +register_trainer('nodefullbatch_trainer', call_node_level_trainer) +register_trainer('nodeminibatch_trainer', call_node_level_trainer) diff --git a/federatedscope/hpo.py b/federatedscope/hpo.py new file mode 100644 index 000000000..96819c31d --- /dev/null +++ b/federatedscope/hpo.py @@ -0,0 +1,42 @@ +import os +import sys + +from yacs.config import CfgNode + +import yaml + +DEV_MODE = False # simplify the federatedscope re-setup everytime we change the source codes of federatedscope +if DEV_MODE: + file_dir = os.path.join(os.path.dirname(__file__), '..') + sys.path.append(file_dir) + +from federatedscope.core.auxiliaries.utils import setup_seed, update_logger +from federatedscope.core.cmd_args import parse_args +from federatedscope.core.configs.config import global_cfg +from federatedscope.autotune import get_scheduler + +if os.environ.get('https_proxy'): + del os.environ['https_proxy'] +if os.environ.get('http_proxy'): + del os.environ['http_proxy'] + +if __name__ == '__main__': + init_cfg = global_cfg.clone() + args = parse_args() + init_cfg.merge_from_file(args.cfg_file) + init_cfg.merge_from_list(args.opts) + + update_logger(init_cfg) + setup_seed(init_cfg.seed) + + assert not args.client_cfg_file, 'No support for client-wise config in HPO mode.' + + #with open(args.cfg_file, 'r') as ips: + # config = yaml.load(ips, Loader=yaml.FullLoader) + #det_config, tbd_config = split_raw_config(config) + #global_cfg.merge_from_list(config2cmdargs(det_config)) + #global_cfg.merge_from_list(args.opts) + + scheduler = get_scheduler(init_cfg) + _ = scheduler.optimize() + #logger.info(results) diff --git a/federatedscope/main.py b/federatedscope/main.py new file mode 100644 index 000000000..e2ea3b3a2 --- /dev/null +++ b/federatedscope/main.py @@ -0,0 +1,52 @@ +import os +from pkgutil import ImpImporter +import sys +from typing import Hashable + +from yacs.config import CfgNode + +DEV_MODE = False # simplify the federatedscope re-setup everytime we change the source codes of federatedscope +if DEV_MODE: + file_dir = os.path.join(os.path.dirname(__file__), '..') + sys.path.append(file_dir) + +from federatedscope.core.cmd_args import parse_args +from federatedscope.core.auxiliaries.data_builder import get_data +from federatedscope.core.auxiliaries.utils import setup_seed, update_logger +from federatedscope.core.auxiliaries.worker_builder import get_client_cls, get_server_cls +from federatedscope.core.configs.config import global_cfg +from federatedscope.core.fed_runner import FedRunner + +if os.environ.get('https_proxy'): + del os.environ['https_proxy'] +if os.environ.get('http_proxy'): + del os.environ['http_proxy'] + +if __name__ == '__main__': + init_cfg = global_cfg.clone() + args = parse_args() + print(args) + init_cfg.merge_from_file(args.cfg_file) + init_cfg.merge_from_list(args.opts) + + update_logger(init_cfg) + setup_seed(init_cfg.data.seed) + + # load clients' cfg file + client_cfg = CfgNode.load_cfg(open(args.client_cfg_file, + 'r')) if args.client_cfg_file else None + + # federated dataset might change the number of clients + # thus, we allow the creation procedure of dataset to modify the global cfg object + data, modified_cfg = get_data(config=init_cfg.clone()) + init_cfg.merge_from_other_cfg(modified_cfg) + + setup_seed(init_cfg.seed) + init_cfg.freeze() + + runner = FedRunner(data=data, + server_class=get_server_cls(init_cfg), + client_class=get_client_cls(init_cfg), + config=init_cfg.clone(), + client_config=client_cfg) + _ = runner.run() diff --git a/federatedscope/mf/__init__.py b/federatedscope/mf/__init__.py new file mode 100644 index 000000000..f8e91f237 --- /dev/null +++ b/federatedscope/mf/__init__.py @@ -0,0 +1,3 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division diff --git a/federatedscope/mf/baseline/__init__.py b/federatedscope/mf/baseline/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/federatedscope/mf/dataloader/__init__.py b/federatedscope/mf/dataloader/__init__.py new file mode 100644 index 000000000..915b1c049 --- /dev/null +++ b/federatedscope/mf/dataloader/__init__.py @@ -0,0 +1,3 @@ +from federatedscope.mf.dataloader.dataloader import load_mf_dataset, MFDataLoader + +__all__ = ['load_mf_dataset', 'MFDataLoader'] diff --git a/federatedscope/mf/dataloader/dataloader.py b/federatedscope/mf/dataloader/dataloader.py new file mode 100644 index 000000000..b8b2a47c4 --- /dev/null +++ b/federatedscope/mf/dataloader/dataloader.py @@ -0,0 +1,169 @@ +from scipy.sparse import csc_matrix +from scipy.sparse import coo_matrix +from numpy.random import shuffle + +import numpy as np + +import collections +import importlib + +MFDATA_CLASS_DICT = { + "vflmovielens1m": "VFLMovieLens1M", + "vflmovielens10m": "VFLMovieLens10M", + "hflmovielens1m": "HFLMovieLens1M", + "hflmovielens10m": "HFLMovieLens10M" +} + + +def load_mf_dataset(config=None): + """Return the dataset of matrix factorization + + Format: + { + 'client_id': { + 'train': DataLoader(), + 'test': DataLoader(), + 'val': DataLoader() + } + } + + """ + if config.data.type.lower() in MFDATA_CLASS_DICT: + # Dataset + dataset = getattr( + importlib.import_module("federatedscope.mf.dataset.movielens"), + MFDATA_CLASS_DICT[config.data.type.lower()])( + root=config.data.root, + num_client=config.federate.client_num, + train_portion=config.data.splits[0], + download=True) + else: + raise NotImplementedError("Dataset {} is not implemented.".format( + config.data.type)) + + data_local_dict = collections.defaultdict(dict) + for id_client, data in dataset.data.items(): + data_local_dict[id_client]["train"] = MFDataLoader( + data["train"], + shuffle=config.data.shuffle, + batch_size=config.data.batch_size, + drop_last=config.data.drop_last, + theta=config.sgdmf.theta) + data_local_dict[id_client]["test"] = MFDataLoader( + data["test"], + shuffle=False, + batch_size=config.data.batch_size, + drop_last=config.data.drop_last, + theta=config.sgdmf.theta) + + # Modify config + config.merge_from_list(['model.num_user', dataset.n_user]) + config.merge_from_list(['model.num_item', dataset.n_item]) + + return data_local_dict, config + + +class MFDataLoader(object): + """DataLoader for MF dataset + + Args: + data (csc_matrix): sparse MF dataset + batch_size (int): the size of batch data + shuffle (bool): shuffle the dataset + drop_last (bool): drop the last batch if True + theta (int): the maximal number of ratings for each user + """ + def __init__(self, + data: csc_matrix, + batch_size: int, + shuffle=True, + drop_last=False, + theta=None): + super(MFDataLoader, self).__init__() + self.dataset = self._trim_data(data, theta) + self.shuffle = shuffle + self.batch_size = batch_size + self.drop_last = drop_last + + self.n_row = self.dataset.shape[0] + self.n_col = self.dataset.shape[1] + self.n_rating = self.dataset.count_nonzero() + + self._idx_samples = None + self._idx_cur = None + + self._reset() + + def _trim_data(self, data, theta=None): + """Trim rating data by parameter theta (per-user privacy) + + Arguments: + data (csc_matrix): the dataset + theta (int): The maximal number of ratings for each user + """ + if theta is None or theta <= 0: + return data + else: + # Each user has at most $theta$ items + dataset = data.tocoo() + user2items = collections.defaultdict(list) + for idx, user_id in enumerate(dataset.row): + user2items[user_id].append(idx) + # sample theta each + idx_select = list() + for items in user2items.values(): + if len(items) > theta: + idx_select += np.random.choice(items, theta, + replace=False).tolist() + else: + idx_select += items + dataset = coo_matrix( + (dataset.data[idx_select], + (dataset.row[idx_select], dataset.col[idx_select])), + shape=dataset.shape).tocsc() + return dataset + + def _reset(self): + self._idx_cur = 0 + if self._idx_samples is None: + self._idx_samples = np.arange(self.n_rating) + if self.shuffle: + shuffle(self._idx_samples) + + def _sample_data(self, sampled_rating_idx): + dataset = self.dataset.tocoo() + data = dataset.data[sampled_rating_idx] + rows = dataset.row[sampled_rating_idx] + cols = dataset.col[sampled_rating_idx] + return (rows, cols), data + + def __len__(self): + """The number of batches within an epoch + + """ + if self.drop_last: + return int(self.n_rating / self.batch_size) + else: + return int(self.n_rating / self.batch_size) + int( + (self.n_rating % self.batch_size) != 0) + + def __next__(self, theta=None): + """Get the next batch of data + + Args: + theta (int): the maximal number of ratings for each user + """ + idx_end = self._idx_cur + self.batch_size + if self._idx_cur == len( + self._idx_samples) or self.drop_last and idx_end > len( + self._idx_samples): + raise StopIteration + idx_end = min(idx_end, len(self._idx_samples)) + idx_choice_samples = self._idx_samples[self._idx_cur:idx_end] + self._idx_cur = idx_end + + return self._sample_data(idx_choice_samples) + + def __iter__(self): + self._reset() + return self diff --git a/federatedscope/mf/dataset/__init__.py b/federatedscope/mf/dataset/__init__.py new file mode 100644 index 000000000..4c7fc0b75 --- /dev/null +++ b/federatedscope/mf/dataset/__init__.py @@ -0,0 +1,6 @@ +from federatedscope.mf.dataset.movielens import * + +__all__ = [ + 'VMFDataset', 'HMFDataset', 'MovieLensData', 'MovieLens1M', 'MovieLens10M', + 'VFLMovieLens1M', 'HFLMovieLens1M', 'VFLMovieLens10M', 'HFLMovieLens10M' +] diff --git a/federatedscope/mf/dataset/movielens.py b/federatedscope/mf/dataset/movielens.py new file mode 100644 index 000000000..63b9ed6aa --- /dev/null +++ b/federatedscope/mf/dataset/movielens.py @@ -0,0 +1,247 @@ +import os +import pickle +import logging + +from torchvision.datasets.utils import check_integrity, download_and_extract_archive, calculate_md5 +import pandas as pd +from numpy.random import shuffle +from scipy.sparse import coo_matrix +from scipy.sparse import csc_matrix +import numpy as np + +logger = logging.getLogger(__name__) + + +class VMFDataset: + """Dataset of matrix factorization task in vertical federated learning. + + """ + def _split_n_clients_rating(self, ratings: csc_matrix, num_client: int, + test_portion: float): + id_item = np.arange(self.n_item) + shuffle(id_item) + items_per_client = np.array_split(id_item, num_client) + data = dict() + for clientId, items in enumerate(items_per_client): + client_ratings = ratings[:, items] + train_ratings, test_ratings = self._split_train_test_ratings( + client_ratings, test_portion) + data[clientId + 1] = {"train": train_ratings, "test": test_ratings} + self.data = data + + +class HMFDataset: + """Dataset of matrix factorization task in horizontal federated learning. + + """ + def _split_n_clients_rating(self, ratings: csc_matrix, num_client: int, + test_portion: float): + id_user = np.arange(self.n_user) + shuffle(id_user) + users_per_client = np.array_split(id_user, num_client) + data = dict() + for cliendId, users in enumerate(users_per_client): + client_ratings = ratings[users, :] + train_ratings, test_ratings = self._split_train_test_ratings( + client_ratings, test_portion) + data[cliendId + 1] = {"train": train_ratings, "test": test_ratings} + self.data = data + + +class MovieLensData(object): + """Download and split MF datasets + + Arguments: + root (string): the path of data + num_client (int): the number of clients + train_portion (float): the portion of training data + download (bool): indicator to download dataset + """ + def __init__(self, root, num_client, train_portion=0.9, download=True): + super(MovieLensData, self).__init__() + + self.root = root + self.data = None + + self.n_user = None + self.n_item = None + + if download: + self.download() + + if not self._check_integrity(): + raise RuntimeError("Dataset not found or corrupted." + + "You can use download=True to download it") + + ratings = self._load_meta() + self._split_n_clients_rating(ratings, num_client, 1 - train_portion) + + def _split_n_clients_rating(self, ratings: csc_matrix, num_client: int, + test_portion: float): + id_item = np.arange(self.n_item) + shuffle(id_item) + items_per_client = np.array_split(id_item, num_client) + data = dict() + for clientId, items in enumerate(items_per_client): + client_ratings = ratings[:, items] + train_ratings, test_ratings = self._split_train_test_ratings( + client_ratings, test_portion) + data[clientId + 1] = {"train": train_ratings, "test": test_ratings} + self.data = data + + def _split_train_test_ratings(self, ratings: csc_matrix, + test_portion: float): + n_ratings = ratings.count_nonzero() + id_test = np.random.choice(n_ratings, + int(n_ratings * test_portion), + replace=False) + id_train = list(set(np.arange(n_ratings)) - set(id_test)) + + ratings = ratings.tocoo() + test = coo_matrix((ratings.data[id_test], + (ratings.row[id_test], ratings.col[id_test])), + shape=ratings.shape) + train = coo_matrix((ratings.data[id_train], + (ratings.row[id_train], ratings.col[id_train])), + shape=ratings.shape) + + train_ratings, test_ratings = train.tocsc(), test.tocsc() + return train_ratings, test_ratings + + def _load_meta(self): + meta_path = os.path.join(self.root, self.base_folder, "ratings.pkl") + if not os.path.exists(meta_path): + logger.info("Processing data into {} parties.") + fpath = os.path.join(self.root, self.base_folder, self.filename, + self.raw_file) + data = pd.read_csv(fpath, + sep="::", + engine="python", + usecols=[0, 1, 2], + names=["userId", "movieId", "rating"], + dtype={ + "userId": np.int32, + "movieId": np.int32, + "rating": np.float32 + }) + # Map idx + unique_id_item, unique_id_user = np.sort( + data["movieId"].unique()), np.sort(data["userId"].unique()) + n_item, n_user = len(unique_id_item), len(unique_id_user) + mapping_item, mapping_user = { + mid: idx + for idx, mid in enumerate(unique_id_item) + }, {mid: idx + for idx, mid in enumerate(unique_id_user)} + + row = [mapping_user[mid] for _, mid in data["userId"].iteritems()] + col = [mapping_item[mid] for _, mid in data["movieId"].iteritems()] + + ratings = coo_matrix((data["rating"], (row, col)), + shape=(n_user, n_item)) + ratings = ratings.tocsc() + + with open(meta_path, 'wb') as f: + pickle.dump(ratings, f) + logger.info("Done.") + else: + with open(meta_path, 'rb') as f: + ratings = pickle.load(f) + + self.n_user, self.n_item = ratings.shape + return ratings + + def _check_integrity(self): + fpath = os.path.join(self.root, self.base_folder, self.filename, + self.raw_file) + return check_integrity(fpath, self.raw_file_md5) + + def download(self): + if self._check_integrity(): + logger.info("Files already downloaded and verified") + return + download_and_extract_archive(self.url, + os.path.join(self.root, self.base_folder), + filename=self.url.split('/')[-1], + md5=self.zip_md5) + + +class MovieLens1M(MovieLensData): + """MoviesLens 1M Dataset + (https://grouplens.org/datasets/movielens) + + Format: + UserID::MovieID::Rating::Timestamp + + Arguments: + root (str): Root directory of dataset where directory + ``MoviesLen1M`` exists or will be saved to if download is set to True. + config (callable): Parameters related to matrix factorization. + train_size (float, optional): The proportion of training data. + test_size (float, optional): The proportion of test data. + download (bool, optional): If true, downloads the dataset from the internet and + puts it in root directory. If dataset is already downloaded, it is not + downloaded again. + + """ + base_folder = 'MovieLens1M' + url = "https://files.grouplens.org/datasets/movielens/ml-1m.zip" + filename = "ml-1m" + zip_md5 = "c4d9eecfca2ab87c1945afe126590906" + raw_file = "ratings.dat" + raw_file_md5 = "a89aa3591bc97d6d4e0c89459ff39362" + + +class MovieLens10M(MovieLensData): + """MoviesLens 10M Dataset + (https://grouplens.org/datasets/movielens) + + Format: + UserID::MovieID::Rating::Timestamp + + Arguments: + root (str): Root directory of dataset where directory + ``MoviesLen1M`` exists or will be saved to if download is set to True. + config (callable): Parameters related to matrix factorization. + train_size (float, optional): The proportion of training data. + test_size (float, optional): The proportion of test data. + download (bool, optional): If true, downloads the dataset from the internet and + puts it in root directory. If dataset is already downloaded, it is not + downloaded again. + + """ + base_folder = 'MovieLens10M' + url = "https://files.grouplens.org/datasets/movielens/ml-10m.zip" + filename = "ml-10M100K" + + zip_md5 = "ce571fd55effeba0271552578f2648bd" + raw_file = "ratings.dat" + raw_file_md5 = "3f317698625386f66177629fa5c6b2dc" + + +class VFLMovieLens1M(MovieLens1M, VMFDataset): + """MovieLens1M dataset in VFL setting + + """ + pass + + +class HFLMovieLens1M(MovieLens1M, HMFDataset): + """MovieLens1M dataset in HFL setting + + """ + pass + + +class VFLMovieLens10M(MovieLens10M, VMFDataset): + """MovieLens10M dataset in VFL setting + + """ + pass + + +class HFLMovieLens10M(MovieLens10M, HMFDataset): + """MovieLens10M dataset in HFL setting + + """ + pass diff --git a/federatedscope/mf/model/__init__.py b/federatedscope/mf/model/__init__.py new file mode 100644 index 000000000..709fc11f9 --- /dev/null +++ b/federatedscope/mf/model/__init__.py @@ -0,0 +1,4 @@ +from federatedscope.mf.model.model import BasicMFNet, VMFNet, HMFNet +from federatedscope.mf.model.model_builder import get_mfnet + +__all__ = ["get_mfnet", "BasicMFNet", "VMFNet", "HMFNet"] diff --git a/federatedscope/mf/model/model.py b/federatedscope/mf/model/model.py new file mode 100644 index 000000000..2fe2572d3 --- /dev/null +++ b/federatedscope/mf/model/model.py @@ -0,0 +1,74 @@ +from torch.nn import Parameter +from torch.nn import Module + +import numpy as np +import torch + + +class BasicMFNet(Module): + """Basic model for MF task + + Arguments: + num_user (int): the number of users + num_item (int): the number of items + num_hidden (int): the dimension of embedding vector + """ + def __init__(self, num_user, num_item, num_hidden): + super(BasicMFNet, self).__init__() + + self.embed_user = Parameter( + torch.normal(mean=0, + std=0.1, + size=(num_user, num_hidden), + requires_grad=True, + dtype=torch.float32)) + self.register_parameter('embed_user', self.embed_user) + self.embed_item = Parameter( + torch.normal(mean=0, + std=0.1, + size=(num_item, num_hidden), + requires_grad=True, + dtype=torch.float32)) + self.register_parameter('embed_item', self.embed_item) + + def forward(self, indices, ratings): + pred = torch.matmul(self.embed_user, self.embed_item.T) + label = torch.sparse_coo_tensor(indices, + ratings, + size=pred.shape, + device=pred.device, + dtype=torch.float32).to_dense() + mask = torch.sparse_coo_tensor(indices, + np.ones(len(ratings)), + size=pred.shape, + device=pred.device, + dtype=torch.float32).to_dense() + + return mask * pred, label, float(np.prod(pred.size())) / len(ratings) + + def load_state_dict(self, + state_dict: 'OrderedDict[str, Tensor]', + strict: bool = True): + + state_dict[self.name_reserve] = getattr(self, self.name_reserve) + super().load_state_dict(state_dict, strict) + + def state_dict(self, destination=None, prefix='', keep_vars=False): + state_dict = super().state_dict(destination, prefix, keep_vars) + # Mask embed_item + del state_dict[self.name_reserve] + return state_dict + + +class VMFNet(BasicMFNet): + """MF model for vertical federated learning + + """ + name_reserve = "embed_item" + + +class HMFNet(BasicMFNet): + """MF model for horizontal federated learning + + """ + name_reserve = "embed_user" diff --git a/federatedscope/mf/model/model_builder.py b/federatedscope/mf/model/model_builder.py new file mode 100644 index 000000000..33021396a --- /dev/null +++ b/federatedscope/mf/model/model_builder.py @@ -0,0 +1,17 @@ +def get_mfnet(model_config, local_data): + """Return the MF model according to model configs + + Arguments: + model_config: the model related parameters + local_data (dict): the dataset used for this model + """ + if model_config.type.lower() == 'vmfnet': + from federatedscope.mf.model.model import VMFNet + return VMFNet(num_user=model_config.num_user, + num_item=local_data["train"].n_col, + num_hidden=model_config.hidden) + else: + from federatedscope.mf.model.model import HMFNet + return HMFNet(num_user=local_data["train"].n_row, + num_item=model_config.num_item, + num_hidden=model_config.hidden) diff --git a/federatedscope/mf/trainer/__init__.py b/federatedscope/mf/trainer/__init__.py new file mode 100644 index 000000000..4fc87a487 --- /dev/null +++ b/federatedscope/mf/trainer/__init__.py @@ -0,0 +1,7 @@ +from federatedscope.mf.trainer.trainer import MFTrainer +from federatedscope.mf.trainer.trainer_sgdmf import wrap_MFTrainer, init_sgdmf_ctx, embedding_clip, hook_on_batch_backward + +__all__ = [ + 'MFTrainer', 'wrap_MFTrainer', 'init_sgdmf_ctx', 'embedding_clip', + 'hook_on_batch_backward' +] diff --git a/federatedscope/mf/trainer/trainer.py b/federatedscope/mf/trainer/trainer.py new file mode 100644 index 000000000..23f3e63ba --- /dev/null +++ b/federatedscope/mf/trainer/trainer.py @@ -0,0 +1,135 @@ +import numpy +from wandb.wandb_torch import torch + +from federatedscope.core.monitors import Monitor +from federatedscope.mf.dataloader.dataloader import MFDataLoader +from federatedscope.core.trainers import GeneralTorchTrainer +from federatedscope.register import register_trainer + +import logging + +logger = logging.getLogger(__name__) + + +class MFTrainer(GeneralTorchTrainer): + """Trainer for MF task + + Arguments: + model (torch.nn.module): MF model. + data (dict): input data + device (str): device. + """ + def parse_data(self, data): + """Populate "{}_data", "{}_loader" and "num_{}_data" for different modes + + """ + init_dict = dict() + if isinstance(data, dict): + for mode in ["train", "val", "test"]: + init_dict["{}_data".format(mode)] = None + init_dict["{}_loader".format(mode)] = None + init_dict["num_{}_data".format(mode)] = 0 + if data.get(mode, None) is not None: + if isinstance(data.get(mode), MFDataLoader): + init_dict["{}_loader".format(mode)] = data.get(mode) + init_dict["num_{}_data".format(mode)] = data.get( + mode).n_rating + else: + raise TypeError( + "Type {} is not supported for MFTrainer.".format( + type(data.get(mode)))) + else: + raise TypeError("Type of data should be dict.") + return init_dict + + def _hook_on_fit_end(self, ctx): + results = { + f"{ctx.cur_mode}_avg_loss": ctx.get("loss_batch_total_{}".format( + ctx.cur_mode)) / + ctx.get("num_samples_{}".format(ctx.cur_mode)), + f"{ctx.cur_mode}_total": ctx.get("num_samples_{}".format( + ctx.cur_mode)) + } + setattr(ctx, 'eval_metrics', results) + + def _hook_on_batch_end(self, ctx): + # update statistics + setattr( + ctx, "loss_batch_total_{}".format(ctx.cur_mode), + ctx.get("loss_batch_total_{}".format(ctx.cur_mode)) + + ctx.loss_batch.item() * ctx.batch_size) + + if ctx.get("loss_regular", None) is None or ctx.loss_regular == 0: + loss_regular = 0. + else: + loss_regular = ctx.loss_regular.item() + setattr( + ctx, "loss_regular_total_{}".format(ctx.cur_mode), + ctx.get("loss_regular_total_{}".format(ctx.cur_mode)) + + loss_regular) + setattr( + ctx, "num_samples_{}".format(ctx.cur_mode), + ctx.get("num_samples_{}".format(ctx.cur_mode)) + ctx.batch_size) + + # clean temp ctx + ctx.data_batch = None + ctx.batch_size = None + ctx.loss_task = None + ctx.loss_batch = None + ctx.loss_regular = None + ctx.y_true = None + ctx.y_prob = None + + def _hook_on_batch_forward(self, ctx): + indices, ratings = ctx.data_batch + pred, label, ratio = ctx.model(indices, ratings) + ctx.loss_batch = ctx.criterion(pred, label) * ratio + + ctx.batch_size = len(ratings) + + def _hook_on_batch_forward_flop_count(self, ctx): + if not isinstance(self.ctx.monitor, Monitor): + logger.warning( + f"The trainer {type(self)} does contain a valid monitor, this may be caused by " + f"initializing trainer subclasses without passing a valid monitor instance." + f"Plz check whether this is you want.") + return + + if self.ctx.monitor.flops_per_sample == 0: + # calculate the flops_per_sample + try: + indices, ratings = ctx.data_batch + if isinstance(indices, numpy.ndarray): + indices = torch.from_numpy(indices) + if isinstance(ratings, numpy.ndarray): + ratings = torch.from_numpy(ratings) + from fvcore.nn import FlopCountAnalysis + flops_one_batch = FlopCountAnalysis( + ctx.model, (indices, ratings)).total() + if self.model_nums > 1 and ctx.mirrored_models: + flops_one_batch *= self.model_nums + logger.warning( + "the flops_per_batch is multiplied by internal model nums as self.mirrored_models=True." + "if this is not the case you want, please customize the count hook" + ) + self.ctx.monitor.track_avg_flops(flops_one_batch, + ctx.batch_size) + except: + logger.error( + "current flop count implementation is for general NodeFullBatchTrainer case: " + "1) the ctx.model takes tuple (indices, ratings) as input." + "Please check the forward format or implement your own flop_count function" + ) + + # by default, we assume the data has the same input shape, + # thus simply multiply the flops to avoid redundant forward + self.ctx.monitor.total_flops += self.ctx.monitor.flops_per_sample * ctx.batch_size + + +def call_mf_trainer(trainer_type): + if trainer_type == "mftrainer": + trainer_builder = MFTrainer + return trainer_builder + + +register_trainer("mftrainer", call_mf_trainer) diff --git a/federatedscope/mf/trainer/trainer_sgdmf.py b/federatedscope/mf/trainer/trainer_sgdmf.py new file mode 100644 index 000000000..685d761d8 --- /dev/null +++ b/federatedscope/mf/trainer/trainer_sgdmf.py @@ -0,0 +1,97 @@ +import logging + +from federatedscope.mf.trainer.trainer import MFTrainer +from federatedscope.core.auxiliaries.utils import get_random +from typing import Type +import numpy as np + +import torch + +logger = logging.getLogger(__name__) + + +def wrap_MFTrainer(base_trainer: Type[MFTrainer]) -> Type[MFTrainer]: + """Build `SGDMFTrainer` with a plug-in manner, by registering new functions into specific `MFTrainer` + + """ + + # ---------------- attribute-level plug-in ----------------------- + init_sgdmf_ctx(base_trainer) + + # ---------------- action-level plug-in ----------------------- + base_trainer.replace_hook_in_train( + new_hook=hook_on_batch_backward, + target_trigger="on_batch_backward", + target_hook_name="_hook_on_batch_backward") + + return base_trainer + + +def init_sgdmf_ctx(base_trainer): + """Init necessary attributes used in SGDMF, + some new attributes will be with prefix `SGDMF` optimizer to avoid namespace pollution + + """ + ctx = base_trainer.ctx + cfg = base_trainer.cfg + + sample_ratio = float(cfg.data.batch_size) / cfg.model.num_user + # Noise multiplier + tmp = cfg.sgdmf.constant * np.power(sample_ratio, 2) * ( + cfg.federate.total_round_num * ctx.num_total_train_batch) * np.log( + 1. / cfg.sgdmf.delta) + noise_multipler = np.sqrt(tmp / np.power(cfg.sgdmf.epsilon, 2)) + ctx.scale = max(cfg.sgdmf.theta, 1.) * noise_multipler * np.power( + cfg.sgdmf.R, 1.5) + logger.info("Inject noise: (loc=0, scale={})".format(ctx.scale)) + ctx.sgdmf_R = cfg.sgdmf.R + + +def embedding_clip(param, R: int): + """Clip embedding vector according to $R$ + + Arguments: + param (tensor): The embedding vector + R (int): The upper bound of ratings + """ + # Turn all negative entries of U into 0 + param.data = (torch.abs(param.data) + param.data) * 0.5 + # Clip tensor + norms = torch.linalg.norm(param.data, dim=1) + threshold = np.sqrt(R) + param.data[norms > threshold] *= (threshold / + norms[norms > threshold]).reshape( + (-1, 1)) + param.data[param.data < 0] = 0. + + +def hook_on_batch_backward(ctx): + """Private local updates in SGDMF + + """ + ctx.optimizer.zero_grad() + ctx.loss_task.backward() + + # Inject noise + ctx.model.embed_user.grad.data += get_random( + "Normal", + sample_shape=ctx.model.embed_user.shape, + params={ + "loc": 0, + "scale": ctx.scale + }, + device=ctx.model.embed_user.device) + ctx.model.embed_item.grad.data += get_random( + "Normal", + sample_shape=ctx.model.embed_item.shape, + params={ + "loc": 0, + "scale": ctx.scale + }, + device=ctx.model.embed_item.device) + ctx.optimizer.step() + + # Embedding clipping + with torch.no_grad(): + embedding_clip(ctx.model.embed_user, ctx.sgdmf_R) + embedding_clip(ctx.model.embed_item, ctx.sgdmf_R) diff --git a/federatedscope/nlp/__init__.py b/federatedscope/nlp/__init__.py new file mode 100644 index 000000000..f8e91f237 --- /dev/null +++ b/federatedscope/nlp/__init__.py @@ -0,0 +1,3 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division diff --git a/federatedscope/nlp/dataloader/__init__.py b/federatedscope/nlp/dataloader/__init__.py new file mode 100644 index 000000000..fa39c9c7c --- /dev/null +++ b/federatedscope/nlp/dataloader/__init__.py @@ -0,0 +1,3 @@ +from federatedscope.nlp.dataloader.dataloader import load_nlp_dataset + +__all__ = ['load_nlp_dataset'] \ No newline at end of file diff --git a/federatedscope/nlp/dataloader/dataloader.py b/federatedscope/nlp/dataloader/dataloader.py new file mode 100644 index 000000000..504a5a325 --- /dev/null +++ b/federatedscope/nlp/dataloader/dataloader.py @@ -0,0 +1,63 @@ +from torch.utils.data import DataLoader + +from federatedscope.nlp.dataset.leaf_nlp import LEAF_NLP +from federatedscope.nlp.dataset.leaf_synthetic import LEAF_SYNTHETIC +from federatedscope.core.auxiliaries.transform_builder import get_transform + + +def load_nlp_dataset(config=None): + r""" + return { + 'client_id': { + 'train': DataLoader(), + 'test': DataLoader(), + 'val': DataLoader() + } + } + """ + splits = config.data.splits + + path = config.data.root + name = config.data.type.lower() + batch_size = config.data.batch_size + transforms_funcs = get_transform(config, 'torchtext') + + if name in ['shakespeare', 'subreddit', 'twitter']: + dataset = LEAF_NLP(root=path, + name=name, + s_frac=config.data.subsample, + tr_frac=splits[0], + val_frac=splits[1], + seed=1234, + **transforms_funcs) + elif name == 'synthetic': + dataset = LEAF_SYNTHETIC(root=path) + else: + raise ValueError(f'No dataset named: {name}!') + + client_num = min(len(dataset), config.federate.client_num + ) if config.federate.client_num > 0 else len(dataset) + config.merge_from_list(['federate.client_num', client_num]) + + # get local dataset + data_local_dict = dict() + for client_idx in range(client_num): + dataloader = { + 'train': DataLoader(dataset[client_idx]['train'], + batch_size, + shuffle=config.data.shuffle, + num_workers=config.data.num_workers), + 'test': DataLoader(dataset[client_idx]['test'], + batch_size, + shuffle=False, + num_workers=config.data.num_workers) + } + if 'val' in dataset[client_idx]: + dataloader['val'] = DataLoader(dataset[client_idx]['val'], + batch_size, + shuffle=False, + num_workers=config.data.num_workers) + + data_local_dict[client_idx + 1] = dataloader + + return data_local_dict, config diff --git a/federatedscope/nlp/dataset/__init__.py b/federatedscope/nlp/dataset/__init__.py new file mode 100644 index 000000000..42638817a --- /dev/null +++ b/federatedscope/nlp/dataset/__init__.py @@ -0,0 +1,8 @@ +from os.path import dirname, basename, isfile, join +import glob + +modules = glob.glob(join(dirname(__file__), "*.py")) +__all__ = [ + basename(f)[:-3] for f in modules + if isfile(f) and not f.endswith('__init__.py') +] \ No newline at end of file diff --git a/federatedscope/nlp/dataset/leaf_nlp.py b/federatedscope/nlp/dataset/leaf_nlp.py new file mode 100644 index 000000000..1e4fc0870 --- /dev/null +++ b/federatedscope/nlp/dataset/leaf_nlp.py @@ -0,0 +1,266 @@ +import os +import random +import pickle +import json +import torch +import math + +import os.path as osp + +from tqdm import tqdm +from collections import defaultdict + +from sklearn.model_selection import train_test_split + +from federatedscope.core.auxiliaries.utils import save_local_data, download_url +from federatedscope.cv.dataset.leaf import LEAF +from federatedscope.nlp.dataset.utils import * + + +class LEAF_NLP(LEAF): + """ + LEAF NLP dataset from + + leaf.cmu.edu + + Arguments: + root (str): root path. + name (str): name of dataset, ‘shakespeare’ or ‘xxx’. + s_frac (float): fraction of the dataset to be used; default=0.3. + tr_frac (float): train set proportion for each task; default=0.8. + val_frac (float): valid set proportion for each task; default=0.0. + transform: transform for x. + target_transform: transform for y. + + """ + def __init__(self, + root, + name, + s_frac=0.3, + tr_frac=0.8, + val_frac=0.0, + seed=123, + transform=None, + target_transform=None): + self.s_frac = s_frac + self.tr_frac = tr_frac + self.val_frac = val_frac + self.seed = seed + super(LEAF_NLP, self).__init__(root, name, transform, target_transform) + files = os.listdir(self.processed_dir) + files = [f for f in files if f.startswith('task_')] + if len(files): + # Sort by idx + files.sort(key=lambda k: int(k[5:])) + + for file in files: + train_data, train_targets = torch.load( + osp.join(self.processed_dir, file, 'train.pt')) + test_data, test_targets = torch.load( + osp.join(self.processed_dir, file, 'test.pt')) + self.data_dict[int(file[5:])] = { + 'train': (train_data, train_targets), + 'test': (test_data, test_targets) + } + if osp.exists(osp.join(self.processed_dir, file, 'val.pt')): + val_data, val_targets = torch.load( + osp.join(self.processed_dir, file, 'val.pt')) + self.data_dict[int(file[5:])]['val'] = (val_data, + val_targets) + else: + raise RuntimeError( + 'Please delete ‘processed’ folder and try again!') + + @property + def raw_file_names(self): + names = [f'{self.name}_all_data.zip'] + return names + + def download(self): + # Download to `self.raw_dir`. + url = 'https://federatedscope.oss-cn-beijing.aliyuncs.com' + os.makedirs(self.raw_dir, exist_ok=True) + for name in self.raw_file_names: + download_url(f'{url}/{name}', self.raw_dir) + + def __getitem__(self, index): + """ + Arguments: + index (int): Index + + :returns: + dict: {'train':[(text, target)], + 'test':[(text, target)], + 'val':[(text, target)]} + where target is the target class. + """ + text_dict = {} + data = self.data_dict[index] + for key in data: + text_dict[key] = [] + texts, targets = data[key] + for idx in range(targets.shape[0]): + text = texts[idx] + + if self.transform is not None: + text = self.transform(text) + + if self.target_transform is not None: + target = self.target_transform(target) + + text_dict[key].append((text, targets[idx])) + + return text_dict + + def tokenizer(self, data, targets): + """ + TOKENIZER = { + 'shakespeare': { + 'x': word_to_indices, + 'y': letter_to_vec + }, + 'twitter': { + 'x': bag_of_words, + 'y': target_to_binary + }, + 'subreddit': { + 'x': token_to_ids, + 'y': token_to_ids + } + } + """ + if self.name == 'shakespeare': + data = [ + word_to_indices(re.sub(r" *", r' ', raw_text)) + for raw_text in data + ] + targets = [letter_to_vec(raw_target) for raw_target in targets] + + elif self.name == 'twitter': + # Loading bag of word embeddings + with open(osp.join(self.raw_dir, 'embs.json'), 'r') as inf: + embs = json.load(inf) + id2word = embs['vocab'] + word2id = {v: k for k, v in enumerate(id2word)} + # [ID, Date, Query, User, Content] + data = [bag_of_words(raw_text[4], word2id) for raw_text in data] + targets = [target_to_binary(raw_target) for raw_target in targets] + + elif self.name == 'subreddit': + with open(osp.join(self.raw_dir, 'reddit_vocab.pck'), 'rb') as inf: + vocab_file = pickle.load(inf) + vocab = defaultdict(lambda: vocab_file['unk_symbol']) + vocab.update(vocab_file['vocab']) + + data_x_by_seq, data_y_by_seq, mask_by_seq = [], [], [] + + for c, l in zip(data, targets): + data_x_by_seq.extend(c) + data_y_by_seq.extend(l['target_tokens']) + mask_by_seq.extend(l['count_tokens']) + + data, targets, mask = data_x_by_seq, data_y_by_seq, mask_by_seq + + data = token_to_ids(data, vocab) + targets = token_to_ids(targets, vocab) + # Next word prediction + targets = [words[-1] for words in targets] + + return data, targets + + def process(self): + raw_path = osp.join(self.raw_dir, "all_data") + files = os.listdir(raw_path) + files = [f for f in files if f.endswith('.json')] + + if self.name == 'subreddit': + self.s_frac = 1.0 + + n_tasks = math.ceil(len(files) * self.s_frac) + random.shuffle(files) + files = files[:n_tasks] + + print("Preprocess data (Please leave enough space)...") + + idx = 0 + reddit_idx = [] + for num, file in enumerate(tqdm(files)): + with open(osp.join(raw_path, file), 'r') as f: + raw_data = json.load(f) + + user_list = list(raw_data['user_data'].keys()) + n_tasks = math.ceil(len(user_list) * self.s_frac) + random.shuffle(user_list) + user_list = user_list[:n_tasks] + for user in user_list: + data, targets = raw_data['user_data'][user]['x'], raw_data[ + 'user_data'][user]['y'] + + # Filter the user within 50 contents + if self.name == 'twitter' and len(data) <= 50: + continue + if self.name == 'subreddit': + if user not in reddit_idx: + reddit_idx.append(user) + + # Tokenize + data, targets = self.tokenizer(data, targets) + + if len(data) > 2: + data = torch.LongTensor(np.stack(data)) + targets = torch.LongTensor(np.stack(targets)) + else: + data = torch.Longtensor(data) + targets = torch.LongTensor(targets) + + if self.name == 'subreddit': + # subreddit has fixed split + train_data, test_data, val_data = None, None, None + train_targets, test_targets, val_targets = None, None, None + if file.startswith('train'): + train_data = data + train_targets = targets + elif file.startswith('test'): + test_data = data + test_targets = targets + elif file.startswith('val'): + val_data = data + val_targets = targets + else: + continue + save_path = osp.join(self.processed_dir, + f"task_{reddit_idx.index(user)}") + else: + train_data, test_data, train_targets, test_targets =\ + train_test_split( + data, + targets, + train_size=self.tr_frac, + random_state=self.seed + ) + + if self.val_frac > 0: + try: + val_data, test_data, val_targets, test_targets = \ + train_test_split( + test_data, + test_targets, + train_size=self.val_frac / (1.-self.tr_frac), + random_state=self.seed + ) + except: + val_data, val_targets = None, None + + else: + val_data, val_targets = None, None + save_path = osp.join(self.processed_dir, f"task_{idx}") + os.makedirs(save_path, exist_ok=True) + + save_local_data(dir_path=save_path, + train_data=train_data, + train_targets=train_targets, + test_data=test_data, + test_targets=test_targets, + val_data=val_data, + val_targets=val_targets) + idx += 1 diff --git a/federatedscope/nlp/dataset/leaf_synthetic.py b/federatedscope/nlp/dataset/leaf_synthetic.py new file mode 100644 index 000000000..24de31623 --- /dev/null +++ b/federatedscope/nlp/dataset/leaf_synthetic.py @@ -0,0 +1,199 @@ +import os +import pickle +import argparse +import torch +import numpy as np +import os.path as osp + +from sklearn.utils import shuffle +from torch.utils.data import Dataset + +from federatedscope.core.auxiliaries.utils import save_local_data +from federatedscope.cv.dataset.leaf import LEAF + + +def sigmoid(x): + return 1 / (1 + np.exp(-x)) + + +def softmax(x): + ex = np.exp(x) + sum_ex = np.sum(np.exp(x)) + return ex / sum_ex + + +class LEAF_SYNTHETIC(LEAF): + """SYNTHETIC dataset from "Federated Multi-Task Learning under a Mixture of Distributions" + + Source: https://github.com/omarfoq/FedEM/tree/main/data/synthetic + + Arguments: + root (str): root path. + name (str): name of dataset, `SYNTHETIC`. + n_components (int): number of mixture components, default=3. + n_task (int): number of tasks/clients, default = 300. + n_test (int): size of test set, default=5,000. + n_val (int): size of validation set, default=5,000. + dim (int): dimension of the data, default=150. + noise_level (float): proportion of noise, default=0.1. + alpha (float): alpha of LDA, default=0.4. + box (list): box of `x`, default=(-1.0, 1.0). + + """ + def __init__(self, + root, + name='synthetic', + n_components=3, + n_tasks=300, + n_test=5000, + n_val=5000, + dim=150, + noise_level=0.1, + alpha=0.4, + box=(-1.0, 1.0), + uniform_marginal=True): + + self.root = root + self.n_components = n_components + self.n_tasks = n_tasks + self.n_test = n_test + self.n_val = n_val + self.dim = dim + self.noise_level = noise_level + self.alpha = alpha * np.ones(n_components) + self.box = box + self.uniform_marginal = uniform_marginal + self.num_samples = self.get_num_samples(self.n_tasks) + + self.theta = np.zeros((self.n_components, self.dim)) + self.mixture_weights = np.zeros((self.n_tasks, self.n_components)) + + self.generate_mixture_weights() + self.generate_components() + + super(LEAF_SYNTHETIC, self).__init__(root, name, None, None) + files = os.listdir(self.processed_dir) + files = [f for f in files if f.startswith('task_')] + if len(files): + # Sort by idx + files.sort(key=lambda k: int(k[5:])) + + for file in files: + train_data, train_targets = torch.load( + osp.join(self.processed_dir, file, 'train.pt')) + test_data, test_targets = torch.load( + osp.join(self.processed_dir, file, 'test.pt')) + self.data_dict[int(file[5:])] = { + 'train': (train_data, train_targets), + 'test': (test_data, test_targets) + } + if osp.exists(osp.join(self.processed_dir, file, 'val.pt')): + val_data, val_targets = torch.load( + osp.join(self.processed_dir, file, 'val.pt')) + self.data_dict[int(file[5:])]['val'] = (val_data, + val_targets) + else: + raise RuntimeError( + 'Please delete ‘processed’ folder and try again!') + + def download(self): + pass + + def extract(self): + pass + + def __getitem__(self, index): + """ + Arguments: + index (int): Index + + :returns: + dict: {'train':[(x, target)], + 'test':[(x, target)], + 'val':[(x, target)]} + where target is the target class. + """ + text_dict = {} + data = self.data_dict[index] + for key in data: + text_dict[key] = [] + texts, targets = data[key] + for idx in range(targets.shape[0]): + text = texts[idx] + text_dict[key].append((text, targets[idx])) + + return text_dict + + def generate_mixture_weights(self): + for task_id in range(self.n_tasks): + self.mixture_weights[task_id] = np.random.dirichlet( + alpha=self.alpha) + + def generate_components(self): + self.theta = np.random.uniform(self.box[0], + self.box[1], + size=(self.n_components, self.dim)) + + def generate_data(self, task_id, n_samples=10000): + latent_variable_count = np.random.multinomial( + n_samples, self.mixture_weights[task_id]) + y = np.zeros(n_samples) + + if self.uniform_marginal: + x = np.random.uniform(self.box[0], + self.box[1], + size=(n_samples, self.dim)) + else: + raise NotImplementedError( + "Only uniform marginal is available for the moment") + + current_index = 0 + for component_id in range(self.n_components): + y_hat = x[current_index:current_index + + latent_variable_count[component_id]] @ self.theta[ + component_id] + noise = np.random.normal(size=latent_variable_count[component_id], + scale=self.noise_level) + y[current_index: current_index + latent_variable_count[component_id]] = \ + np.round(sigmoid(y_hat + noise)).astype(int) + + return shuffle(x.astype(np.float32), y.astype(np.int64)) + + def save_metadata(self, path_): + metadata = dict() + metadata["mixture_weights"] = self.mixture_weights + metadata["theta"] = self.theta + + with open(path_, 'wb') as f: + pickle.dump(metadata, f) + + def get_num_samples(self, + num_tasks, + min_num_samples=50, + max_num_samples=1000): + num_samples = np.random.lognormal(4, 2, num_tasks).astype(int) + num_samples = [ + min(s + min_num_samples, max_num_samples) for s in num_samples + ] + return num_samples + + def process(self): + for task_id in range(self.n_tasks): + save_path = os.path.join(self.processed_dir, f"task_{task_id}") + os.makedirs(save_path, exist_ok=True) + + train_data, train_targets = self.generate_data( + task_id, self.num_samples[task_id]) + test_data, test_targets = self.generate_data(task_id, self.n_test) + + if self.n_val > 0: + val_data, val_targets = self.generate_data(task_id, self.n_val) + else: + val_data, val_targets = None, None + save_local_data(dir_path=save_path, + train_data=train_data, + train_targets=train_targets, + test_data=test_data, + test_targets=test_targets, + val_data=val_data, + val_targets=val_targets) \ No newline at end of file diff --git a/federatedscope/nlp/dataset/utils.py b/federatedscope/nlp/dataset/utils.py new file mode 100644 index 000000000..736d8c163 --- /dev/null +++ b/federatedscope/nlp/dataset/utils.py @@ -0,0 +1,88 @@ +""" +Utils for language models. +from https://github.com/litian96/FedProx/blob/master/flearn/utils/language_utils.py +""" + +import re +import numpy as np +from collections import Counter + +# ------------------------ +# utils for shakespeare dataset + +ALL_LETTERS = "\n !\"&'(),-.0123456789:;>?ABCDEFGHIJKLMNOPQRSTUVWXYZ[]abcdefghijklmnopqrstuvwxyz}" +NUM_LETTERS = len(ALL_LETTERS) + + +def _one_hot(index, size): + '''returns one-hot vector with given size and value 1 at given index + ''' + vec = [0 for _ in range(size)] + vec[int(index)] = 1 + return vec + + +def letter_to_vec(letter): + index = ALL_LETTERS.find(letter) + return index + + +def word_to_indices(word): + '''returns a list of character indices + Arguments: + word: string + + :returns: + indices: int list with length len(word) + ''' + indices = [] + for c in word: + indices.append(ALL_LETTERS.find(c)) + return indices + + +# ------------------------ +# utils for sent140 dataset + + +def split_line(line): + '''split given line/phrase into list of words + Arguments: + line: string representing phrase to be split + + :returns: + list of strings, with each string representing a word + ''' + return re.findall(r"[\w']+|[.,!?;]", line) + + +def bag_of_words(line, vocab): + '''returns bag of words representation of given phrase using given vocab + Arguments: + line: string representing phrase to be parsed + vocab: dictionary with words as keys and indices as values + :returns: + integer list + ''' + bag = [0] * len(vocab) + words = split_line(line) + for w in words: + if w in vocab: + bag[vocab[w]] += 1 + return bag + + +def target_to_binary(label): + return int(label == 1) + + +def token_to_ids(texts, vocab): + to_ret = [[vocab[word] for word in line] for line in texts] + return np.array(to_ret) + + +def label_to_index(labels): + counter = Counter(labels) + sorted_tuples = sorted(counter.items(), key=lambda x: x[1], reverse=True) + label_list = [x[0] for x in sorted_tuples] + return [label_list.index(x) for x in labels] diff --git a/federatedscope/nlp/loss/__init__.py b/federatedscope/nlp/loss/__init__.py new file mode 100644 index 000000000..ccd787417 --- /dev/null +++ b/federatedscope/nlp/loss/__init__.py @@ -0,0 +1,5 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from federatedscope.nlp.loss.character_loss import * \ No newline at end of file diff --git a/federatedscope/nlp/loss/character_loss.py b/federatedscope/nlp/loss/character_loss.py new file mode 100644 index 000000000..7ec766f82 --- /dev/null +++ b/federatedscope/nlp/loss/character_loss.py @@ -0,0 +1,54 @@ +import torch + +from federatedscope.register import register_criterion +""" +Norm for Letters freq from FedEM: +https://github.com/omarfoq/FedEM/blob/13f366c41c14b234147c2662c258b8a9db2f38cc/utils/constants.py +""" +CHARACTERS_WEIGHTS = { + '\n': 0.43795308843799086, + ' ': 0.042500849608091536, + ',': 0.6559597911540539, + '.': 0.6987226398690805, + 'I': 0.9777491725556848, + 'a': 0.2226022051965085, + 'c': 0.813311655455682, + 'd': 0.4071860494572223, + 'e': 0.13455606165058104, + 'f': 0.7908671114133974, + 'g': 0.9532922255751889, + 'h': 0.2496906467588955, + 'i': 0.27444893060347214, + 'l': 0.37296488139109546, + 'm': 0.569937324017103, + 'n': 0.2520734570378263, + 'o': 0.1934141300462555, + 'r': 0.26035705948768273, + 's': 0.2534775933879391, + 't': 0.1876471355731429, + 'u': 0.47430062920373184, + 'w': 0.7470615815733715, + 'y': 0.6388302610200002 +} + +ALL_LETTERS = "\n !\"&'(),-.0123456789:;>?ABCDEFGHIJKLMNOPQRSTUVWXYZ[]abcdefghijklmnopqrstuvwxyz}" + + +def create_character_loss(type, device): + """ + Character_loss from FedEM: + https://github.com/omarfoq/FedEM/blob/13f366c41c14b234147c2662c258b8a9db2f38cc/utils/utils.py + """ + if type == 'character_loss': + all_characters = ALL_LETTERS + labels_weight = torch.ones(len(all_characters), device=device) + for character in CHARACTERS_WEIGHTS: + labels_weight[all_characters.index( + character)] = CHARACTERS_WEIGHTS[character] + labels_weight = labels_weight * 8 + criterion = torch.nn.CrossEntropyLoss(weight=labels_weight).to(device) + + return criterion + + +register_criterion('character_loss', create_character_loss) diff --git a/federatedscope/nlp/model/__init__.py b/federatedscope/nlp/model/__init__.py new file mode 100644 index 000000000..90d10121f --- /dev/null +++ b/federatedscope/nlp/model/__init__.py @@ -0,0 +1,8 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +from federatedscope.nlp.model.rnn import LSTM +from federatedscope.nlp.model.model_builder import get_rnn, get_transformer + +__all__ = ['LSTM', 'get_rnn', 'get_transformer'] \ No newline at end of file diff --git a/federatedscope/nlp/model/model_builder.py b/federatedscope/nlp/model/model_builder.py new file mode 100644 index 000000000..3a2898fc4 --- /dev/null +++ b/federatedscope/nlp/model/model_builder.py @@ -0,0 +1,52 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + + +def get_rnn(model_config, local_data): + from federatedscope.nlp.model.rnn import LSTM + if isinstance(local_data, dict): + if 'data' in local_data.keys(): + data = local_data['data'] + elif 'train' in local_data.keys(): + # local_data['train'] is Dataloader + data = next(iter(local_data['train'])) + else: + raise TypeError('Unsupported data type.') + else: + data = local_data + + x, _ = data + + # check the task + if model_config.type == 'lstm': + model = LSTM(in_channels=x.shape[1] if not model_config.in_channels + else model_config.in_channels, + hidden=model_config.hidden, + out_channels=model_config.out_channels, + embed_size=model_config.embed_size, + dropout=model_config.dropout) + else: + raise ValueError(f'No model named {model_config.type}!') + + return model + + +def get_transformer(model_config, local_data): + from transformers import AutoModelForPreTraining, AutoModelForQuestionAnswering, AutoModelForSequenceClassification, AutoModelForTokenClassification, AutoModelWithLMHead, AutoModel + + model_func_dict = { + 'PreTraining'.lower(): AutoModelForPreTraining, + 'QuestionAnswering'.lower(): AutoModelForQuestionAnswering, + 'SequenceClassification'.lower(): AutoModelForSequenceClassification, + 'TokenClassification'.lower(): AutoModelForTokenClassification, + 'WithLMHead'.lower(): AutoModelWithLMHead, + 'Auto'.lower(): AutoModel + } + assert model_config.task.lower( + ) in model_func_dict, f'model_config.task should be in {model_func_dict.keys()} when using pre_trained transformer model ' + path, _ = model_config.type.split('@') + model = model_func_dict[model_config.task.lower()].from_pretrained( + path, num_labels=model_config.out_channels) + + return model diff --git a/federatedscope/nlp/model/rnn.py b/federatedscope/nlp/model/rnn.py new file mode 100644 index 000000000..8d5607590 --- /dev/null +++ b/federatedscope/nlp/model/rnn.py @@ -0,0 +1,40 @@ +import torch.nn as nn +import torch.nn.functional as F + + +class LSTM(nn.Module): + def __init__(self, + in_channels, + hidden, + out_channels, + n_layers=2, + embed_size=8, + dropout=.0): + super(LSTM, self).__init__() + self.in_channels = in_channels + self.hidden = hidden + self.embed_size = embed_size + self.out_channels = out_channels + self.n_layers = n_layers + + self.encoder = nn.Embedding(in_channels, embed_size) + + self.rnn =\ + nn.LSTM( + input_size=embed_size if embed_size else in_channels, + hidden_size=hidden, + num_layers=n_layers, + batch_first=True, + dropout=dropout + ) + + self.decoder = nn.Linear(hidden, out_channels) + + def forward(self, input_): + if self.embed_size: + input_ = self.encoder(input_) + output, _ = self.rnn(input_) + output = self.decoder(output) + output = output.permute(0, 2, 1) # change dimension to (B, C, T) + final_word = output[:, :, -1] + return final_word diff --git a/federatedscope/nlp/trainer/__init__.py b/federatedscope/nlp/trainer/__init__.py new file mode 100644 index 000000000..42638817a --- /dev/null +++ b/federatedscope/nlp/trainer/__init__.py @@ -0,0 +1,8 @@ +from os.path import dirname, basename, isfile, join +import glob + +modules = glob.glob(join(dirname(__file__), "*.py")) +__all__ = [ + basename(f)[:-3] for f in modules + if isfile(f) and not f.endswith('__init__.py') +] \ No newline at end of file diff --git a/federatedscope/nlp/trainer/trainer.py b/federatedscope/nlp/trainer/trainer.py new file mode 100644 index 000000000..8f3fac5fc --- /dev/null +++ b/federatedscope/nlp/trainer/trainer.py @@ -0,0 +1,28 @@ +from federatedscope.register import register_trainer +from federatedscope.core.trainers import GeneralTorchTrainer +from federatedscope.core.auxiliaries import utils + + +class NLPTrainer(GeneralTorchTrainer): + def _hook_on_batch_forward(self, ctx): + x, label = [utils.move_to(_, ctx.device) for _ in ctx.data_batch] + if isinstance(x, dict): + pred = ctx.model(**x)[0] + else: + pred = ctx.model(x) + if len(label.size()) == 0: + label = label.unsqueeze(0) + ctx.loss_batch = ctx.criterion(pred, label) + ctx.y_true = label + ctx.y_prob = pred + + ctx.batch_size = len(label) + + +def call_nlp_trainer(trainer_type): + if trainer_type == 'nlptrainer': + trainer_builder = NLPTrainer + return trainer_builder + + +register_trainer('nlptrainer', call_nlp_trainer) diff --git a/federatedscope/parse_exp_results.py b/federatedscope/parse_exp_results.py new file mode 100644 index 000000000..3a8e13309 --- /dev/null +++ b/federatedscope/parse_exp_results.py @@ -0,0 +1,66 @@ +import argparse +import json +import copy +import numpy as np + +parser = argparse.ArgumentParser(description='FederatedScope result parsing') +parser.add_argument('--input', + help='path of exp results', + required=True, + type=str) +args = parser.parse_args() + + +def merge_local_results(local_results): + aggr_results = copy.deepcopy(local_results[0]) + aggr_results = {key: [aggr_results[key]] for key in aggr_results} + for i in range(1, len(local_results)): + for k, v in local_results[i].items(): + aggr_results[k].append(v) + return aggr_results + + +def main(): + result_list_wavg = [] + result_list_avg = [] + result_list_global = [] + + with open(args.input, 'r') as ips: + for line in ips: + try: + state, line = line.split('INFO: ') + except: + continue + if line.startswith('{'): + line = line.replace("\'", "\"") + line = json.loads(s=line) + if line['Round'] == 'Final' and line['Role'] == 'Server #': + res = line['Results_raw'] + if 'Results_raw' in line.keys(): + if 'server_global_eval' in res.keys(): + result_list_global.append( + res['server_global_eval']) + if 'client_summarized_weighted_avg' in res.keys(): + result_list_wavg.append( + res['client_summarized_weighted_avg']) + if 'client_summarized_avg' in res.keys(): + result_list_avg.append( + res['client_summarized_avg']) + + print(args.input) + if len(result_list_wavg): + print('\tResults_weighted_avg') + for key, v in merge_local_results(result_list_wavg).items(): + print("\t{}, {:.4f}, {:.4f}".format(key, np.mean(v), np.std(v))) + if len(result_list_avg): + print('\tResults_avg') + for key, v in merge_local_results(result_list_avg).items(): + print("\t{}, {:.4f}, {:.4f}".format(key, np.mean(v), np.std(v))) + if len(result_list_global): + print('\tserver_global_eval') + for key, v in merge_local_results(result_list_global).items(): + print("\t{}, {:.4f}, {:.4f}".format(key, np.mean(v), np.std(v))) + + +if __name__ == "__main__": + main() diff --git a/federatedscope/register.py b/federatedscope/register.py new file mode 100644 index 000000000..88fd68eb8 --- /dev/null +++ b/federatedscope/register.py @@ -0,0 +1,84 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +import logging + +logger = logging.getLogger(__name__) + + +def register(key, module, module_dict): + if key in module_dict: + logger.warning( + 'Key {} is already pre-defined, overwritten.'.format(key)) + module_dict[key] = module + + +data_dict = {} + + +def register_data(key, module): + register(key, module, data_dict) + + +model_dict = {} + + +def register_model(key, module): + register(key, module, model_dict) + + +trainer_dict = {} + + +def register_trainer(key, module): + register(key, module, trainer_dict) + + +config_dict = {} + + +def register_config(key, module): + register(key, module, config_dict) + + +metric_dict = {} + + +def register_metric(key, module): + register(key, module, metric_dict) + + +criterion_dict = {} + + +def register_criterion(key, module): + register(key, module, criterion_dict) + + +regularizer_dict = {} + + +def register_regularizer(key, module): + register(key, module, regularizer_dict) + + +auxiliary_data_loader_PIA_dict = {} + + +def register_auxiliary_data_loader_PIA(key, module): + register(key, module, auxiliary_data_loader_PIA_dict) + + +splitter_dict = {} + + +def register_splitter(key, module): + register(key, module, splitter_dict) + + +transform_dict = {} + + +def register_transform(key, module): + register(key, module, transform_dict) diff --git a/federatedscope/tabular/__init__.py b/federatedscope/tabular/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/federatedscope/tabular/dataloader/__init__.py b/federatedscope/tabular/dataloader/__init__.py new file mode 100644 index 000000000..d3622deb9 --- /dev/null +++ b/federatedscope/tabular/dataloader/__init__.py @@ -0,0 +1,3 @@ +from federatedscope.tabular.dataloader.quadratic import load_quadratic_dataset + +__all__ = ['load_quadratic_dataset'] diff --git a/federatedscope/tabular/dataloader/quadratic.py b/federatedscope/tabular/dataloader/quadratic.py new file mode 100644 index 000000000..37b73829d --- /dev/null +++ b/federatedscope/tabular/dataloader/quadratic.py @@ -0,0 +1,21 @@ +import numpy as np + +from torch.utils.data import DataLoader + + +def load_quadratic_dataset(config): + dataset = dict() + d = config.data.quadratic.dim + base = np.exp( + np.log(config.data.quadratic.max_curv / config.data.quadratic.min_curv) + / (config.federate.client_num - 1)) + for i in range(1, 1 + config.federate.client_num): + # TODO: enable sphere + a = 0.02 * base**(i - 1) * np.identity(d) + # TODO: enable non-zero minimizer, i.e., provide a shift + client_data = dict() + client_data['train'] = DataLoader([(a.astype(np.float32), .0)]) + client_data['val'] = DataLoader([(a.astype(np.float32), .0)]) + client_data['test'] = DataLoader([(a.astype(np.float32), .0)]) + dataset[i] = client_data + return dataset, config diff --git a/federatedscope/tabular/model/__init__.py b/federatedscope/tabular/model/__init__.py new file mode 100644 index 000000000..bbb23a4f9 --- /dev/null +++ b/federatedscope/tabular/model/__init__.py @@ -0,0 +1,3 @@ +from federatedscope.tabular.model.quadratic import QuadraticModel + +__all__ = ['QuadraticModel'] diff --git a/federatedscope/tabular/model/quadratic.py b/federatedscope/tabular/model/quadratic.py new file mode 100644 index 000000000..92c235dbd --- /dev/null +++ b/federatedscope/tabular/model/quadratic.py @@ -0,0 +1,11 @@ +import torch + + +class QuadraticModel(torch.nn.Module): + def __init__(self, in_channels, class_num): + super(QuadraticModel, self).__init__() + x = torch.ones((in_channels, 1)) + self.x = torch.nn.parameter.Parameter(x.uniform_(-10.0, 10.0).float()) + + def forward(self, A): + return torch.sum(self.x * torch.matmul(A, self.x), -1) diff --git a/federatedscope/vertical_fl/Paillier/__init__.py b/federatedscope/vertical_fl/Paillier/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/federatedscope/vertical_fl/Paillier/abstract_paillier.py b/federatedscope/vertical_fl/Paillier/abstract_paillier.py new file mode 100644 index 000000000..4e9c3f557 --- /dev/null +++ b/federatedscope/vertical_fl/Paillier/abstract_paillier.py @@ -0,0 +1,45 @@ +# You can refer to pyphe for the detail implementation. (https://github.com/data61/python-paillier/blob/master/phe/paillier.py) +# Or implement an effective version of Paillier () + +DEFAULT_KEYSIZE = 3072 + + +def generate_paillier_keypair(n_length=DEFAULT_KEYSIZE): + """Generate public key and private key used Paillier`. + + Args: + n_length: key size in bits. + + Returns: + tuple: The generated :class:`PaillierPublicKey` and + :class:`PaillierPrivateKey` + """ + n = p = q = None + public_key = PaillierPublicKey(n) + private_key = PaillierPrivateKey(public_key, p, q) + + return public_key, private_key + + +class PaillierPublicKey(object): + """Contains a public key and associated encryption methods. + """ + def __init__(self, n): + pass + + def encrypt(self, value): + # We only provide an abstract implementation here + + return value + + +class PaillierPrivateKey(object): + """Contains a private key and associated decryption method. + """ + def __init__(self, public_key, p, q): + pass + + def decrypt(self, encrypted_number): + # We only provide an abstract implementation here + + return encrypted_number diff --git a/federatedscope/vertical_fl/__init__.py b/federatedscope/vertical_fl/__init__.py new file mode 100644 index 000000000..f9458d03a --- /dev/null +++ b/federatedscope/vertical_fl/__init__.py @@ -0,0 +1 @@ +from federatedscope.vertical_fl.Paillier.abstract_paillier import * diff --git a/federatedscope/vertical_fl/dataloader/__init__.py b/federatedscope/vertical_fl/dataloader/__init__.py new file mode 100644 index 000000000..420b3bbd7 --- /dev/null +++ b/federatedscope/vertical_fl/dataloader/__init__.py @@ -0,0 +1,3 @@ +from federatedscope.vertical_fl.dataloader.dataloader import load_vertical_data + +__all__ = ['load_vertical_data'] diff --git a/federatedscope/vertical_fl/dataloader/dataloader.py b/federatedscope/vertical_fl/dataloader/dataloader.py new file mode 100644 index 000000000..2378ce2b9 --- /dev/null +++ b/federatedscope/vertical_fl/dataloader/dataloader.py @@ -0,0 +1,56 @@ +import numpy as np + + +def load_vertical_data(config=None, generate=False): + """ + To generate the synthetic data for vertical FL + + Arguments: + config: configuration + generate (bool): whether to generate the synthetic data + :returns: The synthetic data, the modified config + :rtype: dict + """ + + if generate: + # generate toy data for running a vertical FL example + INSTANCE_NUM = 1000 + TRAIN_SPLIT = 0.9 + + total_dims = np.sum(config.vertical.dims) + theta = np.random.uniform(low=-1.0, high=1.0, size=(total_dims, 1)) + x = np.random.choice([-1.0, 1.0, -2.0, 2.0, -3.0, 3.0], + size=(INSTANCE_NUM, total_dims)) + y = np.asarray([ + 1.0 if x >= 0 else -1.0 + for x in np.reshape(np.matmul(x, theta), -1) + ]) + + train_num = int(TRAIN_SPLIT * INSTANCE_NUM) + test_data = {'theta': theta, 'x': x[train_num:], 'y': y[train_num:]} + data = dict() + + # For Server #0 + data[0] = dict() + data[0]['train'] = None + data[0]['val'] = None + data[0]['test'] = test_data + + # For Client #1 + data[1] = dict() + data[1]['train'] = { + 'x': x[:train_num, :config.vertical.dims[0]], + 'y': y[:train_num] + } + data[0]['val'] = None + data[1]['test'] = test_data + + # For Client #2 + data[2] = dict() + data[2]['train'] = {'x': x[:train_num, config.vertical.dims[0]:]} + data[0]['val'] = None + data[2]['test'] = test_data + + return data, config + else: + raise ValueError('You must provide the data file') diff --git a/federatedscope/vertical_fl/dataloader/utils.py b/federatedscope/vertical_fl/dataloader/utils.py new file mode 100644 index 000000000..96788c665 --- /dev/null +++ b/federatedscope/vertical_fl/dataloader/utils.py @@ -0,0 +1,30 @@ +import numpy as np +import math + + +def batch_iter(data, batch_size, shuffled=True): + """ + A batch iteration + + Arguments: + data(dict): data + batch_size (int): the batch size + shuffled (bool): whether to shuffle the data at the start of each epoch + :returns: sample index, batch of x, batch_of y + :rtype: int, ndarray, ndarry + """ + + assert 'x' in data and 'y' in data + data_x = data['x'] + data_y = data['y'] + data_size = len(data_y) + num_batches_per_epoch = math.ceil(data_size / batch_size) + + while True: + shuffled_index = np.random.permutation( + np.arange(data_size)) if shuffled else np.arange(data_size) + for batch in range(num_batches_per_epoch): + start_index = batch * batch_size + end_index = min(data_size, (batch + 1) * batch_size) + sample_index = shuffled_index[start_index:end_index] + yield sample_index, data_x[sample_index], data_y[sample_index] diff --git a/federatedscope/vertical_fl/worker/__init__.py b/federatedscope/vertical_fl/worker/__init__.py new file mode 100644 index 000000000..3db6d2606 --- /dev/null +++ b/federatedscope/vertical_fl/worker/__init__.py @@ -0,0 +1,4 @@ +from federatedscope.vertical_fl.worker.vertical_client import vFLClient +from federatedscope.vertical_fl.worker.vertical_server import vFLServer + +__all__ = ['vFLServer', 'vFLClient'] \ No newline at end of file diff --git a/federatedscope/vertical_fl/worker/vertical_client.py b/federatedscope/vertical_fl/worker/vertical_client.py new file mode 100644 index 000000000..c42e9d49f --- /dev/null +++ b/federatedscope/vertical_fl/worker/vertical_client.py @@ -0,0 +1,107 @@ +import numpy as np +import logging + +from federatedscope.core.worker import Client +from federatedscope.core.message import Message +from federatedscope.vertical_fl.dataloader.utils import batch_iter + + +class vFLClient(Client): + """ + The client class for vertical FL, which customizes the handled functions. Please refer to the tutorial for more details about the implementation algorithm + Implementation of Vertical FL refer to `Private federated learning on vertically partitioned data via entity resolution and additively homomorphic encryption` [Hardy, et al., 2017] + (https://arxiv.org/abs/1711.10677) + """ + def __init__(self, + ID=-1, + server_id=None, + state=-1, + config=None, + data=None, + model=None, + device='cpu', + strategy=None, + *args, + **kwargs): + + super(vFLClient, + self).__init__(ID, server_id, state, config, data, model, device, + strategy, *args, **kwargs) + self.data = data + self.public_key = None + self.theta = None + self.batch_index = None + self.own_label = ('y' in self.data['train']) + self.dataloader = batch_iter(self.data['train'], + self._cfg.data.batch_size, + shuffled=True) + + self.register_handlers('public_keys', + self.callback_funcs_for_public_keys) + self.register_handlers('model_para', + self.callback_funcs_for_model_para) + self.register_handlers('encryped_gradient_u', + self.callback_funcs_for_encryped_gradient_u) + self.register_handlers('encryped_gradient_v', + self.callback_funcs_for_encryped_gradient_v) + + def sample_data(self, index=None): + if index is None: + assert self.own_label + return next(self.dataloader) + else: + return self.data['train']['x'][index] + + def callback_funcs_for_public_keys(self, message: Message): + self.public_key = message.content + + def callback_funcs_for_model_para(self, message: Message): + self.theta = message.content + if self.own_label: + index, input_x, input_y = self.sample_data() + self.batch_index = index + + u_A = 0.25 * np.matmul(input_x, self.theta) - 0.5 * input_y + en_u_A = [self.public_key.encrypt(x) for x in u_A] + + self.comm_manager.send( + Message(msg_type='encryped_gradient_u', + sender=self.ID, + receiver=[ + each for each in self.comm_manager.neighbors + if each != self.server_id + ], + state=self.state, + content=(self.batch_index, en_u_A))) + + def callback_funcs_for_encryped_gradient_u(self, message: Message): + index, en_u_A = message.content + self.batch_index = index + input_x = self.sample_data(index=self.batch_index) + u_B = 0.25 * np.matmul(input_x, self.theta) + en_u_B = [self.public_key.encrypt(x) for x in u_B] + en_u = np.expand_dims([sum(x) for x in zip(en_u_A, en_u_B)], -1) + en_v_B = en_u * input_x + + self.comm_manager.send( + Message(msg_type='encryped_gradient_v', + sender=self.ID, + receiver=[ + each for each in self.comm_manager.neighbors + if each != self.server_id + ], + state=self.state, + content=(en_u, en_v_B))) + + def callback_funcs_for_encryped_gradient_v(self, message: Message): + en_u, en_v_B = message.content + input_x = self.sample_data(index=self.batch_index) + en_v_A = en_u * input_x + en_v = np.concatenate([en_v_A, en_v_B], axis=-1) + + self.comm_manager.send( + Message(msg_type='encryped_gradient', + sender=self.ID, + receiver=[self.server_id], + state=self.state, + content=(len(input_x), en_v))) diff --git a/federatedscope/vertical_fl/worker/vertical_server.py b/federatedscope/vertical_fl/worker/vertical_server.py new file mode 100644 index 000000000..9e6e1af34 --- /dev/null +++ b/federatedscope/vertical_fl/worker/vertical_server.py @@ -0,0 +1,121 @@ +import numpy as np +import logging + +from federatedscope.core.monitors.monitor import update_best_result +from federatedscope.core.worker import Server +from federatedscope.core.message import Message +from federatedscope.vertical_fl.Paillier import abstract_paillier + +logger = logging.getLogger(__name__) + + +class vFLServer(Server): + """ + The server class for vertical FL, which customizes the handled functions. Please refer to the tutorial for more details about the implementation algorithm + Implementation of Vertical FL refer to `Private federated learning on vertically partitioned data via entity resolution and additively homomorphic encryption` [Hardy, et al., 2017] + (https://arxiv.org/abs/1711.10677) + """ + def __init__(self, + ID=-1, + state=0, + config=None, + data=None, + model=None, + client_num=5, + total_round_num=10, + device='cpu', + strategy=None, + **kwargs): + super(vFLServer, + self).__init__(ID, state, config, data, model, client_num, + total_round_num, device, strategy, **kwargs) + self.public_key, self.private_key = abstract_paillier.generate_paillier_keypair( + n_length=config.vertical.key_size) + self.dims = [0] + config.vertical.dims + self.theta = self.model.state_dict()['fc.weight'].numpy().reshape(-1) + self.lr = config.optimizer.lr + + self.register_handlers('encryped_gradient', + self.callback_funcs_for_encryped_gradient) + + def trigger_for_start(self): + if self.check_client_join_in(): + self.broadcast_public_keys() + self.broadcast_client_address() + self.broadcast_model_para() + + def broadcast_public_keys(self): + self.comm_manager.send( + Message(msg_type='public_keys', + sender=self.ID, + receiver=list(self.comm_manager.get_neighbors().keys()), + state=self.state, + content=self.public_key)) + + def broadcast_model_para(self): + + client_ids = self.comm_manager.neighbors.keys() + cur_idx = 0 + for client_id in client_ids: + theta_slices = self.theta[cur_idx:cur_idx + + self.dims[int(client_id)]] + self.comm_manager.send( + Message(msg_type='model_para', + sender=self.ID, + receiver=client_id, + state=self.state, + content=theta_slices)) + cur_idx += self.dims[int(client_id)] + + def callback_funcs_for_encryped_gradient(self, message: Message): + sample_num, en_v = message.content + + v = np.reshape( + [self.private_key.decrypt(x) for x in np.reshape(en_v, -1)], + [sample_num, -1]) + avg_gradients = np.mean(v, axis=0) + self.theta = self.theta - self.lr * avg_gradients + + self.state += 1 + if self.state % self._cfg.eval.freq == 0 and self.state != self.total_round_num: + metrics = self.evaluate() + update_best_result(self.best_results, + metrics, + results_type='server_global_eval', + round_wise_update_key=self._cfg.eval. + best_res_update_round_wise_key) + formatted_logs = self._monitor.format_eval_res( + metrics, + rnd=self.state, + role='Global-Eval-Server #', + forms=self._cfg.eval.report) + logger.info(formatted_logs) + + if self.state < self.total_round_num: + # Move to next round of training + logger.info( + '----------- Starting a new training round (Round #{:d}) -------------' + .format(self.state)) + self.broadcast_model_para() + else: + metrics = self.evaluate() + update_best_result(self.best_results, + metrics, + results_type='server_global_eval', + round_wise_update_key=self._cfg.eval. + best_res_update_round_wise_key) + formatted_logs = self._monitor.format_eval_res( + metrics, + rnd=self.state, + role='Server #', + forms=self._cfg.eval.report) + logger.info(formatted_logs) + + def evaluate(self): + test_x = self.data['test']['x'] + test_y = self.data['test']['y'] + loss = np.mean( + np.log(1 + np.exp(-test_y * np.matmul(test_x, self.theta)))) + acc = np.mean((test_y * np.matmul(test_x, self.theta)) > 0) + + return {'test_loss': loss, 'test_acc': acc, 'test_total': len(test_y)} diff --git a/materials/paper_list/FL-Attacker/README.md b/materials/paper_list/FL-Attacker/README.md new file mode 100644 index 000000000..17862602b --- /dev/null +++ b/materials/paper_list/FL-Attacker/README.md @@ -0,0 +1 @@ +The paper list goes here. \ No newline at end of file diff --git a/materials/paper_list/FL-Database/README.md b/materials/paper_list/FL-Database/README.md new file mode 100644 index 000000000..b63d6bedb --- /dev/null +++ b/materials/paper_list/FL-Database/README.md @@ -0,0 +1,25 @@ +# Federated Database + +# 2022 +| Title | Venue | Link | +| ------------------------------------------------------------ | ---------- |---------------------------------------------| + | Conjunctive Queries with Comparisons | SIGMOD | [pdf](https://www.cse.ust.hk/~yike/CQC.pdf) | + | R2T: Instance-Optimal Truncation for Differentially Private Query Evaluation with Foreign Keys | SIGMOD | [pdf](https://www.cse.ust.hk/~yike/R2T.pdf) | + +# 2021 +| Title | Venue | Link | +| --- | --- | --- | + | Approximate Range Counting Under Differential Privacy | SOCG | [pdf](https://drops.dagstuhl.de/opus/volltexte/2021/13844/pdf/LIPIcs-SoCG-2021-45.pdf) | + | Weighted Distince Sampling: Cardinality Estimation for SPJ Queries | SIGMOD | [pdf](https://dl.acm.org/doi/abs/10.1145/3448016.3452821) | + | Residual Sentivity for Differentially Private Multi-way Joins | SIGMOD | [pdf](https://dl.acm.org/doi/abs/10.1145/3448016.3452813) | + +# 2020 +| Title | Venue | Link | +| --- | --- | --- | +| Collecting and Analyzing Data Jointly from Multiple Services under Local Differential Privacy | VLDB | [pdf](https://dl.acm.org/doi/abs/10.14778/3407790.3407859) | +| Improving Utility and Security of the Shuffler-based Differential Privacy | VLDB | [pdf](https://arxiv.org/abs/1908.11515) | + +# 2019 +| Title | Venue | Link | +| --- | --- | --- | +| Answering Multi-dimensional Analytical Queries under Local Differential Privacy | SIGMOD | [pdf](https://dl.acm.org/doi/abs/10.1145/3299869.3319891) | diff --git a/materials/paper_list/FL-Incentive/README.md b/materials/paper_list/FL-Incentive/README.md new file mode 100644 index 000000000..17862602b --- /dev/null +++ b/materials/paper_list/FL-Incentive/README.md @@ -0,0 +1 @@ +The paper list goes here. \ No newline at end of file diff --git a/materials/paper_list/FL-NLP/README.md b/materials/paper_list/FL-NLP/README.md new file mode 100644 index 000000000..afd812bd1 --- /dev/null +++ b/materials/paper_list/FL-NLP/README.md @@ -0,0 +1,47 @@ +## Federated Learning for NLP +This list is constantly being updated. Feel free to contribute! + + +### 2022 +| Title | Venue | Link | +| --- | --- | --- | +| FedBERT: When Federated Learning Meets Pre-Training | TIST | [pdf](https://dl.acm.org/doi/pdf/10.1145/3510033) | +| FedKC: Federated Knowledge Composition for Multilingual Natural Language Understanding | WWW | [pdf](https://dl.acm.org/doi/pdf/10.1145/3485447.3511988) | + + +### 2021 +| Title | Venue | Link | +| --- | --- | --- | +| FedMatch: Federated Learning Over Heterogeneous Question Answering Data | CIKM | [pdf](https://dl.acm.org/doi/pdf/10.1145/3459637.3482345), [code](https://github.com/Chriskuei/FedMatch) | +| Federated Chinese Word Segmentation with Global Character Associations | ACL | [pdf](https://aclanthology.org/2021.findings-acl.376.pdf), [code](https://github.com/cuhksz-nlp/GCASeg) | +| Improving Federated Learning for Aspect-based Sentiment Analysis via Topic Memories | EMNLP | [pdf](https://aclanthology.org/2021.emnlp-main.321.pdf), [code](https://github.com/cuhksz-nlp/ASA-TM) | +| A Secure and Efficient Federated Learning Framework for NLP | EMNLP | [pdf](https://aclanthology.org/2021.emnlp-main.606.pdf) | +| Distantly Supervised Relation Extraction in Federated Settings | EMNLP | [pdf](https://aclanthology.org/2021.findings-emnlp.52.pdf), [code](https://github.com/DianboWork/FedDS) | +| FedNLP: Benchmarking Federated Learning Methods for Natural Language Processing Tasks | arXiv | [pdf](https://arxiv.org/pdf/2104.08815.pdf), [code](https://github.com/FedML-AI/FedNLP) | +| Scaling Federated Learning for Fine-tuning of Large Language Models | arXiv | [pdf](https://arxiv.org/pdf/2102.00875.pdf) | + + +### 2020 +| Title | Venue | Link | +| --- | --- | --- | +| Empirical Studies of Institutional Federated Learning For Natural Language Processing | EMNLP | [pdf](https://aclanthology.org/2020.findings-emnlp.55.pdf) | +| FedED: Federated Learning via Ensemble Distillation for Medical Relation Extraction | EMNLP | [pdf](https://aclanthology.org/2020.emnlp-main.165.pdf) | +| FedNER: Privacy-preserving Medical Named Entity Recognition with Federated Learning | arXiv | [pdf](https://arxiv.org/pdf/2003.09288.pdf) | +| Federated Pretraining and Fine Tuning of BERT Using Clinical Notes from Multiple Silos | arXiv | [pdf](https://arxiv.org/pdf/2002.08562.pdf) | +| Pretraining Federated Text Models for Next Word Prediction | arXiv | [pdf](https://arxiv.org/pdf/2005.04828.pdf), [code](https://github.com/federated-learning-experiments/fl-text-models) | + + +### 2019 +| Title | Venue | Link | +| --- | --- | --- | +| Federated Learning of N-gram Language Models | CoNLL | [pdf](https://arxiv.org/pdf/1910.03432.pdf) | +| Learning Private Neural Language Modeling with Attentive Aggregation | IJCNN | [pdf](https://arxiv.org/pdf/1812.07108.pdf) | +| Federated Learning Of Out-Of-Vocabulary Words | arXiv | [pdf](https://arxiv.org/pdf/1903.10635.pdf) | +| Federated Learning for Emoji Prediction in a Mobile Keyboard | arXiv | [pdf](https://arxiv.org/pdf/1906.04329.pdf) | + + +### 2018 +| Title | Venue | Link | +| --- | --- | --- | +| Federated Learning for Mobile Keyboard Prediction | arXiv | [pdf](https://arxiv.org/pdf/1811.03604.pdf) | +| Applied Federated Learning: Improving Google Keyboard Query Suggestions | arXiv | [pdf](https://arxiv.org/pdf/1812.02903.pdf) | diff --git a/materials/paper_list/FL-Recommendation/README.md b/materials/paper_list/FL-Recommendation/README.md new file mode 100644 index 000000000..dea3b1744 --- /dev/null +++ b/materials/paper_list/FL-Recommendation/README.md @@ -0,0 +1,31 @@ +## Federated Learning for Recommendation + +### 2022 +Coming soon! + +### 2021 +| Title | Venue | Link | +| --- | --- | --- | +| Efficient-FedRec: Efficient Federated Learning Framework for Privacy-Preserving News Recommendation | EMNLP | [pdf](https://aclanthology.org/2021.emnlp-main.223), [code](https://github.com/yjw1029/Efficient-FedRec) | +| POI Recommendation with Federated Learning and Privacy Preserving in Cross Domain Recommendation | INFOCOM workshop | [pdf](https://ieeexplore.ieee.org/document/9484510) | +| Fast-adapting and Privacy-preserving Federated Recommender System | VLDB Journal | [pdf](https://arxiv.org/abs/2104.00919) | +| Stronger Privacy for Federated Collaborative Filtering with Implicit Feedback | RecSys | [pdf](https://arxiv.org/abs/2105.03941) | +| A Payload Optimization Method for Federated Recommender Systems | RecSys | [pdf](https://arxiv.org/abs/2107.13078) | +| Practical and Secure Federated Recommendation with Personalized Masks | arXiv | [pdf](https://arxiv.org/abs/2109.02464) | +| FedGNN: Federated Graph Neural Network for Privacy-Preserving Recommendation | arXiv | [pdf](https://arxiv.org/abs/2102.04925) | +| Federated Neural Collaborative Filtering | arXiv | [pdf](https://arxiv.org/abs/2106.04405) | + +### 2020 +| Title | Venue | Link | +| --- | --- | --- | +| Secure Federated Matrix Factorization | IEEE Intelligent Systems | [pdf](https://ieeexplore.ieee.org/abstract/document/9162459), [code](https://github.com/Di-Chai/FedMF) | +| FedRec: Federated Recommendation With Explicit Feedback | IEEE Intelligent Systems | [pdf](https://ieeexplore.ieee.org/abstract/document/9170754), [code](https://csse.szu.edu.cn/staff/panwk/publications/FedRec/) | +| Privacy-Preserving News Recommendation Model Learning | EMNLP | [pdf](https://aclanthology.org/2020.findings-emnlp.128/), [code](https://github.com/taoqi98/FedNewsRec) | +| Federated Recommendation System via Differential Privacy | IEEE ISIT | [pdf](https://arxiv.org/abs/2005.06670) | +| Meta Matrix Factorization for Federated Rating Predictions | SIGIR | [pdf](https://arxiv.org/abs/1910.10086), [code](https://github.com/TempSDU/MetaMF) | +| FedFast: Going Beyond Average for Faster Training of Federated Recommender Systems | KDD | [pdf](https://dl.acm.org/doi/10.1145/3394486.3403176) | + +### 2019 +| Title | Venue | Link | +| --- | --- | --- | +| Federated Collaborative Filtering for Privacy-Preserving Personalized Recommendation System | arXiv | [pdf](https://arxiv.org/abs/1901.09888) | diff --git a/materials/paper_list/Federated_Graph_Learning/README.md b/materials/paper_list/Federated_Graph_Learning/README.md new file mode 100644 index 000000000..0a806e2e8 --- /dev/null +++ b/materials/paper_list/Federated_Graph_Learning/README.md @@ -0,0 +1,24 @@ +## Federated Learning for Graph + +### 2021 + +| Title | Venue | Link | +| ------------------------------------------------------------ | ---------- | ------------------------------------------------------------ | +| Federated Graph Classification over Non-IID Graphs | NeurIPS | [pdf](https://proceedings.neurips.cc//paper/2021/file/9c6947bd95ae487c81d4e19d3ed8cd6f-Paper.pdf), [code](https://github.com/Oxfordblue7/GCFL) | +| Subgraph Federated Learning with Missing Neighbor Generation | NeurIPS | [pdf](http://proceedings.neurips.cc/paper/2021/file/34adeb8e3242824038aa65460a47c29e-Paper.pdf), [code](https://github.com/zkhku/fedsage) | +| Cross-Node Federated Graph Neural Network for Spatio-Temporal Data Modeling | KDD | [pdf](https://arxiv.org/pdf/2106.05223v1.pdf), [code](https://github.com/mengcz13/KDD2021_CNFGNN) | +| Glint: Decentralized Federated Graph Learning with Traffic Throttling and Flow Scheduling | IEEE IWQoS | [pdf](https://ieeexplore.ieee.org/abstract/document/9521331) | +| Differentially Private Federated Knowledge Graphs Embedding | CIKM | [pdf](https://arxiv.org/pdf/2105.07615v2.pdf), [code](https://github.com/HKUST-KnowComp/FKGE) | + +### 2020 + +| Title | Venue | Link | +| ----------------------------------------------------- | ----- | ------------------------------------------------------------ | +| FedE: Embedding Knowledge Graphs in Federated Setting | IJCKG | [pdf](https://dl.acm.org/doi/fullHtml/10.1145/3502223.3502233), [code](https://github.com/zjukg/FedE) | + +### 2019 + +| Title | Venue | Link | +| ------------------------------------------------------------ | ----- | --------------------------------------------- | +| Towards Federated Graph Learning for Collaborative Financial Crimes Detection | Arxiv | [pdf](https://arxiv.org/pdf/1909.12946v2.pdf) | + diff --git a/materials/paper_list/Federated_HPO/README.md b/materials/paper_list/Federated_HPO/README.md new file mode 100644 index 000000000..caf077502 --- /dev/null +++ b/materials/paper_list/Federated_HPO/README.md @@ -0,0 +1,25 @@ +## Federated Hyperparameter Optimization + +### 2022 +Coming soon! + +### 2021 + +| Title | Venue | Link | +| --- | --- | --- | +| Federated Hyperparameter Tuning: Challenges, Baselines, and Connections to Weight-Sharing | NeurIPS | [pdf](https://openreview.net/forum?id=p99rWde9fVJ), [code](https://github.com/mkhodak/FedEx) | +| FLoRA: Single-shot Hyper-parameter Optimization for Federated Learning | NeurIPS workshop | [pdf](https://neurips2021workshopfl.github.io/NFFL-2021/papers/2021/Zhou2021.pdf) | +| FedTune: Automatic Tuning of Federated Learning Hyper-Parameters from System Perspective | Arxiv | [pdf](https://arxiv.org/pdf/2110.03061.pdf) | + +### 2020 + +| Title | Venue | Link | +| --- | --- | --- | +| Federated Bayesian Optimization via Thompson Sampling | NeurIPS | [pdf](https://proceedings.neurips.cc/paper/2020/file/6dfe08eda761bd321f8a9b239f6f4ec3-Paper.pdf) | + +### 2019 + +| Title | Venue | Link | +| --- | --- | --- | +| Learning Rate Adaptation for Differentially Private Learning | AISTATS | [pdf](http://proceedings.mlr.press/v108/koskela20a.html) | +| Robust Federated Learning Through Representation Matching and Adaptive Hyper-parameters | Arxiv | [pdf](https://arxiv.org/pdf/1912.13075.pdf) | diff --git a/materials/paper_list/Personalized_FL/README.md b/materials/paper_list/Personalized_FL/README.md new file mode 100644 index 000000000..08e18b345 --- /dev/null +++ b/materials/paper_list/Personalized_FL/README.md @@ -0,0 +1,38 @@ +## Personalized Federated Learning +This list is constantly being updated. Feel free to contribute! + +### 2022 +| Title | Venue | Link | +| --- | --- | --- | +| Towards Personalized Federated Learning.| Transactions on Neural Networks and Learning Systems | [pdf](https://arxiv.org/pdf/2103.00710)| + +### 2021 +| Title | Venue | Link | +| --- | --- | --- | +| FedBN: Federated Learning on Non-IID Features via Local Batch Normalization | ICLR | [pdf](https://arxiv.org/pdf/2102.07623), [code](https://github.com/med-air/FedBN) | +| Ditto: Fair and robust federated learning through personalization | ICML | [pdf](https://arxiv.org/pdf/2012.04221), [code](https://github.com/litian96/ditto) | +| Parameterized Knowledge Transfer for Personalized Federated Learning | NeurIPS | [pdf](https://arxiv.org/pdf/2111.02862) | +| Personalized Federated Learning with Gaussian Processes | NeurIPS | [pdf](https://arxiv.org/pdf/2106.15482), [code](https://github.com/IdanAchituve/pFedGP) | +| Federated muli-task learning under a mixture of distributions | NeurIPS | [pdf](https://arxiv.org/pdf/2108.10252), [code](https://github.com/omarfoq/FedEM) | +| Personalized Federated Learning using Hypernetworks | ICML | [pdf](https://arxiv.org/pdf/2103.04628), [code](https://github.com/AvivSham/pFedHN) | +| Personalized Federated Learning with First Order Model Optimization | ICLR | [pdf](https://arxiv.org/pdf/2012.08565), [code](https://github.com/NVlabs/FedFomo) | +| Exploiting Shared Representations for Personalized Federated Learning | ICML | [pdf](https://arxiv.org/pdf/2102.07078.pdf), [code](https://github.com/lgcollins/FedRep) | + + +### 2020 +| Title | Venue | Link | +| --- | --- | --- | +| Personalized federated learning with theoretical guarantees: A model-agnostic meta-learning approach | NeurIPS | [pdf](https://proceedings.neurips.cc/paper/2020/file/24389bfe4fe2eba8bf9aa9203a44cdad-Paper.pdf) | +| Personalized federated learning with moreau envelopes | NeurIPS | [pdf](https://proceedings.neurips.cc/paper/2020/file/f4f1f13c8289ac1b1ee0ff176b56fc60-Paper.pdf), [code](https://github.com/CharlieDinh/pFedMe) | +| An efficient framework for clustered federated learning | NeurIPS | [pdf](https://arxiv.org/pdf/2006.04088), [code](https://github.com/jichan3751/ifca) | +| Adaptive personalized federated learning | arXiv | [pdf](https://arxiv.org/pdf/2003.13461), [code](https://github.com/MLOPTPSU/FedTorch) | +| Lower bounds and optimal algorithms for personalized federated learning | NeurIPS | [pdf](https://arxiv.org/pdf/2010.02372)| +| Personalized Federated Learning With Differential Privacy | IEEE Internet of Things Journal | [pdf](https://par.nsf.gov/servlets/purl/10183051)| +| Personalized federated learning for intelligent IoT applications: A cloud-edge based framework | IEEE Open Journal of the Computer Society | [pdf](https://ieeexplore.ieee.org/iel7/8782664/8821528/09090366.pdf)| +| Survey of Personalization Techniques for Federated Learning | 2020 Fourth World Conference on Smart Trends in Systems, Security and Sustainability (WorldS4) | [pdf](https://par.nsf.gov/servlets/purl/10183051)| + + +### 2019 +| Title | Venue | Link | +| --- | --- | --- | +| Federated Evaluation of On-device Personalization| arXiv | [pdf](https://arxiv.org/abs/1910.10252) | \ No newline at end of file diff --git a/materials/tutorial/KDD_2022/README.md b/materials/tutorial/KDD_2022/README.md new file mode 100644 index 000000000..04026270f --- /dev/null +++ b/materials/tutorial/KDD_2022/README.md @@ -0,0 +1 @@ +## The material of KDD 2022 tutorial will go here. \ No newline at end of file diff --git a/paper_plot/results_all/ConvNet2@cifar-10/Ditto_ASR.png b/paper_plot/results_all/ConvNet2@cifar-10/Ditto_ASR.png new file mode 100644 index 0000000000000000000000000000000000000000..e982615252a4bfbf33773666cb9ac31b250d1af0 GIT binary patch literal 241924 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 z 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 literal 0 HcmV?d00001 diff --git a/paper_plot/results_all/ConvNet2@cifar-10/FT_ASR.png b/paper_plot/results_all/ConvNet2@cifar-10/FT_ASR.png new file mode 100644 index 0000000000000000000000000000000000000000..03114301e1e9ee899898eafed002632fbcd446dc GIT binary patch literal 225949 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%0Alv&a5d# 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ΜCnSd^o1!RWTEqz89}$a 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 z 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�E({H?s7-Ig$-v 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 F{{hIHz_0)S literal 0 HcmV?d00001 diff --git a/paper_plot/results_all/ConvNet2@cifar-10/FedAvg_C_Acc.png b/paper_plot/results_all/ConvNet2@cifar-10/FedAvg_C_Acc.png new file mode 100644 index 0000000000000000000000000000000000000000..25f0fc1a5006caf6a388e009c410aa4fe51bdd82 GIT binary patch literal 155526 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⁢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 S@_j~Cne^K03H7foF8v#-jw@&Y literal 0 HcmV?d00001 diff --git a/paper_plot/results_all/ConvNet2@cifar-10/FedEM_ASR.png b/paper_plot/results_all/ConvNet2@cifar-10/FedEM_ASR.png new file mode 100644 index 0000000000000000000000000000000000000000..3144b33278804c194c175c34aebf3f5c25ff1edb GIT binary patch literal 241160 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 z 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 z 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%0Awdk2Q@D;i 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�a2{Rv{%|2Mp3OEyQSHm?+?Can(uC3zxY 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�I3qP? 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∨twyv9w2%G;r&Ux>u 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 OGYpTrB!49D>iyqfIW(OB literal 0 HcmV?d00001 diff --git a/paper_plot/results_all/ConvNet2@cifar-10/pFedMe_C_Acc.png b/paper_plot/results_all/ConvNet2@cifar-10/pFedMe_C_Acc.png new file mode 100644 index 0000000000000000000000000000000000000000..796a6c18b5a8e777d8a1c6bc5526f4c2cc3024ad GIT binary patch literal 163421 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�Ic_WAXOL42+XKkA-PlqQE+)u} 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 z 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%0D1X0q>&=ODKq)$2gq?zPzELgta!!#R(|)% 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�X{ z%^ukGJlKEA0}d~$D!z7hixk)H~yPe|G9-U8%{JUAZdDzxQ}hoNo4@ zv}(zN`x>@CE*-q!^EE42V&+S|Fxc4Bet)tGWi3anAxnWD7Ed;>1rRqR9a#omttd=U zx?$|AjN`qeVFTNA0X=FO58I%y3ljUbA6iMb59_UkbT{ft?=zj@tSd*K$WHd2yc);T z+k<+4B08((_QjE-b4m!Z6vi@mpL>sHs| zTHd~&C#VEa9}t82W90Z=Kx~@rMv~l*2$xQuX*8QRStt?a_m8FAR6PU$WewhPBs&+xDpp99fQol zf@MIupHz+iQhJYxcYGPTK|4I(dg}P*yqf!LdfECf3k>wsKHrZ z>afpzEJ@u!C1Mazt88VvcE}FN?Cq12%gZ5F7-f9AVr${>nM}Lk&`}`y-Th^WpY#Vg^Y_$SXJTOsTFM zjMY7?7^nr<)fyJD$2ifYiPD#1M(h8k-6(gW^6D!>^wk zHW;){iOciP`1thROFB9s#G*R${HMbtnIef5dj9d!co)_YXh5q4*q3tP(7fb$nLP)U z-SN3$vcr*1>8e1R{jcX1SQwx~`Qvf+Z#PjHm4%7WD}?>%xM?q=2*6iM9x*XJqH)K- zrxS}|RVSQNi9fp-(wNS-fhW^v5v_@_eH>2o1Ppv>_X?@(cxeo3x!n1K!`VQ~_X~B8 zT)x(q6wM9mPXa+yCHZnLrg zZnboxaCTA>pGUq4Rz#LioLRDDNzQcFgOkJI3E4kwbJSE-F~w&9#iU;izeeCZ#I+bU zbxyXhtnwI2znG4ye4NN}U60YF9@zzC+;v$pd(P!XA5$Y!ms^ah!I?j=Bu+sU1gg86 zD=Jjd;{w8X#V5|2ZYL`oQDUvzsxcsnW{4)(xr(p^WL3Z5AX5jDMBjRp+5(VdQpY3Qo7?ZO zuGsU`^JRVcgYB8-nmS8u0Hi=H10?3}`Vhd@h$ha?s795DO(l~3{fGdtV0*hmqa-XT z8wWW24iYiGO@Ok-Z5W%7Oce2#mTaezG5hHw2?pYb2pIhbm?bRV5NX6&w>q3lDEh#q zx_^+$P?ukA+Qr4Czi6Lzl>N`^>FIa30Awamo6s_!+x_9W&1w*ZNCRnY!3>j1782}W zZ`daAc4g^4%N4#AdMoR*tRfBEryYp*Dh|?G5`7WlMa8h)JQg6Qy1Jy@E@$=Pom)@% zD#nIXu1?}UHhM6!JB|!5&S<8Q$n+;^#2!N&h_fNTJ9CV1!EIV%qgemucfl%)2iZv1 z9pU`IrQa9G@_?oT&5Bbc>-v-mw-FRzx9mH27go}b$N>kLH#H57px6GWDD|RhpHO!I zsE4-IiszP#5(Jfp)@Jzk&PA(Rx9+N3plY?`3_#{fE=foBLom*kI}BBc>VP@Te-8?P zb4f5cCz^N!;Y6q^zyf3EOa-fYzWBa@E!>d16%n(B^a)UQjP`!hJQ;W5(~9{10A0Q1}Nsy=VT=e246-Ep**UH0n5@xVwTXo2UDT1tv;trVZ67EboeDvSLi%5x&_MrQ(^$DqN2i*CUShf@CXyTsJhL4Dvg*n zqcR4UweOQ3hkO_dpbX7pwsss$P4VoQ?_cki4L!pt=;qZLCy9Z<=tm9a3h@i1U7LEw zvnDrlzsdb{J1{pTr&y=k1SCc^@&Dt;8*m$Gc#LZa6#RJv*Sk>&_CYG#O6}CCC{h-a zr1Iw4ZJ$YJ8ZxvB1PUhZk^#x^ep*sFYbZzX;RI4S{BVG8Nxf=&o#V6a)hGnxuyHpq z{1f*fhF>s(uCm!y7GpezPPX3f=vLI}?MTw$$Ta=CNt(+5Ulnq9cc+z_J?WKXqvV5j zW%lWjXGzL^;e7gMIN0)GW=aGfbe>;GfDCOZDa}19(*d>Pk^xeiY||Geavaz!=8l1E zKM}3=%uikD*BOa1_VvG6LF8%PEKf-Nm?JzjO@(+o+DC~R4wiE*oPiP`$QkkJtBJ}g zoJnPgR~P0~{6t)Mhh~Y43BTu40M>vH%zo{ULoCt+2YFhITJ%-qcR@9@0uUK(TEME| zIgrJlNAMx|-AgsCMg@F)wP~LodGhFQsf4KFtTHs0F&w`k>ls3`wjyohOT1U`6Rn>#Pi zqZa#TOA=0?OMk%pk1B1&dBjI8zbZ+;VZ$Q=g6?a`kyB8pMX3i*r4AL2JJlxGV%7~~ zP4XN#4lg>cVcb<-<*?{eo$SlNUZWQY#+yGpZFRieYsA6W7at{+JL}d7vS3R|czD~( zWmHc(>aX+j6#}Khn{9c8E>PVOE?wNj-ICZ<6ZBweYO3LFhCVlWGU?Mz#b;wX49tfs zzw6Bp98{nud+(T^CKFOqy`;3no0?cRWB$I|9s2q2ZR_vZiViU-9O##=EYZN;5x&v;UyjInox&`X8_3cK5hW#m#t!#KFrNrUJ0TFIxF zQqa7kKN!wD!ib)Bt)`ZFRMhyeg*gA!q|DtmvJ&HWZE4M{_%Dh>V=etTf;Ks^PECO# zPC<^nwvIthlKnJNg1$a?m`}P-t?_1$ZpgsVIg2ku76IYmU`_b2Tdu(7DL6gp$SppP zvHx@b)mhbIM#pC@e%PhL^L1x&XqeFU)yzC-(ST6Yu+`12D!o$9(49{`scSyBDiQ;W z&k1vWGW11y5)WaQE^rLgU}%%WfrQ67s};aXTJP9OX7&V6#eqoOq-*r`?_85Zzu8^z zuClEn5LMO1gA5?0Kwb4@JeJ#N7a^TC%~nuV$s40M?{I6l8AGTFCQzMCNJxNqb;QzD z|3vxt_!!DjC@-l4N_Gdc531?)Ewd8O~LVohdT3HNMm_^%rc*mLq`1H8m zz7Z0oeSS(RD3}e3@P@ZXYt0c`Zjy zS;yzTU7nv&2QBy)deTz5cOR8SJhsjN-3YJcoiX0A@VL2pEj%0{3qM~#h_g(BE3FHT zuRvI(Ko9OHLHsRTxGUhzG)x2J(OWq$ukEi5UZUUSMB}` zxe+1J5{_UQ$r-LjmnZYRAdexO=`7oK?^XuGq7L{lB8ABaq#U{pryW)y%&a0|MmNL9 ztd@+ue5TU_hSSFzqGY%yM22%%PSr-J^YC)-#|Y)kFiBFz+*SL(15kq`WeYo>A^!mj zv?gf}6Xl9MgE``pAQq@VTQp>=NKOr0n}OaEHyhhk+Dj9MNx&V(P(m}}KmHXX+B8A= zE2q%|)}ytQRMxB9ezMg>jPW;cxgd)}lgV`Z8}37gp!F($GCn97O6%mO07@TXI)Igp z%uM#1qkbZ^kzB`K9$DHdYbZgTX_-7uD|$KJs(!V{U`^K1R$OYX(|lo}iKn_~#8z}T9f2$hB;*4IZ3#idjdAEY` z9qko8;qOI!jS-!L*t}kdUR2#8p-0ABR~L4)4-ET9T#Oqz=x0_NHlMR)FKcoQSR?VW zvQp{t#KX=Clt{vr$%~zKK9Y%M zF*8tDYbALB6S41kfEs73_E*8X_x?uUX19gm1RqEl&_NqoQ*XPcwLFDi${;9X49yg` z8Px_U+}qFdGb%8|n9=dNu63KW?_4Dd$smx+hQ}OU0=77H!J@w>VfLKlhR14cZAZtY zn5Z(E)vYQuKCP~jbd>w)^KrekX<}z{^lUd*_R@bVb>7L}@XC|Q;q#OiGdUpsfs&t{ zD?x>rG+vV%J6INJ#YuvU8i6#>mhn;AW*L1_qp5Z@U{EhWA7~CxVB!tpO@O6@S^xbmC^_&Z1bYovjq7qvkd}iWd`g% zghi#5eZcdm@>-9fZF)Mn4fK6zq-09!b^`DAW>J;$z#o%DTky?q|Ep|0MwdMP8`a@e zjgMxTD=Vkq;CTOwmTCKmgd@xTuKEbi+THkz9;P6}nwpaF*fqKzX!`MPI`k9to6&Vl zYcJG%nu;m5%USTNe_tZryY|}AZl{mp`OzB_n5Rx+d>BF zyURf}+Iifp=AA2lo*`LLqf2FH3Z{1$)1n8Oo+}4TmZ)9)R-jM#&GC^~1!n5d?M|>V z{PzLxF&!dz=?{G6_;5L}8tM~!ZK8N@4^#EGVZ5P)D&x?6qv*lV@3)M=hExPgp^f_a zY4jZGg~A_URp?6Rq07b1tpcG4VpDbZ?keMR=Xl^tsI9I2zM^8Ltrt-Vy$?-j{I6WO zQcX|qX>;=_&l@**Fv`V=4`QWt*u^of{Z69uzl$B&Cl_x)UpG`bt3 zbP?x)DAdkzXlk@|bbM%PGTgp>`^pt7RM34?hpfALvYxh^*!Go0%t^YO%tEIm1owP$ z-I>=EF)QaOj3%Hyo4Tp7MBO!`@OM=Jyv-%`++?iM;w|4&EG&L&|C#F}?{}%nc+GQY zC{|cfQaPoSmBcK41k+@5z=gj)w+O|V9>*-|$Thn#*t(;wjaxvVU$gKz&dKzd8Pwqf zyI}^O1%&)W=z2fFaFo&hAiti0L4-z<4izp?=g}h|l{$D}I99oXKR6g{K6L0%B19BP zGY`-%bW}9VU`58CKcYH5Y4>9jWm&xz-40ptOJ7Spo#ex5BlHfd$J!wUHO_I7Q#IS; zt_|uYpJWQ zrq=pP4+$&jt)fmJc||9{#mXv$&K^CI%ZfGTSOh70`~k^7t)9XlV!)^n}42w--+lPdQ;Os6!>-;o0xQi z`1g^~&@~#u@sIIPWb#2f=6HFZ>YbxBzg|h#o0peIE5+SN9n4U$?Mb~tqH>*U@=aL+ zNFylCy9)flL{#h7C*V{uV{v(c^M6AyX~^OSWEBh(C&&7sHuj8kXvm$TFQn*g^ac#I zQM~Y9o{R>{c-thABeU|M;lU@BAG$#8{tWcM0lW4S(pFb6m>H)=VU99}Sz%ul=4M5F z+bKQTX@^DJ8pt3<&ntr)!_u1wRIE$hE}7UfEIpTqT_`Q}1r4EK3WLFgi>R6gzQ^y6 zjQ7gXZm)>VJ$@Obc{7xi_k;H#KJ;z}=?B1GfY2WxL)T<3$66Q&p91rgd=1P4t7{TY zqAwH1Qrc_rJx`lR5|ZY@TFI%8gX&W8A3y}dO>cr2x=PG(Zc)*1oxaGykuIV+(AQYr z@#+P06F2jpm%w0n(O>e%$&-Gre@h#qVMEA^ebLL$lzh!p{q`JD=TVHjz&(K9af+oqV9$1Ib-c71O~r%%|6@SA4!qR#vc(Av~~`i5@VQn;Y>`QbG6f7=Gp7R`ot`S1lT0WPnQ|R&`7EJz=}{ z$0UbFm$IR2sgIqo>z~xVoDLS!_Ce-m=dzXZy&3(J`n?1jdPqA*PZhamy$wkTPy9^@ zyO*y9*P$;vW`s|mvR)em`jCCni7L1e+FSAHkAh;6@qVlk@~p6wc66ba-o(JrMWjvf zz)6@U#+T%r0vJRCtL^|C>EfjqGf*>=~0o+xh{Q(BQ=5nuQC__+A6#?&GOO9xt6{2{USthtz1WOv(T~ne}NHj}lDgcRt{J8vd~3TvL4hpXgQQsgtKg za0A&N>xH)n25CI?@$>teHcFumpcMB&%Mtx`swM*mIRT#}=f01>y`JFDFndVJ%M&9j zY6T*Bf|{&Zbusc2%^xbSFF)!SY)K6}vtiftY!{HWaHS z2BkZzlBt% zBn5%RSZ~Q7wjF;v$<0}`>^rY~sO^IT3Ah+c+qneX(SQ~WIZ~im`MEL|vQD)SL!Msu+FCX!r~H*=Nio%tyCUST2lN znoc^-#Q>^8rax0j@|}}&GfUlsI6!B~p#%9lSGx(p6o0Sr z(q+v*=B7}G>ch%>ehZ*GG2ailDL04nE*lSpv%{n%w_shpFua2$rj!%4tLLL0r2_bD z58F-Kwxs}`j>RLOj*+PYdTxoB)ve@esU5?R44J3u(WBSNYXE#BVsH$b@jP+{ozzoT z3jX}0vuMn%ee=S`pf7J&(E;Io&z^|!m6b#m8grTqKm9CAeKPkYkqc9Gex4^7B$384 zajnW9Zx3~W>x{#nfzwC)gFx9JxdU<2^q!vG=y8lRFU;$LLJj~p&>whE-_LW%Jp2jO z$E@8>T=~CYJGT56FA}lw$$nAsTO)5aR_&`y&7q^k_H04g(VP!nVBmuXkN2D{{)K68 z%9^c0QKVG{SV|Rm{R!9_Pi$I>jbWj34C|~G)@r1y{}sl~2QPeyLdv6zoHEm~om*H~ z7&_S{Pb1I1hHM4qzE1yCu3otk3T=`p&~-sZ-}y+MH6Gvd^O3dUvB-4Kx4!c&wpAi0 z7nnv}?^f@lG(7lM^P#l4L&jM+SY9st45z4@SGeBVjJ9S5;|^n{N?_t8pWDR;_%yq& zh?Uz!bi6tuV&+SThHVfLEWVC%01j1fp$sEx=osA+d=wB!8AO)=4Xwt`^$x_gjU3z1 z(t)>YN=Q(@U4+EtT%^;+qpO(U0~(F|ZcF)H3>sf~(h(;eR2f^!CG_zo4gf}U8G`qy z`u#rjETLogWe63ZPbVlWmMzCknL@)Z@Iax*i`0`1EW{GGp97m(zR3w_u+G)iJp3TJe1@{oBKzNFG)7+PQr+PdVW zuUx&l7LrDp0D*~vJ@na<13-S4R$u9-M&E|Wgb1-;hD>5xPY4g(7PN&NQ7N=E*A9&ebh} z+MX*n?RV_anjUz)mOxqq_YtTJ;+bygK|TS2%0D`R*nXyvDMkTNKO&be^0nvHC8T;GfkV;P{9_}DVg)D#OU<`ea{M!v_&jNYCZ910Gz}oSC z>Ta;@0jlG;6I?&nFVKQYP|-!S@$Zo}(D;JZ`6MeD3I`|SOZLWr!v)jC9Kuc8H6HOy zu{E>Kpc)9oyKR{l>Q$TECX)bwyk{JwjuA?GWn_xhHKjyFD5jB7RGJutB@s5T*&pXL zW1LfZY)mcJ9Ut}V{?Zg26uF-;lQ@b?fq`gB(j}i%!&V%fie&8WSJo^v7+9mNt zpC3Hd>o-HZ$8AalE=+&pCI3?Io&`mwSFc?gtv88GfR@W~J8u-#a3HNZA7@IEX_aeA z=iM;IJ#O_QTg&2W#wQ@}?zZt6O82X z4KS)RTu!RfrJNJ1JE;)56ABIu;|mr593m6x$_BfN`DO-XC&W%YnjR}hUnTGbB+X3a z;poSI67yffEJEx?K4^U>gF@6e6$R9blE*@TOxt-n7H{~XsX(5#oai48DCF~GJ45NVR zZz;F$V0%X_SuQxh6!k718?Aq3T*@Hk@Kc)awZjS5cuiSgCoGdH$WW9r>>x) z{C@sBLafpL%Im1ul+mv_{)_;At}JStEsY@+n}o!7na>174Y1k{ZHkx|`j{_Y=CLz( zSfOL6enCPoF^isobX4%&3#a4d&Tl%9@coT*a{NQsPPYXPNoJ{Xn11H%oSjixxr%po zcy140Abm0SD9scDf}={y!+G=1hrMrGEm-63?0bIw`gM{L9rOe6^(j>0E6E%81Nbie zBqt_q7(*+Xk}1P#Oc`Fz@rm9#`V~f6%?cGbrR=|;H6HmbF)+g=6RCciJAwTJ*?n=a zS2_apt5w@18nl95Y&vw%vf=TjU1dFaR-{P-Lv{8iVylowg6VV6?*O9CCPrOn^@EhL zfN(w>FodQoWGH=5_9oxd=2cHw-+n(YQTMt&8(h%hEVv~H$Q-#LvusU3e-3Hi`LV&Q zxPZua;3oiD1{CWx*k=cVGA~a$p4Eo7!0wk?1Pyc7IPfOAVX)GvlF`7q2H#?Hb~=w` zTG`6BnAWH+emPEKO2oN?I8yjdC?pys5eYt{y=?F92z;$ibvOvEtT(q{xEVOJk9Iu| zAh#A$I;?^Ec>?>INvu)0P;O}>6qvWhbQgZ*nLQ3YH-;IU+^1*US654JZ2QF{{ z1hP4=l@RJMaq1z>rln6@;b77o)?&CiKcVne$z# z@6t5^@6BVr-xHKWFyzw>s=P?M1xnvlvcGNuT)(+g7^T1O){O`+ro84bB`SXQJ~W{o zprrRM{}eGAos$a{46Rf+u|IM}e}I`O--!m+QpqBe{4{={tk+<9=5Dlef(vC{@Qyri z+r=v7GH#6HIaV&PCvt8G*KCPXzv$v)H0^xDK+WD#y5|QViF^GZe=mpQ4t$a@u*D-cATw!=Ue z?eSd4Om_y_i}ettEvuJm>)FM`8e}To?$y@H{&9opuCegjn#oikN|N+ne8yfCY@M4r zmwxzc<5m?1ROz-?kuUej(Ap@9Z$%PO$PDT^1%>Vct27|kWGoE5_s>tO=GxJimM|kD z6k2=i*g1pMTQ+YtW$z$}XQt9y_wQ=}zj4n{?iQQw4g*BGTS8QjJW4kx zAcBN+!+-5_4&3keXN>QD?;Ur%&v~95Yp*@moO4N?iQV4%(qF8>d<_wJA8 zAQ67E!HRxy={&!N{bdBiQL97*PFIk1z4b zZ;NCZ;SV@WjzwpfGceHectL7^y<;XH14HnBl3;7=$$0sUXm-0)&@e6Ii>sLXP{+kI ze-39-_ZElLx<`=^ilM!~f|)YLq{lq(2|^_hhW8d<|!4b{t(Wypf> zfzc;>@V+XNkx>b$@JK>1(*x;}^In>5O1|z(=1BFeUs3lRr}}pIWi0{ha+l>Ef#h5J zjBAe2(|p<82)?+)U~B2fz21m=mqkj9ym3xFA4&hh#*$cTukxfB&no6 z4MMHdfga#9EWl?dnI}#}m95rnliTg-GOe&?oHp&oV=N{U=9hW_tlgbL+~*zhCF7EY zf&^(?D_nU{*<}BfQf`1J*@EQ(LupSRce`)M{-~!-B|Ig71H%Q*Mt5~yw-uzp5fvd| zlehr_?rWUEsRf{Aq{XEJAKjQ50UUf6&?7`gFL8mlZFd@R3Ex)`OGAt8EV8-_Hy%8N zAuVv4H>Bo)8Wd~rusMTbDwxWqk=3y-=IkHZ4>ETs?ov@fo?DiP@R$gi)z$90CCjh0 zU)92M8iBy&8!Spb{z->pspPBL zISEuj3W|l2(uF!JvG}SVfobUMby{}NH8TPit*@}s$VIeSx{JIf zk$)dr(amX}-uB*a6ED@keB1}0x8j!~pFAOZTdKJXG>!ncoUbcY;j^E-9zNP6a$J6< z*S?pXntfwQRrQe}fXe>1?@xY~Q z4?JtolM5ls$xeVM13$m0VbogFR_Wox4@l*?S3W8S1R;8==$4t=chA-JV^Azy6#hWX z5!NX8Ra6KDy^Ccwtd@XNWl8DJz((jvVrfw%c9Dt`Icv;T6kG@UZ77(%I%SUq>&&&G zy>$s<%=l5QfBHfmBP<8COGHZRcN&X>K*k!(18@Q)iC@IS4~>tH*W^Np#MhvNEMz98 zE`SGfV6vC)QI`%bXN<@nx3~VQLH$f2FJx-p(#65#xNbfax1F_5jDW=hhv{Ve&oR1t zaSZM0#yf%30y?*NV%5Q48EnPg0okTW<#*ua+mMNDd{v1*1Y+uAF!q%Ms}1BuB$=0g z_6pL|MyUKh#X!2vv!kB{09ztINo(wnS2WiVcRRs0{Jl_u82*KuaK*c;u3;bHw zXUH1Z3;;(KwWgw?Qh0M~AGPZAH~kYdY;3J?137@Bun~MXs$KN6!u-wH6UY=)y(?;5 zGfBak@jYm+ypOzMkN+DA)V-gdrxIFILf8#`cUO+$>(;%HlfzK905-k|)ft?>DLws- zXs92!pzwpv_h{2<0JQu@9Ooflg6^dpK(vQ;0RP_R0bqILE>YD9ppC=D0Q?;45|}x+ zgb`iG&LRl;2)Vo>a74jFNnV4ImR91xF^G9^9a*!bzxr(_<_(~jmlY8nj+!FgM1=kd zaJvU^P=zNM?k8)Y=LQ=rUE1vjQ4F+>E+@VKI|b4@cIy~0SFCz6)pdDl07%NXGP9UO zP$*|V_`CugMT@HPsy3um$O7Q6fJh*S0rwF@0Nh%a(}>+2hx0Itm(rl40pPIU)g%Kb zF+%hREt7VjSm#9(Jucmipk9kgO{DHsA0V>!PLaC>5zBX^m<_gldit}VM6L44k!rrl z1eVb$wgmMz@e1$qRyA01oo7tWoF+YoT@0uC2FTBSp-0=X&{`6B0qZ-FgAX22-wy>y zaL}MmuDwnL$0npho!VP-q{(7D$)8^wgVe}(AzonF2)z14sCfX{Vh!F~^&cdaU=%@e z0fFt}fc$YWOU&uf{-D6u%)kO9RXeF-wr?&xj)~-gLg|H?_h3iSsg>t~SPa0B$U+q> z(hrc&Im7mDgFaB`_rMPE%;`v{u(Xumr+jRSf|q!#zlb08v{sU%A~?)KDh!o{+dr-7 zH`(x2vT|`kmCS2{e`Drj1MTK2)}GTKj+tEnj!zKR?96zDSH!dbgwI3&<-b4<4}dD{ zpA)plCBU@uM))W(msg}S#Xa}F|3cp-c!Znv{QSh+>(W|)#-TMA^ba$NTn_%K6DYPf_X1EE0x_1=VA?3v%XEXwRoY|mIu z-z+{s^v??TF3^|YUoA4p8RZPLk!+A?tr%WMEJkPh6Z-wU|*f$PW3t(zwD$$l_3)^mxry^rLy;`?pD&}G0SAVU>5H<y#Z;vZN)0ldRn~%W+8u_$+qUh$hjZ}|*6V%UusrT0aPS2h; z<9FYyWQI#dM;{*m8t-KMiQ|-RD{r8$bU)!BaXo>~$$L=ruJON^#`%bU`An?QgWSO5 zr%&rMHfTnbt^zXzjG;vULP%gK0-S=^a!5F8D-J{)+Y^;z;Asot{z~m0eo0|TZ-!WY zWBz6RWNC(9GvW97tbPGI$K}}+#nr0nD7ts%zp?#JDj!XAW*ZARdYvabp>TYx&1L49 zx{%SrAAU_|Jtd9A87ccTqiJl-ywB;>Rdp(bk6}U%9yCSV%4A2)uE&$P zb88Uu|C`y^+SGOa_vumx*7(OSPv%N~kxMI=y$p{AI`QS z!5`ch8XOvc*d$08235Q?i@^#>X=!`sMAmD}%$(t0{U{Ce=JbwLWqS5$D0Y{&J5E0i zXYwJQIT_bYP5oA$n-;A{_PS{kdEsc46LT;C%* z{DNH(nDO8|hB*RXjQkB2k=ZVaECBnXa(r?vFYLYgnvo2;QB|Unv3M6m?+6_q>;~Ej zC_rkow_E_VXe+fd{T%XN{AJ5&jaBs(J~B4j4<;_(I*Ge%z&u!6Gprv@D3RY8vMVi5 zYOoB4QZl4m{6aU1t$%6^Y;4>cj_RLqkPo=D)R`8UuXEEA`nvY5@lcD7{0$O|mNGHl zWL(K)bF0XxYSO^y?1Pzly%Ec8bqlg5d*>sVOJCL#n)YId5vv6`F#=}c3@T)#+)5T( zyNzC7-hv2RDBqiOq&vx;2i2;#uP;0Mi6Px^W{!mO7g7(udL{Sp!>XBMKBxshR8M2m z_18No(!WV6rt7zhV~No->V2nfBql;H;2I} z>}1QclLwpAx$omF&k-|I%dqwFJ>FoCFOVyndClHc2f`URoVcw|#-BQI83blO{=;8b zuTr4v4i#{5Ou^G?Z9ZW;{UiT!pTqQw#dNEitZYyYql3Ym+rqP7M~2QEB@c98t8;~n zRRwN?LzASq_;l%b?Jbone}b_nFgMkhj7bK-Q&_wrcaXowfz z@?HHt$ky>ELxWymt9aAq`BAXEm?UIYp4+p&VjnP$VUXKvEu?}Y$gNRehe53sj796~ z>suhBDe%~KM;$;=r3H2cRE-O*nV5n2EQ

    _LbPQgUrwx`e9u43caVR`z9y7O1PqJ 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

    58wgh<$~d7w^6!F@sm^=PE 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 literal 0 HcmV?d00001 diff --git a/paper_plot/results_all/ResNet18@cifar-10/FT_C_Acc.png b/paper_plot/results_all/ResNet18@cifar-10/FT_C_Acc.png new file mode 100644 index 0000000000000000000000000000000000000000..71ff392788ef1f59268a83a36ba7bed551d2d870 GIT binary patch literal 132531 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 z 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

    {Q&J)jR|t@7 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

    o`)EXvh~rdOE~2^aa_U5dX{!|2Xnodv`9)| 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 M&Yf~`lI@oN2O3-=`~Uy| literal 0 HcmV?d00001 diff --git a/paper_plot/results_all/ResNet18@cifar-10/FedAvg_C_Acc.png b/paper_plot/results_all/ResNet18@cifar-10/FedAvg_C_Acc.png new file mode 100644 index 0000000000000000000000000000000000000000..23204fe3f6e5f6a6adc8ecfe77f2c0368b85605f GIT binary patch literal 155680 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 HZxGd6sQUyqjdJLy84 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 z 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 E0AAVjtpET3 literal 0 HcmV?d00001 diff --git a/paper_plot/results_all/ResNet18@cifar-10/FedBN_ASR.png b/paper_plot/results_all/ResNet18@cifar-10/FedBN_ASR.png new file mode 100644 index 0000000000000000000000000000000000000000..075b7d07418d5d19a1c3923b8c391e97ab1f63ad GIT binary patch literal 201753 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ⅅ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 sXLcr#69bm(?^AG=dO*2- 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%0D0O|WHWT?V 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 z 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≫vEg^3G8}|s-zBLVgI(*}R1f^gYL0ZiSQxu{bdYUV5A|kfULg3s^|*RP804Dy zq#p9FQE@;xKA_e`@8*!!CFKWZ31FxUenk$-og(d%mK7FwaFqa#{J;b(%KS z*IWKCc02HL#a?o0fu<>BMhjwpEX40KmOSD%qKWd1E=ASV)%{Ro7_MY}l6>!I{$Xre z*&P`yw0KA0By?Gmn0vxPix#0;sWa^v1eyN9d~OenS$K|A47~Wit#H~vN&5j>D6ogF z&zqhHkgV`4YT)!Y9V>BJjo$En3|t@bsvpaI7Vu*Bf(dzYxDW^qrS2#Z35o1>jxa z-tJlbYw>3osf04CQE9@(cvFljcR{*$;dGeHdchyFr=~JgZdjEXNvF;W$-Nr;8eCh~ zTx?Lvd%e5FVdD_-ItW}7DLvnO^5P^m0EhW*qQmKuQ|E1@3X+US+tu%#WQQ}F;$e*opqzSO-_4JORM;!8ha9B79=ZPF=e^xUHa4&&qnQqBtxUKD!TuIOGQUA z|Lw@hAFl7r$r+Fte}hdCuiz%wX54^6w9&!Qa^rw(Dahft$BS#3L39`T(nYiaG8s)Z zB#dB(N@F&k15%6<%pdWESOj1Dm$GvOJ#Y(An?fy4JZaW$iRK#@G$@EK%69)D-&L(2 zby0Ot3Ux`D)p~%}1$#vfwW|r}Rp)#C==-xQZsFY8 zsoMFH_FGIA`A~~`5@DBPHt9f;jAZqD&FXpn;AaUP^_bD;Cyr%hXo|r&KtmZ}Q-?m1 zojZBc`jw$NhDo(&(TK^WZn@>#vNvBps-d8Bx^v;cb`949982u+Tdm+Y#*ZA3v1GlQ zM5)!C80{A+$OR=s`4H_T)vn?_c3-YEM-rsMI`4SsgV9Rd5u3?uPj#F|3iyo)p71-P zf~5kHxEJM=(V(`=m@wJ^d!)hw_|sUPDY)zKxz5bmz(OWY|3I6ZdMt;<{OFurFNqE5 zNE}K1WroGfe1N7UqcxTNrhD!%xbhOK5Ck_+zR1G>}8 zTlm*mZVh*mT_E_DJ+!5qtx&W*{X?cvwGCie?OD}Pg*nTPDwz? zzPU?T6kcjTfh-v=g}TZN5(2n{XTw%r+o=+ZY-1jxZ0%I>D<6LSBZ(1_){fM43X*aS z(Ud8H^ZO=Vv_$6dcr~&?)}HJ`(>Ki_;pmK(S#MH-&)4GU5tLk?9!mk@UznFTqCVZV zs=bOXKDp$=s-Z)Jk*UT*q>ZJ36#qd=iar)joR~#B>m&8)x8R!6>Wn{j?AWOVR0a;{ zx2X`ZFbaHH>w%{v8&T^B@pUYlSifxW0wTQbhin%yz_hV#I-GB1+De8c$|E-x^MYFK zX2rnqblf4gLONmItv;?`3`4lTS_$P5}9e=i|iAhZlTza(XSrmt9Uus=z zD^Z#)g*!-ob{DKKOp0>0vXou4o+pu8s*oaAFRy3|UNQ~_eqP{|s#$QR1jb>rwu?u@ zW{?SrQZ&67)}F-IaHK8(WLPbth>6GwAphZkV}~7sEM*_mz6d6BtkWpLlxv^2pF&gD zaV3xOLErjDm~q7eO@G#49#{Vxr(4t`X7#`Bzz~o6pBn%7e>2egfAZfesy*WMufDp@ zn&$`Zm$woXt7q|b?tl_7v-)1C{@yF@U>TK8f#sB=(|9JxcKcB#dsmFFVZ)`TU RjTYLN5#v9M`(XC!{{=DO!JYsB literal 0 HcmV?d00001 diff --git a/paper_plot/results_all/ResNet18@cifar-10/FedRep_ASR.png b/paper_plot/results_all/ResNet18@cifar-10/FedRep_ASR.png new file mode 100644 index 0000000000000000000000000000000000000000..d219ff149fd4d4cc85f861da6b9f8ed69044b6cf GIT binary patch literal 173445 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%0DCnj9~|5?L!u8Nk9L4WpYdk+l_ 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 literal 0 HcmV?d00001 diff --git a/paper_plot/results_all/ResNet18@cifar-10/pFedMe_ASR.png b/paper_plot/results_all/ResNet18@cifar-10/pFedMe_ASR.png new file mode 100644 index 0000000000000000000000000000000000000000..8cb73f7098c8dd1d92e8ce5f7e7fb6dcfe05b8b1 GIT binary patch literal 209158 zcmeFaXHZpn*FA`BYIECy0R(LUBVa&8C28A&h>GM4Dj6hakf65OB0*3=3>Xk3BRK~X zh^R=sWKcvza?UVo1KQ8~&U~7G)qI$GsOoA_?!D*y&JJs@z4qqn$rBPw7P2m6Vq#h% zdE_ryCZ=C6;J+Qe&colx^DcRW|LwCrtZXf3re|$;+ESP4_-SkNvu4(34bQB%)wQ%T zG&AMr6X4s$v);hk+T3dY_U$G=e}K=-Qh)o_J?jqRO%|9RQL$oT;^Uo5QDeZz0e2mj++rnMI~ z{Q4i?yB#_?=RZH*{8#t&|MAaEOaJ@f)5r1u{@AY!H~DLQX>8Q)Yb;aJN*pbjdOS6A z{=Ycr9NX-%o@?jMof~@A5~QALX)89DDQB~EYP5BGRawWC7ZxWTi1KP_X;n{}swEhl z9y~<0Fvk7!(oUT}d~M~H{rjsrcCOWZdvnX%ckdFM7UO4ff@FT$&7vnypSIpL%Zhbc zEU{qGqIf4V*POzFE4R-caNKX^?&|jTWz{hb&^RuUVU5GA+8pl$Hb(0 z{->EL|D$m*uH$=I#2o=+zgq48{jUZieJw|iA5U~z9J5FN!`jz*dDS8m6dG85`ia{m zK8>^|>s*GOckIky&3i#_A?W?@2Y76F*)HTVmZBJ~ZaBCa|LDf}*NIlDW!T3)4hm}L zc)9J;l`92JmX*`*FYxdCzuvWL*KV8d^67b9`}zE(K7IOR>rE$V&+_vm8|E>yn%3ej zZ2G>*r03BkWGwvYx#kx$od%6s%cE?)KPkL;@uH1`Uf#9;r|;$*-@K3|EJdW2dtP;5_p)E);r(xjVXDs;k z&6|&G1i$^Skl!AIhrtl=v0 zA+Z_Hp6$?9Ik9}zs;6(>9MN`|J#X<2zq$Bv`$az=hxv`mOWBQhjB`EK9F>&Z>DN4m zU+>+=vIr$l9Tq-yWsNlJoxW2qS@9n)nYVQ9W-&1_P8I*{TIDsVR-QWhF6C>V9vST1 z?&|8Q?eM>^D9oVf@%PfO8?nMSUe7nPYsi^pQkPMwT=(qsOAlRoz;%EBG{Tx+Zsfh> z(MXfm|8NhN^ZuCM86!q?)P9@qs|)B!WGwjkBva<%@??BA9QM%B)zLA)Cy2*o1hnLx zuRVYtyng@ZLvd4U=5gxY*2q=Vwg&mcWy7Az_1Iwnj!T0uAX%5zJ zIP4y(9DByrds)uLLsyoT4YXH#>b$?VPp&b~Tj}J<>psHLeeVV9H}mqoKcd+E`E}W& zL-RRRy4E7@xO;h(!-HcqZs03M!&`&T-}39b;is(@br}u{A;;DXkB(N4Q^={fJZ%y+ z2UJz>;Igc7@fs=S2Q4ft;D@QU{1x@}TIbK7U$}Is;-fz=$)}i~zO`BA&$$bkpE+4G z34SULma2-?zB15RA9Hd3vhNMgFYdSa{P&6b`-8VBMc3Gxez>=f<@etoU%&p_t?gQx zfBf-BxKd0Y>z=cr4GpI*KA08h>*Moi_WY#=gB`W|krcf+M8a=ulKu|MNwe>M{QHU( zF&fLxIXkob_S?gpoC8g7Z%JKRv`X>Qi%SZT$~);Tahpo7-B}bO6nUHSZ{&4IFIm}I zpPh|35_I$CO&jd_-J-0<@YdEhc4DK1hja(uih}k#k0kJ^r>yrcuu)6hXZhu1OL1_F#x;cNn5_!op^`T?Zk2ib_oqVO zhMeAMxOP1%I5^m_vo5nL%Q@Y)t-_-HZsDdA_fCq7=khk=5~b-fJy`|hpPpcct!Uwo zmVH8wv&_t4WKrs=vJpx#<>gUol#HaxQ!Sg^2Rdpakb^V_dnYC)=+N%$HhjGC_?=Ld zc)hK%PyXTNZzz9)&wPJJKsD7eSTRa9xV<`g+rE9nAroiy^g@b@i*f%?;C?NL#+@7Ye=noY*<)H0D&jP-dW-b93_j(=y}gfCY&v037Oub;S3Pp%O=7D> zNyu>pxI|+sLQaL}lzF+GZO%DATlLwg^Z4ixxb@~OTk@4{)z$CWcGQI37qT-#*z$dX zCtPd8(D?rG(M89Bwy?Liwy~)#%kc~j2{FPWcK7fo&2Z?o{`zi>TC=2-RLR%(cM~0Y z^_;t&&+qB)SGcy4w=~&ItJbdGxozVYy_S}iJ7TU`dLQnE&0Vx|GauiF;(m2L|HqFX zGqbP+x0F1U^4+Q!89LgLF6}(hCsUhd!>h5bga2&B4(-F&bqoAj`dUixxNpME&R7aw z7wXKA!(HoB>!j1s18?%_z6D+M4Q9pp7!OknT6W6SB0x4hKqZ1M8U>cdC!mCx_Og1 zN;6Y+dq&pdVB&p1HGZ3jx?Npu8$Ao$Rz*Ldc=#NuX25zFT}6sv?ekA90(!+woa1uPkf5 zZ&xRi>DVtHr7Cdz_Kt(y-Q7v=ezB@bHZyChxccthvEu=|ULWz>BzgRJS%P7SM^h}@ zKlw!3Ne}*$kz<1?U_%a)RL>{LO3P7z9B^6{SxIf9c{)3vnR_cZx&e_Lzik&mJpIx;vW8$;*4Zx4BR$+htrn_RQhq_x8#t#b_ov@ks15Z*T)n z2<>SqXoYF?r);Q00`7mcLON7FOxE#hfIfx1bcq)xu%R+osb>>VC0jucvsLqlvS2BH z51qO5=ItLCT5Fbg=Ji6G&N>YkM_F&7SPWuHrARSvWwO}=O@}6yOMm}uFx2&FzvY*I zYB>?@YgSGtt+j@gak@suPp+yan?`kJPin4Nv&PoDZxb1)sB;?YZi9z-^oD@kw%&8> zZ!KEI_wCXuO$s`6m7BM2ecRy^*EZDM=s4D$rx2~aFSEZ~O;f?3`>&_c56Ukt6AdN1 zs5Z;)A7WQR#1t^C*^6uW_Ij0;bwRYk4zr49r*q?$atMcdvI(*l^v*%fZYc_yFJbK9 zhG$9{CDEu%7GSsk8_?g6XLd6*baSFv zy{1WZQW;Wi8%J{pFR;=QwmtHAa5g<(B-8U|39G`vHP3Y)rmJaBuD8`u*|2e=`1Y)! z$8fAKZ-V}a^a~7(9;|oOQV5qXVraRx`{?Fm-$2+(u5*;4ziX?EZ|9hw9BNb+p4R(8 z$g?Sc=R`$2{#F%5K&-IWrC2RQEu-?tuq@}%?@u4N#5t{PB=E1DySOY$O$kQLK&Q_eH8wbj1=g4bE6&0qMXk^${5etkF@3hvtzer+T*ujhQP*(WY2CZgUzWfpW z08)vq_l3KqFZRd(W0UvTkl30oP60+>2>3+T9cOVJ}hvx z9_ceoG%OLPW2y~m*!ZRJfmUt0ouHo}3MOq8+sXvP8-OEbJl@);Ys}z!;W9y&Hy*qF z5VoG47h8rvQ1N{j`x~4N=JLZdJ>TcUM<^Glu38iTDSf{lGT-@AYTG=j+ z-@~5X3=A|K-0P;sF5)PE{Lb#8)|l)My_0rG*-st&zZ;^Mw)OtJ{6wH|SbArcTD;!- zI49-;!UTv2jw3Bkn=Dh?IOb2Dn({@z?OM@tPfx5Vh`*S>s{m0cic(#{%X%qfHLF6A zr-%nFaCqGQ&NJHDWr@a0nIqpLGBzTkdLNo%pWGPvsPASk6Mi^3)+~n4-m}hiEH=%y zJsdS@y2PxSGeBP9YRS<_rnN?cn>kuw;6_D{FNu!#$)!ugmPKo%TQfB5TAClYCOI)D zk956U*8lO)GTl+TFHUJNP8gu9c-$_2egWOL%$zE=M^2n5e;2^-Ng;pq-hP{-FqRVB zs#N8tdC01oPVE9V?Nth~v9Y$^xJvUSGbYQ8z&t+EF9&E`8dedaC-lu)Eo0B9UbPD*L1e19v$o44Go2sazC zQ#-dpq)RU*HwcBLAX9V3kF3EjcfLu?zpuUvI^@2TQ^M0HxcKEb|1We(G` zU*83sd+%_~Wnx%A@oc4R^N0KKQ&%zLBY8KZMZ=~%;&MBoipBltIW@SN zqY<$NKy0>ze$MjGpFfwT*%EWV3XhE&RmQAHpR$~@r9zsxE6h!*Y~>2bYR*xj=3o&3l=OOjF@z`^3337udeRA zb*(s^WT(Ya>RIPh?(erbBlv{v4XQ&_)YjiV{*f;6dfKU{82zNLRx zm$|kIK)<5b+H+FXTN`sdORjCtG8kO#W!}|r5UKvYh60YqWUP%!Z3N;Ez-pxkMkw4uTXP3kI$Xan5HRYF4^cErR`19;;#XE4tr3Cj!8TE?&II!p!^x_pX`Fp_OLcQq@0%Dyk~YCIU{S zU7gK|7!*!8RW9UMtgbUCk<4jIq#+ie1H4Z-FpqMQc)%`QN)!rFstPFQ6buYP7cy@) zZ@;XGld?hSXDryyrB1oy@8Vi&Ro)+qRzzGiZ?eo`I@J#XEDS^D{S_JDGU zw(Y9bdZ8yDU4R!w?lGwfMbbm<_Uia#<+wKdG4_bX$3Bvv~w0k3d| z|G*@DWMySNK1|pFO%RYbsf;@eU$U-FQzYzQBC3$vitk3zdg+LWZTBY^~KMQ z`yX#_MxoebB#@&K%2Yaq?x0mjZ;$Zy-vNeq-?{ zm+EZNVC%slQsvjU_Z+2lknyc?4NX1EQhZaA(Rkh)R{GUV#UT|A3xj|;#KP% zq-WVtn{Et~WMsNH1OYQq0b((l2EGBrtiQO&>PLvWLIrs;U*6wU0(w=1iwYn|Yh>8V zAjcN}y-zK(hZ}&x&ZKRl zIiQ|^W1j&PXhiM8QxqN^n8jHsxDBZi)ab`s+mve3_{@c}CPs`s*NN4cvBjcj<24ccg#SYA@V_R%qO`M+su!DfX$Mwl|4|z^L zbklSlx4AFuAPeN7aAV`~ICT_ge_mSH0x(zx5Sw^z*wW^EY5oyY#A_V=rzEy}Df>Ww ze8l6MDT?Bb0&N43dFnL13y_0R?D4%cX@!Ek|69=^_`gl{9r#G;{B`FZ;*^YWfaD;$ z+}Fk4l7%78Z;=c623pLquSkMr^=gCRG!#SM!Pk6vAZ9kKiqp%UroeMJMJ9$CkDfU3 z!4g@_p|2yo6BL1*V`t_d^Y6c(IhB^Z610*QKCrEJ%xSLx z5u;YH0F`JtIEUS4b;5LWzHB4Ok8uDf#qI-_xA?KMg`Bt_j*PF8<)tun*Nw@RU*0_W z^zuq8U1v+MzdT}Va^$x0G__Y_!@Y^-pZ=sGtiZu(pbbaotaEDDZ5>OAYoO>1fpl_v zB2V=w-v&xAY_${Y*^OF*Y#BD+?AK4oAHhMLVi$6Gjpm(+AS8#D5@|7d1hsK;d2n4S z`;@bmf?YD3NrroUe0)?vz4`4z>u9(2x0CGqt&flgUbuL1$#FX?{ICBVe<5ncqlYdp z_VM=iRx2ML>n)^$E=8BOLGktL*DYD29sIIABby#QdZY@fm6(`$OIVe&>Y~2arY95s zwVYF2IjbDz>Y2H%{yrTHa#EUZ6#U!>{K80Ee4%{k$v=`K9XN3TABoTvtUo8`;-Vr{ zG>m%?*v)b*4AB-T#b}0uHpJ^n@OqCX3my*#s#Fl4P7Uvei#v|@Gi-*sPK)%s;Z$)k z;g5nbQdt*r{I1?`>m<|WG*4}-TPkw6O{dwV{ zMI`{2#7`zi4mVs}_8rWmsmh`h7H^S(+g|I$Oj}sNfDx2WFlO+ffXFRQjN58fmjPbQ z7ath{(p5F-!_^g=`fzY+erA`z&L+2;@78(q8@dE4iN*}u0>{Z$phJm{p`yx{TdL01 zOUS$A`TMDWjzUMzq0Ptq^y$-#i4!G=g{>NC3AI5rCjkKx^xm`fw^uWI5=BSb_`zuw_Sm@HwP-2k z78$6}_KQZ~KTd5MW3xMqa0Myj@<OFY^%>6&Zd$i)-I6uCUg2>G=)GHgf1g!u+}Oj1 z>%o*BH_Pb0oX0-fiXWaPfX1Sfx9RBjh!`-5x^zEoe@z!Fwr135uCEgkWKJ;7z%vDPAw-7o6XQnYi65GlZd=}Pr5P*(y$ zsQQ`|BSGBq^V3stL9b%Nh7Hz;fT~HCC6Ta3K3!Q?ie^x{#Q8t)ZUTOZmQ6?R@3nZL z9Jl}^`W`U+*svKL@Q=XCO0xhT{T^1S|8Zsz;B1xq@Pktc^O5>PJ zJ;^=)KAmoDHAol`NTf?svA5jI)p`R2LEO0RaKTnfUOm0H*ceP}1&a9Icc@@w(sJ&<1&FTQvR^yb zgIH{MoU4A{w<5nf^-7{8!A z%M>|07QMp2D0Dc|B@V6(5bfX+7OqiNR3zgAkFeACmXMukt?T5tc-(sD?$@iR;^D4z z==lPRyhi;1sh;*e2oVU|jOm&Ufg40D2h!TXjJ z^A;{cyao@f>eso1if=#!ol$Qy5k@ zHMkRD1~flMp0#cM9oOSLIX+0-9B+QI+No0yH*j()#OX*jRxV$@d<2BFXEOljOf<6( z6L#n^fa|?|AeLPlq$BzK!d%|$FhLNO1##!IsTbt0hSAVYec%o@-mG4<;nGAaiskZ@q{?`~#8J$`)Q;-*@STxFm4@}S7 z@fgSEh$5f2p#ItEizp&=R7A}=0dE+<2%gO&LqnT|h1G9uRoE5SewFAI>do4BC}}zC z3iEICTD$KtdIbeN*@&I@EJ~2RXN8%HGqaAQ zi;m6{9N8JkJzWyu^BJJ(r{42jajliG!sNub0vskN0F4RvfBxBV#~~eHlvk+yF&g`h zutVPbB(*Tv;Jyz+opi$M;eQ0aVugjguc*Z7T&4ChR{=f{C<%^P3xZB1iR}$CW#+^` zxoWq>TwOA|UMzx@sXc;bC1w5$i`4`}R=Tv11?0=`fKSvl;K~1h#!vse<#GPfqQkFz zYufBfBuDx~zJVDu6=ukJT?r7fi}v;P<;iz}*Rzk`bNKe?3X-sHdftJRw}msjF-Y9gLoZq_ z`GYUp-^p*o86gOB#;^Wa?x*9l5FVX5P-SfEeV!);#DfQmI-1ASHrJ_jM<0-)p>klp zNf9L$r*V)R z1B8;Y?~<{vu9Kq=zyx&HphRXZ?AwEz-F>IoGBp7yCMY18pqwh69(N_$J#oLxp3R#- zz=h&N5gZ(3F)F8eRx=B^ucx}~=uvl{NCcU01a|R&5%~%G><+9>w=)B=P-Y)3xMsJ( z^={W2JgNzA42aj6dB%@`BB{dy!3-}I-YmSTrM_ov=bpa>7PKGj3)VuD(oi32h6yvO z`@p~qc^w3R+I`0^0(to+a>c+$Rz@W`K(pk2Cdy zPQ`JsBMPXKwV>cb$gzMk!X@Mh6NA~F&5m~gok+1D&d)%P@9)3o1O=dD<}|H3$k`@5 z@+}AyQj*i+=x5{+d%@yDpaBmTPjJDzy8e9~DJQ15T?gwN!PRi@j;5Pi(EJ)Jov(hpID zS`zlAq=W#%YfP>C<|Dze^Nv4w+bJ3W9imFM>Eq-mWH6MLi4Hxi)lMlxSfa*3V=7Wj z85IM~zxeJpF6U_sK((WUi$b*6RwA)cJ+hwKKxumdTU$6BzATqo__w(?^^-v-3HaVZto-MnUpZA= zH;IVUezQ15F~{##E!xJcg**@t=xW_{BvNP1`}kHzX!!13ot9#F>zD1^68Is!&TelXIJ_ieO<)Xgn&;>eM(h?)>cD~KRe z4ixgbqLO0%2x2)D>;OKXI`{a_HFjT*KZKkem>+U&J;@QN_TIgMiAhIm#$6LG%v}_Y z)}F2R>1#{b_pf$s&gR0m$I5#F@9JFB^x_D7)n3h|RV^V0qTU!vjemE*b;Q9(2`4r6YL9 zZlFy?%GPRFXw`PjQk1AV!pT4{Zv*(BcB`8eWjfgbDj_+T%7Fu6W@RR-EITJP7JXS_k_(6Hxm2HKzxG}ZTS;9j$_^3sEc>z@$ z%8J0#+>;L^i$UQ>px?l$GThT7R~RVbsdJEMqwaU$pyYOqF2aHH-^ue@k2K0Wb12X+ z9Z0JCtTobazq&;59CV^Pj1gZT{o8RTV4D)3fJs%UL5SSY=x79RhB$xi_|h-v(JK2^ zqim3}%#_6Kv~$c-*@3=F)0@*@)sn#5C7zwX13-@ma}dlkwZrPdHZbnp$DZ!c$kLX8 z*znYhSdt?GBn%<`TI~udr_(?fdNg-b#!H~T4Qml036;GbR0TX+4(_`Y*2wA7*uf^P zxOR~o;La@`m16toZLL0~#8PHWV1v};kI+IlxEkF;MaD<@|I=D#uZO&~#G;Tw&-6Plqy2Dun$-fj_frs8Nfa*US_x15iEtUSg$`+jED?HhS6#4wORl7#2CcgE}V>DS( zhdP8E0^ zfgN9NNpMNT*2fCl&faN^N-3AWwJbtkxJ2^Us)JmEnm153Sp8tuQ^E!zn(NXb6%t5= zZgo@Pagh?iKm>zZK0c>+_r@sqSG^Qyoa|DzPezrCwr3u~e&cDN=ch<(tMe%ULo4N> z^GQi@ZTjo}p-#Fy7$^T72Q(&vAg^5SG;{QvkYmY!nL+&VKAB)314epvVeqfNtcbMd zAodc}POjDcCpbd!UJ&Zc?Cd6V1>N_$dwb>3N<^&KW?S0rf(DvOremVZaMLPI73dUj zW>Fx`40)CngCFzMSBz9HvJWY_owYHZ6SDaoGpb~7QmjBMyBQp^V4&pkIUAKNO2UX1 zTD*97U@I5UW-fni|I#m@a@Q0tUa-I?J3AZUfCc_P`0Ja;=^bfOAdLll(WYhQ;0SEG z2dHg`0&U*L5th6cw^>%K2tr_BE96y*z6U4R>3m#o$_aj%$#z%oDl_6gckhMvquT3& zo7LgNhu0KlGLS~n^w)Z9KW6L3CnEbouB7p7BOu|ivTRb@d@ zkc6jxPe-Gx-r?o1-0ghp-+QFZ76@!=brK_C{apl(7GXU*lf5-)BFy&aTEj?z_O1;+GF(yeuw51xNgsa$Wn{ zWh>UK2?Oe8Q>h1>0*$oW_fo6HaoeR7|8r(07KE1y_L;tO&%1>8yKwi!htFOJuOj-J zMaI@JWSe)SUd#pLvWEIYZG@ksKNYb-?yI(&@+_OYVjO2R)eG7<(-E>rd1R-pD9ne{ zxjXP`TO$G$4)NmDBWMH-n9FYkc`EP)vc8vbnAL8Bj|UL1cFg#VOG)-5(gv~1K8f5@ ztYDnENOb;(PhPD%k;_GA($><>Gg&*gajeQJ@`yYFBEf0SYJ$(htcn?5l`YQtt$-r& zW5@DSABlj_h3M=spMPtJs~I(tZ5FX?eFF6Y)HD6?fr`T~4#IVi#F&`&&OmvNO?DkM z$OAr+_UfB2tlx%?FaBLK*PU?>fvz#&#Bb<4;1Q98pr^N&-xv6ACvi&o>yN#fZrQy0W#=YXox}KMQZX z#thPxF(xov{Ee(qfNFe&W{UO|DE#62@iS>OcOJb7w?zvBiQ0U56yO8|7M}7 z@FztmEm;e{7~E!Sw6F+tb7O+?u3ovWzI|xt^dtwHN?u{1H0k$!FR?WeXmt~t$pDQ* zBO_HJ7bNIF1M@v+>j39ouI0=rQ0^Z2(A$-3?`*g6hLCZjM!F&}M&_rO0O6HHXlzwY z2!+3{iMfai8{(X?5HFU_)pozYL~OMVDk{sIxDZc@q{3qu4G3(Rqb_wn%(ONQh|JH2 z2l|b!t}e0hF@Q@VKsk+%6r*$FsrxB6h2lzs_m3t@O=&t=-8R#=8%7&)SC}F$4}P++ z;JfkK9c`&MO_myiR^aYkM^dY)pKjApQ+Z_N1nd9v(dX9J*VEIVK7FetYxjPvXzfIS z`WT5sV>Gs)sTi2tLr1C@B7_vhlv&=>Cm+58_sQh_(sp3#32xlGx58cz@G@F6(@1z# z;PYuy5MTZ(6+!1Q$^%32W#T=UK`D*Xm69w5pFtvF&eY%YUZh-OVQ5Q|h95IG+Qi#3 zMZPA02$}f_(s^*&b8R#Iu42>3RCy@t+^~oK#!Z{H?b!pcA$*bL@O4BnctcL(=d)9> zO8}z|#)bYAN()d+L?eQm@GNtEkHo-55XDy=Z>&5sr{n$dcmrGdx#76(W43efjBFZd zEXh~Bq7ZI|p1>A<{t_U&YoxcCqa2E!8>yCkA~6aBvz7v=xx=sT<#X(6?SYyt_~4#i z{_J7Fsk82!!Pa@7zLt5abfg^n|1FpWD+_7@4xsiu}4ub0*5KHT_n5 zo5lN@f}pOCh;skfKFlz2r#^e2P`KvkGS^(~&*w;J3C7z~2c-aEgnVD1+og&bS(g9f zjqc%;G*T^JBV8PomGzyn4N4b}0coakRyw-gjR9SYXU&@Bw|3df?zyhHLc{U%Z=_$i zEel~h6|@~Y z6@kd$?~trfJ`3GQ7s|0B`7J)j*4yGfx;1YL3k&hq_v3U6SPPFyOEW+*{m(b&GCieH z7@l_#*Bef_kAD!u0U#C|Q@a)`W^|apPpJb;LpOFydY&5_^H%vI7@vuC@@O^Z@em<+ zaFZXwJOkcI*UEAAt|J4`K$>{)#sC0~GJ+t@FZgd#?XZ#I(Tao2pPB-zd3D3<3aJT= zN<&W%uCDZjdrV>TA7d;zoECDOj*4ds?r)OjAR@}1FV6qt$CFZ);53XR`P%efTU`!1 z9i1nz+o=VCobu%0YTt?_uTH4b09lvQ%mH$lp3x|D&kKV30fsXUJ!pY%4IE#^chRUy ztl9x}^|ca@#+G(A6l!8LX1966f%LqSV8;P?^l@Q|v1eY(<2f~^wlZQ!Owc{$TGwU> z0P0XCB~DHP0VP7u*_e8^cIgTl?2)9gJKp?DtusJ_5VkMa`}h65U^_wp zG^#|zlN8f!O&SB>Wi*iRKi{1hQXt@9$hRbhPy~Uen8G5*HiMIJU&(7EJP7Fw1T&}^ zDq=vMQ2Vc2{q3@BVAUx#op#Q93?xLOd0eso;-;H2aY7Mq1KNr)p4H$y<5^DNJ(L+^$^S;Zx`Q!nj(sfO|E_E*k%`Jl#fJbu(B%hEgO)>MQ*k`g? zIoyd_g@db;_Ct;i4aZsGWR%Smb7&fbYO27y_wGfaQ_z_DObe3?Jo)43?(yXJuf#YH zb;WD7bHr_#cY#vS$+wVB5h1dN%MP-Bzb`b0!a8G^32iQNX2=+RUy{J%`Ks$k!?)2n ziQ=xTv9}C?`9vJ?*#LrjR6rXad-T{b%#T)tqS)T568A)np(FTPVR5Xsgp?&bE$Z7h z1F1OJ{V9$aXXH(L%F@SqN>Wh+klgadhtp5zC29guzqW;z5H+>eq*DBU z_WjPR&QGna5l~*Gnq*R;32bZ9`so2le2HJM;@`EauTuZPnnDktOGLef7wxBly&5D32rzc0B9R@K25AnCo$s&`6gwV`0Rk@~pT38N) zAUydZt`ix=@lNIFcRwH#wF7}uZAtX)G91iZi7~whWYQM6+?~A^kGU(KNrQh-04v*= zx^w5wN=yC4UT1SU3C#5f5MctPu4>j&Qw@Z#oBaAGq~gSe8fHVC2wELCWi{iC_M|7o zdxF}IBH0JY`wIKJyJbNCAa?s&V_M2S*0lBk&ZZ7^^{}TYhP%E(qL=m!{!`y!l@4?r&{lV)4;+|HPESaG2~bwGEum zj}WbgLQbt`>A3^GJzw7&S9*?v)23Dn84Xl3@mzMeQJN$}pX(cD8c-A1-$w8W17++N z{XBL@U^}?xSf0^aN}5H8+`I*t3p`LhTq%MN!K{S`s8&)1A_gZyc}?OM%nK!ORfpe= z&M^Z)9u4VMm2Vq#jv^q>sY>J?HqR!07y_LA_FWIV+d$W=5d9a}YDh9G{3sICd`D2p zJk?vEhS?9XC9Fjc(Bc?03nggHc<5_EiWZa6<1RYRzwM2wIi0l*&G(5g!!XUp#!8q0r?|&QoD|00P6@9Y_*R`9L(SdB zR74~C`zdK};Q$vz9}37ChzYaFjWBe8Iqr&Y`I{b;{r%yc8Qd!J zlL3`6Oq!e=?Vj$+b!Y{;UZ+|9`oV#T<&O%Kk=uHsXF##7Jt;9SpD5+-5VT)1Y1wD2PgUn={F zS$#bQ*>rx~IWn;sCOYE-oSUc@G+GH27qdO`7Mn=9aNz<^!Tbr*%h0r*?l4A0l%Uw9 z=^}jOs5J(MkRjr@Mlsvy*pt5ry-Ffepq$=L1MJ(cLnct5wLQ@O^8(V@_(kJR-PC@l z{Zlaw$>G$t6AfvjFK>K6GbeHh?cJ*k;yi(iZD!GtV{{j^+&Y9(n_>&?IMGv&K+m0!K^AtAd{M*~KBp*=PjMFB&(ulx70Z zto4g-WJVqv=_`@8fqtb*CAgW4cGk@+)m)Oc$4rrse%C;xYm$+2F)CQ^AIyeH@m z=ZFnsv;mSzJ}HJWm_-^IgEmGr%}bD|8*p+8m=_~u5y!AHbP}ysHw8Z95!<&Nk%f@uVh zp$KoKb{`&Bg~(fzeb(QuQy_(uyP*6V~I4Wfit?3^n^HE$1EUn$5`0JlzbF&i-I0$jNC$4@D1ZFeo?1yfdDXuq6G;s=NgUj zp(T}Q?TL9pQiDN0kQCf%AB1C}IZ#BX0Hg)I!My+ypJsf^2po_+dNvu+i!DKI%|3igH@$r1% z$fg)Iu;6lNn%H!IJ`9bRA%r*t+om|2xo)erLANV9)^(_WfkiBipDwM!9QgJa$Ed^? zh?$VtYlT6748_?YWJ8_CZkCC9SSnc`p~}_mqLeAv7{0 zF=?FN;e)KTXU3^H?}<9A;))pnH|-ovW+pW$GNj_bv*XoxdMseql+Hk7b_xq}V+p2s zYtid@eT{}|X}}TP08=%_Qm`pgBU3b~M&o#p^+WJsIH;Wb9ybb!NAfv@sew?f!Y+o1P67hl_s5k=@Q0ql(XB_eDX^~djLa^tB5S#Bpqm7aK~2i=+UXx6dHk~ zB_pk^4a9iqd4Qdj%+t8gYdJf6lv78l1jSJt{zvFypWv?2o7lfm*$mYjuh#q&7J!5p z98Ocxl#m~DE9%JCWk@WTy{bt{DkDia>0@D(#AVSq7Q5)VijG(h!(h&~t2Uj2i zfZR7R+NqXR9<>(|3RDFlh`|*YDcXAynj!(GfwObx%t!>plpYc)w&i-!k+#Da8n1kJ>n$zBeMh)sNaBg1* z5|QMhkjItLGB0iP76T_@o9cX7%?B-SntMRt36~9ar^dW1=Ju$I2@0Z}qtKEBd!WVQ z6m>qhgEScBkNkzgK~N|1G?CC8n_?b4YGK-2241iK z^R?}1&b7cCXv&{}7>9}*+)ofjERzc@;%91R2CY*K~m2Sqgwj7-rO3L#s6Ds&0K>K5K6feiHmeE)lfkXrTwDe;_l)5Ws`4=d z!niGE26?uf_2foV<4f1S7;2jqI2s(Er?Sj15e@cz7oO<{g4go?rQ}xKU3tg#*`HLqaOI+bGnEjeaUjTZp6Aq+JQBA~M(xh=@Kq`8J< zg9iQqq@~c=mO~LhTsNfkD#*Hfk~CqtkZVODj2nQyV~h(%q#xK@26a_5;J-0s<)&)< za1-bE(fH~fe2okB#~^#Y#5Dr{$VrCqBuPjJ);}3DKG#R*AxiF! z0}1GMedltc;fj6=vOQWdZ7U1#68gr-aE>KvZJCcB?D28|!a7BLa!0?`M?tL%V)7z-#!eknV&KC_sbBH(^U^L3so3n+X zLG4J#+HQ9Y1R!3NCK_7;ze5XX-F|27+O<6E);$o@@WvJs8(2_lbRJMiLR%tgnVc0} zF@KVgaztQSmSze1ApvDAL##Cf04m!6vjh$q<@SGUPuPQ|rniqfqj{@+BKth@t3BAV#7eM7O=oyWHmTbMP4gn7{ z7H+@|4E-P#6VS*thCh(bIJgyJC`k}g3}hKzjl2XJc?DJq*UW_El_@z2%%f_$Z4`7s zPjT{*AK7ZY}u&05TKKAaTDF}pf)Ot*sJnPpV01hi9AOeEFS_I=IOmXY4 z%s6^IHAb_>2h`BVFTzY|F(vS6o$7U68tH*Ql%-f`Lux+X3B^nQi$&Wp37cmKMcl>{ z_b@Wav^EDVN(uoJ5OcoG%gdXZT{pk`gM&b*VW5Renuc_V?#;O9GWaCuRkxjB&x)u5 z1k9TH0GN!xnODDJd)I1|OvOMn%+#^l%(V6k6{N7C{32=>X}V7nc`+x^{-?}=K0l3N z(+Ulw-?EOKOpV|JX@r@CtP2+|#CibxP$GVyO$~)&C0Zxnm*U}6gBR}~3PPwV&1Rd# zZ$LNpf6SnFaReFgPCURA82gM0be(WO^7(+bms+w;RGo$^@YtYR=Xir~0-P5{vtEOn zleS=g2n~B90>Ye_=0{+^2c}jZLw)ygYWUoI(T`G=R!HgS=p@x_AwevGraH$~UYg{l zCJZ>%8hc>Rb#gi2WXe4xoFGikl(L|* zRVyEVU|RbK=T7!TEX?3$(-o^%hhpHP1^gRmlbk4=RzF6qjPLy&Wk)e_5%447*66`uPDaS!*fZ_H2vGH-5vIv`!7ve(CwfT>5bS96nu*V^xBT|?L@gekUS z3yE;*c&a6vDgY(5bG(*?zOD$-TLI7x$9DZV1u)VjgCi@ARN+t0>pn`Bj71qyz`I*P zgaBg3IdP%5Jurg^qUt~Jbk?L|U|cx_rwZ;|Nazoyk;Hd908(f$HzspHHK~f_n=R>G z$b?bkCY*ZyOMhD>#-Lnmy>+i5P8y<&08x7r!&+?|d7%_8fj>|%K#r2&w3g{4QZ9|T zkjVn5C1Lj6AJsnwa1Wr_PX!DuXdyDX16-Qh#Tjn046=cTs6}N6XPBEmt8H9;121#N zI4X^T*!!>VnvdLBzAYx>F|Mrz5L5wi7JDm#YH+|*O(d99@1fbTn5>a-j3XNlDw{6H z>@I|w2QY7a5_JYPM*M@V2F8$HQL0C*$$4On04HSEQ3|nYX{Zb*PI5CmEe&!#LfWri zz50f2gEA-<*D5JOsuDP(hmu&m&+>^apdxYlB1ip*7NF?|4##g8$;NsRg6e?yRJcKm zCyOmHZ5;V~NMMbP35lm)&ZGHdOpQh(Tbd0jCm}&z!bout4V_J?iSJd*hRbg`j%9mP zxE(q2Pi-Spjux>#7!shMO*<{#x-;~}e)M*hP8-2q zan!AtKiL32R|409SY1Hb8cCLH2LHqJ$}yfZe?Cd3t1_LEp;~)FaA;~N7LOEiOa%05 zBSVeeHmC=%C*&lyzGQV|jhfaOj!hzn(0-SX2=)NFn~|-tMCSMwq*m;}5ut~J=1d~2 zB!wFnUqWhEw8}CuVKEi^IaQ(|<#WW+kOU|SX#xx#ep&3jxd~H9mjG_7yv@Jt679;n z9#xC!f$w16D6$hm#HjN1TF!Aw9xXJhg;Tm~V%7izs|ABe@ERYa- zg@_+RE7tiFqczpOsiRzJR2dgs^bTJ59o9aj-y+dCmB-Mq$%CNusfolimJ*omemoF1 z*D)sb!f7oYbyZNy2g3`uk(48L!Z#)+202{;y)%^iCqezm0G2j2=Z!iXBQ6TDkC=ZT z^-4#L&GMnwX-gG)qT%2flHSi^>cGjYK?Q#VUd#YYxBmQULAu0<8s^jFAj?!pHq{_@ zh~5{bKeYv^VMY^jojXu-&Tu9K5nEtnG~0~4U+dCKGHU#M5h%f@01pvpJ)3H*%ZWjo zg1UqzwP^~Vb1}1@PN5f7LW+$StZj)5^tLOb-6K;CWpbbw(a0L2k(OaO1Z zm0)FYKcWg!6&FbpSX+je-jpNj1S88Cq5DEcPJV|beyYtpwD4#J9PM($tS8>v zqWz9KnwiNT@PvNILRCH=KYYFZ8aBuPJ0_s{N6{V=voeq+6baxXA-xSJ#sIa7JSd?p zu1p+lfCp1c;4m5h6?ZF4f4|c}Bnt2tlzX%(4>cCXUa-hY3ES#W>Cu24WGWce(i}BI zL|ll8YtXA&gEF)oZky5xTqIDXe3Ho0w=2+cr?vn<)D0lUU^MSqG3ttLM~z7n?U+Pa zp#;~*ngtU;K55kPO2F9fmo8;m3f0psV@4y$6uKxNK}Bop1fWMO*aK923_b;uBwIv8 zG%ya4(xEz5?b_Q^Fo<<~z_RiL(rHoM+gm|ySVOe-$`ojEAUPywSNbf=`c$G7bq7_UW`I37EQB#0?3`UG0l zg<1;nnaTb-0zQ!eQ&A8P7pVLAk2PlW9ew?1cT9iB^xyr(GY7%+-_6ZGPU8P`XSIth zT3AeND^Oj*F||f5pyQ^3pz$xJj3R`75B=O%uMDttYpUyxAI%^Fht>wP=OMV07q_$h z>L$@kyS>w|;0Fe7V>Sy-VTeR#F49fyHmGpQ|!S)gS z?glEW@VRx?Cy4Z(-Y$(k;&D(ZinP5J4gEz=^WM|SLNE`sJq2}*6twvJZQE|sFId20 zXSp??>C-TvBabOGNJ|f+Wv4(dMspP;+hwI6SHkor5ER`r4G`Tcd6XX#y$d#wXbjXJ z@%Pxke4~;ex&(TojDcP#hfiXBl)5|AkATwULyzi^KIS25mu3uVM?;WnIE#E)O%yRC zG=dz<7?d%?B@6RWsLxWNaEJ*MaSBJ%L4|z^qfcE;7m55THt_MCK$%zuY@UGHoO{!z zbdz>48Aj-7+<_DvyTNGh2W=N1=40Q9+-H#SVYv&29M$J9U29%&2kY_`QOly?(O;qM zO?A8@8d1Pj+reF=>;C%~a`@WrFUyIdi`*1w|0gx{(LC(~iJX!+r$+*$H|>PRFw^7T zxsMuv8=`@Blit0rarLE8{$R72IBmW zhj?I%RnG4yz8o7p1*z1f$?0uoNt^I0jFKyY*`bv{VA7P)%a#S;>qj%#zI5sO$uDR{ z5LtpQR5WNLF#A6b=oI~GnOvfXX#dZ|c&Dq=m*qQ>X=ge0lmcBw4B;15B3^k%ut@aw zPHkwTHpPgF>%;y@lmv~29$54rUkCi?AZUd?b>2v@iT$i-+|V*mBKyHozU{C$YX=1r zbRK^aiKWyr&?5l|%ev!~8_7_n79sw;!0e;a{++p=TgA)*Yi}@hZGgG1_Q8f<68X@Y zMfgx{qp}`+fqHN>mkExX7Bqt_eFAk4$aM?iHbK^qD*5N7y0v|8Q!(t(39~Z`!=A(M z9}hO|eZi5#+ZB)B%v0Bisuw*Sf4C=JVoFj3&^j%no!O+n0s$LE#C^T~Ecj}W93)OeCt&7`8~!RPl2yK4`qW$g$v>r$0exTZ-aNpx z`Z& z+d7{~@C=kj$=pyZq4ivlge$=teFv9VhMo<0@m(Nr~d& za!WqVSjM#HG`$lKR1#>qV&P|NOy;JkmiP zY{r9sG3B5JHGPkhrm$Dg148L3b|@W&9+npMvzyRC~RgK zj}R@4aJDq-;>V8P{XlXuG=PdA%{vZP?RcyfHEpYKt-w)l~4qMF$jtvpbol@1xzT?v7&&WR6zu+ z7($aO-5CQ&Q6wO}{O5iov-|TryN|m`zH;x|-}9b}>f&{KffG=h_uQBEodFxz7!1nu zU8oAk$28!z36m&Fx?5w;$*=JpI!efd5fvzgdcn>TSk^mUBYIz6?@lXb!#9!e1&r<= z9ly17)TPCvne_mzQsI(w6T|HupgJHE@Kb-0(W;UGmnU<&_I|k2JuXEKwkuceY9jj?{ay-uD z7ef9IfWwDkRLMd2lg9)E;6q~rx@TL#y#6~1`0}AD=z^dOx{~9589@I1g@Gc`5PtI9%JpH{^J$Sigzvn^LEr{qgsOX5Ud4TQ8gtLC%&Sw#PO+3skPZxA;xI zK-2yj7oMHKg|(OQm$_ga7I$qVu&1BgUW^Yk0A!&QYKkb5ARX4EEq*ToQiFr2;4@)6 zZ{~v4-U>}+MW$T_CO$T*t2a~U#C)*YmYRUk5<)EcG#921jSRbYJpMgsv&J&J_O|4a zJ2j9y$>JCjaz@5G9sv@7uN_Fd6`b^40QL66)Pt)XC%!;Qz-FNfh(r|{H`iNXTXliV zQVew{B9LapWWpTpuNk#dXC0ASxoYjXlz#MLKaW$}GqTlPf~;dESw}s>kp|m+t#!v} zcN*alf2y{bAmW^W!@HRTovrkFR?%u^l%nn8aXq!Ff9f4uRmsB;b>Vn%*lVH#nWQ} zgigTLiw{J+-kPn2r}_bOgfM#q{|)TnHF~%b;OFRM{>COJH4tPUR`TxNKoc|-ZziFu zDm?BdaO!J4$7%jj#Nb^bRB^WE@PRdG&^SnyMU%$u`sWu`ZTo{XRJUxo=_PS`h8Il! zH9PZ-Tej?nJp?rjh|U1s0x=|iW$1_VTYlW#Ipg088^T((l}0;D^<=ll7~NRaJj@_; z8Dw?_=Wm4mguEsmofAAQy7YvqQH--14;_y%{5Lird#0rGCB?t`d!^E7)`NY+eaRvX zSq(c@(9S6Kvlx`%|caY zqH_s&^cJQE=pV?z3I9I-wwmjn`4Vo z$yE&KJ?d{&YnGM9$Pe4vz{mr6x&1?*E5?QqHdox)tqVGCD`_;&+58*Rk!|7V0zgNl zI5K34M}48;CLs)GH-9XZCB#gyNH7JPK#)rc!eY*7j37IkI&F;H%zE>Bt@>xZWzT)V zESM~!%$qztUOv=Y@$zED->)kqW3{8V>!`Tb!{*6iZneMzJ4YA~#7KbTRGuaUxAr|!0R zwjZ(7t3r*R=LK7&BOo37ardD3ToIZSnKMpKv*RqYHAl-xF4RsLC$TkQfMidq?^y5N z^(y91F*QWUROO(}y<`x3#AminSd~ z3yPt}2$O8hW8#3j1)jw>)Ey%Uw}GjJujLdR$||HEy^Zg^OYN=ztq*aC=B0?gu90vb zZ7}*dL8|klvgh=;*|YuinI+$@s2zrc=4MwtS_}j9WHsDWEt%7ON{-MF=I~}BY?EWM z0JVcrCUMdpo@*hXnAf<$n~ZhQOWew|izkgsjKrd|R>G*khf^RP2+Mbaty}ZISw8*a zHgfY6Rr60NA+nQxg)h=iY-}w)j;L-euo3*936`ZXVfHU4l;z?H_{cd4-`)lVPQA&Vr+_CPFlg_>kKR##iW*6qt zzVAo0VOe-+k(ij+8|@pC8^Klr{|5t?8buDTnX$Mj28jbL;7;8^k=|?* zCbE00agi7}1k6Gux0=t~dSKf#V|3ZKhPJ+0r#(J08TexK#-O|U$JxHo`*g&%RsukE zPwc6li(==_kb~)mX6u%GJa+ZPRg*-MUNh;0Lyr%7_efs}-{>vbJ~r|G^+H9tZ=;PZ z?xmySXQNF+xH&03rrvKclTSvmFoYbPhG0#$pWym*(5 zH1e#Ud&(P*e{|X$?@N=uAv)*#qji_pmi+iVXx(fXV84q{qo{zMy^_nPKSJ$vuopDzE-F&?WzIp zaF=|3DcDWTv`Z0&#{%}elxeI7fQGqQ4gPP(sq^}ZW6EMiPPRw0jSN+OeD3nWHA4@V zstvz>Btp}fx6{9D126q5@R7?yjrDMC@_Kg{?8FRS#x6!EW;Ay(ob+KQ)5>=V*#Z6I z9&KFZO(jPP?yoPGsr~pYGWkbmVbYfmpC@ew|EXH&FKahvx=+zB+{mTlIY8B3-_@7L z23X2myOhC^Hq|zewm@(qwBo{&AJ&u`D7j{&VPEEeHDhq-Z-vL6|>Rc2YrQ!~_gl{>z3saD$j%|o<<&VAjk5qd3u7Eb*a57i& zgd8S-eRKZH#|1NH)+RWU>lGDH`%7@27BW|#-q-Ax-zkyt63cM?9hMYiIm-hH~C$$|LvVj!(Ms;&io z+02;3!$(V~b5Lmt(-upJ<&PLMzGfIJKic!$lRcOhb|NDLYq5!}Md`14QU@qG{+M)W zErR4@8?)h>q{Xw6+7;R>HJS96KP}&f`iT5v|NFj+;=9P>)AZkTrAVrF2jz}2s`Z7# za4{#Mf-0MnpFxn2zMjc!WN=>b5(YpxAIxkpvps(&rn2$!S`QD84wO4YXwP|a+;IgP1E2;fXxEzj9nm~UO0e2m+hLg zc;{cj;!?TaUj=ZhQYn?RozlaS#`NRt+m|IYMh^6?IWLuQD78$T?UE(Fey_yjh$-Xy zOSbOj73XPHYbD7V*E=QN2beD$_QBGDoC~l*!`G+HWmaLqj-gK%11y*F>@ZVvK=<2n zG9nkiMKW?fD9WM+Vf!uy#tO}+!j1hG)kiiA_Xe^quSv+!>4hwp-&=v}W7edP+t4!M ziJEjkb}8^|7671@c0c=k<0pm08kejl6N>>@DqYURn|nGeIpFbjrT!(XQ;~w znHZxE6S30u+3oZ(NKRO&)jN5MS69~Ve(~b>gzDVq zCaoNWcV=<#SsN{0{qp9@T5|aUzZI%D8MTZR>6Vs6)g8m1%gd95ms|d^^U*LMQL>8pUmTtZ+t(<*YdK6V9JeU9 z|6uCt1?-h>hnnaE=`N8zJ>K#u-gOMlJ%_S;$;q82wBX|EEd_qqC%wGE7d=ZuPa}GB z_~*@)fL29v29y+P{F;x-ZYdl;_-J^y#_M0`|GhfB);cmN!=!QrB{zf3?8jLWB7RYg z?uP%$P5LheGpFTMDK(s6K`66=lHi})F=$%?m9x~gw%y+QX0e{%9;1~P0Eo?el4L>7 z!`j6_juC@=2nB|B!-ZclNhRkq^u2CG1qT+@v`>tZy~kM_>ztbi$5P3$(McD8{Z@{vEPH0QeB?uVxRQf^?_Ta`2)8+uTE35zb6-}cXl~gAJ<~F zxl3(%jwP1Os5DS*E!SFD0@^GgwkjU0j}<#6hK`b~SjyH$-_ftx0DkKE8Q9L-3Fx7v znTah9RX)UZj#Betw7J~#R)R73C+d$^Kf8zY!tmG^-`e_<;`C36YPgiKDa~<_Pu@?C zYU=G3jm7dlXKJ?f6{jbDFw&He$^GNfz}Lv5=SJvfQmn&2+->&{O2a*G;_Rw>h`8?W zutljRz%JuYX#T1TDA(NoaA_@(iGs$%ARDP1>`tr9yJS%D(5+Hpeg62@d0#6fUylrw zJbSzRbcqnnh7Gf5F5!ajGgJ{7I^VByt`naF9_IBw+%f+>?8V0IB*>R$!WJcRZiO3VorKXl!!2@vi zXn6k6TiMjkghczdOHHMu(i}~#Jd7uX3N@5Et^rxuU4mxE$-fSZ{MfF4cgbj;8dkNJGLw-k#j-EBq4pNaU}d&GYSX^&NO}PzDd_L zTTGG6huMt%vpk>`7)%*#gVh?J?=LA++PbV2Xzx;-j!^lfOmXHTX??hV7}xtq=iNg- zfNO-STN~<*E2Q2eQX;>~J-e;Z|8z z?4(bdi0OTo2JY#6z2v;@Ctv(Z`)Mm~^C7drH4@L6^1TuDu6E~lmbCCPn%U|dNd_Q*`mUZ~sX_m&s)A}`6WnFYAmV;XmRFpGpE_JQL2r?%ydR@Hz>)t zSfEn)jBs2wKG?yh28NhXXBTGI8e&?C*>KYlM3ZWL#YQ9Y^LE+?E~cWExbX0;>pNOB z>dto2s~$Q%U**0J6g=!#LZ%Hf{Oviv%)Dhcd-bXPN{xTKuHa$7qV7ayoxM3s90O9e z^z0@rCXRC29%jkVF)=$DFxF|BUj$3owkah!?(T@NEmn-&%+Pjhobr2l@BXuhZE{## zGWw89;BcGX#Kd6ujvQRqF6jq|)$B|I0Z7bMnVb#Ftxg>P z7(E1eh4|*AC%ZxqyJkzlmlASGf}BNNjR-giG$Hqd@2c%_Rx>swmx+IeR(u6wU8eho z^1Ji&dYeivdq{?wd^lES^AI*F6!qnmmLiElIH`fs%o$NH zw8~|~+Pjvh%v_=Bc>-ww3b7{xxJ!ofsI(!?@t-&Jo)@gdl;q64qXX<7->~is(~KQ7 z$CG19c1Lb>KY6`Cr9H|$A^F1>6DyDEvED$xeR6$om^e?Q`9)AvN+r5;ulPaDJDJ^i zJ!F{+q|Wq}(7$Ftnft%oRO9^zx*P&sZu>ZG_NpLcRnOj9p8Eh>*oe9hv3^WClA-{v z417lb*C!fIbr~_y=BC_Hs^H^uF@Idz{M--j+vSO0pZ=&}R~ky58#x5QT$X6(Gq`L+ z39K3`f2>s&#IG*Z#=03rn-aMwaF^^7lJ4(_m7jS$@2|7hr(8<;oCk)63pCW~d`IsU zrP$O|Lk5EzJrAcAOt1byi+k&Asc%O(iUOuYyEL!m?0pze^zE?d0b& zbtlqbJT;@{OkYBWSii@Cg^?LG7Kxpk0_q{%eec%?j@8bgqjFDZD1^NB*hbA^a^2&@ zi?8Dpm?caj&R^RX-FrB=iY)iguM0KQ`bI($_O6A_<8&u1x8mzxW^ULA5)2-qg!|~* zK1xhX%qg`5W<#I20BG_2aExhAcBL#_qqYq~6rh&)^wL`Nf;Wpf;IvT^dBY_vV;WU? zPwl}TEiFc~7yHsm36XP$T*A%`>aX$HV$NXWMG72X2m{DL8>QPmUsHpXgOf9?_Go*b z%8`jgH%b;Q!SALMx5!}VlXk@nQJ^`r=CU6dLyh0V2+n20is4oKFI-<4)}8B4Qm6io z>K|Z`$R6n=wz@tmC3!Z@=Vv7GOS&FsS;zSB*kgY$^mCMJnb(7cuEF+>d%0sgj=A6X zkNkl`982{i$iWkJQ;6FcQS%n=;g%5-QI*}%p$8H%Ph#=$xa{s1?PU2hnWom^Uh_Hg zl@B%84!5!jMGQR~9@np-eP0U8T|vfWh-CHQi0-!ZN(1Ngm#?Efl1)Nms_mBT4V_VQ zGcaQeGz6#(l5F6v)m@{iQ4KVQVGwhIk}M8!uSjN$<$IBvIUY>T_idZQ&8SWI`gDAN z%`%jDan`tD1}*QB=$!pI7@g!|!^;3qaYx6+zC^J$Dd!;b936z!K*y1r+o zoxJ=RCWJLY*wriF`c=q9PenkB>aQ|a#!8K3VvQ$Ors|Fry2!{@^-y5C+X ztMr%OyJ>J{mVfq#2c6S3IqBG`_W!KE@qW?XRX34^%Ywwf5WtXLH3Sk~@Rf3)UU(H# z4GHuaeBM$*f-o2O8w~OSPT~u*Y^|O3PHhqW(f!a(QUn@Px@V=!Av0^~jh*$eNa)Kd z6t&2D7lb|Q$)mSNvo7QMi_3 z20b4G99tX(Ut;(D)5{fdbZvYzlpRO{R)qfH4l!P^7eaJcUXoX!_5BtJxo{ciOIskCCb<0!(yV7G7YLR?IW5}P_Rq`{&ez$K5VdG(-8Y}Cm;jQ$Vu zlh1T#i$q0vT2y4Zz!D!(LawPuhIP$>-bq97U}Dv(N7`!v++s|$nV)$2b}l<&DOmB! z$diCqvCM;%WO5PB1aPM!l!6n&JGKwkl`$J!6Eh2Q`y|3_V!EH%lFKh30i32$A5Ktz z9u!3)prEL_r?2L2hLx!@yR!^;ClB~jjGsCzaOd8&5OE%twP!6&;W!Lx+EGOAUfi2| z=d$ZzQ-s*zt2aMRKPXC)9}{6=;koPtakNX=7&{eWj|^nxTTLa^3f|DVq!*sNfrjdV zk6!KE-a=N)j>NCiXzmE+k0=pZp>QM%qUOXKL)bp6whSAHs-X2>1nm&QWzh;_90l$7 zk4;k%Qp9~Wi}hmA03t+UJpD-S1tBK?MEs|7`mQ$+gfKo|XK(L<`=QO{ z{{D-9-5)^XEMca-oVD_vapJqlCAsiEB&`Xc?*I=1EGhGjb>->2zUZpz>ZMF7{3$85 zIxP+trZK(l%x7-612S?)Pw0>R2PB?hXnN%aCCyiEe1g3ov!Y44yrKa5iVHp&iZy0; zgDA7_XwuomT5O=5S-)v`=raN~FFIqeNe8{T0h<4>&xB_kS=NLdIqvAVLChI>zO0yo zK@yw{i5A+n$7j#qiDA4DVv&Q$|DDLcs?wet`#c+5+K#U^?yOhL?o8nNO~gZ8_OC<1 zp!g1|t9e0D#1j%*Cu;6~=i$v)V7B5RGC}2326&Q{bEa<*YKC`JGcG?D^1M4$PgKR-2|Zw0DIC>3VtUlvcynilROZKH<~T)B zh)r-2{t}OGiw?gQVfOecuTXndFQYMP4)6*)m1BZU5I!$Dr$B1xH8N)wQpDj-{0-!Q&z- zBgHRh%fSQj=f&7?Hr8fTn^!?4t0^=o?<{OT6y?}eR1FY#Q_<48?bUI?%_ z%a}j%Cr9%irKHG;CC)|D8#3KwtX)%c*iE418(&`%Z<+L!JEEDfW0~37;X(~2YQiRY zKh4tQw8mbb*%0fYf~^$dsN(!rAfy|2}{JT<>>gcSb%zCE)`cgZv zt4K+8fi`cmRN~X6)#uwU4A58=0BwXgi5aAJiuq|nM8QJr9E`}yqYJz%Rk)IL9{?fD4@z2hS&=;I{>pcO zhQ2%&H!ENNfniE=p<1695=w;m6?x}8cF^M9!9@F9fs5S?pSMxW8A%3vnc~@1e1tkf|=57JTOj;~)>pT&4HB!qEHAnfp1R`p|UzVhm zZu@G?)*}~l@*XRj6f@irG8D0j=Ce`j7yq&|xOqj2P5vuh4SF5j2=)S6m%0$2h`iiL zy9PPPEfPBg&=oI{n_+%lMhs^K4s4og$vah`ocnUNr0Q3NK8srk=}sYVd%W6wiM|q3 zB84Zh?2{xK9e%mcHwfouEMuCQnuejYC5u{f05_ynIe%FHs5zK8WV^>VSCad=m#V;^ zA&`2ui~y4T+qzyaL@CsubVpYGnx-7_!A909-=X52b7&Z!p~P3LmhL1xHc`j&}-EaI;Mu1{D0 zfJ(h3nrtMixt)FeD9&ts53s+DS+fpuI#R-YlAG-TJ#B|XZ<2C@pDrf-Gc)R3_CuW! z&O~*ZebVaJKm^@q^1iyE+ChuhqV>y>Otc?_hC$yK3+hl6WP#?00L?t^*U4dYxf_KB zn&CN(hm{oQr)sJ)*6hABJ2`J5AC;B3VAY5)ASxvds< z6uf+|55}aS2hh$;n6!JemK2FVKx1mwjKCq4EfIN$px%1yFIJ`V;oZ3NcNxJW0R^?9q^M*JUk{!p35bTCEyirwct@4QTXcKBpsFCG-h&`N1lm^yRAKp|R zzuA>Gi55~k3c7Wu`!Vod_RwKju|ZP41F2UZo+>RUSJuL#+L)Av4-&3vTHL8JHCFc% zEjh>i89UDY&~?pI+4!aF0{T_*GpB9Zini~y-?pv;wCRs(TS3;KInH1@7K`FpjZZWjD_ zE4sj?2!~DUrO);cI*oGK_nA33kXvB+Q%g0I)vJ@L_YTOaMc_!9RfE;6fN47lx9$E z4DcrOQfq5`2oL(N>=`sc)CDH^#%gPYknE zziAt66FuIPLsoGYl4PIjvE$tiUN{oD0#j89iB*4+Vh+*A1*+ZqJph|QA&IPB>5jq1 zghcYb1xemxz4r`b@vVff9}qkASE3|NVmFIzcx%}YfGd;eHyf%4a`nQ5uBu?rX>t+J z7jG?GRheW^`~`N@HM=!*73ijoO{o%^c_oEDNSzpAkM@{0w1(yHTjRS8$rSu44FOfG zF+wN+E_RUoIc>*}J98j2#2+yL1GGo*mW(=K7lubj|Kr5-ubG1D${*cDoRpg{YhR>^ zRUlMeCLa(O5&Ma)wEZf0;K?*>2bVONj7_aV0+v}k?A)&Z3Iw?0xiJ1DJxNHG+lwa- zTa2{>h~6>O+&(;kLLC$&0qshEoWaZ=yN^ItiiH3_wLJ!ELsKtA^Ff*NMxHD>n5dd1L9X|1NH}P2> zk5y88->q!Nqi{&oR%GJ)WvaG%kd;ZINLa>V{3l90%rdoeyUlTgJEd6cX!v}2QW&YG zW=@XO?2C=*?+PR4%GJ_ihed|2fr@zcj~e>KaAMaqnvXb~>9uMXGg`wFt8as-X@V zSXo{kL@Hz?rT&I+Mh#iT3e(o@J9JQNrW$>Cz!FGk6p$dM_3`44s0x$rAguTr2$TZ@ zO{g~XPavH6Ef05?9Cpbd*G6&5H}vhY!$}8XDPUB5L@zM4-b|$0`)U)R+ivh|4 zm;Y%cbS)quF;NfBf_VJ?u3A~r1A&L=L*J_nKH@!cjUWuYh{F$UXdMR5vyc!<9-l1VC(Q-3-Lc+A~P z;1H0Cs14skXG7rtY#8-t9I;)o&Tlf@^vS*`GpoRw$E>t61J~TG=whRYQ($>gaS9)* zY256m0oetb3ug9(H{??GMb;j0&e5-+?>HKwD1FjbF>3rEX}`p|LT zk00zu@e*)KfD5^VX)TOa(MBLn3~Io?cd=cexQQyUx}{|9Z7*fVPDVk!;c@(5P1R5l zc3nbfrjmQ6J=)1TDVM}M>?Te?{ zm$W!3mZT)I02oG;i8r}4NG!JswshC8cw~f1f`3J}@YD=$+`JjH2}X)nEDx{j(+iKm z%BUsQt$YJ|PSlpkt8yR@)J2SQ8fxPN(=TU?{D)=mTg*@}~4ZY0f?JE=$>Scfr zZ1gZq{r-wY_x!#) zP(7l*Cl>ayT7M#6u}0f9XCvBX36XewpqZu~EcOhKO;3Ex^r(IOc+q>j>%tv$tbxyZ z6kVx5wLwcp<4IuMjGMT9nB+ykN*`=Wbe&F9AjK*2r^)$Ip~vnmlmzg`gEa||9#JZ^ zmzrkM9Cry;J6$d1MJTGSyy%{)wmJ0YU*Y=Xrca~UM~YJPXtZ)h?hg}QWvm1s1(ts2 zD$4hJ+%0pi-lX#RTDau-Q(rASR?^~rX7H7(d~CjOaMY=TFzf7VD~z*-8K|+KDu_Oz z3Ayj9sZubh!@L+|8X4$J^vBaj`V$&_GEmIT{`(UB!*1#=P6Fvhy+%ZApt|lri-x&t zHg_;Tj^VP{c*N5gaw5hGDMAeNk+{(V8O5GKC zA@x1~2X1fv!%a$K3d!!1Fi6TNQ9gY9KDRB>VM3CodH&xoIafX8M!7TlO7-3arsR|) z5wM@e#K|^tx1W$bP}hox*=md6IaXyl@Ftx~X~>bn&kZ)n!fxiwrv2~oah<&OPc?PA|F)+aeWB96{ax|H zO$pFVd%pZ0azmvUg_6aF`(`b`3MM(XsDpct`=9kpw{wa3Dv2q{pJsr4u{Nm@{rxAm zL^;t_z6nB(>R zCsER(E~^j&b*wqef;qB2a~tcPj4o!phW?EmN{DF_8lbQUmZ-1B`M@P3(1*6E_3gv^ zTUlAbKFNE_=KEB;&}ex#`69lbT+?PULggMhp9u}cF(Q*^+SuZoA0P5qO!GGvyn68G ziBX3IniGAo36c2D#1@r_p?jt&M01Ok1ot$X94;%K_I`ZO6qv;mY5J(6>-01mD^H`{ zvK6e%)-`@UZ8Yw;=ZUUz-f-S+GGFdpjP>;grlFcN>-eT+*4tG6 z`42tz91{$dt~1aJ;BR+acH|aOKzq2?*IunZ#A3O@_3X^EmO zDrUsoegE4yE8GJS+A4-Nuc1Z4D(4W{P90!_$b-e1K0X= zZbBlHWuQB2A$inDhZwGMzRm(wDWJW{I+a}D>y-lV9AW@^GXA;3Zg4XtdhHfFHd4!8 zv{wwhBk~0Hf;EkZ7#ZPSTFLwzXlU*Cg6K6sdCT*)QPwi|fl^`x^aLw#sH#>Hxft1V zjx2Rq*J!lw7{y!J2lXg{HWxgt1t3&#)D`)DXqb`3dTb&7yeDRr_leZ*RI*o&iv)XM zqNpHtx=GQUhQObE)58NmiDI>Edcab$S><>5qN@4$xTE&B7pI}YANInod3!dVga)^U z5DhM0$G7{M(q7+RhMPW88#+?0Z(ruwAP!+p%5j3(r&%cQt;NHiP?dM5F?wDYD~C&K znb_>;i}5gNYdUg~R0Mtze5;0KSeiS%E%|wZtK8vBk25W-8|=caS)6=(qU!l+l0gn> z@Rw$P0EsAR+2aGmM9o(&{uAhtyF^Q7(ojH1=$ta5<#(o_)v!$Z&NF#UJrYQ98vXnT z)R?H+&|H2X?Emh2y)zXeo4w5M4UK6n)Chp4};<&uOhD^C`ny$cir5!82 z#m((wx|iy_yYU#RGg_0yTpzd(^*4Hq7kMpBHeVV)bzKvQ1vH*fV=iwv1E#}bgUZ-< zddoT1jn#?di|YkCE-QcX81H$DxI@%UWFxr0^5mFKzAq{9MXOTpzenJ}Vimm@#A?o% zC8l+m^70)_SPp_O1ot;KGj1J!1HNBDzlwAzk&d~_b+tt+ql(V`bkQMZ)^sEWf(z;} zN>zw5S3WRqqSu`2zSW)Y$M|xay-SE_p}(-eVgoPTXA$z?NQ@Wr+<*?icEdGU)azd7 zzeSv#ckf%gU7~Am2?-N^By!)cXHA6(G{vGRE9D>RJkn3EwW5ZIc-2UT(IizF`9i-U zK6Np^(#N&t@QT7EFI3$@4j4Nw1%rQYZy+%tRPT+5Lb)7HGjgXNaJI;Z@Y2;mL6E_r z9$A9#Tm3^jFt8M;o{;l)67{jMp+fe_Lh&8m#1{HX{QE!-ltAIBC%-|Jot8;x0 zDT6JB=;7v$p?a(IF)kO?mRtJ#cT=z#AC+WDhOwFwjNuPk>HlLG;=FL~6Zfyp zMV!gEvP?I>=hQD}2!3gJStLe5A(++l$O!vJ{nC;j3d9YgWrDP@h@;V8PQSUk2!{mv zs|ePr574asE>r7?tUN_`VptUUXk!1iR+v5j;&R6T!)c4oqHZW8xSW8F;PyWjLU-TI;KJ0F7?MXLEZHu6OC`b+*M{cNZ4_A5| z)t%|WGBT8wTuGzN<*T)3HP)#U#R#GM>SB>j%a@0msS2iDQqFc7q z9WMyvuPMO@7a_=)^)=bevF}CrqV8^b%_!jB2{E{ zFoH=QmF8%1X`W8$w!67wCCY|M4N24w1wp?)2XW|PiC~tMsp+@(*azKzU%wYV&n_$^ zY!X>7pbz9Ng8Am&|G{TuIxFOh*f9uu?y-v4um^ki241uBd$|_oi0~Gl&a;2j3nmM9 zU7!K=2t`(%b@Un*lG)amz6g)^5C1tIo>OkVrPlkq*D%D{>N&OE*Wd7Eqh1N1P43Os zR@vt#(4wMVaJ^tNGOZXoyi(QH)`hCWI)r!7@rqxNqVe8vIH zVr&Bk-)MRsMpkX9;0-;|;BtR>AoN=k>*7KgA~Tx=`}Fl$TLgEwox{=SeS=|24$+#w z_@cOfrG&oj4HYN`I>!TzX=LjkPUGuh)g?5&FvXcWCSR(Ji3)O6Cx5;`Rj=H-ZpD_k z+%Z6ZGMjU#9|}q;hkEX@m``nS$G&11(f|J$YRSy2vNE!MfR`%PY@jasAHhYp!%dC! zGg2Ee^$m7pM4iCX2!fqM=vlB6+k&j(lx%t__dBj;vZpAZv=4 zOu+d_JRU+w^FLnlaHM72EP)~pQJD7J+%fU6eFH7|)Po8Nr3!f(6I;E;fADyQD&jz{ zQor0I_~o;A*Yzk}Ykq-AlzY@Kj|yy9GOWy{`7l#}4V&bR!G&4ZYOJ(Lp z&a%T|ktYrkNvuNGiuz2r48C)*WGGZE45(JJ_5bz6+fbNCoL9tYu?<8vO+C%e0!w@n zjnRWPHU^%T7qGA30`oDBDp=Fj(ZPIHgPW}EWZXsO+vT!k!6WAIZ&_q)6Fa4B(!s#2 zQ1bmJ-!Se^Ug@e0TxaeWiU>KLlp*>zKrKSigi&<>>Xv26OSGZvw7y_BTC<1#p?@mC z%Be~tDI|;Ic#JRn8%P{TsaxrG_Ch~1N*4ut9BfUzYRgf7D8rsTo;M zpe7wX^_J3t&9ZSV3PxqHh+~6Mldya#>X(A@WM1R$<>D7-hlTmoAJ=KfoVq1H9xL!0 z9s11WvN)VcOx%6VoVuq#ehC|GK$d{4M$Jb#a#Xa%(f|i3O@+=onLrcZ6^1 ze43HM8O4XPnjYvQyCjMya1gP*=*wr+hKAvkYc`KV?G^!=Qad7#BEtAcNLWj@J8BL@ z1Oz{uY%f)1jrPD?A%F;2PMLYWnOlqD7WUE0@YElVvCq$@#8`~KQ)_jSbLG&@gy3x7 z2s|k0IEfyX6}`ESD`oh}&_giO|Y0`Ni)53<;_SpK|y`N0^mo_b@<&uwN^39`y>5m^M5NzZKvJpYzI*BQ^iFFUUr~!0|uX2(69pbv51P|C^2QG$tvn*-|KY)JSx6 zfLf*kgq$2=<^5Io;aYjryj8a>PaW_YR{eGhgZI?BSqj$80Che=Ix=kriK=OH`M#sv zQf-*d82a!K!&QwZ_wsuDp#9vNs7X*Vw}hXx z#yyHu-=Wg|gvSGRP34n6^{lT1tLou5;m+$!gyi@zDsF3$XVnx~z=+h|&!93v9^+As z(hNN0>hG9< zoH=~U?WpdY9Bw}x7G7Rgpm9rZR2YVJ@$z}zK%r1Ce}Bu&+izDWyIKhBP;-t)p&u9F5h=UEtTjCxq-rAn^pcmp^NFD$G^#yYB;<9jb3Y^2u$5a zTUN3awJExGb9SZmdCUkhoS+WNh`9I2h_mCdZMYpuLR194AzE}!$vbj$U{c!wQ1F;e zS-FzR`(Y9wma(4jp9c8D)RW53yv>dbnWn9!b#W*4E&T>$I|vcO^4lWN_M?oU!d$Ii zB9hEk`;+I_O#5S`gZ=&{_SD1VA7!IyG)v75tDKYFPuX1d{|056ckw`NI4xEkUyYeYJ&|-}UzsF&)YcQS zzBl{3&510OKb*Jop*h$tCj009HiHrii=@{J^omBdo5dTT&>BWUTohLRjF@^Z+GP8; z=MKKXnAyDNJxB@Z9z1o)7Sv}TQf1&%z-W$LNAnJF0#G08{&r!%%G9NYens&eb#J`# zAG_pwa;c?5FaEaNthM+xCK~@IN%EcOqkdoX+lBHk;6aQ9^T%4u`rep&8=r7AM!=7g zJ636ESU<$uf=qL-?|s9&Tc@7H9L;}5=cCqEw*akps z_eUPDOig~cxV8-s-}V+C`^eFNZ+0hm#g+d16EIMRZedF?Fji3*m9_`9wijj&l2d}ogT~YA9NF`|i;tT|U7|{9Ri9f}Q=t({Ooj_qA@N~@Uln|ha(hXggC1kkt z{mu1+@#h-Y5P&R3Xl+zMPL^_OQ6~d)0Bq^eIF76ToQoNDn_=4qpyCM41mL|z1iM4PN}w?y@SnfV zY?Q9RZ~K5NZ%6C31mlWfIPHBsLEi(PxrGxe0%Tj{ee}9GQfd1@UKI}fZ#-a4=5`^* zKDlrn|^ z=zKwzHz<|W$bc`)k0!7q{-j8~l;84EpncU}On*oFQ;tCW07yK{1MY7J8Fsik-g6v- z%wD~3m-hk7OaXnFWYxgydX^06oB#wIs8bKjJ2vd;s66xnX!l{vf<+KKCP4|}Fl9MY zFT(9bs5A&T6)3jBct2m*jj~xQPXu9hag;#a`yRWUb9POH`O^H1&Mw+Z$gfkL8; zw$lYsZF^t&UNUBegYaV1u>4*);B&HTWw1MMetYld!geyY4_2#a;GSb+Cx$Tyh$pKd z^H^vAf4^+*^yq%uh~lB+nD$5i?kdXl4t6-RSy7ob{LhyMK$9aeTe`{Vb+<6kRmm9J zv&6BQ1azO6-1mrZGZ1(rVKl%@#8xr|LXEb9-9Q5<#0toF!sePkL9&HHX7YPX9)yEW z$8YZOZv<0Q|zp&=3xzw!OOJ5ukkj5^;QsoovOr8%PD54_8Qg z&H;#p+X$$6cE^KAYFpqUM*CCFRXZLvFzg*V){OaSGWY_^(^Go;@|p-pPrCzV?0g5( zVlm(^Fvt1iV#=_!bSEWM%$Ww)0 zC3Sucx2v@}ZAFx6#)55YLEA9iI2y{$Z@&1h|Lq!JjSUxU`{WOosj7l;v+J5pjR5w? zVu(mR5e+-AnP@0qS@eE+b!}}s*>b{s0C=NRq-#z`d$P>&QbG=Q0*gWcS(`j+jkix9 zzC*acuqFg}M_~IP;y7Sz3U}on{y+5{@aIs5JEG#)rL|;I8SNw+GOkL7(}-R5YyG}{ zxbtOU_fXC?S?^}(CIX7E`#|vxmjJyBm3sJ5`8EyHGSu8rH?XV#pr3Z~rD5)Vb}JcF zfOa&jGqiKmCBqx!3k3fM(aSfsir)gbWi~LU?i}eXfUggcfWysiv;nhHn+Z(3+9R(9 z<_d#Y?Q~cI4xq3HJJ`FiX+dJ7!6%n;2$aBRfK4f-ZkosiGBkka_A!CMA{-ON`2D2w z*v+v)$GiJ%d}@{(&J712ip-1tilp=kT`+Ix>3)?XgZvQ$$=ovj?Q|c=$g28j_pnj$ zj9PMkd@6_nOG&c-!;|15C?i~JKp%?wfiJ|zDDP)XEj>?#p=k%1L(-$gnt5#8KMKfC z<&`I%?8K?tB@`~X{2&05s9t&vCq51ZOo9pwOODrQ1rY;bjSlb>$4;;|o#$u&XQe6q{6_F(}{pS8TMAp;ogw2?D9ll5ati+N-mBK;C zV_b37d=Q*db_6+0#^Zm+=)TqEIt7413Cg?9De>{9(N)HOV&-ZCJOnaR>%$&|eAD6% z@Q;@kAdDx~x{?u20o?F%1&-g0hbbv#1Zw{nv%(n0@YIjC?)AuX`h^Fsf%wxs&1B9* zIHOFm<(|fuxQlXNW-5CTn4v%;+#Cx~Gnyx?umP+%XP1HLO!w?oZ@AqH{a+iDaU$}m zYU5ioK>u3?T7p{uL_e3%h%HTqC3S%Il)xs3!NVW2LdfhN`p?}!`vr6dd=1rZ)&P5>J@c#W7^*G5k|Z6b^^in^;{|K}$Qu?r}y<5dg73!@PpD>c55jO8nSxg*9RpS zP8~RO&02 zU|cI98RkgS-Q&$7pn#CRZWoh`F(c{g{=SH}zi^4|AnyVX=Hr@M9_4d#9&wSaAg+)V z^TuRY9R{h=FwaLOouDWIuMjDrQ6ZWHaH1)K5p3N|rh9i&YzBIh1Kk zjseAU5s04&B^>yDyh>(C7d+v6%u4tC9w0$RMF}>a%sf}b67Cy1fq;XbBnE>RiiFXx z4W-RuTn1c-XUW(<91U98w+SGhg1r;eJfPuvUw>qQY6tpbNeERA#uCvJItji5BSX}< zP&&=vn?UCZtssmK%1mNH@^JAS?&8?h7kxk@QU_1c2hN#uuKRoSi9nqI2_DgK<{?IO z>GIiY35b1x`p_q!4JQbF(p}HnXGoZ6SL;NgOM;jWweqYZ|2Frmv#UhZ3Hs}f%0NuM zV5DkeI2h~@5Hb(k-D8LSU9tU?BL+$Dk|DrYUmuJ%T%QnjdW)gjC^D3qK1P^15Oy3U z!+T^p&}R5EnLxR*TGjsP+hrU=oCP@_s>~lC;WgH*^hd2tEOt4xqAwWL4V zE=qwPDXkyq-!DN}3^ARY(>*Z=#5?r-8lfmWXel)f19=KXIQDFJ6oYVcwcfcZvq{_= zP}$;*K!##q(<5`w37ZF)qk%wX8O`N`aQl7Y~>@8kuxtE(&-UOerAQCn+InEckG*yr+{68M zIjvC)1%{w?nl@y*8lliZry~qFIvulff}77YsVNYKtqcmU|q!Xc#?hfq5+8>^!v@Tpo#05=1en zh9s~Sv93pEeiRrJ%am$UpM#`J0(V|9E|O#iF$mq#(Z~*!-bW;+CKiH-uAOvvaP;dv za?QQS#FV#n>)E2C-2rHWU<#!mI^dzK5WLfq_-DusoNfB6{mSL=rHIcD4!cfD06mdC zJMH_8^AGZ9(%|iXc$=(MmC*Fi$2lMWVdNCOgSW0!Cm zKfvbzD**W0nBH#vj8et+P$^RF?2Vx|A(fp-)c;B;TdyL5D!oWMZJ#wumtA`M?(N%y z`n!!o)n(gpI}PyD*o*J|^Bw#^%hNK8Q^%2PbR|LhsGq=isJ;cG^FF&JZBKF=Ko9hU zzc6izm-p&>j?5e9#GH%)vp`zFFZ|*XfkKEZgg9EqihxIumM3jPtFUNf;N(oA)&WRhlTL`246==pqg7%^>!I6APsdhzye{h$_UUoQgWAIwi*-bG|i4Ej3< zkCWac0VRf}FZ5fHYVJdGO74su{kcjc}+1+N?UX2rI zw6(p559tRTm>_N2xXq7-AR6M$icF2Of3 zf+|1^UAhFIqc(W|aY4xcQ_&rZEGKpSCCfqKG?8ol57D;aSAxIr>4%%`X^R$ z3db!L&DRIfOnjc?{?BYbPdl_%)%iD;aS=@~@_e#H#AzxpH@Y0Yi0*qi0`@^*qy+M6 z2&O9hr1gk^E6LXR#utK#;ue~wRoMe&Cu{oeKViN0_5>OmFGE(N7BL^m#>=ux&}SjExIB%Qi?!8Fhy@I zTqh$*=U`^}{4_BUMAJmd)ljCa3`3_55maQqQbb^U;qN+&t~}yAaos?;Xm>zkb`nu8 z7r&GE4gZXHTp@zoP$;|97R;Uvlf8*{TXV=1c$xA;kC$xh+8Uk;8FY2Q-$8$v^xzW+ zk*?bFIFe}LyGkl90nu2D=Xit=<|rIQmw_SU zSWV+)OUr5^?*c_OS0|^cPk+CP93=k(0=le6aFl6p)j@1C^ae_@O8_k%L*OXD_dpkx zvfYdb8k)KiB{_i?!)kI`kpv?k*V)VTGj2YK_xI}Jga~g1s~7Thj#D_n&#dUhuD9_b z&|`%FtVT6AbF9R>Cjj}1pi}{s2cO34wwnp`N`Pnw?e4mIoB5u>uzj+7VtXQ09EvL*z%I9o25yJ@+!Bs1viovn!#SCm}kRI(vroO zLVgVjZ%BAKMD?`v7lSWH5vk?m=OyPJwK)h`{~dmekaYujFA`>MSIs#`I)^ih2cfDX zGG6LFG8%mN2Y&5JfnSn+Z z4|}}Yd8|JEWw7W14gDhHKlG6vo>Lca>#n{uTP5ju;r&|lw?{=p?e-*iy~Cs5AAzf)b6JHWZAvhGwHY_5b7}27Y@0<0F z`0)F~=4v7WM9?7;8xAxk3`Af81o^K{=HkU;qQBl}3U$J%977PijXIGB#x$@cZoFVU zGDL8Bf2^q~M!d6jr#!j5%O${^X;%I}m^0G#5k^uH1zkm#%i81i-hVD{YZNc}uzfCX zP)~ZRTJxzu60Q<(gj&}s!W~-(v@WVel;=3cQX*o?4s4%SmSnDj34#>;bBK<83Ifa? zK5q~eh7FxJ_T3%IFzsovi4#^s}< z{gCCfVn;pimyb^X&8}nJ{HNF%w?jVq%lJ<#Z#+Tr^Sai?g<-2bbTyvRpRQSt&HXLN zlgTL@WIPn>8cPIUh|+?x^}$o$EMaP3ezoPa;NtBOxieDVM8ALsT3bWF+Po$OUMSsp zp=2aZQtQ3C1lp$Sk_jJjpV0@Xh9awj5_;}PI4bfj|4WwnKcZ(9+uP6;7L^+XX+}hz zUS_+9l{6E1ZUWlkv*E@7X)S}RZ^&B^5nHRqrvvm&LXOWw%?F-s3Z)8Oj{9Onchnp~ zHAJ;~Awx#wD5u_m?kU$MHUIm;;=wwZsI0iik_aPGB=8g-QHP$o$z~Rre7w}00w6(+8Zahep zG7<}2GWewCV#8;|DqcPGR`?Hj7JGFyr#mtH0yCVjH!Wlkg7nsdwg!ai-TP-CSonAF z(Ip?p#LvwD81UxmaiY}AP;7Jr70t90wNPCUZjTf;CgHF5`kk-+DAB$dSeB{XZ;eyAdFP? zeDX^`aRoRCSaX1bB$oTTfz5iBnU97}Wmr!t7E+{74DK9ssOfT#_W6rIz7x z8IrF$OpHm14O~PuLBVIkt~J)0k4P~JcRJ#SYMtm*k8t3=tmwEY?m@i>$O=gj&Go&y zbwv=c%V7h=j-MlG`?d)^5?j?pd|?{G#i{T7KPhB(gztAwXny=P!<2HxTFrJ! zR8Z6|Pg2(K>bdmEZ{ExbI2<=ee_qmUA^}@Nyq26mJt>9~{2y9$xEM?~=2ke+)lR=k z3buMa@!ms(4CqsJw&Rf^5O|;xboGCUX&zCBZ;f{=IZkHteSSW;U)n(}?^GZh*mi2( zJK3FByS2V-`H(UwO1xt?j`FD~#xXC75DIYk6pbNUXQJl8tRx~(@G@=nB;`)!hZhBm z`35DxNO&w;I%|)1VA!l8i`-fs`aO(;u#d&(GWE#;@eG`QA$2_Rg2SzXK8viQx;QGy};QI@|&WkP&DrY)rHt_ll8QpLZ-SiQ5@!FKcQDin3QM z|048Khz>i19aVoGBA-3@f3WI~#sO4*oM^@6+lc9GcP)AZ*-ocF&~E1-31sr5EyCY!bvZi+@W~)B-eVk zr0tf2)|1VIuA;6jdXwoQKd>=|{FGggy!+0&@TsvZ7Ov(BnIW`~=bazpb^baeC!_)t z2b1;x9{A+T`jL@7O6eSXqLMtJq|HLz5#7sl(|OQzHc)&awlvSk2mQG9y7e1Q_#X9o zjKjwuoWk#L+?J#&Xf|%sG4c0gc^6F|FVk}=``;B_J#gv&Ut^%?RtnS)Y5%|IRsHu4 zg8CoNV9V*xyE3~=sxilqOUrPXWnYJeVRzcLL(8oKxIDLs*y>(=!??C4&XISJCFpSG zCP#$GbYcJ!l^RkWhlrrXf8rhlnnTGMtvOmC5`OEK+^%OChnvI>5TaU5kv|lqgkvPL zFTU|Z?^cx_rcB%61|ogH4ZI(Qxm8fix|r$U>y(8+AbH7CSx&B45Mhgl_CutT7>=#B zPE(bageDuVji7b1%odS2yeLq9E77C8GCeGNA zwKVGna%Dc^J2mNo$Ba9L4Z-57sV-cVzR3e+;oy(nCFr|s}`DZ(TH zm^Q=*Ow?0j6Ntu{s6@JvVE1_w4rJ+wstXZzB%(TqQC5?2AQ1(-4d1cj!Mr#%wVFzM@67V`8i$Xk>?uN<}E28HdzI)+d)`}=Y(vX=bopF z&W7$rgNF_g4%|+S+rYP55fU`;+rcZieeJZlXWRc zF?xAic0_WH#18~7Bqd-{Ic^PwE=_ehoqf1R9`m_KN0(cF13_p=koM)f`}~n*#~!2> zuXqbm;InfwhKI2J2(`9T$CTSIl^~t?03$Yv^!F%%EA}?>eI&FAB_AbpLWxfzMKCnIrnYd z2|dsU%Nl@G9!3=a2?QjvvSw|7eBC7C;&f453z6rD-1vzm6;UBoiV{v4Jl182f{s_u z|IYQ|8)nJ8P~lD2iIrx5c!+(G{HV`|&Q4-wYW*J_J`&zJkvH6)4;QRxx~l19Yip|} z)^-w@He=X?8Qn2~Ypv3NwTwi4a{FX@ssREpX!3}xJuZ{LC*!{*YGxCBmjLvFcsVd8 z1m5?b;;+7_Zo;Gu#K)Ud(I2+!`XBhn=Im#q{9=!ndhdDZ&TYMlq@rMLxr{U_gIz*q zS_D9y6as-vqtSZ5ND-XWu~3gOz8;#T(Q@Fzm+e%v>6CEH^Teh$t%Sa<~;D)?Q>s@u=c|UncD}ACu0* z`gY^XQ)JTd1F)Z%Yq&L%17E#*)!-t<&JLV-JWz6B)`5Mhb3Zq?Jjx8s2+9TqG#duM zLX)*0?W@OZ&WAEGGR!rU0&m6e_CsG4{nt(^+yKg#RB$`U%y-OQ*+v^BBmT;W~IMrB#-

    N0^R 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

    N9Mq3|6n*_0 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

  1. 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 VHSHdutd&nPoiKI$nX&WN{SR##^mqUO literal 0 HcmV?d00001 diff --git a/paper_plot/results_all/ResNet18@cifar-10/pFedMe_C_Acc.png b/paper_plot/results_all/ResNet18@cifar-10/pFedMe_C_Acc.png new file mode 100644 index 0000000000000000000000000000000000000000..8fae0cdc704232bd895bf53f24eec0e98ebe2557 GIT binary patch literal 169656 zcmeFac{tU3+cv)1?S^gdYTF@2G>AgArBFzdP*RGrDwMGzG87BZZtn);(h?#=r8y;3 z5~TsFWlV#iL|KMJWXYJ}J+H6!{XFmS`}g;kwT2JkRSAxXHv| zg4i@M7K=5($Z*YO7Hj-b{O`~4WAP_u^Cz6g|1I^@xA5HJ>fq_M+ufeEVYlZ2XID?> zy*4ur*}Hq}b#+l+uw=m^)fsy{Jr8&+Texule|}(rtGnYuWes_KyvQ#H4A~wm)`Hpe zzfsK=l?@%q1o~NMA&o@sjP6nQ#2I(i%)g87QHip>7cf6SPm|NDzi(=ywCC~{eErk zvR79&a<7};XdLo-ch{*RI}r!Fm-}Nc7kz#D>%!ck81+uMq^sZBYxN2W3Pf_FSuC;G zksV$!cI(aUl9QJA?y9kshE*=S)yWnDH<5}1I+`!45%)d+c@$c3y z@2ijSZi@F3$tBJG*8EDTU7W=_xB15he;#hRvb z7C!2ob$o(MRF5=^wQ28$CTV zzsBK_U(Q>&kn2C#-=K?IZ>Id?TuZJvzx&I>{?9kmIHLM&K8tl^o&Lx%KlhWLNT8(V z^X*eM|EgJk_m{IhxFMUGf4sTb?|H|UWY`IK(u?{ zF$3cl*eRU!2x>k?_aGr-2YAB`_EC$y)Q3% z4|Y{Bo1i@B$7+aud%1pLUdU8+e4=wz6L2BRGoMlnC3|0UMxR-j1aF0c2s14p=Nu;S<2Pns)ItZQaVBu88OFMTv1DjZpZ^&@Mr zYr^Dh;($v4~PX7SZY4;qTpL=U1Pwr z3wBEXJ#Laol-Jw6SLPJ{#5z*&BYNzb5YK6h5u}a%P5O70t;vQ_+kT^OYyCPm@RAib z#O9tdkc(0HmBmt?{Np1pd7bW9dKHJ3m)zIc#NV<}H&Wq-#YG*d#@AamhJJo?L#c4| ze}DZYPUWf-^#;D$apnb2ihSSOA+&vc)l?uVS=N$l$Ho@M{Mf?eW2gDgew(^T;Su)V zjuXi)*lc{oB;JNU-OD%%!80;&WMv<3*AhLSowWDWWuvsMDOS@b>3m(mOD<6D>fEJ? zxT<0I?=qanX>&rV$_EvlK zANM7qVX4$u){zN64#DGPTAfAe5%v?L|C|xE&^kdiWf7`0`IEg@;-%i)*tU^(ch{4n-gtbTow>$5?y=^obVsurTj#Uou+?jSe8!e@ zMiGi`^`{IJ3)izxUR7P*|0&74=e<`%!=>s=2!zTiKOXtu=``;@?Vg99S$^0jExTZb zecvUIrjn6Ef<0i*8%ZF^NzW$f>BMTfCMeuUPF9t}WmRBDK0$P=JAXoMU6fZj+i~Rl z82>nu)6MZrCfZ-_*l`B?yVggUe@ZyqU3F%O(^g*cv?cp;uU$!qWzLWGk0XK`nbY4Xm@MTm1#FI~E1dUN~T zt2;7Wuyak?!~5Uf*^3aT)86q{TpZ57nnTeU1@`E16GL{mK3uZz&Gkryl;3rGKm2XF zeS55eQ^W?1z}1s<7aK_(v&{>VRP$&oI-?gblu=RNP#7KHtGfW9Y}vuj1Mj-LlR`Cu zq~>p5)AjjHr#}KzCKE?`BPt1&-n{*HSk znFl|=4#anB3!~;IVKd6o>`;RArxPlNZ!gviEKP7SNkaEK40Q~dIWE)YvKn)T0jJl%<08`2qmq=xEo8bBPdb_t* zS8|AkduJYP#_ia6!U(Px7ZhyuFe}jc)V}*P!clWd7c{frXO-nN1h6y5+ z9Mej$YIPACmj`adt7_|6KlJHh7V&O{RceKmZ{G6nt&=yL)hM=JfPLo<6!TN>4iA0j zuN*gB0vl)C_vc)ejBB==XM2tA*a_24E2L~pT&}<4X9Or?KST+ENcPt)oT5ZMJ*&fA zZ=^MxEwa1HcXWI_A+I=ZWw-(l8~ zZ01_a#L;Sdl!|T<&+~16IE8}fnl-fZhiVV^XnlLJ zT3Bhz4c(vdUZcwAanFuScl&Hnfr^^<*AL#fe05m7f`bXzQRyZ7%qU*EJnCz_y8Z4x z&o6J6(Ee);^$Ncznmr+OQ@Z@S^KY_Re03VVfIF7{w40`nE)iYs+-2g})lpc(Yk&9AQT0fQ10Qo=7*Pq3@7^a@1=T+Wtj z4xO&8F?N!iEb?2Jnr;3XHk*B`(>P|)oXf^Be-N%(v&K2SSi=qIfj{p`+#l1Ic|Jd= z!8&4gy+@A|x?KK?(oux|i z{~A!jojtkD`tXul4?bU~vv~mtw&R4}z|2QO{Vhcm$0rn@6rWwk*Bf$MOleQM_4fUy z1Yh@sfB7XMrt@(gWbxlF6nnySM9-!F+_fTk`(5SsvY@xf_*1u8aqOK_^Q7F0)cCox zxjH<~FZFsci}!A>KJaWpS*Ax*rT_OY!Z7W&lls9@4U2wlmUVwVQxFzES4AawXz;s| zKv_X$+pQ2}6)kqc`xRoZfD47kWn4~9KU6vMQ049uy?G1$#c}9M9{wykj5D2nAJ3g+ z%MVL^Hc>lwc(8VO1kC)(+Vzl0%lcm;w^;?^Ef?IY@oDL8SQrrFDI+@AB~VJtmE5*d ze1~(Yew@$eYZO7V4UVqcFW}8VV)V+r_s&HI2g_>!|3vVmap=L^`SU{^6AxsH9i6m?-EUPU0=IeNz}O-< zbGYAJ=@4^uM24-|oh4;>_z~Fsi*n>rkH%c{ZI+U>3_Cr`^wr$zavV}gA1_vS>COwe39IVyRUCqW>p@nummJgHL2g9A2PM0E_k70p@*vR5W=1W z?&HZVCQIiKbjju$xnRlFc0E2)2^>_14t(C06Et!9vfT9x zAD-^fYQa0n1t0qIHcx)&>xp$Iop2a?hlXuO7-g# z*>O0ZYjXn9Qd~9OIj3s@AVk=ucGn#4d0**Odsv8nk?hIONe&i?M9fyu;$R#8Y2vpa3NTdO$S zEgw;ENln*26ykI%QxRFFQ|`*H_sD9goh90Q>_B4AT%!ro7SCOFs8t#nb9+tF?c;RU zkbKwi?jHE~ln!)+UBgZ59DhMtiIy;g!gZQXc@frzxoWfsRsn-u+5Bq<(jAI}UTxIV zow)4N4C^bSSz|WP4Y~SS?(nxVN{p2B+D&=BEjKeRY`J1WJC<$mSM`8xMq<2I%~D#D zY`)+PKA$jPxFbfEo^iOm8$GoFdX&d|@pGMWmsY)ZFP!gIvb4$hYy0zso;Z;Q zoDq7B(tebsMroqkINcOh(sZ)^GK)iP#ULKd8t^O~gkx}opwT=f#IXQ5R;ZN0QEQfu(rE7Vvm6${y0 z^?mCCm27}njMDa1+?uYG=;zK;^{)hAwTZSo6bRhfpu6sgZ+DfWZQ|kXKqP|(T`|^* zHB1_dG{i2&x#dso0II>yxzGWn6)TEcs@`roBQsKE+gh%iu5;?6D3|Px{QE%9DCt*) zN~_I!aIht+HQ(L7>&5CxdBX#x!}Ypj^=345{E2{?e8*tbC6vB|l@QDn3WeV%$ZEZ) zh;wQtlsni{t4GKn+h7!nA!d}h*n2Hh*x^0WnKIgkoB@~KXiuD{3fsK zPzTpdFekcRckMB6+=;rc&n9v6f~Pd;u3LE@M?u(=Gkmzl_N)Az{qHoo@!qJG-3;z5 z%o$i@#c7DN$mC47UQ4ZrJ~5cJ3X;MckN{q1od~@eFy5M*&{q5~fu_X42t8qEIztD_GT#!E&al>65>xibpE?TEpH3l`k}aMUiqQRaf1Fkipo zmL*Q@R1Wtimh)q(evcgO!KolrajHjpOcQWya1wX z0{+QS2I`cXJ(=hm6t2}ShP6qE2vm;tetWgCQ|?$h;XZ>eZ|_Ff&EI}!Zi07RpaNU+ z(tpLk&3PGj(%oNe(9CpYI6otV76kZ4 z7BpcP3dS{fuB3I5%Bd(&T=j_dIHSXHH%`!5s%U)Xch^UK4#tVgbu;*G4UyZ{o|riO z0t(p7;_$a1S%eoOOq9=DSdFsw!v1&n%8+FDpr{4yHvEo@!<>)hvhAqLOWjj;;mjiY zbs;jE3pz^!kNr9&pFl94G6b*U_(00ZkxEuuuC9ihfA2>HVvIsxnP|^9+FDMz;0(ZL znhyV|T@%7<2*RLFyV|T-7l4h+z=3=M6Xl%Q5LIi%)kMwenvzGK3~40~%wy-5E^idC z_&X((n+OtNlk^7u%m^?Dk<(q~kDW6Z9vbvu%d;wPGiAz{8`;@9B|4o&R17*e-Puz% zYnfM@EY^r}yZ*a-`;&0VYinNIK*CYoaj*5=Ss&W?z{yHXag5@bDU<=EW2*d|>QVv* zojj2%K5_p!cmH%`q<(3FuCS}Zx^(~X{r9RA!?fy7YJEEQw+$%NFqD^`p~KF9kDYK~ z<=lI9utOGx(^pWy@vbzzXXCT{=2IbW;GcB#j)0XWrPB5=OYC29TV};$t_@ zUa}tiye(61`s<5E5ueI$?vVBQbUqb$pGxxzpKV70+VlAG0kW%){}u>Nc{w6Z{J^JU zfDW3sG8Z)k`LJ2~?Yot>BB?ikDR60<#Fq4CF(> z2h2ttaCXnC};R5`w;5oX%oC0J#N@^ZK*dVmaG*YJ@0iLAoJNWm+Y7}~$E(DlJFChI3II^*5J*#A$ea$H zwj`+KR@MSKlEmQ?EwjD-kLNvmaq$M~mGp=@Q6T)IHSqOWM153bWFBa3>)o1KY<2VN zW`W4-v)NWT{)0SwdwVc61ZEW2#9l?1ESqN}HC&3yT9Pm8VeE(MMDm^kQ36OQVW|BL z5|sp4yK$}l%T8Kc^8;_B~#ZKPOwc@}T)L@uSt=!cfV6lL2B)E=5~y-`(=$ z0r5=7q9!vH*Y__O!WhSdK%z<`WcrxR>8D_%`Y-O1H@X;5Ir~=$M?LNrcy$Su2h)^`%$|Lg{U*fJflf zDMGHLg9myc@bY%ev(9No-@x}|C-()mYspLFZa_za$)560s{@~WMWCQubcXo0AX?d673i4D*@OIyg zn>NFPJsWv>wW#bbt~xZ~^UF)?saEsv2(~u!p69#2>r>fmP#^JBUoWz3I{NE^lK=${ z55}@qFq-owyY6a_QU-N?_h%L^;FXbJQG5;*2XuL#oCuQt5DXz^@A5 z5_uU6fV;5W)bJCX8enfl!FEvjIvu%_jnbHU4)AhL;f?3C2SWhg2@DpM)4kpaY#h@tnl296+?8GGQ{CkzN+D#vA z14^p{-y2L>z4Pu60yH1^M%{W`c`iO(-4(sTy_X45%tXvJ-|HHSNU3H8&XBUdVqZf; zLu6zAE3leKTWvT5z*l_AuUO7v&-ku45GUxSB_WJ)xT|J?=Lp7aUe30fDK|+ST(Vu3 z9#O?9Ru6f09bTwu*nS{{Vj3#0o2w8u>;2*yu;T##adIGTCV%uKo$%(e{m^=>jpMY` z(*0OR#xpgqAqg5~AjhtP=%`5=I7iR%_oU_0V9km=;{goJD^tb3))H+W)7Ez2)A@ir`S;T;`9Npxhs z;Y6k{QC@{SRgDZYZ}_*>6a67{Lz*gQtu4y`Fpgx2c+XKh5-ipSJ+1oi)fBIgM9G%(K?!ud@3Vu!&Sp2`(B^q%lWDT zQ-Q!pzVezM|BcG%^8RV4@`0XJjkZGLsQYKKi6Kuv7xzv^m>*iGkcHbtxhofE_>7T% z0zFtI5)-cp`P|;Wcr;7HnE{5E-T)#Ke|@RymwIdSo7SsxS!TO6vsCNjKC*9~iX-g}&XAXKHGp|KxfRiE=1$RNl9l)?UHM>p-ku+OB4?5$aC}MLD)rl)-_U*HFMH&i9BXu_H~x6P1%k zQS1_xh}M>roaF>KjMIM2Q#|X;Gg_LSon76slodX8gxvyOIeP&s%i*3{^S%2ELkl?c z(aI68lJ3{LoJeaD{5UQ+-E;s@BSz?C{SNNYvJCgHK9d57sHm%>$}utT!;`<&3v(9QVXqQfn0VdR)P25xzjCA zGRAI7ERh*RGS+7j(@i7<*7?W?zeO5RiEdAIHsA0wB_NzW?eqcF+P#y8ucLgwl{3_D zoJO@hABa8P=+Ml4cx=in0uOm0*=pBm!|6L*GUtH4S|k`M}R~IC0q({RRd-IYHnt~A?{NA%MDq8d@Zo+$zlv7bWZcKQG(B9i(Jshi(5l(b! z87Sk6F~3TwKJOZ~WS#S7O4G=7s6vI0zPG77I6E3nppJ^1p(P{}8x3L2gy8fG6=a6q z;Q#3st!G};*sFA&8G+GO#7QIdDf72W;KZ$q&Ab(*%H~z2N)^X02_~i|#;$2U056xy z5uA=m2V2TRCvVhIV_PNgpJl^fLISA*8*f_%bfCbNc>vk1=+Nj)z&n*e@ldB5M3=rX z-!`Z8{R^=rtQC19R8wT)@IX^)vBo>lNQwl@P&RNBs{p<;Yi8Iy6Ct0?i>RK^ad}H_ zt!t2#*ZYG4k6#og6P7#`gcN9+NIly&?OMNg}hAJP=W1aJ2cQo0w$a&g=#Vn zs1oEjpqQvb-Di}rgH1IA;UtA()rAWep0RwuI#S2j^US7^Fh_Z$U2V}DT>YX$WBO1| z)q#U5!Nz|is(}z#>BGiYC!XV0jVU`1tbCab8NjHIZx-fvhBD%06S$_N6uRbYc+ zWoLu0FiI;ogE(cftohz>iS1;oU_nTn;k20=OqYaIyBZ7fiL~37*|=feeGSnO4nMJEG?eDBUW?j5UODU1v_CAZz$a|zEuY+oGgWhY;8-zj4o>zGMCIV{$kYRl$ zN>Cp%5^-GY?-Dun?D&KThey42!A70suK^>X1TG5XOCli}5#c=-k=R)5AF~ibt5n4( zu#sNFz?01p^v{HXvd%}=f|9ZQ{!b9%<8(Y|`CFY{6?{fvyfHSqqDz`J*JOlFD*Sxr z^s4ALLOB3G#Z2eQwIR~tIHKzkz9-2K&gD4R14-SbisNNb_Mx8zpYQHjt-BqNRLTvM zLnH3VRia#88Y!U!I4RtnfO}5?hnK8uem$2mu|hEL30S1#X;nFfmOuAFxwnOYW~4sq z$b@Jn{k+hq@fMPH2j+MRZp0pu*O0*)NR8UWNYvw@$fr;rLnp!+iA~_4lJzcDwtjBa7@=H z_&)tb2`|t}akD-vs^K7npCInYlMyF5q5J&_oQ?HECeKdhxHjO9r6`r!KkG(Gu2gzw z%wSIoO1hWXaEaKZoh_UcqwVG52fA9|0Sm`tx`Q~yb+Fll;hrK4PKUN+Rd#RxI|cTC zB4I7+ucgEXDdHx0i3F>pDul2g&B^JO_?yUE5QvG3J0V_dj2*{vzCXeg90D$G&|P&a z&BrT4xZ7|qd{#uaDwdl6+~@!0T?QB7TcJ4llh=$%ApQyp3lT*=Y1@#{+4} z@#MN`QvTS7c>%e#+!IEJpJ}cV|K|=d)E2N=zAQqam=A6=esQ{mS&EhJGS5%pi_w&Tb=Add{E5d=i6 zPP)a#1+`V6kqk#IK2bLHnQXuL+f_GPbCpcuq`_CMkNt(^d}d@Nx*;^CPiF~3|>RH^I1y*PYoD{JDcPB=`9TWg5$Q2u+rkpyY z84kq1RWRec>McIeez=oJ1X9;h_y7-TVC*i&upS>bVz@O6m(PQiTT535rQ(5&X+B@vihBcerbO;Q zu&Jw$*k}S&=zRu-t72nOOoYM>3e#9gB|%+#n%1GhuHF;)rwegZ!xwwNack5Gi)RFL zWy7~;xJ-vp4jAU>3sm@fs?zL5JN19x{JgI7Di}4Qs_HZIE`k|0>Lj-+p2Ik{FVU`J z=@yD~KsY!J1!2n~tqX*^iPY{z#EP&ZQ4#!07~q>KTTYx9JW&zCqEe}<#9+QaA7g)F`XR%FYvWgmv8z4b0tQ^bl@@pe8*pgrsnWKt-a~bg1Y$nT1N4t6knLQaREO`*d^q{jNn_T_+`>o^zuByxPwB0dK(?mt1Mvq-% zWE9Ai@7;qFEovHsQ@|*p@36#5<+W0Yv(1vput>_Ws_Wq(62DA*Bq~7~$EXJ96xR93 zcJ%O8*HmP$8kPoG@vy?y9g<#1A=xs^k@?qOjycJK(8ubH0PX6v_RyM!C-CH{!bT?au#>@nb+8c8|r6|<{(9o`&B0ct1M7g$wIl0 z)`VYV;ecSgy8m9#JvWD|gCtdKP}&s!tZMagmnO?0wj$ZB7rM%e<6Q_|} z0b8K`%^_n-&B*SAm3a*v!}k@ZOv2jyIA9;{pYIt=^R|L7_N-3C1fqAbhX0U#yKfpr z-vlGX=KxtU3nY<#}Z)PT>aKM+-;ZMka7- z)#MG(`}ifrbftQC)MXpYI8TLL#q+u)O2M}2K~JC*$MuX?AWqnhjoOuqdSc1YL&RXC z^8FB9D4Q8c)!y~#+LvW0aSG|D0lg!eejdpT#E)bf%r#`|EDV~F%q7F1?oW}%QYlNx z5tP9G4Fp#VUfvUd&H#VJv!g6Q5ok&OL+Tqyb67*}ZKUa1pTRtzCO6C5PhQCf{{Y8W;fdN%+yF0Gr2kQ~Bm|uLO z{mS@N=iQF$I;|JKSm$jOw6Uk{eG&u^qqHA-U1h*P7s6d05f^qhPo7LKS*F648ZH4I zJrXdIFJv`SaBTSUbC2F$UhQqO|0XQsoXbhOA0;+j>V*Y+wux@nYdenK9U&j^mpWzE zrI}#0>ZqXM<@I>{w@13dob65FINMP=uR=$c^Fh5Lz|u$aN<2|p+T!cBE;BtJu~iPZ zW2nY@Jx8^OOaq_-)<^MkI+ugbA> z^aR@ai0KjkhV7v*O*w$^#HsR@%$h}Fjvd=iufi5WSR@n34j_>E<2BjUr|qA8%%A-4 z%55vK(MQ>ql$|}Gtw&%a;Ctr5H()}5M`weLPRzu){hBgzu!N0odba$0{srNzcJZrr z2zg;mm%O`LtJJGn+NoCxr223-pWr4WI)y56@hkC%Vx9EIe3hkFF*`O2UJqOC@67&P zql;AZ!!i(|6a6$i&ne6)AMY^F3TDGl64{878*wI(p=Q=BI;7;3;8l<3KQ%iIlp-!Z zdhBl}$)FM8%wnb4BVVx2eIVAUU0iIllxA1j1GmS=&!c7$s7EifmP0van6Q5L^9$q2 zfLR}t_qcO&^+-nw_@ds7#D(BojH0q=iP3|CD3M6H;p7=L+qH_BESBAmJM8jPKn@Iw z0OqsDx6Ho5z>Fe==mGnVSZWD@FL!;yjw)=gO1t>;7f^oW@R>I7?!xfl4bW~2w=8+N zlmsESWeoMN1HGHwi1P1r#hx80U>sI+wQx^zR1=~h87Y+7Ju3tIV(k8Kbf))y_>=_d zg#`sR2-Q@iph2Wb_ou1<_O=K_=#pY28fthlvI5EyqD5x|FE3V57u$;Kyoob%mkh+~ zzuR|Y)4k;=%7h{G+VfhbKhJZbLQY{@^T*oED5)HD=inV>+@4L)R48nLichTyY`J0N zX}kaJc|S4Fo9t4Mw)^?#&L)z?Xi2)3CVl(buA`KfLVjbc>>PnIjAaBB1VIN>jpfq3 z4^z^;nmuyP(y>U4XU|sR^riLD`5;Ckm`s%_P&|v|Yb2_Mr%AE&;-7R+BZRwUt-rQs zM+7_zci$Fnh7>0UL}XE8>wF-sH?|G6S1^1rilt*%GklqRv@#ZL6zH`&om_M38nO`S zQHqJH8K`9}W+0WQp6K7dS5#E6prLJ|#4S+Ih=f<+O{yjJpMIKN`(CwsVSNnhh9D4D z3jgiZ-AA`%rTHwESZQGmx_N`Bh)hpV4@5h~R!gO5BUW~iX9$-}B=@)2i~DXuYHRA0 z6Kc!;8o{MAT@Zt&r;&>rj*Ghh!O|R!1UyH7(1mLD1t8ZXjuSxSTz1O$+JGR7s;d(( zw%L&X?BA@E&99s>0&7P7=rTHTwEl99mwoDdFEs2V(UtJ1x=l{9h-#1{j=c3lX}xi7 zi;KK6kGoh<9H%@flAApX;9H3aCNV!yQEvY&)dVhi%W-THU}kXOY5VnlHFg(ROJ$8w z-Fg3o>D=L5?Osh)#I9f%ywMp*BpYn0SVoy-a3cng@FJSRpwnSJBXy>*jyR8;$!1*j zjGKeQDc~(&SpK^{^PY>+vFTpbY7y1sz>nA|ihko%iY6j;!OakO({E-QoI5J{)I`=` z`av^ioKy}sb!7`AC{YnoR4#5VujwaN`1}zRIe+K6`!{bw-LTHTUn$LKY^8w#IhT6SCA-LQM6DKmU8dT$u;S1u=)3 ze_~zr8#%!ZmuqV6yL9Fr4KJW7(Wp%&B^%skpYptUfuJ$wlpaJWM!q}<=-4+|vXExp zd>o*{_Oq|{!8-Zc(C84{(0;? zTn(vU(NQhJ?GLLHk^Zcz5oNucybth9f|}eJDzCR34wln8UT_K-CkT$;z#Ei-S*_13 zj9$on^7lAecBF=4g&y#nB?=j7)WMmJ^v2-cGo9TNXPUQ%}x3YWgxx8^tmliTunPBnQoa@j3uJ)_v-5G z%=(2lR=tJ(tS*@ENlhUz%r0tIo6C~ST+LVG%TAskqmg{OtGAuxTVjJ1tDpdEBkN6! z-Dp-g)1Y}=h_@?J z$O_j*3y_Sn8?XH>b#Z}7yAggDElp?0jBV@=6h9rHwp2leb>z;-eeq)a->Z(PAT8ve zaU{l0Tk3eS-9h1ARMl=^h8=ht{O{p>Rl?64(Nuza`girzXQw6%q!YC3TtXBBF?;IP zC+>QIuhNfSc5smZ4AfcbU0)$CMD^WEVvroutqMayXKK?WL z0?tB=-SEdr0Vmg;*)OV}-ut_FDu^WeL$(1hY?6>; zkB><)(x?r|p6pr03XtruH5~4WzxKj9B@3M;=GI4xGf%sP^21u`t)ynF!6H{A8pW~* zcq2lOC~MaSqEDcjP5}c@=zF^8@IVKj^bg~-^assi!w0AX22nQA=uqvW!;FiHdIn?a zw{%bgRwa}cTXd>D^N>H!>SVkiF_CG$mXKR}wHtpAs078Ti>U}r zxnw^?hTo8&3-YSBDw>mo+A#`$Z?(rGiDx9MMRj_B-yoX%jq}ApUo*noZS}( zT~*-mG4acTmRn>wVfsWJF-(CE`;ffr!>+BA?m5f*v>HxtsUwA1R1F$?0i^(tN4h-6 zDLk_LQ$FdzQ_}rM?TTLY`cJ5b!yt9&MUXb6P5uwaT00c`(BCd^@C<7fnNP+Bgo)?S zq(b4FNq@hBVR6fo*@{(POK+hGt|$%8dP{>`i5OKc<$mgjVjr4Gjg3?Sqr+Q*j2HUI zYw7}gbCB!}FjSv0T8=&=1By;p7b8!rKYX%te43vhDTL6LONsQLjhM`h zRTG2mLKx4-F^e?nM(+57-vD9K6El zE6R-12_X_1aUg<~9>qH2G{A^y1>pZt@vnze*Ie z7m~fp8eU8+uGvqx$b|!4Ov8#&g7>UfOIR!m?Ga0YIvu#?jRBxFjVup5VfuiL(-5tu zlOBi9ng}yO?gY*1@McOxA=J|gi8!u#S>9EA_IB|{QFN4rY{L%pSL6~l1bQR>&RgML+<=`HKxalF>N&T zz(YqJ+#)J{E$UZW$OSRCwy17Js-<`=>s9T>;fh?Tm@~G%fgX-H zvLZV4Nj5+^KcMj2?X3W%;xNVgUUni7fHtu+;8`>mSzb9qHeYI2lSZQfb;al#GRN=E zNT*ZDvuG=ydHzG4iH=d$@b=z^)T~~3Vz?2iSsqPePz_d_c~0 zAz1IAzebO9cwl1R1DYfE$vAmg1k-J3|7RE@MJ6Gvb3)Q4v1g=FZ*EIHT9QJ^o<%nN zs%dn0Z~_(KbZ~`9Ogv}si>tbI6V6Z&f~GF?fQLmD*Nuq{pamlP(Sq!+PpLnrX7=DY zgnB+wJuVJjqz?NXf>O@$-rB7sV}HVQ56qE>tOVo~m)U>EbYyv{ql$Xs)Gec1CiS)H;y&eedH)=;3#T+I5JwZlhC)TP{hs@xFkt{(8-2dS{`@#sk*=m^CU zu7j`s0EHPQ0TZST>GD;r&(H7UNoYKEi%>kFy6zU|S&`9wh+u$db z#_uB!u8Bt^=erGBb2;3!wbV8a!>cuQBD^|C@eet6{vylKuVNnFedfQAF(> z)H$rOp>O6T@_&-9if+0<@@h~B>@jru0>dts8qHoUq3vOoC{Im|={i8W*{kgvd7%^Q()pl7?31!d1Im+Jt=h~ zx10LEfB{ev2oh1;0e(O-_d!A{^_*ZKL)Jh%`IV>Tz7Xq@@a6bVdZcmi}2@D!O(1PY$3y88D6v(sNziDb|+hEsi&L{ zqeB8BpZHsZ79so?!C(c=Dr2c@oGM2OC>N9sD6falTzvsHY^Fx1h6|*RJHeA#;mr7l zb05sErL_&4u@O*rLMUbKHl{jEHo4nI5(5Id4H~QlHXds=KJa4YIDPo);Z`osgAq%b zg5|MWeK-m9$2NH4Ai#r#Sjg??Tdpj^d=|1zGdo5aJUOqAzAv72jC{G0?%4<>H|oe- zhtsb)5*ohGB-=bl4t+G&l>45zLFHxfrWK}d?V~Ljd)|vB#1@eii6$VpVehuR{Ygj> z3{o1GKqt*=AibJQfn@CI*~4PhjC>4F7-|ZzfwGk9-cXRuFWiZy1R6fmVm@)F41lZ;Q3H$_9pfKV?1}@Z zy^qc~wI!2BNENa4p$J<)IiuQr{e|WuHV4u2pHFU}k1Y#OIFnJH9$VJ$>l3CGQPfbV z;up5W93CqgF+o->H`+cj_`qR!66|? zIbsZ{(mUEblqIRMbq%qS)RcloORADp?B1U|Nu@z5&aio<&+P@IALE2NyCmMg6%V4W zat6KP=GBq6j7*_a0PJk+V{SG%VF?Y8D~q@^+Pi8%YnrRE)3LA+60AJ>DsJ8G!j-SX zISEA|T|_2ga^NhobR~>V4ekVUiE1En+o+9PJ!Ex`up5;}$dzF`(hi~Pkoq@FP)^Wr z4;pmh2Gmcik9$m$JT=-aeE4lMO&)Oj`ed8|N)lVVc*yz%nM^B%Sk=c#tX+rA3w;4j zkF$N{nHQvvMp1O7%3Hu;)1(J3Q$WVCMj9- z!3;{1eQ5yB=3ruAV*A^v>zTSQ-E&TfnN36yU4}SH#W@)_GnT?rDMh|fz#(>X`S0)EKEQ41poTEJ39KVJBPZ_~maGHWGZ&up*w*p? zfHvjhY2=}<9j0JL4@&-A8rV^WQ+v1MET-9ziJpxA)B?tP7~yLw=gL3n zZ}y^L|jr! z91QKFvVcE@*Kgb^fOR1qKbQxn2Hd_Y#ECLw+SRCYpNO6wEfjXMN95xrIAs52k(M}3 zr8a?Tyn|gVs>+mX(K@o{G4BBLk`Q)=QoI9oRMO-aawVYWSK^fQkSJR1z=stElYU~E zZ5{!iw@JK)A7wHD8}zlmfC2tKgnA5JrW5Tz974OPdlwADI+V`v_{RABoDM`r zn))J=JNA>==FNXl4fYM*RQzl@vIsN5h2SH~Dg9(z;|`<&J|GF2g0V&;7KP1ALFC)Q zp)XT!G71rl6q8&U0)itcmI_XY2*D|oY0a+H?T{YGI_vUap3B3o@(FF7G@7IXmM=co zm*}3kkH?;aKhzC`0}(JXWFDgC``cqRk^|<9Mn(6LnlXv~ptynt{68^njhX*K<0R<) z%;ByhY$?P+4#Fo~+U^$g6mIfAbbY>oUXHq*kO$VU|!9F?fB4)D} z9vLQ^BHlLYnq1lj0|^cI88KQ)u+EJiS>BhFJ*l@CNfpiNjrY)zM8#;`=`AJ#Uy0|% z2)WY$M}mmpB=P{GCOog3UHgNS8fx+BKn{_5e@Yp}7Z)_P0dSc}Zq63GT@W>tkPDs` z2VkUEPU-t838VqFJ)_`%k zj9ChpSR<`HbH%{JB8CVcjXMfh{7~!5omWhv1S!ajgFxOY z^;Kn^J2|p~+p#)zt^wb7R6|yv@m&~+av3yIM|94>95meRZU5t+07}ISu|~uQHGUAE z&|^5po-h^lXj6k1)5nJ=VDL+Os`47#nL28xB&vc)RJ<}%MAEDgq{K*^;NeE9g3$o5 z5SX`v`aVQ*SI$wYA_PMdU5L}^Kv9&B2`ZaB?e$sb{$w6p|097ddMRqV$u?lSg8lcS zu5+R+a1f8)!y)7o>j#lDl;}4MDnUhua>nZ{-679bGN?pD4%dV!_Q^YEE!cm=9?MRMbm zL#g$Ocu0b|)MP+s(83RBRLb0k6u?ZC ziD-qj+<~`#_gm~d5%$3Zr>(F#wDon!8^Mgm{MH9~)r1t7RGbw)%|=5+%kY|#avq{i zE|a@(!Kn}KB<(br>Uu1O9Z;Qfe_e2Y29a6RmX57Ujz&Jnqe)WRcDm_@&@3+`H=5-| z!vfmN%GZNs0GMfe=hQ*Lg?7Kjb`)#iEDt)IDEkC(v2qIKTl_6dt29%SZiLZRKyQ+Z zm@omdlni4gysSsmQAyDSUFv`Kb&m7fMn4DdFVhYW*CGw4WX7!U`?+vPQtqcoV0kEU z{~(5nX31SQ@AOZQAc~G26n1TDRPcDXfTnX2#Qua;q9G`m#iKTvl6XX*k-7EMC4AW= zKDNhD?<&k!G(&+JF_{r}G=GMy$=Up$SiK`&i>}R|^uq(X2`dvXP5tWt6K1`|IS9nW z3ro^1qxoCZ%p+zg-9(($qi&a(tVfX=GbkBzKDSc?FIi4WSDVX7bj-Q= z-=>_K&TogRI)H&Ob=rDh98M5pv~EB>xrUn><42t^sYDev};9Wf?{N-)DHy zU_Rnks0xx^>TX9REtG+BZ7)1&2Xt$iv-&&gfT8Xtnt?{zDNQP(S&0}DBk)Pd3t;+p zX`C!Ivw~p4qNtRsq(A^7AWOq(z&19&OLRr;L3IN&IEuQSK@M2gmi<_tmxx8~sWiwF zL*eU4eq2kmw0S!a^^s%BJhn|`)SI$x}P<$v`g% zGRC6zQ_Ar)t%-bXbR3vpa6$eb!&;(y2ZnlbxcEoQ;Aoi+GP=}PVdT9GF$nSbYXZ;I z6ic(i2n~=+7jMM?Z4`HFKu{1*8U)P2=XnX-+-U#JkcE z6H_az1e(1|U*XWF!vl$U2e0#vbTb{)OOYan@8JBInGMw9fRQ2KS;w@%SIJCk9)i6> z^7X_S!^LPoVYoMfOvDgm^G6QE5&XWGBlYwrm3T)X2qOEHa--7k(QtP%^bx5tA_2~m zCY=+)N*)~OR@b;?9LO)E?+_=_!~k?WXR;>F`!yQML}T};-L)o3!Q9G9j#NM*jn$y# zW2ozU2)5)~=s>G<>gKj?Q3}B<5|EjR$EX(m^MnV{^HMj#S+&?>8~}-K3{&4TS8^X-nr4t6X-+WKsTl4#YN^CD+;f=x?@wkL`g*(_*4FYWi0ihXXy+HqUR9n;BX3b} z*UUIHwvVQhfuMbNE=U}+E(4RomMK#o5pl)zbvqwBcrcB8GjKc5Tzrt;JE;W)%*lPm zWSnHzNQO_62e9mz<@)p?cr;L>T=W)T49dt0SmL}_z73D=ROpsL8Rpp z=S|fZNLeQCkq$&P9dQBp%*1w3t0Xgb64xByIg}jMaDF5<`$2jN#fUyd%qpBtlNK&J zncqR1k`~BXA=b9k?7?T#*OnR?VBH=^{&AqnMJEhgf8TWu{-q&uNTcS! zvMbThL>fzZ*<%8N5Dh=$E2JN_kRCTEC+(d(jkL4c~l+^-lgM!p-W7NW$d6!ahq$`qUxtOB~Xwb z*^13>i{Z&4h2%b3CDjXEK|c=kSLB4jhQdrux|$T$pE4(W_%gA6rz1y9xM~)*oKfmYd!}rWRvmCg z)76Rw?@~n6k@>MkbZclLFU^x<`s}jc#b)So1c4~_sCw(W;9wCF|3DIVCH-=5H?gkZ zP>f>PW&ZFXDhB*UTp$gZBr4OGTe=rRd#cHEhOu~SV7=oxOoH1T?0o{-m6@+_-mLMr z*R~-#NH6o;BdY#;;hl@ za>XeyQZzL32zX98nr8moae2RNZ(C`=P$xAAVY~(NMIGb4DVX^xk%OW05lussu7G8h zQ{k)QyPv{7^Y&l>dG^G7sbLxw-p;;H)F9xRBVb$BQ9gilrdVt_nFJ1oyoc4*E{3MG z6W33_4~D*I3dF!R60vD|&|VlSb!lQvFrx3AV#{r$j}u;?p`CUyl% zc*Cd)QcGcovc*K$by1o3$WlkV98F?nHhgu#x5NKYtyV;`cl~*wXi_@S$_zTssI&K zij3+*xl^Pwm|u=eiT>7gvp_|C_zr5PfZTAd#xl@bMOrQObG+wJ?jBMU>UdX37D5&G zEqqodYP7Z4`3GUyh`|n{g!19ws&m$ZNleGDRc-}QlTfI!XabUz)3wje$$pbeHal4}mLLQ3O^ zT8bJLp|9=>qvgjbt?Yryu_?lYh@h#bc)vbC>hDT7kSZHeE5>JO{{)#hD}8ub^+=ul z=m19P;VGkjaPfgaZ-(b@M^1mceOWYlg{-;GaaLsgV&;uo10- zpM^A#z&WT`G_L~rAq3Pa<@0KyBqJPJO85l?exZ_5tIdPAsuZYe6^I6cw285q;MJoP z4_AEyVk$&pzoVrGAU{XFfho^TE<#h?dP?kFh=d+L*t`JdCd|W4l=(u0PpkugZ-FpZ z=mIGB3j=IA9S`q?;s-j_f;E(Iz)B#W9Th~?H^@PX0VQsg@+n5AH<#gtZp#cS%DLue zAy-ddcL@B7gGf;jpM^NTN;kUeAO^L7C=cFl-U+jRKk|K05>Tld@i4GkHme(|>1J3F zBAK5Bo)NZ@mke||)baDM>fV5?N|;r4X1JdpBBAT+nrKSjN4#5XSl5ArCm4#w1AR+L&Gk#GcJj#ydwS%py4J%LK6@mZ*5NlASOX(PdP?%=Z^*~L}AkWeAs75I1@^*m&RBaQH!M>euy&>#$b zK@~9BVmJ7$mTCg@4)c09iCd8G35yWv*3B3^%g&B!A*}RospydDgJDIw zGpK_a`Z99_-(n-$+LR&%L0bG*`dIB?)JJS%F*!IQ7h0(Wi83K6ReaXDTvT5RE)U)+ z_4ebUro9c?y*uD(Pl?hgO8> zs~ZZJX0jnv<7k9M0wSsB@N?HkFC9dA4G&;1Ddh)blONcRx@K_ILz?{N&KBxJOF!bq zg%HRNaW(Q{c>*yg>64!&wt#vrHS)e=SInq`9N#NwWuu1Q9z0~nbQ{E!3dZh@Kx0Zn;f37I1t*7p(iA;^}w>ne_Is?I^IP*czSU#acRKh zKlSDBJC3m1S>_Fybx!y7^>8`{DXBO8R6mpv8oSeEGW0 z*BARyiY`CPLJ*g7`wE~O%J{9ncGwuRE&NBR8!}{QslcN_-biWQ^F5=fM<~Aoq~ySs z+8Tg@CDsP|KA^1L&OS_oeRvflRgVMbC>A@3G|cf@=uw%`YL6|s(wmPAb9>YJS8$S4 zBMYHs7`FQf9yY^OC(XIP;vfFfQi^g@DmIB+to@o_iOAG1MSxHaNnqp!vF zk7d)sgo*j-FVn|gMx^q;R-&^b;XQOVFVG_R{Ik3Zo{@UVBE0shC;Y#Cz{WoJw+MPS zr1gW^(qHUgiUF;B=urRfnD4n>S4&^ix5P_)UmH4pOg@I@PqD~xa&|&& zE)ESi(yB`8wCCnjkB^QlMTJHN6HeS&JObdqr9XX&2{)j=6fGO_{EVRz9=rLU9jh+} zpRt#ZoJ1Hn&~5f&WaGD`ky?hzpi6c~c)AY}5E>$X{P>|^F91Ps`04ErDru@Qk%elj z0kPs-<^n)v4|Fq+qEv3Xrg%o~S-r^<3m8ROGUTR)8|;?dx}6f9UJTu^7cwexnPL#R zx7lAtEeURcXWXtSnci^r&k;HxEvYea0yS+6D(?({4!nOsC>YcS zx|0CqQDy6nt(02I(;3Z9}ZWu(M@9s=@e!Kab7_F&V(C4-0&6d{2iKWQKXuLBVVx~=fg)F##}AX z?){A$H_j2XOia{o-ICDP|FH6D3J8%19mswW0}{%GbqWd!sLZIT2&+^DlU}^2ho|4? zRT+^ows_|SR-x{bB}Z2zOii2%@NrNnl?EV4%CBLA#)7D2D5RbJG=(UD!b^pizkNN> z)Kk;Q=&(Wd^K;ZO^xqu#1qIW98Ijc0j|Vqk7PtsSCSrg-zJd9an^43TNFbw}W*Cy< zh^zdhtm(2M{U07n7`f(fNGYzf#MuVX9or@Vkc)@dnFgKPU^k`nZ#QFKgear2m)iA7=e^llc|#A z2dwXM;X2hzW&Z6!LPpxUV?xSl7BPEz03{GILX-Us(28pCGgUV>7*i1}_(bG+w~JBZ zPVk$nOZ$tG-+=h^1^|!U6S3ebIz!E>&Y2@p?!rKYr!G0J)DAr7>awyvXk^J&R(0{oU#3f7bf_N~)++WT z!*Lx1%18GM<^exI1ZR{H=qz1W05sYeppraTnD2Yku?Ot36ID6oG8uyF@8k zX$Y815kq{TL@v-xlE27yW|)Ii(d@d;haSXO+lw156=kV?g63Z zJ5*4pH8Sf&L_}PNS4ZSm6fqU#6pO*T*_qbDGo9KmzcWrj5$ICCfub6ZYE~Q!{EA?^(j>_kZ0?Ji0jCcGk<9CxqezHCUJ|L6IL?cu_A zi@;&?4u=^AYyee0*%^Naz8d2Fr2wWI4|5^$r&x-a7^V zV+l~a$w5mux06Ui@Aag&Y{>oh|7+wkvsA?~gzMu&uO*R(0U;LK+qZA+j2++v2dNAJ z^!>&{1T?wiVNv!%Q~^M*B$)W8PoH`Z3>bmuQwxh;A9{fRv}*-wYmiNdfT%kywHPHT zl3uTI<4Bg4mXf+aMqzKZt{g+RLsNbI(SygGdA4UEWenz4+X1Q;SP&%0kAYi|MwC4-xU|* z+rL5Ylo3!UWS5kb?8r_*sJf$EdmnmgUn=(!@DaQOi>$?-J?_xlh6Cl$OTT@e` zT8uvkS*vfrmPE^->#-M1RZ?fLg+p|F{NcIzc{xI%z!hq`Zig!wm7F^x(0L7xO!@!_ zN}?flzXxnItI`M!Rw$T6BsvzqvvAnLWT|sI$cyYJdw#Mx1wl4Pz!l)n0>|L>_np3l*PgCnCDC`3FmLe4$UE7bS(2RMQQt%N1$R)t6>VQ1mYg<8e6;hZz zM$XiLnVN&9Sl{OoSf^B%n_>P?F^Gn}qZ(At$Pwte3m)CK2k<*d?atmwh(WinYu|t_ z>;KjQ3H76Lz>V}2|BMDBsuBYy{tMK@Gl1bUlwOBplj8CqDoe|Ebg8+$9vB!1J42tl zkU3eHE8)afuWvh+r}G5NOt>3lM!!Op8w%x+WFo>xI|PVBU{LpR#aF@PH^3rLhe~4y zk0~U`p-cl%DMhNf8mhuBFi^X7CtBFlFnYRV=Xtg1z}Zo-HlFzmMXX58XBYq}O8{F# z|3KS6A~16X6|27uq1MM7Wl{}#5SY#V8kLNMpBB3m_q4IQ38;ky2GnZNIWVL<7fz0h z7~hR`jDtO13#_0P^bO!lBfNA2at@Jq1GH?y^XKG_*()m^KuxDXNd-{Mx->n5@*(=* zm~g*Vkl3FB1lXi5U|Qy&{Oh^Qo{)QmQy0Nz*%vg2?A(x^6FgAS7m%HWkmEi8`b4?b z&CDPLQ3d}7;OZb8@nW#rEP$y9OyRV??BrzJj~`b6uK>CuHHe(1!)Ku!AP$laz(3YN zR!mpdy>ie`jG8Q&8i%U&z_=aomw)YW7iRXTOQ*2kLLa;!oigk8{9_3xVUgNjgADpR z;43phQaR1AHwCs6HvF`opC3|34>u4Cjf+zOFa+UguN}ljG4G+;LyiFc$@cP8ilJ?E zA;ouoM5;_loxQM5*dcy(<`U}mCyn$+0`g<9yZAz=)@HC$SW zGYsMmMG%Ln+i=PYH{9wAJ2%Uq-nal9je_6;!UfPc!v&x)PK(@lDc+2j7Mu8+f@Uo9^6z)*FDQEYQACI2_QmdbCW)dntk|T5^D^Ma?24#W& zJ6f6oRm8W)>*n=62m#ASr#|nkb3=f&d^4{1<{4V3-;coo}If z2f~p~90sysmmznV)JZWZ9l7%{`$qJ3Z4kaQD?b74nwOg)iC_%{55I9~IFu*yL)=yk zz8{N$01V^y2OH?on34i}br{ffs?=`SqO{6SO2JOOhKLM6se8J79W}QFARnI!8JDEa zosZ%-?^y*#iOC=vw)B|-16N4#n?jQ>7}+#>vRhF1Bu97&aKE4C|4bt#+_HcH+PRJZ z9tTkvyc+YHf``b#2tSSTT2L{b)Y*^%KDY?zYHHZ~Ee!n&m|W4I7NItch&l&<_p3;F z64kyXbwW)q2g;3b7mD&^*X;_I=X3T_HPA6O*tD;Sltmrp~n z9XWU`28jK~?J7DB#pQkL9>+rx!VDHVq4F`NN-6y>5d>{lV9g8GUjb!Oy% z{8T>lr@F5>30awAa9(Kg(IJWm7_39e*{EOH|3<#XU@TLbxxqPOtXx#ET@VDpiZ*+{ zkv%etvfQqaliEPZl(SV)*Hj(>0qWFlRL%asyZ8m{;&y9PJL&=H^rTM6T+pMOHg{nS z^62mDPC`lq9F)$QiPvDBP%oNrgPjS~+;{>t$R?iwwP8ow1?IjJwBA5B5QZF(hP^aY z}M3!YL6HLzM9BbH0SZPc9VTqZ*i$el%OUV+0TQy1h#a}sHsO~IMhUftN$QL}ZnF=S zy~8ujKof&Fuw&Xfa?sA3{AwZN)B1jMAeVpTTRF zUI2EPAlc8o;pjq~@K?h=wFB^pci@1^5nKVH2746vf8Oyj1RE!FQc~`rR>P=Edr}ua zH#a&FDYH#VktRw~S1F`PklD6fsQHahl_EbiD2xVA)AN7VvM>yMftq2d3lEBRkW9;S zSF|+%hK|y3Nb6AIdLj=wJUN06#IIoA&a;P-rssQVsBkXtq zSifrUE*!g|v>OfrFb$G0#ixApTZc0oBIBh<&Gc&)FYZd3>n?r_xM6%vBY_cIBqS685so;jd{cKYdH z@CRTI*%4R^QGgd89}lnw94C-UxNH>{4WyP3Ae5kX3~l!N4hee$0sp@4#U1-V5eBYo z(h@QrgVUZ!Bmg8$#1TdYNY!CfL{J_Dl7-hG;oFgID6S42oSXQh`HN>^$)2%3~f1M_6Q?9=LFuqF0WYCK>+VZVQa^1h^3uTB+|%FIND5=aUGuf#h%{a%fQP4icN{ zT#lm)eCrOmF2u{hPAZHB@Vyv@eEbL;w-njdF!yjyeudC_6j(1{JC7!Hy_kUX-v}gW z)Ei|;QK{jEZGyEaO7P>-(Q|V(0#D2HmG8&p!44e zy0H<@gE+%O;J~4}Q=8I=)9^Qwr=SAz_~7|I=uH;|Nn&3lkn^jr-U<(f#T$JC>*fjk z(hn^c2rhdvT7ZLJ4-ZfegqA9(FFQBw`~(t_NXwy&viqoAY&=iLlAMhK+!|34O<0G% zVe+O6a&)v%E*y2NNbCRS>)T@^Vc8M#0BimXY^slG=P*QI-5}k4T&Iq#u^J!B`z4OonUE~eu zLeLWeC@rd8h1q$;%g>Ki=4EJ07vsb+1$ENrpw3qp1-g9y?wO5_V1dQiV6P_F)Mr8R z;`pGlZ(IIl6%e}BL1p(SSkKdYgrHuQtK}jc**mzhk}H^J{7Il9?n8y|E3lN)Ax9JA zlrCG}+WH+lsbQq978V-~^+bHoZOH2ylD8^l`1j;3@Z_2duyeuG3Il77Q*wcw3jPUQ zQ)fU)rVWrK)ncuyh)DpLnh0>IN(sNAA$@~YcV9T=KD!A6^@w|C|kFI zaxDPi6QGY#4UytQKn@Wv5?T|UhBYGuQ`qdHLiFa#b!Y=Z4#j<9&=S)aWn5K@ceW%p zRbd0rUo3=!*D_c-5`9~V)&mU-2^}y21O$YneMo`P)(ePjUx9x31;9Nk7(=cj!8Qen zj^2A6BR_azs^#b(1*J|`Ty`D=3w;tr4zL%I@y9;hWSCPo$MdWxFY zkU`%ZN;o#_L7cc2(!P)t-w$J-0uEw+z9-pU*ckuw_p#*v6PCi?sUev1-`}Tj*1#tJ_X|xrWc-Lu# zd$67SZ;H=EZxm^dRi8I~QfCqRr!W+MK=1YG4&xJNV)o(qP4`_mOnmkL z_nwB6^Uf-*U6TWtr~C(1Rw2XE>RQ*cmL=sin3v&-ueX=so8}6OTVYCrh_4N*lQkT= zKR#m0^^kb`(&i;({7*+HhDSZ<4@=?vADA(t@T69{=uE}mhY^vY&ysPYZ{KQ%hYMG} zk^lx@x910z^!P)U-*9t1jsMtZIN`aA__BkSuJ#d{=g&P73jg>P9u4%SnB(ROCUfjQ zbN@}>eD~l*X%jCgSAP8^qprV72XuaNDTQE5e#dt{bFI_5fbVKCxGCehupA-I5kuj3 z#Yc3aI9UMzq?oW0vxVv_plY-c0x?B#}#_k|%a`L(x*#ZBCvXYboCr&)P-Ny$T8{JiN-RriHwp z&v);p=nkRq&H7{fCg=pa^S7#ai8mIn#|Cb#zToLdla-Z~m)72EW)+%*Q9P!bQ18#| z;MLsqJ+Sv3Q)Os4&%f8_0X=sfRLoG=RtJ=Q9znqt7YFJ-$kK++Vic8>_KFW&lRJOM z_5^R`e*SNS^lmnFtfr~Ph4ypm>Z7Z>b9`=Qz_YwPzmjb#ewWyoEi3K0mTKPbO= zqDwm-6?b!J?|&wHV-EL!vgOE-&UpS%kR1QMIlG+g16~bK%6EM2tuGqnLzc-Xigbzx z^3Nz=U+CJuNA_Ga`JBKLpOU14V}$YJDO=$U!H!$NPr`ZZ)s4$(l6K*MEhx##PFz*~ za#HRIk7kLo1T$Fyi%CyKGTNs!8zJ_dmoivA)=$PVQ1(_!u{H?Z?4=!0kLyE36 z?TGbvqRe9kW%YV&sSkfT$5FmK^5D$zB>H@7lH(Hw{K=n&ImGtvtN~&TUEO!UXgEo6 z^U6dK@S5>)9}R|~MP9QJZHlV{CW7Z--bl}vjG&C9kb;0w`2r0s-POcj&pB}+SrtwL zOJ5ca^hUM&uxYRE>SEg!Cn0dff1>i$%Yk6RzV3@;^#Kzs?K;OtzEJYj{?{vH2EYk+ z=iF7(13@h7T2@dS$o%aN=;?yVRmctf?4f*X&DtK#}b#%fViGT3^i3 z_f7I482!6RdfKM<#V>`bk?qY$-?QSF?}@|IVBYVp{01gcVK*o4%3?{^WY6v1?u(%* zg*!J4QoVHPQc#*(Q=&{F@Zl8t`q82n@Jm%mDxfcQ4K({;MUucmmdRN4$>++Ly9EE@ zNnByvbJbn4O$R!4aGi(axw&wM$Ox4SR}HLWY2(Qcq`_3=e#j}g;)`(&@$tvhPgL^s zOglTXKTL@Q4%4Q8AVvhNwxPLB&?1PIxq4)tQP64>w6~pZzJyrrOi2mhZ`lu$M2`d2 z$+A@49+V837)jUXmVD7xv?(p@l(;uf$PYYT0EQF1)+v8%DMqe?ez03OZBGsTxXhm< z^~jI9V&49k1q1Pnl*E*@s%^g{eD|ht)1`51N@!luf2k?+z1eaNx2wrC|K3t#)XUO> z6CDB%*kg<;#Z<{9n>&rv9k@+(mU1mK$$Okc2bj}l4cHpqcglynGF9$TaWSl2l=b83 zgJBNiSh=6GPgHn6cKBhGlqxzL(_5eEnY(~c$2XmcHSGT9`7mVxR6l1W;ek^dzsBCY;$8KRK zAyPntTlg#=^3G~i=10r`^E-cxYpB0Jri)Yx?Kg&PZ>|0Q+Jcb# z+O0FOBEF^72E zlbvbQM6AaL&VLcBoHMcNuRTPzSI0#*YdnIq*7d7}}@I|aJ3Y*vK<}o4an7;S>YE4X=2<0n*4mGj!yJeZn-s3Q` z{0zI5!W~zQ9A(iac_sG9YpP&hce+hHdHX5I8Rpej$%jyrO0Ajj@UU;2h;V(CsG4vd z;aj2%Wz#Lc%B8@Vy+L&!cZE_L%|AzkQ2(G5z=zxvr~k|9D!@c$7cZJCMwL?ZK!jZL z;-nnYB{j0%85O(Y`-H?XPL)O3F4Ns4Qn|ASk9mf>=AH>3=@!Pvp5C6mfOoNC!j8nvE#|NDe#R zqDNeil1mE>iWwRd%i?Q-_A!wW0%4bOsIVK{@Wm*)9V~F%7xtY;)#xTQ1zIw~DKmE!Y(oS_NeGoGwt^buOThLa#jII3dU3rTAjWY+iZRTl%O< zhD%@Y%#z!qlMyFRQn6MlI#d0%9(bH|oSsV@bbP$g8RaR!$#>ndOTi^@Y zKDlbbPnmCUcB!F3&Pha*F(#V4-TIjvt06q;lLf=t@NoH8S+XItSu{BLll!syciA5r z)^=XBGF6t`kJXNWC2^wYkpIhZ+Be;D`&}h%^hO(EV#!4<_C$LbPOKT{JgL(6D$9JA z+E?tJa5W03723zQmrTLsdMjT4OB^$oR>sp+<3#=Z-@c9T3Euk#6rj8q?y?IXP@LkX zQ=%oq6srNFvhiWJqo!yjEE*g}OI+gidBZS*KPFUl%?>Xrvj0uC`AH$OFF}v-EKj_X+-*qU0eCt1L>ul6_{c$Qkyym~i~ZF_rAx z^=r2+Mqd-O%-2`t1S=&ZvdtH=8Xl;_MBk?)yEF*M|S;m>l&4qO*C%E=& zcgOt~N?L!YBv0ywrGU4#clxb)a+xyu1=E2_nKQ1WV>j#RJVc63?=_$BgwtH<%9{A- zoV-BXLl#(0&fCkWNWq~yrJX_N99t%El^O<0RLRa@<7nQ0p;Xp0cC?HlqwPxAKk19< zNK+`lUZLj}R@GpfSGv2G`NUI<;+ZzPscg##Lqko|v>ZCCF;C7Olbe+nMnl`%JEP)5 zR~-NF%7zSFad-N$oW8c$q&Kv9rIME`{rl^tfQZmA9fMKb^KRu?bDrwDJQB0{_DQ~3 zhq`LWXWj8Y&sppnmX(UUUH&t+Q$U~Nkw)n4!xyDn^chtjMx`gTW?+t}4CY&m5)x-S zTN{Uj(obdLvW#zjdtv#LlaFtqxc_B7dwhcYff)egh4CFNomt-XMV%|=%4ZE6 z;dmwQzADn5_LlcI+u|px6J1riL{23Udk|Opd0DS{v@7tNb_C4HA7t=9HOk=N_7(n~lI@bTkkk9pfuhp~toueZv1uic%9Ck^WU>C%#C> ziUf%s%uSx~bGRCFBGlC!N6+Q z@mX0RKbUcV%)f59&A3};p}wb=4BB<~zWq8%pYG{&t+83KchOy~#rTf8lkVQUkMBBI znDc}4oyl>B{{FIURF}N`++TGU6La45ABjh2_9R@;uv6fI`B@GL?#rKrB~ z*N~3kqS(!kA>WT(!Aj$m&e3FR|CnQJpj_6v6dD_;y%;Ux9ZHp7=(`%ltq0#!Q*pig*#~CzUjFW;%_g%Z zmVQFs&fUxf2l{jX!}Ywr2I#++Qq_;Z>$1^TMe1$JDlD2zBv$I`SkJ)C>8rDYz{ z(U7qJjg^YYqVmt8d8nNwQ#8`*`W?&s4*NJ?uuk~ybz)*dl}hW8!TRR(%j+`)-bE6Hecj zR3Drrs#w>V_}e|Y2^7_#E?@p=bvlBCKd(;*-W**Kl4_f}k(%ACD zX7@b_X`Wu%HHq*}+imR7{y7W~j}~vSi$3FWbeRi-P9-P`mx(Qhdt(O`Gd-(QOP zDJ4(mGffJ9%#XYaWGc*L1Rw8C)4Zuye*I>ch2ZN}H~On$uby1${D#BiJ;klWCpYim zo+x3h?`~V9GIjvPhJW7~iyPls;KeS(&F>|EZJ7EO~huAGkhd*8%V zGan37kx=o;IX>tr=qs7;%a%kFI(AB1kd`` zv|(`gW#+_+?^;9Nv4p3t)$R7h-)?1|q_DtxQ)rF^1Yp$JABK_VD`xed#70tA_X)^Z z^wPHa=?Tj6bBQ&xCtTnkiq|V=&1>*KxMY>R%Jjy$STxDPxBg&UjQxJf&u?%~O}yTh zsqGR<$<`OQtI1Kv`lU99bY>?6{Fi0+E&UI%P){Y7Qa{E{? z&q=niG3`-L!*;P4vtCi#PiF*DGaDzPOGgX7^?&ZlI{Ls${pjp~o6FD((th#DbF%YO z+}s}@gHyzN3O`73^5YFFE zU6`!KVmo-+RfY4IfoJdq-f6c$TO|~<+S_gi&8Z#t_5!_#f7fr4Go-xHyQD%s6fp;r z3GX^|a6~>N$QQ$En0DubQPG(^%fW0~@{{@;RI(vYb9?iHiZlqf9kg<-o>}^S7rN}) zLeY2PYTbX9j49bN=oamfkh9o`Sd`OceZ4#X`}5K#K=pUKts2?=*=F%vdxjHN6TXd} zWFWKCi8|N(eCg}s$a_pb$#G=ab5U2%y#L_w1yfgQn7K0g#zLtfEVqCplCyh=w|m_v z#JiQxtiG=c`G2oBTzz(eZ|w<*J70!?Xl%HD z#Gf|{Ltnl`XYrdQ-IT!*L7i}xPaNp}mc zZs*8#F}F9UYmi?s>HAikO?55nZ;4#QU!7Xk68(~eJ8T$y}K~;XrtSysjz^Nh9_ppQSk?dFj zEd$x%%)SxqA&D-g0ZW%@j(*%o>$ar%{8vI9zBf{cyrHC1yxSUbp)1(v6P#<5s z?F$2xn(K0DVm3hFp2SIdn$Lu57tAj#i{(^ssMO&eyVwsA<~+-+rykaQ9;x(1)1>)q z+m8}EqY_#5wI2E$)HL1vChB^Qr^EW2NZ~8Sjzd)^-sJ`?rEn^(99X1(#WDspIvTpW zd&iGFq9tp)Z4+JWDHJU`sQDmFOpWY$fdAPZTTUDiRV5wn(ANU%^vbE);S~wCT5Y^xu`IVfuJu?e=d^l$g=w%fjX)9Eqxetf# ztik7Ry*;bcb)1fQcXpo{9Sw>2DbqC}RXXQ%$;2iyJEr0TIKT1D_fKc2PmRGs&Ym}* zBa@Ad+u&lCsVT`;&&FA^Zx}ND+@Ljxo!W{JG;4)#3VvE0zvT4#SfHftllKSQNE1jsFYvw* zq2|u1BT3X93cPYBv__3gwzOJijq$@Wwem?}?+mRoB)i+ozS!?}5)UFaP7`@L>Gd&h zGW*x`9MfNZz2-WOYi)m~&6`3*n5I^mj9Z(=mSG{_v0eAKc5JvrJ+^#_lg()UfOzG} z=sLWOR`q<9NEORbp_6%l<;aFat{#n~_RnvSlXMNXoq9B(+EsNyw_IlR^d71or=PHv zsb4^|6?dYYL?h22h zk6Tl_K^;b~u3$4~6*=TCbW3HJ5{6MXNg?pEPMX@_@em=?&-1) zAMfyBd!c!7VR3z`M)<&r@}Pm+Gq19>Uk?4jp@Zks<`vLJ#CLw(cE`qb3@FxDxDr3j zPgG7o4P`Djff| zR~oO|7o#7f(r?9@K0^bdq!zWk7>>NO2`m4iZt{A;*~#EGZ>#gMYm9_!`HDsjEjpht zBCuJ>7{$pa;-?F={@g!6Hcm~Ima8vbG~E`TB;DAX-Ac0CQ9NkP_(-bGONO{|do>bH zN7}_`JqkWLmc;&~r*fk%!5KcmN3w6z2EXn2JGXK7zTMlW=!g>MNMR56a-*@-qAH)0 zvPqS;vZCYq4XTjwRSodJ;!ZQ{lRkmtpcLOvHh!?Ww5xz@cSq?{N$LJVv+qZgeoqwN zOOj6S$Y~7x`u&QhVM6ca8M}yVW6toZU!u=rmmco9e!Fh^SqjG9F_d=!Hs%_XO z&Z!*rjn$dG4Ucwx%D;SVebwXUeAuJ7>$Jtr$5h}*MR_MDT zsBt2F4mN*Bq243!GX?hDPmW9(h`chaIbMSU4!X~HQB{;m4DN(Yt{Eky*s9T zO=w2itfl)!i?>7-`%_~S)~M~;D?xssE%xBj>yIzgSav%yT3UV5d35ANoTqUG=HOqC zz#c*Fi)z20GcPY@(Kqy*`SeVOX8GoLE00dmjqy(}WLPOrA0U%mjoU0_vD+?0=u%hO zE473jEgq_t`84%j&FH=4SA5^v=(=}1mG~>MFz?mq(_)2TYS@zd-IBEfjJ#|`_PeF~ zs?Ev7ovA%{9q3M#hUMN(Q_g>By%t4#`}we zR?Gf;kLEQGMk|uPOn=oRXJbt?9NIoWt*x7Jl0VJHpIn?NetTh#aqV5P2e}bRdDQq% z`w=ZOnMk1rx8|QZe@8py)-$kCpH7kEQCxid!yItw*Pp=jRK3f}OHU_fuLNtx(+Dq_o?cG%iZ9iZ7?? z)pd{Artd2pOIkli6aw7IKe9wejqjT@+d$ZkQQ!)OPLbajYiTQzpc>k@?ABuGK5cQj zz<}b)t%eI=oFa5+JX8e(!}@RRSuSQdyPmMxn{Mpo+5SRiwQu2>aE`Ea&c=PQVv1Xb zLi;<2)hgGYe0|k_XkCZK>GQdSXQVTX!|YG_YpJ{ImND-O?1b&L$yAEQNN1&CZVc>-Tz(vQCt zSPt!RJ0&eim1J7xdH7=*%~J2u{*#;=gBE*WYsENbS~qz^Ni6V_Yu`$jgeJ}&di~t& z@Qk6R*74X3fB7S1OxJjRtxKp_W{*d6+t@a~c!SfsN4-I$NpbYqeo77ohMCWS@RXyi zl}(kW@G|qKrbSs6DRY;yRbufqHU3bTdL2%7a5Na+CWaLJAU*q+d?S9wD)kF)KMUnS z0oYcW*T^}(=?(#OlBsVCizGe`g#G)6T3dWez}xx<1JEVwrnARpv*bq zOEcVUI5Jzel$;_dKJWa~oapTU^$#Vjp*0S^eXEkS>VqRsB4=C;7pH`B7k;PN18 z%!vHio*e4CS=62`wuPe(`y6|AEgxxqK6OE%ee;yjOxxN{1d+_=-ZqJT*S`!y2TC~` zr%`q%b4J}6qHDq$q2q#bBKb7&UbKg$sczWMa54Mq3D)cSJ}hRcIr@a=bI4B_Rj;s3 zW65N_i4LW_vt9E5f&1adlEZOViC#r#miVh<5A89E=v_O958K7{BZ0#E2Q-}d&M{wh zpkRoJ;^zHA8B2lXv;0SlUv6HD+Iwr_nV)H?`}}7@Jj^nDa(Leh4%zGH`zcgv43Kz|yrlm`_{!9a36Y*`*Q6e=A zS-y?TDX$YN!*@bnS0@@^DQ_S6Rr%2DuSm$C)N$&~IvlZUTU*fn(POCtr7lU0@e)7w zl;g)eCyt6!st+7vAYy8FrsFE;W!U|QW6X`}&B`;X%_So+d-39i(X@Y*|58g!)^nak z@ags4vPBN0-;WU4{G^#Oxbpd4%Y&-NmPxf0v}BixH;MY4+}mp{@ASMXzVa{YgYc-A zcZrVUW1OB_|Nfa6yLP?v4~EZVwZtk!t!-ZZ(6znv`x;bzH%BZedV9nOl|t?@MP-rB zZ+>4hkuX}3Pm}B`FTZliZtAy?X1s?>IK?X z|D6k<8a6bJL26NQ806>LKWJrp(u+|vaf7RHERFjJzxr#fK5>d-_ancSXGh7|r#5%k z4mg?eE=~WxvFq$jHlUO$K z<s@Z{SESt=1&7dn5*D^PKxh(tv_eJxM&KF-Ter~9R(ZNDqXM4VKwkjPsHs*E$O+(Q0{;h;R#gnb! zJjoU6{hui^OffdR7w+<>bM(xTzROn4pKBVb;vF^`)+GYAT{4FJ>>sw8^h)n8)Bhwr z*2enw$lfk!{9NPP$n^3ePPh5wU3Jlfi@B?ZaBGaRfkUp7`kPy3+rLVo7BHp&1p~0A z9!r-;M_R|5_0G>qnO>^C%VOlhc1@ryVD^i7JNA&&DV&L=e%t!@nGdZQtVcSjfA{ZS zJMKEkvF{N5ml|KX!}-n-F_)rqRTKd*0C>r{4ZQZQ>>QfiH!rJe_LmsqP z8OfIQDMJ{%B-5xj)+$_a(`SW;EpR63=en)m-Poc7&q@!{#wmGpR{G4^4fwSa+F z)`haef~Ql$JAS`-IvRO{)$yh;Yuy1C=>rzCzkY2}mQxT<7_BwOIO~>saL!k*QXdq0 zAte>}*rv8Y^%Y+RSI|FQ;+ZmUVYiO*p*XrJV0!@dLx4hkGQr4;XJ48mm zxewMwP&P<^x5J-dIJn5M@vw36fjG2!Sj;OI$6EKHPI&q>PWXpLk}{QVGLD06s0daVD} zd=#gp1R>jW*_0}KIlbi4#_q?aqGBF&UUU?@iwro^47eHEA9!!T@aC1@>Z0_nrY|~X zn&g46$vpP`vK*3fU%7s2=__qRxBPmbI0cUWV2V@R##!|JFs|ZzIu5(J#_WG>o!7B1 zXwE3At-Jra#LYvHD!+HosK!&OhCP5O@xI^Hqhd^CPUZX6PxB-j>l!Rvbex(S>@buP z&~Nj7x~@Rhzs_bQ9{f~f^EnkRtCW$bpv!kI(lb=Q{!^1{E^I+IaMScM`PXB&^SLgx zKR!9o*g-$99vizTnM>jwEOWp3lX{0}oT%B4Z;1}l^ykl=tJ^2GvZUXLQ%mu5xZoE%LfGo@#$FoBcs!Z&>9^T-S;a zY4ae-3jM>`Rn-FH>^L2RPlOR1Z_RM@`u_0aA$Mkqe(U13+ znyi_pNjYLB3ij!eO#Zo7GM@HGY?FGH;&>L-MxZfte1=zAoc0<4pO}!Y*>N^wG4inI zJ4}N4$x+pMjWF{PzkvZ~iG@yR1sgJMvM~er&hRaBq2Ms8>^>uVNPHjX#i6nBDBH$V z7fW_6pWtWHLe$X84TLGb9k z4xhJ7b|OaC$4Xf*4qT_JJA4}}OKVknbaTr%l5Xw7cD|TmBrJ=em<^6q*^>>a{`qt=s;Qz>Y9y%N`UbOk>1wjulmlC7vY0~LxlBCCj z(4{V=&&mUm`y$>itme5BFZGdedb`;6`b}Q6t(_~=om*b|^dZl2V$qRp=v_v;PK@Iw zvZ2&ZwPneEar61It&$(PP3}#0jgECpmFBmN7@H_Hce8Ea0;7#>E35m`oYc3VxLS?} zLPv%6+_1dnX+H5N^{vWMf1OvOZPdnMR_b#D-W7UE9*@z{Ywb!i(_W-A7Y&>_oAsND znVk3!_s;4bmd=vyNfdtKG?jLBF5cOo+EvBukI5e4l=+Z{lAHUZy=cq(;xS@i5Voe0 znk6H$9DhsgLCW8J#q_9cPx&4hnUwgzeXEbl<3|mpiq#IEkz71b#Nv5ZesFW3mA2ew zb7k!CkC!9Wdx%d3RSeWIGC5^bn!b=+lib&P>!7SgZDXlt;#ASPxq;+1ZOv-a zWY9mhIw1Ip=w}6s_dLrjaxCA_{bToCMq0VN&bR*7a&S=-jg)Jf)E@H^DVRw7wr}%v zNI_L)XbiecMfXM-k-!04#qet+@;oz%opCOyjI{7@z_CiKkd0E%3ngpD1HYuBo=z`? zeBxX4?oE@8f@3M`GDL zl}%b|Vog6TnLz;HGQftz+}(2Fm0Y(5P+Qz9;@J6_r+>2kQC ztB!y8o^)E*Vg@h@+UDPA6Qx|c#{73{0w!8F_ZZ>#&vH7L0dL0frt4YQ`UxuWLOaMZ zfr@i*+{OQgs_%fO`uqRCMre?htc>gil08G=lF>CY6WM!@?4m?gQH091SN0xFR7Uou zQ1-s|_`lwDeZIf{eeh`T9_O6bdF}IjCVsD<8_r&GZOWk{_W2h^*i`YmasHElhYk39 zxXo7`Z;_<)FPm)q`7FxRGdQ7NM|xf*tgq@&oz$Msk>%kWxW`T&@vg7jyN|acJ1&GD zti(^ej?1b5+=~5eDFyb;N2Rl>VMl(OS7u*un*3qso+oa_wO_VyJ@EB!ZFW8K^VGbt zuN#&qThT`N)E$QQKpwtJ?H>k3|Co5>q&aId=bwR_?uV{Xx)?`DiaB;<#`Kl+(3Mn` zkL~f^xg`B3C_~c;Z^5km@k*m~zDxV3yi{Q5kyup7Eon<4vH-|?e|^j{;JABuKUMk3 zS?l`-e2-4KNKrvhA}HI@`{tiWoW=uDU~}ojskd+@&Erk<$8LVLxLV=DJs9zg!szoR zX^rxw*qo*3O&$c&3mu2I_UYr-Z~ixiV0?&fYtZm?F?m1IubyBQH!c>xb7dXx{p%$?aB&K#d`{KS-S*&9RBe4y(GN3YA&{xhdVfYocvL|vnUH4-i3Wj zL&9b{+I#nxXI$)dBXkWCY<@)Csb?duQ3>`ij2Hc<6ryP<@X9LQdMN(Rj)$+$SR>9y-TX9caxBL?D@$2C^h|Ga-B7k073i!Rh5+(d)ad* z_zJ!A$Ure?Q1T#Alj)12#bZ3_^WRnF_n$CjY-*wj1MTD?rg=SNXDs+{8d(Ks@oJ@H zc@iuCVtt8bwfATXar~e6TxHTX&WBCsZmgh*MD|}V3Dlma`NlFS5e#lq+uab}_Gzpl;6m92^+%#$?J_Vt~#77!JC*%AACLG|!f z5~=6hOcCA<=`_VJN7qfh_j%6q6W$N$7Km1M4SrTAjc)q|3$VFzC4EZ`2_OHOV$|nF z*X(`jZ(^Z?Df_ko6@HJ!=jh<=rvPCS@y>#NAdmgPELRH2`-^e1*}CRef4%aquig3i zDfhv({-^#D$*jUV&XeAGcn5^l@)TYwWv&+TRPQNSj1;D66Td2K2pAOoo!Xq-jw2Hu zRi@tMc99~vyTq%DM%Hws{?Is-OG3JT74iA0ZT)q&+5Tl$KJVx$Q=LM5jIPmZkI<(j6VDn!lnfc zdMJMW!W_9X*GRK##5oyNn{@Eb_%sw|=+m!v+q;>(jY1LjOPyNHqZ8klIi7^eFtKe8 zHJ(E*O8R1Ua8VF`phKSv?~Dh*MP;hCOPxEf!XuuKyK}6+E_>7GW@)8{x80?m_=fxu zLC=hOa_=KUM7^7Q*L2}8Gl@otNds9tkPYS$e$}UWV#&S5Net?YQaYX_;8+)4yT7>| z$1n6R>&j}YhyT3~Ct3p}7(=*2Y?q4PnhnIbw|Pg7h`jysZ%1Km@f`vfk6#tfMVA3PgBKUPPg(K;1{%RguP-p%AW zY);S|3o@PfD5)wtvSPfi&0J<1j8Be0FZw?PkjYj4n|5P({mz;V_^!87?)<*FF~<1Q zTq@}Ld0C%(0znJAhnxmXGyb}1(3CL{jo>06i;r6kk*d%4Bd>oe@zgZEE2PL_2{r10 z+S}6RybuUstA}`y4_;yv@y*elFNW?rTkW5{LzCOPnNXwC*mVt+L)d~Eov(tkg!46L z3wL;=k$c0^H8}w^CL&`wc6H~#r}ux(Z_X)YOd*u-!*}@A;Xw`0t)Sx{0O!)u^3%a{ zLh;!qt1!4%iwLQ|!1&d$`Q1a|z=#6xg}g5_~EG zRVyemdcQstLj6GnNJ&%b-!KhP*zoS-(>3xt{p}#)Ex&flP6RU2mckI zqOoDTWG4dp<+0D zNdX6oJII;H2=joQp|Ggv>W&p{9-#Ii|Md5&=>Z-pbrPe8@QmWa_I2bTj1-?gvj%jO zN2iyc($R1IkdI0UxQDv=k`PXS7Mb@H<=`hMjE^kZ3^}(B=)t5JT`r+nK$z4FXWIFG z_@?jyUp8_s{%b>tPhCtCD}ogTpw3@Al@L3YwLMBCJWi=o6VK|vP&ew!K>YhbalKgm zUcC&ec7t$jn9i)_SY|c;L5;{*08k*irH4HR4PcaT=$wUWC8a;!L%an5cuH?Yrj<^w zyhOzI%}ZVa3Q;nxJmOJ4?%#rYhaV)iZxHvAZcr#ZytXzhcIL>xEG1+dUT`a<0Qdny zv88DzhEdmSg>%yq>93p=dvgVD!=Fds6gDcOV>{_4I{1q7X`S{pMX+wxJm%ogJzQZ;%5kNS5y1b2|pQGWaedVKH5sW zMx5r@rRnhgkfk9$`oic^6QffAv*Wd4$2EYR6Nbb5AMCQ50LFc#v9*=dO6rVhBAm77 z`HuMI*!a!qi@kn+FQgd#9bbLXsU;i^&j=84ne(Em+jHG5)x*0<&qPS1+fCb{^B*wj zt_`IJAQYPj%k{ZA0ZTwPnE)<;Ox!lbOj(F0z`@+EaN}`rsuri5^z;SAYqzTn7B4s$l_y*hz+CAPx9*YPx$g$e%uY z{(K2gBp&o3VqEMw;zODu_g-iOwMg9%xs@L%ylH##%)HS~#!wuRemtY#a;3 zHo;8{W~{U9OxkO_-2w2Vj#sZg4dKNG-k75q+iSeQ0aYghpt!8)et;KIXO7ITB^m4|UXLc!9jA{BbNgJa6!>Ra zSyRJ7Fc8S2d#E?u(!~CZ08VCHTC6O(w=rhzqukYM4MYnF_?~eo@*=rqE?i*@{+A-%|MDDDnDV);&e%XQls5HAWQ9cJ%?QFCa&Y zs;$Gl;ii;g{iR(38mEW};Jh9Jl>#UjkyUU(d+7x&%!fzT`D`;a>!=ssudV&04=v|y zm$YMy`S{rT8DX2`(Rl_Z;XlX3INBNhu4Oc9YKU}XWX=BGc1dm8^lBtvaJm6zIwB_I zjFPVa{*6#zgdxq!KfS#C1)|t4*T9f12TooD`t$`q)opYPYU5Sy?B~>+U;3}-)n~0{ zwoa{VHW7S&96^aDdj`D}(VF)A19p<^- zCt{nyR|6)ZN*up0{@$7UuK7Gj%Fy1G*PDhAufO9j!I9T^;7`iU&!oMHpaKKrHQfC* zsPt6;`_uw;vV8i?nJez|gMTFk6BB#$gR0+=^+BR~%#ps3x|K73P)A_^uM^`}CRMdh z=xrPMj_IBIUK>(F+4rxR4ITZ~oRamr>*2s_7hEWb2@vqp3YOff7HzLZRV@h+5X(nM zGBgvd#QyW`lhM)vl#cY#wLb)Djs%Marna+v`68-D)uA~a(@WoSDU6>T#6C#!^W@t~ z66tOlz^PJ5w2%cXvz#8>Uk68nrHNJF@z9{lDO9%Q7isZEVs4`8^^v0`1=g*NSA=B*x7`7k;00zeF`j*@lU_o$|!++BlR^##3qw95~uV3g> z{9zs*E35Bp)TM4q_3!bm2;F(rIcBcM@SQnC>@YrO(60sC@yCaUxPh4}z_CPb*R@^) z{3mt_iO7hXwmveB_SBKQerEIZm$cy@lF_k7-N~+6n*Cjzm9C(Y#Gd;%S>f+!yxZR{ z2*{g{;B=%${tS5_R@G-@V9OVQ$hZ1sS4+cPNAK_SYv<9n$KxvhGO!!gGiKE*2?E8I z6pvZOyM9sD`t>>!OHy>V6*#UtM>Q$^*8+|lKNJ{_T@Cz(8>9ofN1so*@v4t~ZYC0cD?C`$w z6-A*(@7w)mU`HL7>z0wWqp&x)Et9OG7WE(`p7HyVytw^;ZyXG7d<%_6C+0VQ`*yV8 zl&zxA@K}HFedK1JBygu+d0k+QVGStQ32^*QV)rEH;oz)|;r2bQpek9K7`Y{zATUsgUYd z0rh@mMxc-TgF@CpJ>K}M5&Xpea^tLApC2$8C+55Ut=D?& zx(Y8V=xi?p3po?iz2>sx^7PtY~89v}L7Clwx9tn9sQE4<^t$xSk<(lRcyhH42b4zFsx=`>5miLO7l zNxB@9V#q|bv5>jzml1UXl<-CMPpuI1ov8k=#H*?9siqy|w%5 zgQ_s0@L`4P-Cvs1KkUyX90?eV^<(<8J9^{4*%JJfOdFh0D;)_a8^N8A1&aYm+{?gd z( z)5UX*qVVUD0y<3`kP>#zYy}1eMv8*k#H3vDr9rW)X?}V{Rq23PkJI?-e z_#CD7%)f4&vHqdTfrc$Uv^Qn^Xj)9*F1Trb_dl-2;Owj;vJ~xtfWrYE)aNGz9*=*} zf7H}~IOIa1U<<>U#gMT#oQH)b!hii@tX2@Gim>s)yCvbOP;jwO1mr8t{2B9>S2P%o zel?%r0VcA)ZiB5-?beaC5ys!Gq@%8DKezQ&MMw#iKtW@p2+ERTO_fjXy{eMZrr(YJ zZ-w>lfp!Kewfr6&g4g+16ZqHzhSEn%WOI`bI0S(E8;I1$NbkJ%mK8w5L7yrq11KgKnMZYJB|1;&aUkmcf|0l2(- zs*;HeI$dpPfvn(o0Sf`Z=Dz~`V~yHY*B^j_Kq&^7V1lmN8(tvhGa*66P=6v2|9Zif z>}Etxc$ClGo$a^8Y*)&;y^Zp=ekuiDgUyb7b%lc7@49Doo$qCi+dd%t9xh@d0Ms-Dwb_QEOTS!3KQ{JH zjMfGT_`DN&N{Z7Ug<^*##F1`)~`FMF85 zudg+;N84n7`t4_nukwd1l53-Q)I8L8`Df3P#AeWcB8M{tF9|r(GTg%v z8o>uD#ESr!_E%zHNV9JJx_?g7q8a_rL8>kL4@0RTAx75R8`EpVV9~Ts}X0?XP^GG3u~O zOkESnFs=j90ILWw=lX-Lc0mMb)flkLug#S{>}vy30tPL_bF)(D4wgPyg&F1ff9biVx zUV-QI;AVOv01q#uD;}A*&{q54+sEyfo*g|N0M_r2?DWi+7~@U`hpp)0uqj7!&!y_E zv-tcwwwaeKnjJU9K+*hA&JcKo{QK>X6LrZR z12Du1fa^^Im!x3bIL8$GSeLRD+u z^qr{b{Wy23?~;|#7Nj|cJtMv!9#vap~6oVPb29sFi&Pfr5(j(PEe4rgPo=Vp=odzyy&8;=dj_do5o z@s-_^h(DMtK)Q*R1BNok8ta^+?4a=&fR6|e2y-Y!t#w;O{y;y)LhV;d1?rA#fRCuR zK#PdkXkq+&NFImylzL7368-Elx@KII8z*6TTzLO_`MbLu48l`V#b2$@$l!ZSqmhbj zI|L=tK!}>vZyHgVK})g;WJq5i8z*yEjQ6#TRjbM0!*a`#G^f|@3FBusbkC0>rB6`morsc%C@gB>Vy2sdmO@VNdr=CfHIInJRtF6>2 zllDGhvjNa?3_)m5bu;;kC=Upx2#2yFnQ5YHi7y~=M<*oE$)qF8=TfNm!Iwv7;3qsy z-rHkFk-Gfcv8ls#`!xDgvyG?HtEJ)4TF1!0#zyEq0oENd06Jr)_nLh3+&E}USDS;3 z5CC>R17P=eP(EJ)RYi8P)Hq(mnH_;9N9ctRwwcSsg?Vyda{xwrXEj}lJktajtD;Em zow~T!&FiIJR)4w|zvPc@9sPNBX;0j9d8XL9n|oIRUma+tq9%Ua2o#+P0BxzZfBCNe zSJbCUrjI~C`l&vE2*H7t2TZ7%8KKj_;jlCBUS|Rlh9E6>$?zIKxRy1{C}gM4nH-J? zQN=5n-u-(P5~kVdE#HGLI&ZB+s1LvPk=|ZiKiJ)Rkd-+33adVG2rt0 zp6|D74a5mZpTT|vP!)!hYIOqm=6j%;Q380)O@I$qhSw;0e8Jeh#2Ely3n8N!fl?;^C5q@{;HnBj(3T$_J!`kR^?@uv!)Je>*zzNS zeCpK$c~Z=&m;tIazcWWj?N>XiZY*}ZmE76x6oTV_CM5Cr`Y2Wz0;@NWWMc4Hy#;wI z|HThXYCfWkmGz&1Lv^DgdGC{o*xV;z)T#g#jnLp&SO?z&H19#k+#!&spr2RLrFNkq zDo*>T|1}TwYgye-KHnV#Ao^nKKZf%#1N{%G-QMkcSO~mZRx2D*7@po$N|MBpiwZ0} zd;c5O1^Kcx0RYK6dROm$A_I_U(Z6;li0PdpHFmlHAiWo-(vzJ4<(C)OSrEPyAe2OK z%Pj$iIm5@M8D7-`&`}YnSfGtG?=QCO@-kSb?LO=*mY4<9extyMa43Y{NnsMne04q; zFHwCc{bhl)!uIf*Pm)rRo@ph%e1qTv~(yOzoVS;uce=9#Cez}f^v zv5rt zdkEtB1|*F;PLc#%R_)E8{RFC$1c8W!>B)2RxkQx$pocE=gD+uYM#aTx&ylF<>+8>z z-UrMs$PWWboC51fy;)1=npCAOS9sqKED_=-w=}3=1yWm!Ef@E;9r`V4teEOdf~k;n zJbWQIXwl3-)cqT1)lGr_(ipgLEsqA}6ji7-rX?ArgC7OJm570*C1o#NqqVAZ>&;S; zgP9@+CypNIo0PUI;Z9j8Qyo7;FCz84drE1lAy7}8*Vic^F_7cG!*-8x`a)cQO*u?Ju?yn;L8Gw?O z8Nrd{PjuY0`_sg8W=j9$-D5y(@Vyk@F@q+Da>p?`Q5Q~N?7KOkb@7(HW?_k1LuHbc zbGGuFOExVb7tkL7Ez3QG5D3XAV|C*t=pg8;-3;Du9ZqcM(=YR*_e<^*+7?_ZSP;8? zemm*X4QAOj87{W-Y+P?KTxc@|bZOzvd8O-*A|)QqeyQcT`u+Rn?v?eMF*jdq-ftDm z|1)+aV&Ij?$V_Dm%{gZ=`yTmd6&um4;4bc&#;AMITI@r%jg(U*J*=dA7Ki_lcB1S8 zm>wO?P)~mfYkASg$O!%Pco25nu*_drY&I%-oH^3p9|d%n*8uk2ZCL{@Quxsnb2#DJ z-j-6di>^qg+C|sV-^OTL){NYN>g z_feH117TAXO9<$?H$cWA?0Erx8$0>^U{ZA)K@d#L+pX*~mS7O7gvKWhHC8OgND__mF6hw=nx5TGnBcx)z)?o?Vk1?l7m?@nWqC>6$-&P*@kryvr`d%Rme7sEe;<(Yx@#uk4 zbadVYoy)5=f)}%~U!q%vex9$w8b%MRR^FS|;1bsl4KMLE#oylH9jqYhXUwuB<`E-#|#K)#rc3^IN_J{+Tlae@WSGX2^{%l_fy8&M%?;oH zdtB6$58h}eebOS+R?iY=g>JvRIeB>hwysxEFqS=fue>#IL2>#bmrC@i-+o-=l?u1! z!AATjM!CrX%L8t{HeSlF7MR)EeVAA`$4Uq0E*Ml6gAbMqDxH&;x2>rI1~Mu& zRLxal&jW<&=+KzB4@9+X?pMOuKu9H?Ka`3&%{>*%YWev{rl<4N@;#!fME{=SPsdF5 zOAa)B3J{b}1J{7sQ+knh1E%pclmg(9B0S4;gB9vP2Jg7+0+*C$_v&Pt$XhPmMPsUM zrfD`R%x;uD@6>G%<`;aym05#*;B4HT_ncNJmRn!J1ka6)a$q5r9t_LR&nG!X{Tj00 zleiuuZ3TtKIzr~8(?`&IFJ|4U;LGXv_sru`J8FJAOCcXVew3JA0!ny~oO0nzrL&fM z_tDV?nElbm@or;i^f}gDi;N$H=v-E|S4WF1V>(|4xcm-#vwSdnzwW=1Kw&t9g>@i) zR|DXD9MCUY10K1k!>B*j&z=l@EVTT|K+w6zD{(wVhTy8)>d7-WbNcjn*pJZ>X&(P6F5{H;s*rFJQ2bLeKJWGcp=-pJV3cRza@sD>8ST_~e;NhRf^g zad17Kc}osdGcG#+{!aWJRd4XAK}o_(p~wuaNEUGHh^KZ;-dfZu7JDO@E-$k4diy^5 zYmV)}$q!5kLP~pk!FnJA$jAT5&qQURIAEC}XAsvx_7w1=Li=5^6&Re*@bKs3l5ZlP zeP9H1-08MALBK$k0;D!#Cj8}~6ICq1&gfRT<#y*A<%4W7t^ZbG)2Dt4tAtLwmELc2((hnZume?)k_wj01 z&Nrh^UFVVF$t=U(rV=pZ$*jfRi+0MeHv-m%f1h^JKqdw(a3)#}mKUfbiD$z6S}*PX5bP??Mofqlt)NW?*!4^RPX}>`VQC0DIsmi;zyOdB(An0| zUQV$MjDWwD5xEz0pYH^ZoDIFVx0j_`l7(ChTn|~mW(tFFZ4{rk0>5<&oQV=pX|}!Z zq_14LVwvR*jCpe-bw=Ck3q3%d8g17a&GrO%+OvU&I}7FmCQVyco)m?R9pWaZ=LE)r zcIA|-b#H&14MEegPB}jz?PZ^0uGyMCf}4r!`DKV7=_oB(pvUXBHZ=+0_3#453s>B< zCQzg31G9BE5F@()i-6ytP^v>?;^3U}`nJg1pKH1gkDS2(f#E7pjbsBN_cCmQUw$n~ z64}5iYYn=kzt*R!r~!TQ)TtELnQluEX|J(xq0{vAImkfazr29U=s9?-<`I)8k?94G z#1f>YA5yWhUWVlk(ok1T1PV1Vun($WG_}Cb?yU9kK14zyYD$9gKPkh+Q+LT{!?;~} z!JH=J=UF)=FN5}N3R=_r->vppJ%$6^_V)IqIAZ)L|A0pNDI+7(3ApEG7O(zrETy>nD~rvuT!K<6-t zB&YIOj9yJZ`AE0i;SI0_L3alaFodf^&xaa#nx|=Lr)QVw?Le++ubPEHzA45<~5dPI+?}ZbD z_^lXeM@ft}2gQAwiYm=*uAgnlZMOHyIbnxu!1~n%tURDqeqfD~C4F>({h%kDPH5gM zEC@6KArTR%BCLLe6BmNWoh(%cdpK@&1`1azB$xL7jt!w(g?xhZ8fPXIBV%&$<#Et( z+CVWZ0K5kRmhGSVQf}KpI{+=8=_9I3I-|3<_9ozZWQ4$L_!_bxa&X#D8?5mw2`ZFF zTG?>)um{Ujhowm6G$4Dj`mj&k2nqi=H^hs|483z?04ok8ge@vXa+8SrN0b;gPFffdN_?+@#Q(JpGEd#vg-$iyW;o zgmU6}o05Wq`LYD_;|0act}^?P?S2npRQZ$j;h11@r7ah&yoRo^RSoo2Hk|7uCoo_t z^@ow-(yaDy^a1t@hBJg{ z9^j11;=A`1GE9(yXPwV+A(tvxv>< zk+fP}KI6xHTjnl0s{h}kJ_D0Y#s$qR3m}n&n`Aot{!Y`Ct*r_LfIN8{#|kf8mZ&XURv(jlIv`C%+ zwSL9?X=h3HYTcdDN|}<*>GAV7M*1&iKE%#Y(0#5-D~nYz$nrAA(RZK1KS-Zkni56f z3>&*EOH&CPDAzSkg;datnXpYnJr-XV$rpSFjn-N2Xkt+9@uM#V%6XZb04hCY?`|gcOvgF^VY_H9!gDvUM_QN^K34&9j($*sm zJCOEV1qv6-&Wu~JYXqn==)!B?f9fTsU+PaQm#fkF`3@S#wmbjsijAjjynuUbf2{S) zyCl4%j8c#VqTYRigma=>jvTl!pyox+aAB^4PSK1ye*=_v*68RcHln`%8sbrb;{hfZ zSxv-Nfk(r2;esMKl=AKJ8XC_&G6rQMG(5#_bGqNA&%$kh-Uka2{M++4La`oF@PXD6 zF8kr?3+icMwEPy4t0mylSs*^RfORZz)Zc4*1^ktW&FM^2rc;_G@*n6elBc~Y7wuAg zlR-ed1|tuBik%wm_D>U7;#McBdAi;>kv9CdmO|37mX2U`Fd!DL6Mh%RaF}=P=H*oj2ndMAg1Lu>O+Q^1^VupEv>VI-ft?1@tskJa+CRs}fH!Id zwAHbl+-k4=fqO0&c)Y%u6{TkWwTr2WXKJ9cEMD00E%GyH-=vG@4;Zr31|zKj#aS>b ztroT@2fC#tOtNHqu3lxVn8IalpM0Y96|~p&cF~6BDCKxT_jpmwh4J$L7DWygg?Abh z8n}MXLF8>MlOrQ35o*dK$B!dMsDqw;g9j2f8bBx43H(xMjEhUL@7|_4;;!tk`|YO> z?dwG>ppiv_DlB#W%*;$Suyq;mR4)b+5)y`WudS?f9ObEgJwH@s{pryOxOGHWx0K&r zHADs_P7{hsesu)?-{8HrHqHBdQVlE8EE-DNqx+R~=gVpM(8<0lnU&r1)Bk&CvuX$l zP^}OVo&_iOTj3VS?vDifS|B3h1YuPsr{#CpNLVHyAh7Dph=L4#HaNgjz-rk8X)=vB zGKWH1j8lOJZVG&KIcpF|Z7Ae+L+bFZIB~Q-D0Uq16(O|Fh+Fxi9|qnI9L3??#Hccd zWh}qPJ621(l7>}W>C zcvxK)N2ST>1aC4kGsmu?!$C1xZ7lxmFSSkZ-JTP|EsPk!SRB`MGE0HDpgCD;!~z@_ z>uI3)RL|8d3G3eF0oB?CudG>YaVy0&K6^}0kxr7eYa zmj>MNXJ4AB(+QeMh4cQi3|yc}!+ML%BMk2^-B7XuQ>QmjX5Rya%5ZxR-dt#BKvoEv zuu{RV%!YrqFih26mzTG$M-|x@BANp_i!>p)4C}5r3wyTiQZD%3B9y|LcQz$7&T1%xltni*=+ zQag)5(7$Yv^LrO@vwT5OOtdDC=rlu)b{gbSKTzA zMAGUa_;)&f(yo2tZCEA3YpdgpRVq^I{`3Zw#9i@JF~T0 z`&b5Jip*QBzQ4HgW%^!oye4?(PLEBTj-0uGg?LG;#Hy>kIYFpHztyhH8nW<+0~#=e zs(%(7QMno+TT{Kc?gyAoq9_Lge6)6E0FWRcQ_m>`lJkw0)4EQ-zE z$UH3e-Svtf3n-6S8f%yV^ZsQTB))l)>S=KnCN=a+1fzYaZV3ZF`MPx5WJvWp*WeGnvYBdr`A9chIfUPAz15YMLgtPSD@ zjknhin+Q0%BjGL(>)GTCgL%q_RiMc>|LRXbg!uL*IJu|vmN`_Y@@Ej?yW4Ydt4RIM z&gb&>Mo+Uf&0cZfnp*NYu6*C}t*qBUY@5zZM#$8acJt-kRfQLz8G-c@T>l9^tyAm2 z!L4ftcPP9QJk#Xi`zy*UB{{r~zpg)g@PIlK2hX>LZ7*j<;IH(OAH9XsHdr}=X`M+{ z3XNP%k=1pl9YiNbYz#8j91QN%2^ic3=-g_D9T?X2Es{B?c7M+s%84}DkG)Spyo8Qn zr^#M#5nJHoU6( zROuj+Otm*Ma#l!|5-bTH<|s=4gFiw0^NYI4nQ83w_qEzPqPcGmms<9u#Y;KXPWT** zsRPF3Fan`bI(X`|**#V6_9b>h{W=nZj4=b(z(UyO#6I8I-Nk{urpY{W_G~&dtx#tk zLaCJ930R#g3yrPw@=$%wui7s2Z9uYfkNNUr{kxuw_}eQShpfvruPbmKV5r*jsvoov;;l||s$By!clByyh&S-Cfz`XrQUaxiH0b$lRk%D@2PFX@ zRacg?(#+M>gdYoFzMT+to6Uf!y#Sx)k~G!iJRr-Ih13fPI}wVb!s*8Jh*32Eg;mWt ziI?gaKX|vcUj(`FC5nOx&C3Vjb0h;Lv7;`NEZAWT{Mm3VyRFlMM zfo?tC%Kli^3JSyxeO+2(V`C!&*7$1-N5q><@eW`t6mb51lcmH)FacqAJ48xKml?8s z_QVO}obK1sL1A4^#Na@XQ}bTShw~Qk*5{;r^})&`ejxcx5|j$x{c@Mt7rram83pM^ zv7H9d6(*zeSee};x@C6~tE+W1$nX=HwkVWGu?XfwF?!a`J4=#v3LI{2C|teTe`Bg(y=Oz>{qR_29jl1_s2M2e{jVKAF&9w)F?*+<;!!{EG}l(&QFyW^1)W zHN5i(8Ce@dLE)V;(>Z!&Dh&~gLYQpe5478qGlb|9aidsDAVRI5Aw{j9rn`unzuY(H z#j$e7wn|L{!>FW3GC|g!|IPO~1jeZclFTG=p6qS`IB%?$*$umP1O)?gg?%>DgB3-P z$nnEsAsDHFwPg(%RRz>IVM~}#eVmugN86aCrop}ZlE077J%Y4|WS8Nd# zC3@z9hFT^jHLTMqm|Z!Z6QUE?*!tyd3g=J`FJwcoJ%;M9sykW6G={2fApad)e)cTC5RHl-EVmBR98z478_X}0YK84HJmW8_gJjfo>W=^yWTw`tO z>CujmSbGtrJL0!r6D5iorF5%W{eHC_R=I8e_O4S!G&U)=bhUXr`*R1CUjKnXY!?e; zqS^v3)pmWPqD;b$Ho7Tp&R*-DWClUI+;p#vAn>f@JFcu%0{;XzTy0ht3QBpqg0y-^$S z5Iv~K%w|(&0iN8MG0$SiPO{nFLeH&8nS42RQO;QpY!(oXKaE0&!8Ho*entc#SEt~E zLSnV&N*0jN!ZzuEP99d+&@3f4CCX5DGLN3c{z+1YtoIrI8$x&YBUhiMURDyHCjm-{{M>~^(Nr$O zn&N4%bLb(q&$qiGybs*2W#3#o!pO+zI@SJpTwzKP?AiFt z%*Cm_vOreF=Jhu9m!eeca3l$ll_*_>8t^=3z^|9H@@(%uuO4v^Y-Z?_qWNYGltPi~ z47Mr8Rbz8CxEqKJ(7`@fAd-$G7P24igp7H3r`14dZo!yPq*q#LfC2`ZFv7c>1l6S@ zp@q^K90|m9I||t=)_8y8&deW4uRQ53)2^VT_dD;I-a@s-T){yV%fIdfaX~##-OgJG zca#)|3V5SWGcedWVO_WcT8-~g%147_r9p)|f#KU+4ph?4@)+`CW?&(NFr=16j$?8x zu18LDB8gU(5`F1Z#pmN=V1ocE9g#JEyeM%jgbs<&8$%Sk9xC1JjUEWD4b947T2dH#) z$Vq?{_S^IqHz_1Snuj`b>;gnW8fiCa5D9ER-GQuXd&Vu%)K^|De~8dAtS<*nx^g5Y zFXUWE6`yH6ihsO=E3Ew@oRCVLuKZ+s8sY{GHMPi}neEBQi$D>*OYb(TGc%ccsa4kn z7T4*Xe0!S#Ld*gj#}RdzjEvGvq5{_8EX{1%%p%VfGsHqrR~bwXXoo(&<(L0hl+jzW zol;59>{9Hl4tdqG|J2av2oPFO(a~i?9yr}{7YuhUxyrNJ)U}G@KAXaUxhYAqljqLa z&OUkq4kB%4P;p;@Nl1Zi5;gG^+za3RU3YK_zA0Qr@!tJ%Y^s4#z{plWXzvQzhs~fQ zFF9hh`RqvJz`#Hy!-3uv0}Id#s>^kE%N4DNV-E#yw--dbA6hD3o&H+UQqs8Ed^Cd^r&i7jr-`rkK)^10ug${J zX~bLYKz=qj%~2}t>BA=QN1+I0hox#aL*#fGw#E&JjrlR(oKW~v{o81w%eH4Dd9IE4Y$X0qw{Wq*kU@Acu8Bi-am{AxiK4FGDTuo=)j7Hb zZeu(BR3+X+;1|}JsaKX4C8|&bMLpU~^&FimEUx;>;5I*l-G>NM4=R#fYL8PnnH!z; z!z0BiF6;bMwd-y*R+ZiF?Wq5q8LtCb-iv{}&?3JjIl1_1o2(g$bTq_K7U1b-)=El{ zO5Z%ka`*Fz^Q08?ZD2Hu&086ex<|-y#%>6pT-Ii950yL0LP7>QfiY@oZBmkj=B;@U z_JJ3j3F_&BMn)ujzlJ&|P4bU3kZo#JNQ4?NZRS`g;u1oflveRH^A9bm-E?aIsejWY zA8mcz#U*8>0Zl7yv}%dR*Y^JeVqcE(6BF23IJmMmmJzp&lwfIJkwqgp2n_@CqCQhF zdp_H4A5T?;!0tz~>EL5#X>c_QKw>BL&`~Oj&E*M%+#XUW?mgC^#lUK^89;hSY5^|S zfM3Qn>bVew_o1W-*gz&;Mza$1g(i+Q{d(%bw!n-FY}-y}j=uC|C_hAJy@ z>fRDkbHS;(_nkbfo1U@#=R2SV&q-4TJ!O>2qZ6`YJw!HtW4TQM^!<^u+%{bvQ(8JY zFZfIwUn8`6E9>k_84PGqr}0OSHa|m2c?XxleGkI$FIJkczM4JAM8kA-18IA)Su^eD zh6cI>E)kdx#GQsBRcKh)GuG#q^|XMbJp&=ihQD`5*FJR{ttT)k5f>r5J6!;4Hv)c# zLXo26a*d1Z6QgHd_t|av*BjnTRj7OmQ0w2n^$~eQL+9K@%^o(AQ;N?o z+;gI5Rfp;FruZ}11YQog$`}KrU2U-{Fp@&kCMTnwSE8-Ugf*>o25K zP=vH^Y7~n+ln|XR=#}PxsJ@+?v)^+-VMx#O^Bod||h6Q_Y zE$j2J+F(9}=3mESx@)*=_OYkO?Msz)VtC2DonG|4JYc-=l_syF(U#u!jftZk#Na8!o`RzaF7mCGU8uSYeGkM*Ur^x2&Wg{&)_eKd&b3S zYwK0hEuXqv&_{uv0sTWDXm8)XZFlj3HgIy~zyZko@hJB&ia330W1Sy^G?x(Ok6nWe znCa`Fz0;TXJBDz3t{C*>Mu2C{TWaUn_<(wizv)<_fuCE^k45fl_)FC7M)CemxoruI$j(!}2e1ra%prb!4ZiXU|XNc@`?HkSZ1>KX)>#UZ)y< z-(H=$GCntvn04adjk@8DpvR`?dH0_+u!q6yj>j#B>|zEJ1p|BM+>o|vD`@SJ7cV<; z;skQkJIwZ0L1?C0U^=NZxH-_jV2P!I%7#izcI|4L3|IN6#L$pgOux2jFU3j2Kf}7k z_xDb8T{aLRmpusnbFP6vz`p$oDcdbCRX^vhmxyc%jE~uYY{E^Ue7NVR2RU{y&abtN zd^DGqmgKg|1Ch=X&{arUx=0=!m8m9!B-c6}p~nX0@!)%AtYE8e5xP0b2*=9}EB0+m|x<1I`_UcQ(CPl58P& zP^aND<;8H+)VQG>q$S^DK3~DCj9}?Y7B&mb&R`8pQumbS)%dQ(FIzqc+}-Fqb0Drz zWDL4{_wM}6UQ=1f#@1GvWdhk=LbF*+a;~Jwp$+fkI}`12FO6Xgh}FY73H1$c7#%TCtjmP1V zxSJ?BeL6LD#bho-Z7&RDyXC*(u#zzT@%mtXiow%p+Xd5i^w=?e;luN+ms<-mh1!N5 zW-=+P&GxaeJz#;t+w2l^;%#i(Z|w} zP&BrJN6J}M#*__vDaCN8x~)-1f456hI4(^o7>HW5Am~e_RZo?(#@46r)K17T?zHyd=&1>NEd*kNgq?uW!0CrAR=pbjYeBVHC_`;ndpNHCq-+MOM#t3#5S z5Y`Ik{7HNvKKv-fc;3KEOzVh$Lep(|tF?sHhVAy2D9m8^>4h!p;#KqRt$3Zxgt6ZT z;Uo44$N^Nt!Nzf$Ryf!F-2{}ptdyi6NYiY(MCvjZ+^6~P2$x2oORd{uk-^%wnWSE2n(Lt>=t z=#e9kR+h>IbP+_mTV{b(e+_AqY$!6&3RpcuYR1PUH?EENZs$hbUKocJnC>k|f#TY1 z@%|TOl9Ts+d>};9OsiFel|)*5A|g!o$|ayq1V+Qzs0S8cpD}p^90TZa5)`3Al|^c1 ztvgh-8 zOa9w8Kuf`g-@p&NZ3yYnGhdz;``QnMXQrsP)8;I$t!W|q&Sg>!)bzK;n@vdA3l1Z+ zxrZQl5=eO*$+a&@Mi)E(Q3BaBNPVyqh!Zw>ci8 z%I`GZ$lujl;hfHGP-$v$9yQN#UD9w&^TQwOGfxe25=w81<`P`+;Zgwi&S}ko;U44+ zTNnsX?S~BQ3F;j^nxPHS;hbR$LwyWZ;F1HBOJ!q5-7J0VI`k+%nOZQFKx!lfq9cnB z4-UsZxMrtaaQ6n1PmYR;`ua+wh)n`Am+4>%^)TCZHy?UqR|`&jGNt@9?tC2el+yZW zr``Vi7T2hOEsilmM{jFOC#T{(4e3oa^+tPug(!qwWmHQ zwds2cr8ALgcjy%;Hff*$Ngei>gLVldR{%>XV7P4u{%2U%U6#h(E1QEv{wxM-+}Nwb zXI@DhG&+t-dhS(uQatN^hmxk8!LC&(A6t8O;*%pJJ5s@G63eY)g<6IY#9-?zlFgMDfR!kSF@ z4(1?2=~ubUF=iJsdW;6RoE0QN$&ccwQ1l@^`Y4B2kjB>}kw4wij{6EdXKsV` z4rG^t+27B#FAw(Hl)9|@-FfBu?DNLbn1DqaQ~GMHfr7##q-_Z4@qya0pzb!DPf+vl zD3|p!Ize0^HD7sx6%yiKVb8`}5tEQy0D%c+Cq!Xcg@s@A=%E}?|973~$xYOBbadkL zMxaLZQhJf6%6&nl0|#yzV#Hg7zy9jdHgbJQsc;^WAyD0shm{r5T_10X@q)u<;oa2< z#q@fvV$g|XQlkI7siE-)FJAqF6tTi4KXXZkSF;Dix^K=68ok~xURNkK{z%eiQ>tNP zl%d8P)KM-eU-x4q&p@mOdi*KoJo6!X=Z8|V#{PO@G_=`kLz9n??n<49=S%O32v}pS zZ<;UfhfOgHAE-MNsz(|&T4(jGS35>iMwKpTm~=jolh58+BE37&n7T92yzCl!n(Hm3 z6+>`J;g@a~PC^Yc3VJIG;=$qoP=8TaR~22%h&rgU5IBT-@S%Uq^hnxLf>tgXV&=Ft z>BZyhN$@+}@A_;2S|J!3W5y$WEpI`S2lSm~%UP?$^EX-4?8{J&?+rp=u5%gY4Qd(( zAO9+FsUsh!us~aa)t!^9=D$Rg?WHN@YaDkw)m0HCOfhxu1IRy8ax}pq9RXm8>9W@m z&y^7@mBShBe8nJArF}iS1A(qLI6-`cla=*4c-)cC-c61ALV6IU8`+hh!AkE|yC9DL z7F6)mak~oR6BGAL2cC#Q2T*afJcJDVZnHYywqJ}dEaW4()?6AI8p~osMWmeEb)L-0 z@22EBsy$iTFzQQqjAC3Y6}QV8|G{|N!4G=}TDQ@zY@|n^X~7RV0Fg@Ss?Jn5)KRmc z+Y^!u>!})<80h>HkW9Gfe4TO}aC~loIljDLq6;pnCKS|7a8x{oHaXpX%{k~>re zk(Ssc@;l!BkbdhHW~Lj{@U;Eq)s}PQ_$QC{L)t_O;z|A z91Q7_MjFz|>4n?c8MM3rrYF1$2?C*$%s9tT@usipsgIgT-#blKp$RqatY0T#xvJk@ z=4AAlu9Qv3zBzN&-E%4l0vCh9=&&c+bR^_$4qbtR zkH;Id4Jw>IE1Z+J=^+?3o^{K#Hwv#7x$dXmbU8B@8y~$#L7pU$@b3Sy_vPVKZeja6 z%}xWQ*_1I;8juiCViVOil(|yL7!{d08Y$B@6(ZTnn25}2G^BFuNaivmV`WZ;-@VkX z^ZV=j|GU0@o$ERcdiVRTcdchV&;8u@z1GmR)^$B!DEyk4?${e3|4c#U$JoqgxsbPT za-`wT9*vx4^tS13CjFy_uD3JV_5@v9v(?bB7{y=syPU{~hzO*d$5NY7xSUGWC*z=X zQNZ{{(*3J7(-O13?lg0clStWU8Es0FqA=trQG$BGQYws=byrtz-1~mX7Dv$rW#+5* z0;+Ny%>_~5INcwVTlIqg&U}U}>e5|JrK#~ANmOL=dPkz$YmZfgYr(5$>-I<^D9s-n z&j!Gl4jzV~e#?Qqmmn#vyZ!$C`+}Cui?N)JrLJ73+<&vYlWV7({Ya|aqfNV;R>aA2 zMMw$Mtuhz%r|D7{m*_^4CN$TP&`7D^CERCwbD8&4yPNI#U%;mK);N|w<44Nx+7Whe zuYYL&BG3Q;Uel;Kiv<7(>{}pCzZ7=LGza1Ob?I=f4>ds}X$HPlMeiNPNqejkF7RRt z8D726hb33?{5;Fv?=kgp1GI6CeAmnJlN-B~DYFGlH1i$74L9E26(2|+b5>jQJHG+B zN&G7jWscWBXYpyWt3_GFb^6$ayI>snK0-l6@7yfG09s&yE>m`@6JT43l)jT7Q*6>F zWZDv|Cg0fDSmbd2)f!9Ho?Umnrf)~)hyK0len}bYP}4A}T@1!_?gJCXeA-J5!{D<$ zXtzJ8)Nt$pZ|6u?7IR2e0p9rwItPlJwm^2&(q+3AL3wiRo>{ToX@x*1q$NABfdQ5J zJ}Sn`yE9N>;EHcXqc(~n@uZ%Pj*bIH`oR3~ijHEs0EM!nznQ599FE_S@wx8$W|njA zx@{b_oogHqUa;%(S@zJQ@#-$xTFvhDT`G(;rD<`!L|%U`F$4F3)xYlO@m%1{WoSD` zcH454r^^Eun74%UTk~#pQHibw zy3x_2^!2;wYo!I|Pp~t$5Bv3aS+sZjsx%(zFSQFF+5{)-2J`X1RS;p0ix%6Q40XcF1z<)=QsNf+ zW(XYWpV{-fA>x#gjwv?ERWAiz|=CL=GfF_hF3cZ=>&E? z_g(IH_3BotnBbki6z@Ddo|{bgT#Aa#>Jlj`dMpaN-3wdYh7VNc?pu*|5?|EZf9g!w zeXe8q^b3bmBMt)V`E^G-#}VCCAfqyll+h6|wSG`{7BC8m7Hx2?q;Ny;!2k#U;Vu$( z3NRQgR|>L&{4_tQUHR zzK>m(sCclX%db#yI5Tyh`-C)1tYl4!J)1I_2rf&l3fuFelRswE5cKL(bAxdMc^Fr8 zzV0I7;oq7M@!MTOV+X-cg)tcU?y=VGnQm%ZKa!%OSuxlb2nv&RM{LuYIe8!kWf-2L z-ao8tp1p)q_At=?&BO0icI^r=ou2i9=h3w3)=y*BNs*eadJJXF2CWzc146N4wsu)^ z;itH=0{floNUx;;JxE~@Iv9W~T|uff%|~-2(z@U(=1kJQSjFz>WXwLL& zz~&MB2vwggW=&{lR0i?y=tTJAyd;6rX!<$4HonOu`R>z z_fBt{^LUqW!JQBfIQ?k_4PB)#41f4HXmw~FiT5$LZ+nS3%A6la#*C0AkYFozWvFt~ z6~G_6cVFOk{xEBDphD6z=538_eHLY@!dGv_>4`!5hfAR&$bf;4VeH-T*E$@Mri~|y zkYL0Q8(%ChJwCjL&CAQnTrJG`G}|#$bbGo%@v&D+FS;{TYWi;OT!h2&S9>1FFMP8s zHK)a;A#YuRWpDw$11u1OB#7NYqM_#)Jhpy9e z1p6|wOwP8QG#Sc2X}R>*w|ndvrFs=H^J%&5g< zfdYM@QuPd{H5!_dqn-u{XTBOTA($>Opyz)Z7?|N`P58fket7p$*;Xuk!q;bADV_+c zH!Z?dsIO!v>{`N&M2Dgp+SRk*8hY)})>+o0eSMQMNTMa(u0Ei@#;;opmk?G^`VFjNq^~NZG4QowhR= zvNBP*_iI#xxY_48+`7!|sy=((qOnq;rORnJI(>C$E?y=fSOG%bhn7t(AfpxQtee&? zv0Q=n9}wGQAp9?*wxyFw6e-d)KMUWD?W}voe;ndMWCc2uf^f2@+jXr@+$@S;K!A*X zMc8$BV@Q%ptP-9dlRbiD8tA$osTh(%pa&$RtE9P)XLIgI{&G3BYSBf_@tw3AwUMC; zwaQilpKa!jIe*HqVNM3p2zmliTRK{C>RZn2-g~=UEkR)E1wuyzKa=#CPj|ja1E<}( zzcCNcU35lsk|X%wuW!m9B$Eh#S_6g}zJ4Df`?*ElhuHrTF)hr63xE~pKK&cm{T+|a*9g1%&?jlBO^m8rS?z=Nf7ggLmN686 zFP9E51sUtG6p4=;Vc~5wdt_67K$zB_tJ;R05RhszzE2bbMxZxfLWC5C*8E+hcrdE1 zd@o)OmX%KN^i%=T_9UQ0T7>h5e1djDbBa^IYp{CgfLyut{JC>2f%$_JAWS_H;m6Zx83~)q%R4v~ES|(QMnxxr}XS@GMo9AVA zurzcZbv9+2xb=#5N$H;6yZx_=@24_JD36C--pOa$-M0VubR5}F4Fo_HQ!mDD{C1yw(74`~P!y%2<0q7r!4VWH?_MZqZ?*|?p>Qk8u?L6QpP<3^68Koep z&FJs|DJ{$)nVoA`7d`PwJ6;me~n?mlQ-V zN>8iT`D7Z@Garo9XR_tU@{+O9^uTjz^P?34c@5ia8@Zue90rWo*Hmy24D-v!w+eKY zeN{VJ{G3f4fngXJmSKJ6@;P(oCb@qfAiVfsSGXH+ubSiQ=eI?_;y|SqZc7>|tyFCu zmefdpQwsV)Yp=ijE@Sila4P8}(9U{%?df(Iv89v>7M-+A?^YFvy>oo%&`ClkWsb74sG9!z*BRt*#vfmag9`Hb@Sjgv` zSGPOe+4het|BypLdz2ctOFO#p_Y@3BU){0=NQO zsTEafzSyhYtKWnT$Y=11F(5bg+RhFpu=?thxsMlfDI{()D@bV3Gh__X-W+=OvO>te zccY%Q+(AXt6Dm>6fHO*D(R1d^ISJ)ucT2GsV`R}&-lPbHIRjv45!yObtY-#v`-!e+ zPxk~c7CEGT$Y>AazR+Y&qP{qk=2lhca>hJ;Gjf}))Y2Q+h|KBQ*ib^TYw~BaK$FmQ{#-G}^VgeM-Pi z2SmOBWVfh*hC!_Ts&FS5O%`|eLU4zVqtSQ>AVr2DNoX<*NBIukGcI{5+~Pjy-`dvZ z4+b4@L@VH{d#pe)VxW`V-}Nq{CGp3l7{8ju6c33$J=wduZ68@2?c|>Q3B{x6$<8IL zO(JCUIe%WzH~wh5b) zncorJ)hyDV%#J>S{R7$IonS*`Uz@4(z1PWknYP6$-fGb`V6aitBy2~O&xx4#QC@zC zee(a`hbnHIN*L>iy)O=I9_4je0KW^N@xGiEGE2#A3_M@HZ*|gx!%zNt@#4iA%u2$; zhv>_{TJ+HUTQfb#catZf-^wr~^x+J{fD=|D@T^F79qvZY++NA;M`3z!?L3Mhza=f9 z$h9UyTQ4zDs3ZSBF)s$Q_C6#rL`Sez-YFHzMu7~jcBk?{pM?t-Rw3QV2FHzvN9y8T zIKj~(asstv*$PZh%T$79U8~9GAu%3#(zR;Rq}*s)c#5ksk1(qw(6(r z1?Iix;4c7qaO7o(s_Vc3$?TIE|Jf%;(Rp|Q)U^oCE%k*i53r>V1@`fFZD*q?upG^4 z0L_&j6I2sld3xj|cM6EnC4c?B^~9@9)KUW==u#+}%!i|0qSdjS{HyaIl2e=<(&5kM z>_QFe-KKWTo535b^{>#+pCP?gtN|*TK(?f$ z6{}Y#lJ%Puw)W%4j|5Pp_7MI$q6DV#1uzXhLqNERngUWq^8Pp<5`ZhrB=^1h_w8&! z+hD0?hG}4J&{45Z`VI42vi=0UA|!15SXn5TB1XQnq;EDa*#L517atpK>^*J%PQp+J zjoBJ}5Yi*Nsc>Zc8^9eVkPfrxj4Iqtyt8IGwT_?X5K_=Zevei6adD zBu6y=iKr43$*1teql2iypN(Gp5#+w3M_YbecJ(@>U)v#^beS$&;d=b<;7g9-FJ;E{ zO=UbUFn3k@wPIDLT|~2?;CvsY*)8z2gyyRBI{heCS>E3}^7S%GnUg0INe>1EAs8^G z10y3&1EF14fz-`VCEsBd!s8QBfgeDv842C`UouL$x9W>!ql;#dI-{HcE@VEOdK$NE zeuNGP@wE7&Anv-p$a>c}{rYw4YlSTf68aPuM0iRzY6}kP=KLAUNsOgA@*xJu%Mh+R z;Eij6$G4YtuljT|{bM(+GD?AkkAgq0L9y-FUd9g4OC68&hEv*P-KN9dSTqddP82{y zNA`~|XD9B;72-2!3E%|+Q^HfJrdDW%>_p3KE42r5RU*y}Hk?6u9U-=#8P&K&Yqo%a z|JZ}m%j@C1$vPv3DTQC6ujcmc&|_)5fgSgX-Q=aZ&AN9)5qh&z9(6f>mER=O`=eC0uqygdW8Ead5JwkCm}O z8{f|}>#Dr%qKqxP17;p}OH+`vnw%>9c8LJ2P~TZWHcc2oipv=%U@kMWdEtpWMqxM8=Sqpt2ct`7q@^C>IYK)k?5HFQ2I@fkE{9(GB+C_kVh{waC%af+ zI?v6N7derX@!bqpO}C=A2kLL;WF|*++gLKC4&I%-3tHm}3k#8YN)!#hGa@qjB|M6$ z2-YGH9U%mSMMTtcJzGzG`NY54Qy{-67B&iim=ggkodgrx&(Dtm!jY8wm_0aX z>puXN6ga|m^mhPpR)DhF>+d3lPVOGOM_u%lGa`v%9l5-JjV5ufDH?bwR?-bT!jKFO z-Ueym5nX;TDO-WsfUeEbSlYE+sjDuwK~qlL@=8KccWBUB#rA~DkrEI8%=HIjvTiK0 zdyoaxz=3JF>#Z7%SX=;jvPAokq^@L*V(7ckzatfJy*w~h)Y>}uCq!h;6yKBL(l*Sy zt!Sj)8dY@qS!B3UwWMP+%+Qpy#Kf5=w6zBd!RqZDf9+`5BdK?Q4x>&yo*E+p0_fXZ zhc=S(^AD5S5fFbO*c5xZ6Z8OU5Y2`8aExoW2nvX5$i?hFlq}xSFzNS3B#JI9X!0O6 ztT=thMY8LV?|M;gT0`dVVyki&o4`#_SN8j_m4;Z`-^-&9tbaKGwy2iwz;ue-5oBZ~ z#fkzVn>KwlBkmX|wIT+9?-Mr<#K!e*97ZBj0# znVoX#n})hc7seLx(pq1KhlvKg28|N_VI(Nz7eoz@1WTH_6{iOn($V@~o3d)zvR2v= zZkBiB_bL=T&J0s1X6oZl7^eI@VF4FE=})dbW%wtbbXnl@!Hk4r5VaD~nuQd2V?WHB z_G5q$@lVm4fjh6jy8{f<##73={TWbhV#fgCW#h>vv3yg`W-Or$aq}r#qeQ$Tw z-u!o8jR0Ni6}MA5n%sMV%t(Eyc(pnsmiozdo7oe;IZ;X*tbQ zq>=u$U?$Tk$U(R2e*vCAFh&qIEK@%fjRVQ5fk-4?%@mljhGfwYq){x5JKYQCW&h9= z4l`n~P*#asck~Hr^$AXfr`%+{q9NLtJAhyzZ1uLqd<#vwJLwK z6)@^S?AwIv*Om=M#*vA89L>n?b`-=c_1Q>_tp+d#_uuZ-9 z`ovp{SdSA@8)iQqmRL7d#J5jL-0~4UFMPx`FRcBhlKSvEFWdh_4RSND2{bW-b$y3& z=Q9%EYD^lKcTn&RXfa6;{V9^Q1Q74mrN_d0Lv{D=)#=ulcrL2A_sxb|6%|d>AB`u2 zyPb}@|Mkhfc49Y$oRQ=tCDuv+`;tux9)8PbF|G~s5Uz1M>LO?}tINVNeOX?@K|@W` zrS3vJr~a~FrZv?>SN9sZFE%)F=qA^tt>fWINBNzMdY$kCNqUT_cDFIj zJ|nA@FaGW9j!$++NqkhlZnjlV|HiVL|Jg6xi8S^ANE#jp)#25T z0PZ$>O?wa!k4PpjEL@(2SEI|dnP9ZIJxgp2qQ<%R$snPcJG5!I1%ksQ!V*U(bpzlW zK_hAU1-3WH3Um>|h!X*htpV~-?NM8ob1D`MNZT+#fLJB9uq8VDB#TO#%x)t#0T*U5 zZe*L+_O#7@Esz#;tWW>$lz+lg)gry@uA`bim?f7&?2M*sTUdHSw_(`ZtMd!t&$W@OJtC$E#L(V>=`GmfHe6Z=B+i3sV%||ah z8^19EkiiO5X36&$MFf8Wx+UwUC1Y@jl8EqFh^r8}V4?E?!Vka;%W~||x2?-m1-h7H zb8k1;NoJnk69_}yMUv%STgi=-?#&9i3~5S{c%L3`)X=*&2G0vK{jd*>;Ui4iqO&5p zLf6(Rc^0C^+^ykkFS&FBr(6f*sFM@l>l7ToEox>a&V*AD|E;B5XsaM>dd`rP1)vmWVK-aW5!R zkzQz^+&X|Y5xqk@5}1i9xFPAWf68MF5NiknvqLiNRu(D?veEV-eUUMXC}YRj@9bZxKin#jAw8m5#V`3qOQ`WYHez3>RCwIX)2>wP|+N!Dm|- zI*ti%Uzmk@*_&#*F|kF4un+H7b%=}^gaNN|ku?bkE-B~HRtV-8%H1&$JT|KbZhKa! zCQ#}`pse}Q>(EbBYh>G;MCM2E_6Ma73&E7o`!c$!JL!X4!u?cOi)rJO7@~7*WRkBhSDT`qCS0tc?Jg z4OSxASV$Wac321SDzhL{lQ78K4G81(h%8HV@7su_R<^naD6yL3qh)VFuP z39*@2&E(nNpXW7uaZV02WF(0O`>eY@JB4_vKugRK=(&F4qv1?20ib=%uNIlKBC0OfabceS_}aTl2OKdItiSI5Gd;_D=IXBt&=xN44O!;3;18Ap1%lOqfBHispRQ^ zWP<5*kvtulC&*>B8~w0M;IC!nQ)8TXxceg}Xhyc<9Nam2z~MalNY&w$g?E zx^l5+^Iz_+b2qUbWK!2353eeJSgTxRFO(R24+*;o{~d1}_*CB;b%xv8>1(zJLEdJrFB7 z1uJsnIZpq(5I>Wh2&Az)KvG`9IRYAQ(sY@c7~IFD;JjZgfV1kCBnvDpRpOE3*b@$l zKTrxnm_t1z1_lCQTQWv7uslh(3CUzz@8yM$x!(7Isa&yb{MM3g4^5-63dy2Ijd~tk zeO1k&`&p})0Ui4A+(e?zL9Eb6J%Vzb&-d$m0d$l}C`9TCr=m@dPdrF+{?;mr1Pnns z2vNd6%jU*B4LR#0>m-ey25-t}Hf6QWef(6LdEE(r-UY@lG404qB|9>ja-5S$MP6A~ zs~?neWW2etRl;^q7yu2~Yam7m*D6)ZPtvt*>D)T>#Xnxv#4>gvc-bs{O)GSNy@E+{B*vbP z<2=82tir7BMhl<{YZ@fIp%0%ikRLW|%~4IXXgo#B(G^Y4a=I||ZHwh+n=aSA^`PMJ z)=2Vml~)quSgp0WDJ-jrQ8(0I;5@EMVrw35GVP1(V|~Z`q%>pNNPTR@xqcgMqat{ zFS=~7f`~Xewu_Giqt03CbiCNK>}+Q?&ynqPo=fU)Yt<{gL`(`jy|R`1HXdiCZPZ&U z`Q1W#lLT|@2ov=hneTl3{KL#OAv=zMl*?9NQs-1GDx&zJ;JpnsC!hL&m0E1cm@xa2 zHndziK|d^Exw2sB-D67pZOr7;zIcHT?`yEa>6opeh>A#cgWDge6*qG0Ydls z?&p?oee#55^G?g=I~R7AC25MZY%{ttbR_p|g`H0Sc#9C7!n`~CztBKq871x~SoRd+ zDTw}EHuxQ=`pADa59v!Ol$?Uw@~^EP)cpkFLEt%T9AHR2A4a{@I_h2?zf|3=IXHi^ zG;kizCC%+yG$Q^U4VKUmnSGvl+d*jAPzYdrHqO{26rRP3NO zR=z%>W*C|&7S}LeQdidRw94RL-<08&#ldr?Rx|UGdawsQKsupWC*c{$2Zj}X)KWu+ z%NOyN`h7ckKK-6!aJqP6LKJ~yt{yu^$6Osu@8j<0p4xyO0Ws5n#4!bJ*Eg%dLzRup zDc0@R6G@F9vR3M9&veUArMOtu9Z5Gh|anJQah)TlPoNcR~*|QT4N^4bwk2- z%?8!j!XCl(vl#O~GTNl+=A8)>b@Z)uJz{E8`tN@0nID_rVU&n&(9HeYMKXbq>8hWe zjyGG@xoFX%YItwoCQpO%a^Ty?93>W({ZHireF8P}qA2pFVN=mCX;$j27LEB@ysbTj zGuz^jJU{czk6t>|O<92{>qU`|}bS(I!8;GPrPD4Ig& z=LnqPxf5^t9Z}c;+>OjOuev3o6r$0+QVYL7p9bN_g4M&w}@t!@)FM9R|Ks= z;AY<0F4~DV(Mg~~kyMoSgKLsT9gE-XyNviX6B!oTHnKC<6e%oBST>n3(ML~{R9AcS zz1E~v@c6y0nggwBR=)(vR8Ne{K`AqV>rVZiU3MGIgz3MH~Xp71D0n zphRW$I`-=N0W@oLutnFPHuGviCG663;^v^@j-Zz7`jxA5{E@`h6Sy{u{=yIn7MS zVjq)p^SGF8&NsGoGB*3MBu-Suq@ks%J}$reqn%o@z?)7KG1wCcO6A&{Q5uQ^|Ae*B zuL#;(vTPv}PGZUB_2ISaMeBi>T9Ew+Sc?wrhwXIGRLoX~5)|HvSaU?DGw|tk&#Nlt zOvC@}#o&Ux7sU-h{_y@L(f&kAbEe|!<D#HTk}V~%Yl)Ie^=*f&6f+FVR7GD`&LfeT5xi@_r*Su};h zhR*%_tR~Pi&x3%yYO-FYuAgprHOn|AXC3pEvZM`_@xQt8`vM2i=~X6{bEpti$S4B+ z6U=KF3Eb^Fh_(G0rJv0_>>%N8ALn*ei%=pZl5W#mY4qj7^ml0q!ZAUL6Z>BVKXcj2 z9EA_8FqQMhnd<(e2LuF3Yz5qnz<#PBdvHP1M*J7`I(#VDIZAA1@}9X~#I8yUfwEmzD83beLqf zSOyS+CSaaXPPdRSC}xm3V`7Lckyx|N1a&$@Uz#4{?*;1wheJ6gi_;6myVgK7(u$WTB9=DMGTNLc;A;^~3SI(O8M9Qm_hc#AD#jse@#);-AH)K5?5SI4WhRvy@=neQGUHlmTtpHxiG5xA(1)5(Hf zhKDtK8gwOz zzjm{Voc&{=E^ErwFW*E9=z#(fp;87^9ST}dgzNsmLNnHDW7vixFP<~MAQv7J=Q7~Z zLk0^P6L1%k>BZ+c`kjX~0Syt$b`d1|jzVtxB9pSpueK`qV?M2S@XK6DR z8=+(lC_$J=OqWSi!FvZ`A4z(Da2lEDpy(%Iq zYHMqKeiNEy59Ti<%5ma)NhS%L0EsyC=otUEse610bp-zAYDyiAz@1a))(imgv`g=XpVyWA3%U z_bI0X`*=hyDq*9glW>PiqN<ujikUIk|d?;rn-Xxq=_UOvYmjIHcu zfG0VAgyj8Xf*>yaoFHAjPF-Dh(I6D)GN-H)@7s1SBorlhdfV2pkb}M!5`BojGav5< zE_>OY-{|L<`Z_qM0{|9=O84L=T2XrW?pkczQK#q^{}${DqQ`}gBpYdT>rH>DEaJW{ z?(*HRp6U6_V!?kiNJE5ck_wF>=nXSF3UKV+3+4C@e-Q00j-Fv zMuzDr1)&vxBcCYra&pmgZeV!+x&})wE98+MwAG3)T)2>kEobJX*QUoZ67UoIpE_)U z3n?0$l}7a`8tc2hfAaF`*XuGVS4v6P!MqRR|4p^O+s6aGjn%)m{vn$q;nKhhl0pvT z$PK)@D&djGa-|;0uG`0p+zS(uik3|sq=i1Xr<-{7_$2dI?4{=@+nvF6VEUnpcTL=g zA?J`In=DJtQ0rByZm7WPA1#+1FJ;k0IrffaH+>Q_%BC=EXQ9OZ`B7M-9CQqpeAF?1 z)WU??LjX54!Cse#kXyOiQIU|OBiQ9b_Y5Bq4O3g&{OL=jZNhxb8yW_GUJ%lw-P4P_ zp&`{FT~^rqiC`BN-iNaC!=rnqVXng(6E;C~o$%qzI(kx(;Pmw5*ombZ#f@$p2_MEr zI`es~=d#_6J%cIQ4Um2&b7JW~-Xv$)x|@GT}9wXNy?Bc2wkvkZg)A2vFU8cR9&lNO1mvM9CR!v_29`9 zT}^Mw?aHVIq9fP-Go$9uQJ&hR5f}8l0p%QQJ6mQBogf7rEZuFJ3+u{t@HDceucOcx z5okA8)2z3)EDkK782Bvrw2jbm{h(7`QOby6zK&cutd(^)OqCM1HYi^mYmO|-Eo}A1}d%uiluMBVJWDx2^M`8d@bR9*t`zkG%27Th!+si|JAxV6C{<<&=T7)TP1-tUIJc` zKR@2`>le`GiEwd+tY-BE`5Oo*A^3n&rAhE;V8b^Rq>+LdI5?1!BF%_4^oTAIKH@e_ z5s@0i^+bz>zaP*1Gxhp?c(1G%xu~-26tvfoCth8T15qz==RbcD1?CXiWAZMjp1rf8 zHYr0|LmQ#2Jz|+&ay;SQQo(}tS;4wr7yf7FX)6dVpt-NR{Gh4t^K}f9W$*h8;%`K7 zS_~rmD$i)gkN`T>*CM%?XCvhsyrKObrXIXsJY=v>Ef{0?>;gI4}%vZtE&ojqm zyz6clx+(IPB%}N6)Jl;Ep7&biPik_xURfurHCc!;o& zkZ*u9a~GZC7dQAZnI`U*ha|*$(&*+i)6A@cX-64b{X?39;;!qCAOFvQ1T-ox;3KE0 zxZ*U?A>{dJ8|@;kDeUL%G$R$d*CmzyEWvhQ+hi>f3$J8g8*6vCW`SMR+na%fO5@zl zx0qX;;zYdRGEyU84(B3SF8_Vsy&A>f!r9_IOfI^2!N3(>_0wpqyhW~Q;sp2}Ru>O@mn_n*jluEPO4HX)gi%93O(xOqJ=jX2J)dK1p5+Uy$_M9#u6DbNQ+ zUza3nKrMJY$JTdE;mrnYF~5{`Hc8-S@K9<((aTjq^OT}{=e6vmcAS&w`~5WXgP(cT zZ-Wk)c;LzPV+4NpUV)UPISMQLfN zV9o{gb4qeT;HQ&wCkUYp992tD8{{Bf4Y`ZGA|}~Psq5)niXr`i`H|GYqnb$?amThD zbK5D(X!uV|DLA`o4y7GkW%RJS8cr3H15svFSsP92Z36>91Sgz2L~1&^u}MgTNHZGo zELveZ3(HrIGo2cPotg|m%0BGTCpUHtt4&We+6~f@Jw#nxjOu?kCC)|Io#!p@C=1?2 z7y$rQvPp9ewq9sopDl z8+DNs`S%Mp&KI#^nfm{U88P0xWwvBZ?^Bx8#oH%_3Lt&*Qa0uZ?jE<8iJJtj2Kgcx zg%vp!icnF|_^GHf$Ku(x)&5qf{dl7lB?QdQoH*Sa-OP1=4Qh0>-2byYV|;kkS>a_+ zjm|KvN>xaKOXe-8-TA%YY?O05Uf3!xt?|0R9mv_PGr8D|72+qh?5MmKna-z`Z1VqUiD{H8g z3M{>7gQJcJ5sE0K&|@Z10SX=M7*1^QkrfdMiXO|9+)Nmrnm;`1O88 zr>s^uBHP&C0_!DV_ft>7w@_?LY(*=$sxp8jDn$f*0`1Nv55T*kt7Q~2I+O}R7 zWT|RkVLx9^sC6wpX2)_RH#LSf#;jU;{UVxxxkys`)&C?4a3tScR$8h?%={4`Nhgbl zevmhwt(cj}@ara|5VYXPM8@}_M=WX)fWm_FL(Rd2;wc(Rk39zUDSF4dzOBt^I%G?0 z@3XM{y)!GocI#?8woYt9C)1V&4;Q4yE{QqQ3>^KvY3suYT$c#><%N z`CT<~lQOMUV0i!2s!i|8R&VfNXpNT!?!K6>k=Jeb``8zjeNg6+;}zmyE4~3C1m(3( zQ~ttJHo4v5Y+e0orJRcHhv4%<$w#5~bDv$wS-Hqtg`Y;fZBsxKO|__{5#)2 z)Y3RKhI2mtTdS0Nt$l5(DavTd{GB+_k%>jW0-S=al&~hC5y4^1Jj7E+#O|a0itqgsli{+ENDx_gRI}hZ`UlGBT2-` zS`d(ej#Z20P;*=LZxJ{=_r9j zZ{2?BKRZTH3=};Mj~+dm$ylAg9VH|Na!d+5L=>zv)k(52`XwEfJMwNEfb_Dzw>4LV zzb!VbH~-8}{r(qb;xK=?@cTb6g1!n^xjLc?v6LbLI|6Ql0tLUpXbx6~yAtbt*RO;~ zfgGd&-Y5W+0GMW`!uE)08?{9llz7qGe1oyy0zxM|3 zp$oiMq6igr1%MwYIjm6kgEu+Cm2)9?*M{dO9tghn#2H0Ja3ld=AR5{eI`Q$rh@Bg` zf};rwABPAJhZYwXe(|i;&8S-zaN*mimQ(z>Al;5#SLK-dX^_z^nPeLlzbi~9NdoQ$ZxQ(yG- zMYsP8U(;WoAdKF8V(bcGIzjYr$~vel7uvfYblRp?JXTzgyzN3?U*9V1P(z6B=(ZRW zl{|R8H-_MJva`Ey`vbL8(-RN3goZXd@2MXNA3FRktM(>Chjj_Irum9tg^L8Wm|wSZ z8P56Ji1Rea$#>bmIE+{bI$&Wp;`>5<#C&s*^BABRaS%jKq5&m}3>3r;1J$Gmc6KXt zmF$*~{2`(B@`k-pxdJ2dV1lnnLQunb&e23SlcWQ64R+!TotNJZM}A_GWmwLk?Z%Y^ zHUzQPC(nq-r6O>J_^hD0*(?n1=VaaPGC(JXs*%wraM?w>ZUnIVH7T&kA5}!z|RD_)@T;br6Jz zwL4f%hmcNEgZWe&tu)KLE~*e>M-lojmaMMdc z{Q54#Er%kT558P``joU%m(cNrSPU9%g3~sZkxbqS3;i0ex?BVqG+4}dO?|&h2sH?) zkpBo?6g76#ymIzbTo5E>dNYMaN5x$vn&fm+;DnJO!t+@k&#miwnct)L{Z}vFnai?L zo_e`^+N3{YKK)^hUBPAxlcfF5^%lR!R)lYXkHFF$LqVh?4hzMt~n2ScbE z1in2a%~^n_sO5C9{eUB*MtZe?m1iDwm4oNiv!`F|Xp%lC)D>lsa4L46>{N%7floqU zezQ}2M7pjmRV9+y|6@6HiFd)2APlCEgjd4|EtMR43Y&f^0+bOa7ysl|j?)M&31hKEg`k82{y3y=6gyTPedw%Fab7bZAFiZjih`$B_Nzi!|MH!5PBmCfn+d+~X zds?qF{X|s4%P$ngC!=R6;fK2hO&NZ1)HqIR$mxZpr4zgC*C)N&G&snNG~RHX@^NcL zBNJxKMAIqf(0ZZSW7Gs`&6~c!017uN@p&ONJ84vcJmlJW^W01ZqWz(RKg`|K>U%+G zanla7clT4X&RiRM@%EhTWJ34ua^bSxXy#*m2!ICR5fXAOj7lL?-S^0(AlV@3(TxM2 zS9iUM3nF}H)OOl2i1)&*ZzOAO2-lbh%w1KOqxl!z_y*>}v^lkT|8&NycKm|6p3tE!E14I` z-Ri@;>1j)g86-2+@TnvxCy`YGxzL%EAk_f_)InPmm8mFsJ~a>@(#iaRcsk%1|KD?R z3T&fm6*vrtB-bF;o&=VFLj3{AmLWbX?>!R4bfWW~S(8+?k2<`dT&cmUWt*mIlC#(4 zYk#hR^NGSq94GhzIbSMLiUI;!aa%Z>%6f#Ng;5c@?IKAXrb+grq5T4SKXeE3E8|gc z{QT^UWS{fTF2Was8$lKFEMlx(^!4fAq)A}JMK*fc!m^Du*F~ib`HzbZR;I7$5j&pV zADzd%f_f)dMjti8#goX1Kj6^f#O=vaw;e6hZN;&k(K-~RiNp=;VN~B`M?Lohx4bG* zdtPYkdF}i6BQk^LYqpwSy|nG!weOPw?*%$6#J`8`7xlZsSSm89SkpB;Y2M;mdjHIu z9)~wQ(H6Bm9Rv9`Tt#-3KL&?g`)ndAdLI7Z2XVkx76(GbquP0Rfn}#{_0i%h&zi5j z?<={IznFh*)|JmwQ7Yu1YJ8%^RoPhY;3pkkZ7zL|>U<4$^?)e5d=V7My`NXJB-(bb zRO>zM@|<0VZ^T33cCJC3@XVC=)(YoaApP{6(J3yRAZ3YW=5|xmEV4bR4{n2}8W1qc zyPp1S3A@Bn@gdAZeC|_p=ERlMovGZ>cCVn{uTt@c_|$l9af$MLE)Mo1INS5*XJWn| zZ}lPU9#>|~p7$KpAP;KwBgT$3dR4&ljZ}X9*axExKKsRNpx1Ti%dRZ}ht3?a-+@69 zR;5tNFHx^Z;APKzZY@xesJ^=|))~o08~m8AuHSX(Imj{J{EbvXnU{NCjmuf1HjsL= zy))Vwh1^l(HV%+ql;|7Tc3>oaeq;>%c#o+-gVGvqWakS5$GOqnqK9Z z{H#`m;}_LRe|>8ZzSU-#>u5h04(!+mddRj*OSsk|#qipF;rDYM^W$3(6^a>K0{^r& zgjPQk45d)6tO4`!`^(?=mYBw&{Qg*9Zd<_SlmFft18&}mgR}kNQ@I(Gh!xBcNzBHN zwL|5p3OZw3uo|~7V6W$>a?Nv^oWzC>{kpaNNBns22O}Xa-RCv_))|Hx<~S1XA`bNY z`4QdCKIhR3yl}(M?7#l#mI{aRuV1okQDJ9p5xo5W^B>w z!%V`(twIjvu|2iMXS8q-T1Qyif|*&0uc^^wzwjlrqC<4J&|OpD*Z1yxA>#A(rl`*6 zL>m|8_m>6oEoe!)ov$7o%hc{5S;mxEl_2?Y42%SslCX5p7d*{**>UD<8_aRLEB1K z=0v>Z^S^D{k4fth9yXq?XlHJu z`z|u)=I=3sU73dBz*-+7R)sDouS0y!a^l)p#4v^y*TsbH;>EK>~vMg6&LPSZ+NRn>BCRQmfA#y*@s0CSwr4Hc)+;RP-1A zh>90bg04p0xUu*3uh+eEMVUK0JvCMQja*Oa1~IX#R}zPWe1}ix8G}L~ME2UFg^KIE?RHeeJ|2WkdmDxO*T1dixUtd4 z_*|1CAO;Yk3LpNHD*4aEXEh~1?AUb9VAj=}4)2V1`E+AlbKuMOV`nx&3XluLno2lD zGoQH;b$n$Y4z4EKnQ6mLnT`LD6YlM>n_pN?U4sqAi2R;U)NA*v@y<`D^KwBEF^8Tx zspMDA>h1H=hP^#G<(?mO2fKH7Jp9MTcngLz0Cga*hK2_1wOWT1%#No<$y~A&Y^5<&L zy@Gp;(#g~uPqDJa+Zx$`@@Yw-!87yW&=$JNTRiqcQYLhcXu;xR9t)3sDH;u!{^2!! zs++z1?ePecm1M&2ZZBSO47!+aKU$_0>qyUzeD-g+A?5=%uwV=ZZ1M2`zxrI={pqGf zx%ke3W^ol)Oh1QOlXI%Lk8KdhZpT!HEQ}MjJnGx|eqMt`x8T(ZW&COMxsq{P-c`o- z%4GPS=;~fXYWG5Qm5FW_|4|vwW>|!*@%mn2woD87>dfb2a1vh`WRR^83sqXnKX+}g zd7x$N)|Z{MC*IHa%xh_K*6kJb2P>Gt$?C!070UgX9*4pAJM=2

    >g@C7%vdm7wwJyAl-CcVgxG>_GC^o$?*Yktx%M7M+1~rlj-sY+{Hpk= z4MVU`idmEErtjrYMk%)vPN#dD=XzhcVm8@*aG}s`wtJ7py9;BAAF&ZKx?m*p{*n(0 z`SF5&b}ZE}Ta-`KQ~cGqkjhG{etpYA}{! z!5p9NAYZ;RwC1AE?Ex-tZ2x5L!aH$68*@MSutxmzh~iiIGnHmx(akY5n_~cf=WA=F zlc}XoZ6=~69=_+(mha07jX%Hw)3_^X59@Isk5(L;JVQnWB|!#eLp9-1k6SL07IcIWy+Oi)n2yCzBM90xRAtuKmZbL+c;E!v}%R46G z@-MlYGQMSOD(KI*?#0F+QhIyddzgL#IpucYTDqKlGh9_J=rI4u%pGC%Y)_Z`e$~(K zw%7F3LgCv&<()+)W-Bw9DJ&|UcPo_@r^eb2;mz!JAC?XDlfx|0@!!2zr*71#t@16Y zQ@*vn@P(QB%*Q)f&-yCwm%>49+~~J?!6>?4U~xrR30Pf6i@ubEclO}gPuIZ*m9J6% z`HxukC&=XSsXs54QADzykaIO3e4dxi2L4#9s`M*R% zHYafXQlxn7sIy1aNs!RUtkUIYj#OAum}(H1X3o!64dxl&YpiT=K3@h00&e1lsklyB z6N*f7dMi8oihAA$-#U}CvZSy>hq=rAx+V2A{gujKh?{hgz>iLa9~y_k(N`jEB21i; z_8<8i<&GY_@10*?=$))1c9r+cr&s0j@#rGr0cF&`nRe}IrS|BH@PGM7!VHu(wT zye)`Y120d4EpXd1v5Ryl&Xs^NG05}#QiswceA-j!bOG{3D2Nk>&eX07_+2C=F19+( zehkEC7YmY0{k+*UX5F*Xc0Zn5#%Dh}p#MtwU4Q22;SdQQcu@$Es{-18{olX4g|UD6 z^5wuAkh)ZVjh2Yw8Rl%M!8Z!LIKYF662S4r(XSFc$C;0=H0s!WzrRCEwMb>@{xu-a zWT1guxP?PmhRcsvx&?blD?kQc=tW+DO0<@M4d~lSeX5M*!BNchUk_y-ql6+OL_42s z_XqU#SK=a7*iJTxi1=aa`w95zQM?ed z@8Dm(eKh<9T@yK{y5kY=q1QYLQF9>v)ixQJrfHZ&y)?p-+IxM|dLixT)ld}c7fw(8 z*o=vM9S6m=pT_Q5oo=S|5FQin9ZI?4K~v56(O-b@wBt73+JU>;X~xdKKrfdRtU18A zBwh}_B(aA~DNOW->bi~Oo=}l*hH99=8m*ut1;Dvo2}hh5{hNn{#zo!&`id_|W&@sy zKb~>NlI`t5vfrLBC-HFZP00$ti_1Vm-+hgHha50WqppEUSETa3=;S{Kcc?Y5Gp6Ay z^2w;uS@SvBkZ@gX3y|MPPOJU$`RBOqw??Q@-w2RO-5ckiZD`tAee!!@ZO^vlQb1j* zr0S&4^*1_$=+g?w!WUj%J76Sq^AIcr;!4K@F)5G2&0w?V#8@tlc!&q&=>Qr_iOAjP zW!OtZhMcpT@$_wyUf(qv(I{%kOA;jJ-!BNJMRw(AytQvdUpyq=AS0Q1GGxd#TYhc4 z92#V;S;Gy51dy`PqK%@W)H&bhkqjAzK&6_JMI69~HOM=<$SpGS*kri2HQMjuJYBY) z07WFH7!-}M^&|I9Zn6!ISYn@7UdNc)ZrCu{YoT-%@RR(;!mlb!7^^H*4wcas(y~5x z$)CBZjBRt^C*s_n*V&3GeHGncHB9xRkG*F(AXhndXU>2l-b(<~S6fJW0ZYEemlkh! zFR*-j=LNoVT~ooiKv>5neo&ibYlGd!0q?zJiF_|xgz;%#{-;0RM;RUSybk-zfUD=m z2%R}~7wFFEgOjh0KLG%?oV-B@B)5}iQ3=#ZLvOuE7H)jzxPfc1Hsf%OUTcY_yTg;Y zt9E0WABD5cMea^{G=W9!@;bs{g6GkQdCRK!^V^PTAnMs5w+r*^A8+I0T>PNxI#fQ* zrLOIRH!4`o!qu+vC@GTCZtTfYPd2h_<4Th@#~_{f3=L$XQ-iIv)$B5_0i1^R9FuL` zd`|nFSbRnQw*CBqoy($h*^jkJX2REb_1~*D?v-99U5(>_+5cWCe&x!9-y$Gr;Pi1{ zB^fa^@2opCl+zFeH^SZSGdvmHfqY-&zRN&UW%&-*p)2!w-0%Mz|LfY#hNoy?)UzQ~bm)@?ba&gocvAOnXass#Sp>B7iHN78qjhjk~|*-53^6)o=RTYgaQ;et%; zv{>T-mp;n-V+oI7jT?F>Xt)snteIs2jS{Y${0c+UioDhzQj}G$zp~B5`T)1sgOLsowsK8{HPSCgSce^U;#q@}lbsbZY%k5hg`2r5{Qlmm1X7QqL&t^@ zwHJpe%)jxvph}gzSbv#w8G^p((1xF*ynlW6!vzeaeHuGXwGEU(bKHueRzr$i`ZW?1 zE;#Z8UMWkF0tcrv)I9hINuH7Q9M9aa8A!eC#Mfurl8!!y6-_G;%>XpARxodWLyqD9 zWAD%ZYFyhla6GnojxtjkH48;ZqG?5G&Z^YbU}%uaR5WaMBu!Qm712O*+aeVW_7=5T zlA%EvqQOu|DN57#I9KJ_&-eZL2R@(I)APe)(^~g^U-xxg=XoB-aUPfDxQ|%ItT;NA znlVGE5*2cIGZniG_vfpr`U+Xw7(g-aiZ)|6Lh=)E!aLwyenmU=FhnwrahM*rw1-m; z11D#;W*Cl<-2lb<8Ht3ep1?I^yk#FgFp3O$eh|mh%KLo35ijT!B!=G4Ig*!-+8)Pm znEGTwEls5kKOl=UU|5vEG%rLaQSj5JPj|q-nDQD$_^uuu?0w&Kq_}Tq|JT!ML7=2e zd#z{-vx4)Vsn1B+sdEKTXiCQMqPWTy_eE32;>>8D0>C3wPhDLYyzqA<$co6hru)Yq z@A_1?>WRtmSQd-*eAnqE${QfXnTM4cNb!#_m*-w>nTdEOh>PsE6m*l5lNafZg|S5_ znnX%qvosgXZYYHf3Ir%`tzXCgQJ(ky(y;{Bh9cUD&H8eTZ}&8wwL_L@8ddyEfBk(p zD>cF-Ao$|p`j3`F)(|OCi3m;663YHh&fIwPo?7gRU7KI}4h>NCT?(mDn*Aemuy2Iv z`-0M?$DAXZhd1a=(lj@awUB0!mxn6!33+!JYK8^zMt|UCaBcwQ@i0mKCLr1|gb=y2 ztF>AN1nEM$8Vx;)BLVEinFcs=^blptz}TCfyL06dq3UVq`GM187Q>yws{oJD0dt=R z0NCRjmCIX7)dt$Y?Vj3_>UW%A!D zEcgT?L?vxwZt;Li0sJI8zT9blfcjs+()qe(#h|U2qaQ^~@Zq8&orC|F@h90LeVTQ8vAfQ+g{zlaV-oLxj|%EmX{w}Y?{&_p zHuGPqNSRVzOO&N8#FdIizrKMplV+rKJ50KQfW?`7R7(2?(P$pUhNlmqwBK}nJSpmd4U^WRe{`4nA_qK*0k=cild7E*1HI5PDwC(TJ88P~7hn$GM^KFRDzV50 z%Lz%iASEN)F0NCed~`lV2)7dcCzwB*L(O-^y4+&EME=)-C~_YQ!9={4zPzboO+yCj zQx&r5$o?IXsL1alMOg$9%b}+)J1K}$MScC=jP+vNemt(z&ir8v&reSq<+g?fMIle2 zq3f42g>!7uT!aa&sxs6T=adHmW_dt#5jH_2L#`#5cKld)(p@_^RH9Ns`W&LdG_m4a zizVHW(?3AH9w(a(hb=`IZS2Jc#(o%BzyHqXMnDKU7N1Bh)HF0uJQOWEb9ng}aWweF zY}#@+Z2-I0fgDBreBkDzNVM%>^%Yq^0p(9{0F==qR_xZ}s zJ3b+eVR(Q_TnPMjd(4G;yo<%KFk(dE5RU$2ttHuLv8>F)IX~eo&>Bk6>iYHIDczc3 zz@U5H&h$NB+p!|wYX3d6FkExv(&JzM28Ox>3dpzfVajvr$8~m%?_8g+Cxygb$Zr08 z11aBqlp}Ld|7?v}5BW-xr<9yk-ilMx7O-U76VA$~owGbdQ+(~0ye3x5PGEr?_VCjR z`vY`36F_-jcyopVzt!=M`yH^9kl-Y>lA*WT6U}+za{CEEV$RJm#^%`c{e|oH7-slc zVZwCTiB5P2b07xRWtj>R+Dj)xureqXBJTR84wO z(YpKg?W1Ir(@7iiUhu^1f~s4{-+Fp0eJ{zj&-Crt!X9~}Wd!5#^AB~~3`N$S6K>0F znBtC{w}gm;ap8uM1k(~W%X0pW=_~utcc9i+{CrSG9)u3z??|o2_-1sJ<`g6#3^wIi zYcV&&?M;)n%IAxb23E`oxpD`jh~k{#%+2q(!_`UdU@x>#+=_|}Wzs4lRE2PKDlqGU zlF&=rwYDX~Sh-*2zH%4};Sxw=F8pw|*N)%loq(=qPA8@4_RQ3zmlIgG*BYAw1aCxN zr9R6P@f-7dnRn9b)q8wp%-t@q$SACXf?31T1@MVl|e*2IEv`e8Po|_TL&pX6LP^v z$JT3<4DAmnYjN*@6j`#59oD}SH$WkN|MEYYzxibQh62=UOi2t0#Hc4P44+m9;>Y%^ z+$|ke4*YV&RHSG#?skxI4M;u0;mI7;bS?x|}8aV8-C^V0X$xN-pYjBXX*4dkZQ{u{5W9mQLlEP>kHvu@Yi6wba2bbUP81PgMQp0E9J(|}EY!}!b>a+( zx@u&1Vk$s;819`)-~*`MWM$MBOcxWODcPEC|pjIzr@ z{(ZMjXdKU()`^&@3EZU-nhFq0#mBJK5iZh!wAFOn zK5Q|pxZ}yPvWq<)DstFU#H&?-{7Sw?o-M{4-b@V^T#!5AjQWeJbBR||W_J`j;NtLe zEWL7i=|XtO+C6oe<@QW(&3*cBBx`yWW0|hr?_7Pp#ZtIoTd|$s=)rK0f!TtXqz!Hf zBRhhHVPxx(Rwu%Kl3|usJ0jAO7QI0a7~kJ4c^!nDmd5Q&Vg4aY5kgtnY&JM7AAYJ^ zsUoUVQZ~i*8H_xAtq(|wQtVx83Ld5E3b)+=beRC=(+ye~F^+g2Xp$(gJt*$Cvcg00 zJx8I)Vc9Rinqat3ak){Ud=@ifJtIobaQM*$j6go}^V3`fi>smWb7k4jhls3%u<)2i zB!c&0iyOXkk1=tKdDxyvb#fL6e6LKbxlz=n8X4e$ciM~AGvs4W0p}6tq)yfhgW#$Z zXhFFB5@0e6cgGVZKhW@e9^C6z)(BQ67}+bL15cU8tFilaeKfX}m~(L}1Z7$7&lf)o zyyGZ}wQw7S^rbjhgkZ&&$G=rjVJ|K9M@H_(KBO{1gh*FNyueqV6T2pH{ELyxZ)XBN zphRM4Y{u)y`FxCRF{`B*Bg1ZD@{XRDs{f_{(U2b9zl9^Mfs+N`E8$UkV&`D=V^9X&8X^3#=ET0Edtfj4Ntu)Qj5Iyg0hP z?B~{Za5a57LHUA688lXc z2!3Z#p$4SfURhQfdY04Tu87ytQ&;IT7f%#?R{r+h@ct7AkPf>cb1g+?Aw*0k)z%F? z7N(|?#iF^I$SrJ<`&~!AC0RJ3?gvP8@w!jXur{7Mrf1IHX5vYiJ>icGvl@)Uxr~%m zz!ZP&JBG2___05LMj`rJLSfPISGX5u@iJm=sVMmXaE+1;s$D=5SVTTD(xKX$xYFyW zze}-)3sRwG2bYb8o_dp(W9&gMs`yb_+$hi5a#*#qOqAgcQGUFbq!2MbY(UlOMz5Y> zuGt|g8;zBhMOp>D{93`kUAs@pFihBbgUu<@Hfr*_o8rBZ43mCq{_4F3K!LD(6Lt>4UgywuS|(H@lI&P)BnK~d3YS4hr{Y2p z2yRcC&5%V4b~0D_Kb`x(;lzVdnpRYoA z+}-{2igt~F_<|s*et>@$X?(#IvKiWA>d-X1j1V-6DUmke&bN^k+Y$Hio(glS9LLRR z+2gG)V?&t@oC6V#NJE2T+>5=oo|HCt{}DwhsZ|-*oDupKeGQgdcGB*aX9+p z)e)NfL_P!0>0R^s#e*L`JBJF=oR7ak#JLabBK>o{Jr~wfjg)h;GDy$D&@VDtqK#Ir z(_$)0dMI4&(lc)bLf^ZgJwsM#V0ho!RFT7(t4>jsmWf@6iUj(J^BrYQX8ed(-tF99 zX`Zoz9~}SzaQXb!;12#|9*(>TLS5%_lsfy64JM#pap-$CKR>{o>%f{%r4ppCiU#ya$fh=%x| z2_Q0r6^D*)Nlxk+{B2m$BvxzA=$`Z3o;El;?T zK>6N?Z7vu)UDu-c==Kc_?_Ok?2GqJ125%JxE*ebW9iC%~^30qUR4dU}uri#o@~>(M zu+WJx8+g@rR%CTBVw!Y*(317a?QsNI{k?i5;wm1RqPpn{{PaqR6)0Wou?=aRtDLP# zbhm$Kun;2QtlnFtxvIGfFJDx75T)#WV1;X(H~kUlg+!wf``dQbA^hpVP_NpM zB*UzTs%?8FQ~pHK?Od=SVw~Z9%`fnIGoE=!`Xu22Br44oSmqcwWKti{Q+Yo)aHF*Q z=glwj#<^3HhT+{cXHw*0OrTQILNu>>4azGIvt!P-$lGYDrI#H(2ZaUS;TyJ=;-45(iokFVn;fOF?irr0QZ^$L;PROb=Y1`CAI{co1TvYiY8&lN;`?6w`kJ+J^L_ zUO?JQKqRXr8IBflVk&6t3#m|kA@9><60|T6;(7V6CRGvu5Q9Nct|MTWvVaW$m>Hq!^(0>=sTPWO`wOW=1~c@d za{tiKpd{9?*k?eD$(x45*)v~@Y4+pas_Y4VnYLuzYWlVw&UPOHzJKcS|IvD*qwO_7 zJ0O?q8&9kC@A~6f!Y!U8mvq1|ww9oJlkl=gD?H~$s#(bEI$cc7CRKMbQ{e;&0Ptlj z=WnBY|K;0KCnE0sC>|Pkjsm3-pzv9!JbYVH=KF`G<#f!ALZ+p?fO!Oo8Qm^u}8rA_JSK)`^PdBOr>@KxzT4C zhfAFpS!I^E{4+r7iztrJ)zKAJiNH>W+WoywyqreUs;N@J|PrZg(M0QC6@052z? zkRrv6N9)obC-!T@bx@NP2NM7>PAZ3ZQ!y2yc38g#_ZkLQnPeV>du8P{27)H8GvKSs z6WHA1U1(*D0uf8a6a0zZ6`3Yx7@mB)6kf)l28N#@ zB3eX8oVHD*+6^W2^aLwlsHOgF{up~Jo#+4p*GbT=d`96?sw$z{h>WfUI4kK1<}6qs zd58h^qjIF2$1x6tO4%G4{_5p3HN!TL{_jii(BS#i`-}+WH<^_BXZE~Jq+^f(B_-&BHd(6f(oBaIY|p=7YrOo#^AW;-lS}d>)+ShWG@)7uB=HP3 zl8#{Q2US-Ug3{}2ZNj^??@n91b_F_K7UP6w9Vo+zQa2FW$8gA|#ds^=1DK-wZhD=VuH*QH(1>A_(OsFy3Ww2i!k7DFr@ z`zM6f5y)%hc3)5ta22JRv$v~uSDjKAS8P3jX(Pai$)0Cj)366>rNz*gDjs-q_XGNf zAjr?1)%5q8bp)SN){atnu2)2o(cIZMmmnTHo380k=AFYX89VPNV-zk8-M*;i>w~#} zd2{6jaGd6Y1z`V4l2Cq~FCYNH()WG*7@d3VmVT{GN8~qkcdVbAvRpGv+646kU9qdJ zR)ONs=){MZN04&o0AB@vjjGqSWoum4)#dfOl`T76g3%VDi3{@k=Izpx?h91C4)O?# zgCA#8u$!a5b{Pc!JKNUuW(-{n-+U-?;S{MB)hzI<3t`?b+kU72<96Rbs#UXtD09L* zzpz(?uc%^?Yk?uO_R5oe8pfIk6?=@~a}4?98*9F0^}eTKXuzINDL%<+LG@7v)B)JD z6t`0Fw%xn-iK0@naOX~&0M`w6FiTFrp7W&GcZle<^v`Dv%FMCLQ%(oxvL;fa5)99f zyeL3W2o8@adfa46Xd632ZaF%Ug>v-laJ^t*_VIX(U0d3hqT6PA<1C-!wy0}_d17jTS zwccl_uc1^f_a$%0K+>-!-NNQj(`7&=IBe%}spliIRfjL%FIhLFoIRH?Z93(~r!zcW zL!*SGkDx9CXvtxp5kN=@0UqW3ekjq``w!9T4#5V~_|0|tBe zUi=;8z@VFTHZ0%+!8uf(_6cReDrL~PWA(>{>5aa^v`Uo2grxf~{Vhe4J>+67SA}G4 zWYW3btHgVlN7~lo0I7H)5`Y~vKmd<&-(JT_B2>#+*Y1COS>5^i{kc!jpS2h1GdaT% z5V{vw8D$o{!A8-U0359MwM3O8mE=@X@M13L*oDX{u{$&{Km4}X zTNYmpjg1{PrbSEnhkl;$ApGL!y`fF6Pm?$j9pe>}NOH+zD5%1sT2!uUZG&`!U83?W zDS^L@UMJ$D3f@nOeo=Sjc~lTukZ=%^@4s}s@&epxAec!xYj{8tKSvfG{!2eLAihg7 zYknFrqmm0s^{%WPfxarveTh}~(|ZZ@Vi5_z(Rh=KuoN5NFitZp&~T(3{_% z+O4)h$v|O2#N8NsX2{E7eE9OZ-osN;BC%-+LCY1&%eq7mVDGs0AA<}y0O96=Om@L+ z;xzE*cRM%tZr_Ln+w=NI(LAWW&*0X~KjxHg#XEBzz3E%-tEYwSL$7@xttn(1i?R#9 zTTtTXMpO*ufLU@alA--wXqkSnc+N9qmG)>u5)ALm8Hoi$Xzh8PbQ2mUNLv0mzt+u` z$ReVDOzU!>Cs;smBb09J@+?DZd@}K0p=zu%n+M*ZExQp8y}?u*>t=PJo$Nj!QgiV- z!6)z$uxBDE;jkUkOn&S@C`aa+Z87|Q(?VUZ`RToeRB{nfwuJ5z)z#cfxJL0{cQ(gE zMg;OW2q@_DsNN(vjNaQLFV=JU2|f)Ch+X5LFHzj}&z~Qlwe0Mls!*^3X;1uy+ycVX zWMxbl2@+dP5C8WEos$sH2>a7Qw#RxWZ*g?w&M1)Ow?Fda@4&mJ! zC+ygZeX&(FA$`-2=>t0}N6m6c7m&9bDW-lg98u2swO*Yx_Um-2-cSnIEG7iaBO7Y; zB+nL83;;s&Hdc<*;_2b7OJkuJ90e}%YRA2?B)!<+d*4AxDu?Ya;3R_}aQfohbe=)QO?TK!~~^_P{*v;9-=Ya9obkx;v7bI%;*3j z+v}f*!u}XF=5aa+D?8y_tz)W71u-iwCJp*KI`>=*Q)c*$nXJ*A<>#J<{KyX3FoTtY z*vf<2>`gV`G8W#PR3Bw%jOtwhds(!Y%zxdY!3;cl5Gk-Zor4h7NOGmKNukLhU8<~g z0YFZ@2=^vNTJ4A;kw)Zl97Q|o|73OJobwV4Yq))6EwQGuGThR8Nd>tP*&|xzh|?mI zHmN8%KVPB0?qiY|6L)l$29G11eaq#A1o!8s8eW*1djEb`24j!|xwGjw12L{N z4Su)I)CD%`w%}Q*BN#u(&H{Kmbn|i86Lb)o%aQ&Q$?66;BwQ40 zgRoX_v>J@WR%W0NF~(qLbg>w>4O==pqnxCk;SPA>Etr6oX>~~S`ko_eX4wzpG@Bgo zrX!vK3YkxR#;gpKz&r)MSUMXp)-2lNSY&d(7PlKGmc96(8c_^@&sZ5~l=`*AkK-jp+(RbKOT_5Y zhg)Wm6}0ytw8RcI;3 z*WUI2R0Tkmh$+HglNykOvBZWGlMjEZOJZ##ilUrmlr3pae|LP&WP^J_i&a))13$mv z2Uy$fmo8)zT*a&*4$?mD1(sNy$S6 z7Zv<5cQ6Aq$r*q5)dS^H*GhQXj}taAH;6t;vD2`clW#({z7}_j4m)uU4wT)*gWX2x zoTST>#vZ30hWm=8i|0U;?OK4-Kp`Hr0KwxMi1VOJX{h$tfD+)WGET86_OSvA&*`-G z`k0)D-eo{l?#TEa(89E@hGil|MmA!jY5)@fb-(tmO5ed%M5nLC=rw^f%{phf)QAae zCeG*QM>oK9_X)InF9f-V8>j%uO1%~gQz*p_ZeMq{?-BsW$JqtP2Ox0>;Uz?!kJdH? zQTfB(Fg$H^)cMCPkA_B8F$Df9&+*!tkX4=q`7h{|ltgqaPkIY%!1Qo1Cbuc`@Dxfw z8-Pu4I;rBI0+v)w%-s&E7%exfQAw^7G#&kD?AMPPp;c2c!39?$5hczl0m@7_8g@+h zH2Y&(hY-QGQL)5xAOJF+_Gz6OG{D3!nnuN!Be9!Dlq9c%ALAC-x; zZL&WFqrQ-q&u?ZC(AD_~6yEZpABFAWmBXY4?=4B=*md^NkIB(RY;W?cAh8+M_={0@ zgi@CWQn5rpoK&(tC$T1G;;>E?eNQ{!XFS?3g5b|9bRpY4jxi;95Z?Vv0u`v-B2+a2 z+Uo;rmh$&~&b0yjnRI!Ti5Y1hNn%J{4`vxV&aLi)qA7%A6@&@XGx72eFaBvt z+Y;k-?V8l%1No~jldDJSRhcXl;u~S+|_(N%R9wsJlPkwKejWmkR3|}{UCvY8Fm-BETDnN=sRS}|rLYi|{H{p`#!KPf&tT$(P^ANT{iZB^x%gB>PpIYap zs_L!;`{Y6LT*}eSdviv+OMpM)zslQ4)V$cU`5aJ;;cqEV*2fGj3#7px#7?z)zlR1E zY7^8^!HD1UydoTr5Ird#ZDsU9ariTrUm}Z}y%rI@iQW{Zh@e-5G?k0g0Z!B{N#+S{ z>A2G{koDMZ_+y*=u?;m}fyB|RLaCMqeu3#z=vr%<2Aq=G{V2soTR`L;RIzqAb(a+M zA4Vh#JkJX0eUNcd_d^Lv)+JcRKp(2f?SwuJG1%L3 z^v`I^V^R=+8iJp+(4<8$*8Zbk5;W);SfH&V)#_1z3XOl=n<3MsqhtgarjZOqKvA?m z0aOjJd_U-|9W*Q*={5t>NK|b;xQ$G-$(pm?sDT8(*a*MkAd+~1OK2({>ML#{#TJ3A zUN@yl@sRf+;Vf^tAMg1}adWDwQRaaXe(jPZMtCFaNsNIz-Fn<~Je}ky#GlfRh$Wi; zs~^KCPct4uVSL7kv5Gqjp(C8&E5pE_6)D1)DDLw z&=x;Elsdbpu?>0gqNOynsE~b+(b7T7*#g*<1wfOu|0rc`)FFjVCeJ^D?z~26Ml}{(pheG%b7_{38ZpC!(qeMZ=`0P0r@I4iK2~YDGo&`-Lihfu%T)S z@Ewy>()s|L;lZR2Va#ih)k``tsJiT^x~1-9$l05U2iuAp!?w&g0}Rsf!f-9eH{}X} zJHoN(obxRKKr|2V$5|Myn_Et9ZUfZD4;lVmLNtkIA@?~rXQc_>7=D~hrlCd$6XwKs=; zy9h1JJP1Yie*%L@49+hsLr05$oL>QTYm#-v^Fy^eo8X8Fa7S<@FbqO{`+G{&LI6Mu z{2Tt@i&XX3|*4iq7u{w4)b45sGVR5HziX^d>G|2S~E@HHDHUj z$0y)}$sTWtDh{rqACnj`i-O;w1S}yl6;P{EUCS9{lt?u_Ph0y77XtNrc{92^ih6*! z**JxskO~DpdY>#j;J)+={~_$lU_S{I9m<2dMzOa1Dw!@m zzA9&OZ6vuDR)a-yE$OHLtZJbIx25(@kj~nWx+FkcK+*~FUyy~Gf_Onvo)Xl9^E~Xp zCs5TdeepB7p#Wzf8X&!E-SAC^Dd2?{nL>277;}i)^o)H6*+SKNZuv~*s}cIWWtgvaCNm3bN}sPH(Qqdv*>q}+@Qx+v)c zCAqQCEWAAUOpo(lA0%(da0eGm6P^ob^V;*S-=4(}t|oo5y(gIvVy`ID8D+D2!SxD@ zh|qA7@`zo4#tkiK+QLEVQD4b0ok-R=fIKBeNj(9qtbl-kMf>xXF>8p5)E4qS$S#PW zK10&7g|`5hbGc5M+tJaOiKimxrVjKRNOGjn??#3^3^P*|a`%STlEJ3F-TCVd?)}x; z8;ucUtg*Lp=ZHUn<%PYcX$vG(!8H6F97uJ5r|uXTZG1npZ8(0FtRxt$YJjBFXa{mO zhdL<92SUsV`xAlNqY9R=;SUi5ILsl_oF&gK>iWen=|^?LqDF-|+V}=8|E|P-L<$D4 zC58I6AbWWVW$sXDVP8mS!s|gbA7#~9!dJw)=H3?mQ{=MnFKt$pE<8y${Hl&&((+fc!d^Rl_~Xw_I+gu{ZzRhj*|BkTbr-x}2n0r!~?@cMr=aPbY!j#kc>P{{W{nixc z#$JMoGBOVGr3)$^S9M1o1RpWjG3^AOpHS>dhd_%OEWavtK`NHM<8QJ6{7px?K4@sC zoK>I2_tg$k5o3;&O;JHfX=%E>XDqjc1*Khz{Qyv7_tq+@$dQI~eB$zo`HT+A1!v2wlJy9fB zxHS8HMcH&4ydS@7yl;lJmQ`dN)GS*;rkS!c4uYCYZI<2f*Cw2EVLH;AO&{2<2#uc4 zay2y@V6|ziL+CzDZQhXyELK_t5GM;zYwCz_f`0vy?W}Qp{RXzS2_SB@#7W2^tzzc% z;#TIL{{E@<=s(jCA0dJ9+g}A}&`+YmPwikL!3Kr@AMq_>TRBO&tPOt(G6_)TX+&*&lLc)Db3Kb8i|*hlQFHd z3TcpWR`I_E`R*KgfAMw2zQv2zAKoUO4%SCnrD(H<@6A&#^j*V0+gH#CNGK{A%5nFd z6vj#AvvEclE4g>$2xWy|`@(zdhhS+;+;J)xroV(Vvq-}!PqWQ?n3<#R8osv$nPdF% zT696LnX->FFe^;mmG{3)`S$~#pa))M@!J%@*~Xj>C5yg8oy`n7F5+MF?~VKfb-ufy z&CShah+d{_$J(q+R+AGNxss!(DLv;u^Xcvq-c+qCJeDgUAdq6eZ^pJB7Ebe+Jn3=o zdpGn5NRO!AaF>2}crzqH<@}qf^(XM!7|FVkChWtXo?rRbE#~p&v?wwaGp>89a6rK8 zBB*q?{_Eu)m`5*H`+IvsHfzq}#j?nTOgNpIaG)^Ys2q6Xr#m7z#3e_bWbuZh2I7(u z5?WUB(YjFz(pW0GAvJv?bOe5H2Woij(Uh{Ig5j~OIqAhvHsde ze~a&KHSao&aKmwAit9!ga62`}j2UBuL*gQ3D}Ibx2;*57@~)VaoSf>QG7usx;?nw{J8ez{We@fDn*2{dO<;booT z{riOr7aW<>PULO>uYZ#$YXuu$u*E}o+1j-`_glK8!&7fK^W=h>+P!m+pTX$anWbN-p0U)ha8#ua_P^+=gjera6@R>67zW zv)}H{;LWack&($!f&$I`z8i1Strf?B7vrL_?ra3QH8v$zj}F*FcN`kBul{CgHJ9&A z;!$KZiz`Lxx6@9VA&3n%dP|G8_vBlC|x{%~YsiVJz- zkwKGoxD4d9U~X%)FT2CV%|+5l`5PZg**we}6?R?<)+^WRoMCxoon{ zRi#e}|99e_!QnKi{|_&E9J3Hx7>1#7L8fv#T*o;3O_6P_`GSiBTgS2Dqu=OKIb1 zv3q^!-&V?XvsF3$Y1=+_{P1cBk0l0A{W~v zs=WCJpB()u2&PRzPytH=j zXLCq}l9BHH>-CO=LD;Q{M#iB9u^j4E6U1wzHV8_0{}YtnVA=59twbfMAxHKbnA9Rt zQVj8H0CoNyRwa2Ceuk6%a%8VfKS9Bcro{hWA~A*Sg~x7(z=nl7lZ%4*Y+TDt^;s1I z`|8-q7IXQIaj@e;3B`rn&H-hwJG_IYzQD~P5Pth7Dm+~D%9ShFh~;ZAQb(ysXpjh8NbKr%q8Klnj3nBfwF( zY>roc2))&wD=3PofTbz6`C#6x-nsdg!d0}L1?0~*>wqvz4W7{^|;;k~6 zcO_lEeD`yZ+NsThjsVD_``hQrm~Dd)d^uESEPNfEBAEnCOS66=U$mKlfiN1{Sg=!O z=I+1f{Nk1#Z01C9U}f~nmsYtek%Um9=~$B?h4~f*luXCUDh^!#wtxQlXWQ%F?lR#G zV2>BhhMt>=6M&)0*z*0$D;Zp5_PrG^%O}m45rrAcz^c0Ni)sPo;@258Q(k=z+7L>VV2DG zRu81dM3EB-?F+-l$LHL)H1lkEAXGL_=1qA15CB^g(aSZe*@PY3!${$$cX zz-%G>U~3fv+Mw1S;os2m9S(@ZvT$1b;dc)goCyf{%WJ{Lk2qXyB_t8dzkdG%c0wk2 zS9+coF`M?ix}5{340Sk(9HuZUmE9zR;}0EB8k;HH+k>2a+w3`WGObT-uV*`)eHf== z48!K-5dBABVj5dZ;*3(P2}u&xyaa-W-?b}md$YaDatUre9zfdbR)@7Us9(i#IA*Iu zz$DeI^&i|6Ds3F)Yl}Vw7ggr>Cr{`l^9Bw&uyAyz3LD2`QvQ!SanDb}f_+-#eJmgP zYVvlSb}*lpMs2|egz*ZgLO`dT=rK#RXG)2SYhqhB9lYEJcZxEUe*$KvYvEKEiOHgi zO#(fnW`H5nU;m!#RI86B(1e)DJqdUac=Vs6LW`a)c8%*TFNV3mf(26K?S!q00pMVu zQ#r*-tazO~%SIO2ElfeBQAb50(0Cry7Lr3v5DvL`*}#v6_Ohwxrk$`_a8h{QdK?W6 zNsT^iSQYRc-+s1D95+q}6Wksheop~FO`bXP$IpdvfnMpM>a#o)C)p}=<<0Z(s%WW? zUiJ8gO7t_QFtt_Fw$N?i)#oEFzjr;N^8M6@4}0@rZ`O>${xm@A$8FiJG86djDwt;M zcrxpph%012x4g_vfFv_o24?Zwp>fdK@&_uCV0ih}5C{{5n70tK)$B#6j0+abxB87^ zUmr%rOK_+bV9{X2zU(;T-OiW-tDz5av3GD_4n%oXBXG<4wtIW8_jngneVQY=SjD}h z2SP8kL~PbkLg8w+-n{v}323LXvh(xbyI&;Yz|g}{#koZV_@;-gTbk$i3=JG1Xhh4v zAgradIaCg*7Vn-Q!?GCo{(NC~%?6x}@K=A~!OmNl4e2vG#&_kJH+*ob^suF|`9@-`w z)tXx;lc(d;UD2SxieGoAd_K+(=bt-wcklJQmoUPI@wV4|yy+W1KO6lmTo$>;S7=<_ z?L+CLGG_WL&bsOE@4o1LrdXN ze9E+jj@Yz=u=W93=6;8eRL-&OS$)sSX_95-<>a`ui<$tmaI|B~`^Y*=Tm2d(o*Vt=J=ur8ysUeEV^3(c>%~f5R%C*AVet)SKCbCUuIZq$Wnzw&9aP&(iwA)_ zLcOVAt*X2hqEpGmVT`9VjQ}0~v^l-)iQJd2y)g^NM_WbwUb< zog0c??R|DNxTW2D7rA)X{fw65JyEH87;x?drfDYE`wJC5)!cHi#4=xERvf(Xj91&v z(dP+X8m)J%sXltf&yDZd$ELF_8{X@|`N8bY$=iaK@LVBRQpGZd`C5K_eEmkLM#*B! zmZ^)=akJ52gwpJpZ-IFka->YtA^<$ubQFij#mNFqXF*TOxP9=W2&xn#=->09T5ImE zwTVWDDwmR-n%~}RN0QzN=7WKr*<@&qS9*2rMWS%Siy75}U!}k5#EcHyHQ!8O;)+)# zXXemfvC%`E9&NOjLMcXz1L#-=ry1i{mfu8Z#R1j<(9vnaUSw~#`;^b2zFTvOwAYTO ze4%u*(!57n4ey=xQ`Eb>qi;cjdIlj3{MC-ah|TMde2Ifm#11-&@Q1I{E=p#1fIBd8 zU%6_P1Hzg#^YzvI?`VY8+q`9qLf??uu7Ad1L;@*XkZBw3`~5}yV+wX*0vTP|Jl+%C z(GJ*>%oIu`n_F5qn7woo$vGrM>CwNP7eSS^)U%mCA4G|`sOY`c7J&=9=C5>b*4fuk zr21aY`6C{AwvdnlT$@5fC-7r0lK~GEN=DGE_;}ZDcUjHC@qF!W78U-hp3o-iILo`? zK2X}NgmgLJ_stYE@1u)H3_%@|#SH5}2i{(C7{X#5>{+@s=qF5IHM!7XzIS37;4!j$ zhT7Y01o+b9aQ-b4#68_Bk3a42{gw>WiS5xYgMR)u5XmC1px76}kbRZ}ab#bH^ zxn5F!*fL&7U~xnMkl9fva0u}Jb;!SWA{^Rv8_B8{`Wug*FhLi_tQpo54)9CXTCJVv z9q*x%KcV+n!=Cx4`r(Efg%zQzuOCv)H6$h>A8J&WzAf((co@iz3o9L{BUYLT#4Z}$ z9jW%7XEAE9dXCJXXaX@gAjZ3~B%`N{0v_OxTa)>uktnpl(~3pgPNBfFPp=CtAt#nu zr0o2cm(*R;Oq*hBbRmf%$mV!SUA+K{e8?uBv@cz+UFaYF3VV(b_@eaaF;;I--hJ0b zVl`-RvOlLCQ4MyC%RC|2$N27BxpHMQ+6f{s$1PyuZ%4D}B@e$v6U~wwS=aNc_JmM6 zDBcFHD-sa~pyAhBK|#|#!kY^6&{w!wO+sw*KVFR$Q&fD?ntc8XCITxgOc-qI4cx3l zCc;0geHA3PU%H8#wJh}Fr9ODXOzS{%1J}0)V`_E%5<0KNOzlfRg6x~7K3MZ(!Kq~c zQzAgqzQlLR19b)HE{v@h-)YUOlJfCZk?{uU)*wJTAl72ae}(2Z-C_FTwFYui`7**# z0-(F$9AwmZyvqjE$O%T~TkKS2k@pH^;4c}6+h4nM8~GL2<$GL%+PThEKJ0AV&~Ihv z(~t(yVy1B4q{?#b&V2WlBn-Bh!f&(qhcfd262cDDS-P-!yLSU@do8 zynUeAuOIzo8LL0zZBRtwG;!O2CZTD)1z%qMT|HSib%NVR#(+tAKM+})iyJ)N%FXV zajjL)#-I4#^dgIsaW8+sGSi&Wl4mxOD_0ufOwM)to+S9+-1}rRwA6>+J_itQ_4L^@ zg~bi1IBnM6f(2k~>X8>5u$7?Mw;;cj0hX}x^P%G>#_;*=nvYCsg@%R$dR@<*i;mvY zEx)q{U0qe*b3m$U`S=uBW>YUsT47eTB@Q}&sH)?afOz3Kuz2$1$%CAP1-wwzjt0EU$4} zR-%_T^~Zyse6643W3#I)E807p-{+$KwD8`caAxU`)taz|U7f#06aEy8NH`yZbqZH;$wXiG&MUQh z=Mj81?cRzYWF8ApjXMqn6rro$to^CD%gekclV;8|e^H64lRr?8->muiKv)OQ6-+GS z12|ea_GAA@vk}pc-{=BgqzdXU3WnjUSGN_qjY_M(-?QYUp^SN)AMFjU_2Yw(u9Khk z19Xj;)^0$lmx%iI>XHWHo(>f*oIftV^Iej982&l-`$p4Di|X?$cAYRZFt~i{HP%rR zoKqBaqvc)7W6*N!LO_U1p&5uj?{EHIT;YI0y#ILSe}?K<>`tdFK^m%{qV`6Vadk>% z^Du?;^Yb5of!Ln*vzjXZ>$u$2uSR z{A|vcv3z%j)zsghzI+-T+k(`%s%%P5~RXqBZNrcdm<1f(svJ;{{H*respO>;L)aYdoie4Em< z7b&^XT7})y(T!@zZLPa;Ekc%QBsX*Uv^%vgVUrRYT_F!E-c-NrH{AE((aVU^3{@jxXI`;vBZ()%Fa_!Z4 zZOOM4K>w`-pZ2NS`^l!l9P`5NHQ4I$`Qroo_~72asn z!zgPj&B=>^M8K1Z;Z>GE=ivDl4elZJ-R(p)B(kwnq*@o=ws?n4yai6}hTLxwt)Ht6 zT{BnNJ($MO(=+8D7)ZY4`Z&0J*{dx@ADkOj= zT!Q!Us<`M4z83Wn$7qRTeAy(4OUs9NEQ>N&rDyYqZp_m`xzhr5pIOB=oP_%4pW_Hy zbo^3HB@c9g;xKgzbo_!-!jpk}rCl&@1R92r?T!G$A?5>(O_ar8PDFs<WFnC^;f|eh?~GFIG*qJ3-dO|` zRjPJ*7a5-X(D!I73MA-s(psR7>V*KK1uM~zD;tF7cSCEK4CWLR6l|bM)#6e%!2@5{ z&@Lq=CYG{03v~#%A_>Uw3@ZxbFh3c`j~DzDl21%bbb#I{?SgL$#t#|F(_B{@PqY?0 z0ODpvMM)5lh~U8qTegLY^nnFYeri*J5+g8ehr6B#Ekfku%&}uX)kVaOBe|0#-L~-fYqdrI7+gt}|MLcWlM8qJ6^W!kg|z>A=b{9CGG zoF+JCDShaBiE3)SQUFqwoj%*+)?SHPV_!Bae!*p&-C~{$n%U7)t^eyu3*V12pN{x1 z;(H^AjNLT;fxezzB;tc9&Y)0N0YK^aU8u9Ovl*tYk-*c-u&q~r!Q2p-O^P1He%vIHQ#8Ithvk$!8oU>t-p{wea!tNp%YXSF=W};AL z!QCMZppx#%u9FZ9Sfw5FWLk>?7clrq17JK?}ecjw8BOp4u!6H?4=4WHylWmPNG(D zGn8`Iz`~?74^~6bCJW?Bp=)U4x^))h5`te~QPqW{P7YQZktlY{X{94Th0hk(U7j`n zZn6N_5eh)0#=!E_1$XG&%`yR|#zEV*D14F(D+h67)vLyA-@EY(`RshlpE@5^tW!MUKC zHRdkD`H2>D4d&~oCg4u?`{TTj^ax`fs0{BYLPJ140 z{mdxMM2dF#aT6z|H_O=+S@{h1?g9OH7qrnEHlBV@{rGbz*B8J7$Rx#p$2Y*q=oD7d zgTx@LYbL63Iv@sUnRq@heFtD7S2Nbg%V(8^7ZLmeEoT{;Or?-eMi;sqy2+l_86{dictw z7sZ3!3REKMnt6HMCLO3W^RA6IO^A7d*cN5sw-%!twSZ92oY&qcOFH3yn`VE(-^+4s zm1TP`#JUa=mb5;?zPvsUsCn5PX_Z&6#r-se0Xn zx+$e)4C)^&_xO~S0nEE|@R?3+*_XcKdIFv7?C1%Rqm98{%_kwi?Q%Kh%?u0H%8kPVI)rh8+*dyp#`N&BvkA= zWIcj3>1wu=tn4<7$j2McviP#Tpwfy)(B29Z8aPnxE7U5K*2myrC)?@`cbCAM_#EtX zQtXjQmtXV!Ym!h=N6+C{xIwc*ZsD)NaP5d*XoB^KqV0+W9ToH5BlOQ+oBDWl z8=*#b5^wpXlLU*nDwl+(^2p#EpyPddRc{dxMn3=V*b&p;L29$(EdbtdB)pLs(DJ{y zdd(B$x|r~$_fCDdu{73i0RgSqn{$RPuG|XzpVB;W86aCQgY$@#b*XxhkoY>r2_|5U z#YHaFX^}X)Ym@lY<Z#0wrC&wIlHE-AxPBd7SW8$u%5z~ zLiT(n-;Q@|m5+0RnIuG3{E-BdfB#(i2af80=VugcT@E#kWo+T&NAm_?n#eIrD(@z=%jbQugwSl>90yu=a`V9ut+yavdLI8nvLIz?hR} zQ(Q#Iy*SsBpccSTMx4$ZJIncW!yDY;qEQC5{E}mRRZs(5Q1dOKLIq%{UkpL=BBG+z zoeZL_eO$0_oa}Q)BQYSD|L0gP={>a3hvIwJXK`Z#7hgFkdy}q@f7}781sg z;^GXeT~gKsdAd>A1OEgO_IKz%b=z{o&2lrp3MfU#w6%TcL(ZZ;y|Zv3Y|;+qlzx~F z+JGl3%oV_s()UDWpo}a-_kjsJg9Hb6?cjSHjTcSF1YvQeK_kt<<0J!yqd8;ZkAhTh z&8wuST3>i)fNK9!akg>4K zmxUu`T}j#j>Mq5;;*zQ*`^F7Zc3_~_v8CNLM;vzVP8(1+(jdmxk?D6WCI7vlhxa0H zA@BJ0De6V$C&2`#vF2cY;+EjCs9aGxw68GUjCc@(*60 zk{;0QZ{rsd%8qjQvG3?}@*f=ztA`8ymWj9{%Iac%=++>2GI4(szgkW0@J7j;noE~1 zeOZ+|`P%DC*jINV#m*#gj(9pMgQp;?hNsH#Ej9pZFyH;&uB~L@L8yjk-s+m+Xa{lB zN*EPNV5kn{bVk})l5Co9N(B;FB8IS(&Y^%#k2YSesHnISh7A`07S(4C^4*=c?^UOf zMwR?OznLd?TfM;WS-uYJnF(YSSbr{5tcBOUZnr32?2K9iR+l#7+$oq=H*hqDmN?h^ z5u^39XO(3`a_^4$6*gza`m0x{hQ_qLK=O}DeuLxV_~R|lk*b;V6wjYFG>azW4nhpV z(APKPu*YH>@e?8W1kDo6ei>XAERmeLx_T!ZcgitgU0(e)*6+@0*Xq=6F8>?dY4^fF zou%7@5mCpyxyEvc#OEx<_h3G4cs<#l&=ab=bfaD=NKZiS;(Z$4m|42|h6b(*fFM)> ziSlwbahVk>3;?45DHoWa^uxBwszIaShvd&9ZsLRij=5u4&7KUDK2P&KkoBa$1O_&H z*5y?b-cEhLe;0)<1AYMkF-Vr8kP>n+#%(upr&F~^)iT0(Gb~ux6>p~S37DRlEiQ(H zQ5<64qgw#WELQb05pSdPnRDF;w_UxobkF;<^ZyEY_x{1;_enJy7jHbi2oo0xO~A>JZd3bJl^$ad{Zt;=4o1RCuRk$TG28gG>j~hgM-%$rw=i^SV7+i zG4x>%91wyeFJMW%2H?EtK+MaSo-EC}fiOToHnC|JjBoF7&_U68C{zgelN2!Odee5eeyuVVKX{m?Ie} z`ei~w**iLH_8H~`3dNHZt&}1K9pq4;l^LkpBAmq>yn7zW-F6~3l^Hu+d-3w6%UJwMp`#Mi zVlN>6o5uI26yZjfQTa0OwoUpT@jMZF5tl{e;(N|K03S^gRr5T(sh)QnpB;W-&|-!I zwh=X{to?pu`3Oyi;2f;gx6|d4EAG{(?i9i!&?RrfWj7}ZS*Ic>fDmtTmA)Prd_3ly!8J@>#IadliFpQC^H=T)nApld=(4|GI@ z>P66A)U^i@{I3-Bfs^BqjmMfB$RKlo<%}5$ik+|Dx%+%@Hw+H~*rb7vg92e2SZ&`- zow|p?VE8_Q0p7_1v2P|ZQ4mg>;;+*OY@jel5HE z*OEJ$k7Bz~McuCS$-!ms+`-?1+kVLC?;}n#q#kpj7SSpI4e=g5P<{eMZLCEK%xJTr z%Y>{op2*7kJlil_gk7AF0MfBP2Du=R$2$1Ax*?EvT!Yz|j1~WE++nh!yJA+ z_8M70$%Wi{Yt(Kxu$yDd?DjLl^lBcpJ1V9G?aq=330R|Fh^MKOg!e8BwEIxOl*?GW zF2M@=9c~F~h#BjLvwJtE1X<|TMLAmMK7YQ%dAb7Ibj`0dX-4ztz!MTWyBs@12BG$* zBmhICp7DN7FNAf1M;@c%NS5AQ2HIXp(q;)cTO>kEpQoopc>RUZsilkLk6$&!i^;mb zSD$L5*SZQ#yrg5jM4CxBUue4M&ei0_C8-4ERqp&W6D?@Uu3cS)>EGRgC%2<#XqRk{#Z7i>#~nFbwx6h|1*Gp&yI3G<4ESH^)og z3)T@ojOa$~Uy5GgHH`%a=ap2ic^{WnJ?H-C$-8I132+%H|5-vplgW(L2>h?FKlKC{ z9l@(QNpu2y_ieq^H-9~XLMC7dP*bdJB%qMkMDiH96^~UV_Agx_4YCZen~=J+tm5^z z<1M^#m;MU?DL3idJ=}U|>DfqvUIteVXRnFqj+mB~8=t3#IrQ|5&Mj4s^o1Ah`URlW^E1^)XbA*Mun=$133KgJ#QgTJy1e9_1a0x`0&-e4^ zQ^X1X`G%fTKD$$nxl-{5ht)uB|-_aj}J0%J;NkXXA4tFm}099YA)PAu#^5RsxoWYJh+1KC+ z?!cyAGiS~mDVJIT(Wx4t<~`Nr1qB5*W8HYvt3c^tPuSobChp8TAbs?)$bxr)5zF{P zw@Mo!oX$MlSxX~g@|BQB$o;*zPkdb69LE{9?6vUhN{)j9Ssf3(q$lK$Wo0ALY5GyR z4tTLFzXoj2YJgdvOj*yWJi<#8XU&)~8S)kteHDb!Mg-4;jj#z2%&w*tUYFDXhZ7MM zFV7mlNe_C7`S5F#pn#ciyRZp(h&tXR&b9(z5I?P0ffEP@0O{&*UAvFhtaWe4ciLt3 znxJ?<4Aw~DB?V0p%XjzxGz>EUL11N_=R}q}2(#2Hd2b@8qH+YY4@5A*(nNN&j@A-j z`~Wnz3ukSrUcPPH>zw=d991u$+Mk}gIJ`6GUM(Y3t<-1@gb@Yc7eof;nI4nfl+7W<-b-}fKg{t(UmtXe zjbfGngkC6q;tW%Kj zV>{bzG_lsO4Gs&}!3>Qxd->u8JyM;dkn_vRwv-qTY~}^EI&G_KSvH*A4wYbjJYHv7 zN2BRt{4=5yt>2DvljJQ^Rct;SbU3y^HLB}ww?kKAvQ=Fa&v3tL3PfZUsbOKz zNnp+0z3}}~DP+J>27sfJxbka5nb?;-Fvh1v*a)D(p=0Qi)AOlP14srn(MZru`s6ex zSA>my1kSB0-2^pJ0qMsv{1(05Gw^x(S1rqo+SvnCNRUF6md7WrWn~^E#y7o+W86SD zb+hg)A3*PHKN=*Fc#EcM1ZR`bbV^O#(ZOK4P*1lc>ELM~XjBwXV~%Dr_@q~nyyjnZc1#m4mM_a`caC8x! zIzYM=qe=W}hyxWRM0V$LB-a;J{pK(yS0&F!Ouyh+I4WgvjBTJvdNy$77I-1DZ8@J zDe2djGbj|08*NIK(xuXt+%}QHc|f|XE*n;5URT1^>;Uh5=*& z=))Eu9LF&jp21jtI zN5%DCD7yk@?b)$S2d~EIzRRZT*kGDFcKl(u%>8SXE*C7ZKeLNHoH}MjZ|mwUGhOp> z)IqcmQ*#nabL& zb)tsxUQBkmRi~+wQ;L~|1LUO?vG?T-af`(>dnE* zE=eFjMf3AsP$wh&rq=E7(Jb;(Y#mX?v1IJjF|t8z`+l`-^sNMga?a@DbRp&h(*>1M z4>0?fre}-5MxeRUu}4bejX;yu@P6-!S}()Luv;k}hqVK32x@e)8HKu*XJt1_)U>dB zeO)_L+u3Ow#DsHewvJ9$iFX*vRUKY2tXfQ*Y%J;5M+Pc7%b5gU2?;$+L!HeNz6;h& zND13WUuJeG^=zuq-sUrDwc<58^ylx-Irr1YoSfr!Q*zffqK)ngVs3GJq_J;v%Xx=) z9!?|XtMf|b0Zp958Gy4s(r-Sn5WHgjg7YeG8n*bq_w?;z{p;=@Ggbnh2L}L!P(Y10 zdjU1zgoGA@GD)jiGrI? z2BCU#4M`i+L_++#dP|4Y`JGi|0YX`w_K12>GPC=)`gACdKlI5)J6gWa)R|)_W2AqxW{BNj9-w33cYp>YwI|EQi?L25+1OKCH3P&Zpa=nMDtrVBnT`7P{8Fv zf+Qs+Ax5L*7PA1F(6bN1%Qs3nfTrep2#cxCLE89NlB4lu!ID7_3Kt`>ZCmq^B!uBt zVjb*F?$~@JbPkBaSxlr~jllPB8(hT{%H&6vKNIwH9b_|j9)<}YX6NZOj-F*I>s9Sn zQTcs2p4qusW8ika!|WYy)$-JnReHp*OjcH+e4Y9Q#2tVE6zRe6@OoB9AXg`dW6qoy zofto~Kk98KLh<0}IOGe3qz^AAnqyhG)i^ABIl%iQK+Fi$HyL0)J{!4e#RGV;it3%)b@ki0d^09{;eHD(x9Xn!mV(bgHrDDG!eIN4bwFgN< zYNS4%IIdh)5Gj`cZDkHu>OWU(6YX^9@hN7DZcYiabInS=+-!ObRyN%t;V+-x$xB{_ zN5Wsr#W5BnC9y$PWHp$ZIA1X*e9`aAo!Z;R8uBUA``#YytG3##jCOg+h$6o47%Utd zy0kT@d6E!!4C&AMqfdoysko(7b~3MAc6cXW*>eAu=MVMeuCM;&l`^S$0(N?I6Q69& z>1wrWv+I0qGQP0QYB0q00u*MSN>Tq_P$RUk!73_Dbut+|WdiabvFsswz)jnynPFR# z>LPisi4KMmPY!JnvEU3B z8E4CJW(l1PT@k6Ci6i=iU{QaKc)8QRUveED$%kG0KeZ+QbX}8HKGB_V0jnV}^v6l; z(&PwW%WVkBQ&x{*SA9s|)zH^_yxA6?PFr{W3X>&f_e-ceOeR;PAT8Hzp;QHJRtMh~#6ugo3pL5(0^;!~71OQ@JeIry1&h$<~L zQd&E6I|(t8GvSXFV_xx{N>>x^@3!383u9k}YZsTtY@*k`KToe$Ve~`!<<_MpO1!?w z5d8)Ga_zBu$FZ&`F^#>I4FSP4IxdMW*@R@BlCg^B#7$^>1Yr)}9!v*c^S=A?XH0A1 zSlCz=OqD7w?+nsF;6iL%4pQEY#zr$2lq-;TzV0jI)`LO>VolPq+-WX2SoV#%M@B_) z&@<{-)U@tyi!zU+vHO z3g@EJmXu(A#QH;tf6{zDB$w6aN9R`TEeh!1Wo>B}Ho=5Snt+56U&r}rFJLDI zLrExxB*i@Xd|l(CQ2L3<{#xESCEz_kp+XQ__-r7_Ay7O?)2f|R^Ae$3Db!!EMTgUY zZ|p&XSwj!^)O2C7&B2263axf3RQLQ(>w{k*3aK_iw-`X%qqb0f`SPvkk1r?nt>Mp^ z5tv~^5m`I?6dD3~RGION51jg~P#!ot(_p`=@{LWzeZkIa!mdyd_XIQUL1X$A#8js( z5{fBdiSHA6j=?@&U!pR8+q_gI9=OR`;s4loe{B2VfaSmKI@MMx -zOY_IZ8HW-{ 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 literal 0 HcmV?d00001 diff --git a/rar/acknow.txt b/rar/acknow.txt new file mode 100644 index 000000000..b982eceec --- /dev/null +++ b/rar/acknow.txt @@ -0,0 +1,92 @@ + ACKNOWLEDGMENTS + +* We used "Screaming Fast Galois Field Arithmetic Using Intel + SIMD Instructions" paper by James S. Plank, Kevin M. Greenan + and Ethan L. Miller to improve Reed-Solomon coding performance. + Also we are grateful to Artem Drobanov and Bulat Ziganshin + for samples and ideas allowed to make Reed-Solomon coding + more efficient. + +* RAR text compression algorithm is based on Dmitry Shkarin PPMII + and Dmitry Subbotin carryless rangecoder public domain source code. + You may find it in ftp.elf.stuba.sk/pub/pc/pack. + +* RAR encryption includes parts of code from Szymon Stefanek + and Brian Gladman AES implementations also as Steve Reid SHA-1 source. + + --------------------------------------------------------------------------- + Copyright (c) 2002, Dr Brian Gladman < >, Worcester, UK. + All rights reserved. + + LICENSE TERMS + + The free distribution and use of this software in both source and binary + form is allowed (with or without changes) provided that: + + 1. distributions of this source code include the above copyright + notice, this list of conditions and the following disclaimer; + + 2. distributions in binary form include the above copyright + notice, this list of conditions and the following disclaimer + in the documentation and/or other associated materials; + + 3. the copyright holder's name is not used to endorse products + built using this software without specific written permission. + + ALTERNATIVELY, provided that this notice is retained in full, this product + may be distributed under the terms of the GNU General Public License (GPL), + in which case the provisions of the GPL apply INSTEAD OF those given above. + + DISCLAIMER + + This software is provided 'as is' with no explicit or implied warranties + in respect of its properties, including, but not limited to, correctness + and/or fitness for purpose. + --------------------------------------------------------------------------- + + Source code of this package also as other cryptographic technology + and computing project related links are available on Brian Gladman's + web site: http://www.gladman.me.uk + +* RAR uses CRC32 function based on Intel Slicing-by-8 algorithm. + Original Intel Slicing-by-8 code is available here: + + http://sourceforge.net/projects/slicing-by-8/ + + Original Intel Slicing-by-8 code is licensed under BSD License + available at http://www.opensource.org/licenses/bsd-license.html + + Copyright (c) 2004-2006 Intel Corporation. + All Rights Reserved + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with + the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +* RAR archives may optionally include BLAKE2sp hash ( https://blake2.net ), + designed by Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn + and Christian Winnerlein. + +* Useful hints provided by Alexander Khoroshev and Bulat Ziganshin allowed + to significantly improve RAR compression and speed. diff --git a/rar/default.sfx b/rar/default.sfx new file mode 100755 index 0000000000000000000000000000000000000000..a2a215669e282e00eb8cf77a4789da4f7a1500f2 GIT binary patch literal 183296 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
    n}5wQ^v+%c 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

    How to buy WinRAR and RAR license.

    + +

    If you wish to use WinRAR and RAR after the evaluation period of 40 days, +you need to purchase its license from one of the regional dealers +listed here. +You can also check the latest price list and buy on-line at +www.rarlab.com.

    + +

    Upon receipt of your registration fee you will receive an email +containing a registration key file corresponding to the user name +string which you have chosen. Please specify a valid email address +when buying the licence, as it will be used to send you the key file.

    + +

    The registration email will also contain all necessary instructions, +so please just follow them. Below, we provide a brief explanation of +the typical registration procedure, but instructions in the email are +more up to date than this file and should thus have a higher precedence.

    + +

    If you use WinRAR, you will need to copy the registration key file +(rarreg.key) to a WinRAR folder or to %APPDATA%\WinRAR folder. +By default WinRAR folder is "C:\Program Files\WinRAR", but it can be +changed by a user when installing WinRAR. You can also drag rarreg.key file +and drop it to WinRAR window to register.

    + +

    If the key is archived in a .rar or .zip file, please extract +rarreg.key from the archive before copying it. If archive name is +rarkey.rar, another way to install the key file is to open such +archive in WinRAR and answer "Yes" to confirmation prompt.

    + +

    If you use RAR/Unix and RAR for OS X, you should copy rarreg.key +to your home directory or to one of the following directories: +/etc, /usr/lib, /usr/local/lib, /usr/local/etc. You may rename it +to .rarreg.key or .rarregkey, if you wish, but rarreg.key is also valid.

    + +

    WinRAR, RAR for Unix and OS X now use the same registration key +format, so you can use the same key with current WinRAR and RAR versions +for all mentioned platforms. It is not guaranteed for WinRAR and RAR +versions that are not equal to version included to this distributive. +For example, versions prior to 2.60 used different keys.

    + +

    Please send your further questions about sales and licensing +to . +English, French, German or Spanish please.

    + + + diff --git a/rar/rar b/rar/rar new file mode 100755 index 0000000000000000000000000000000000000000..106e15011dbe3b2150680ca6b3253e14592347f6 GIT binary patch literal 553936 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

    S<1Cljwq;TgdfZ}*A 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 literal 0 HcmV?d00001 diff --git a/rar/rar.txt b/rar/rar.txt new file mode 100644 index 000000000..bdc071f6a --- /dev/null +++ b/rar/rar.txt @@ -0,0 +1,2464 @@ + User's Manual + ~~~~~~~~~~~~~ + RAR 5.61 console version + ~~~~~~~~~~~~~~~~~~~~~~~~ + + =-=-=-=-=-=-=-=-=-=-=-=-=-=- + Welcome to the RAR Archiver! + -=-=-=-=-=-=-=-=-=-=-=-=-=-= + + Introduction + ~~~~~~~~~~~~ + + RAR is a console application allowing to manage archive files + in command line mode. RAR provides compression, encryption, + data recovery and many other functions described in this manual. + + RAR supports only RAR format archives, which have .rar file name + extension by default. ZIP and other formats are not supported. + Even if you specify .zip extension when creating an archive, it will + still be in RAR format. Windows users may install WinRAR, which supports + more archive types including RAR and ZIP formats. + + WinRAR provides both graphical user interface and command line mode. + While console RAR and GUI WinRAR have the similar command line syntax, + some differences exist. So it is recommended to use this rar.txt manual + for console RAR (rar.exe in case of Windows version) and winrar.chm + WinRAR help file for GUI WinRAR (winrar.exe). + + + Configuration file + ~~~~~~~~~~~~~~~~~~ + + RAR and UnRAR for Unix read configuration information from .rarrc file + in a user's home directory (stored in HOME environment variable) + or in /etc directory. + + RAR and UnRAR for Windows read configuration information from rar.ini file, + placed in the same directory as the rar.exe file. + + This file may contain the following string: + + switches= + + For example: + + switches=-m5 -s + + It is also possible to specify separate switch sets for individual + RAR commands using the following syntax: + + switches_= + + For example: + + switches_a=-m5 -s + switches_x=-o+ + + + + Environment variable + ~~~~~~~~~~~~~~~~~~~~ + + Default parameters may be added to the RAR command line by establishing + an environment variable "RAR". + + For instance, in Unix following lines may be added to your profile: + + RAR='-s -md1024' + export RAR + + RAR will use this string as default parameters in the command line and + will create "solid" archives with 1024 KB sliding dictionary size. + + RAR handles options with priority as following: + + command line switches highest priority + switches in the RAR variable lower priority + switches saved in configuration file lowest priority + + + Log file + ~~~~~~~~ + + If the switch -ilog is specified in the command line or configuration + file, RAR will write informational messages, concerning errors + encountered while processing archives, into a log file. Read switch + -ilog description for more details. + + + The file order list for solid archiving - rarfiles.lst + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + rarfiles.lst contains a user-defined file list, which tells RAR + the order in which to add files to a solid archive. It may contain + file names, wildcards and special entry - $default. The default + entry defines the place in order list for files not matched + with other entries in this file. The comment character is ';'. + + In Windows this file should be placed in the same directory as RAR + or in %APPDATA%\WinRAR directory, in Unix - to the user's home directory + or in /etc. + + Tips to provide improved compression and speed of operation: + + - similar files should be grouped together in the archive; + - frequently accessed files should be placed at the beginning. + + Normally masks placed nearer to the top of list have a higher priority, + but there is an exception from this rule. If rarfiles.lst contains such + two masks that all files matched by one mask are also matched by another, + that mask which matches a smaller subset of file names will have higher + priority regardless of its position in the list. For example, if you have + *.cpp and f*.cpp masks, f*.cpp has a higher priority, so the position of + 'filename.cpp' will be chosen according to 'f*.cpp', not '*.cpp'. + + + RAR command line syntax + ~~~~~~~~~~~~~~~~~~~~~~~ + + Syntax + + RAR [ - ] [ <@listfiles...> ] + [ ] [ ] + + Description + + Command line options (commands and switches) provide control of + creating and managing archives with RAR. The command is a string (or a + single letter) which commands RAR to perform a corresponding action. + Switches are designed to modify the way RAR performs the action. Other + parameters are archive name and files to be archived into or extracted + from the archive. + + Listfiles are plain text files that contain names of files to process. + File names should start at the first column. It is possible to + put comments to the listfile after // characters. For example, + you may create backup.lst containing the following strings: + + c:\work\doc\*.txt //backup text documents + c:\work\image\*.bmp //backup pictures + c:\work\misc + + and then run: + + rar a backup @backup.lst + + If you wish to read file names from stdin (standard input), + specify the empty listfile name (just @). + + By default, console RAR uses the single byte encoding in list files, + but it can be redefined with -scl switch. + + You may specify both usual file names and list files in the same + command line. If neither files nor listfiles are specified, + then *.* is implied and RAR will process all files. + + Many RAR commands, such as extraction, test or list, allow to use + wildcards in archive name. If no extension is specified in archive + mask, RAR assumes .rar, so * means all archives with .rar extension. + If you need to process all archives without extension, use *. mask. + *.* mask selects all files. Wildcards in archive name are not allowed + when archiving and deleting. + + In Unix you need to enclose RAR command line parameters containing + wildcards in single or double quotes to prevent their expansion + by Unix shell. For example, this command will extract *.asm files + from all *.rar archives in current directory: + + rar e '*.rar' '*.asm' + + + Command could be any of the following: + + a Add files to archive. + + Examples: + + 1) add all *.hlp files from the current directory to + the archive help.rar: + + rar a help *.hlp + + 2) archive all files from the current directory and subdirectories + to 362000 bytes size solid, self-extracting volumes + and add the recovery record to each volume: + + rar a -r -v362 -s -sfx -rr save + + Because no file names are specified, all files (*) are assumed. + + 3) as a special exception, if directory name is specified as + an argument and if directory name does not include file masks + and trailing backslash, the entire contents of the directory + and all subdirectories will be added to the archive even + if switch -r is not specified. + + The following command will add all files from the directory + Bitmaps and its subdirectories to the RAR archive Pictures.rar: + + rar a Pictures.rar Bitmaps + + 4) if directory name includes file masks or trailing backslashes, + normal rules apply and you need to specify switch -r to process + its subdirectories. + + The following command will add all files from directory Bitmaps, + but not from its subdirectories, because switch -r is not + specified: + + rar a Pictures.rar Bitmaps\* + + + c Add archive comment. Comments are displayed while the archive is + being processed. Comment length is limited to 256 KB. + + Examples: + + rar c distrib.rar + + Also comments may be added from a file using -z[file] switch. + The following command adds a comment from info.txt file: + + rar c -zinfo.txt dummy + + + ch Change archive parameters. + + This command can be used with most of archive modification + switches to modify archive parameters. It is especially + convenient for switches like -cl, -cu, -tl, which do not + have a dedicated command. + + It is not able to recompress, encrypt or decrypt archive data + and it cannot merge or create volumes. If used without any + switches, 'ch' command just copies the archive data without + modification. + + Example: + + Set archive time to latest file: + + rar ch -tl files.rar + + + cw Write archive comment to specified file. + + Format of output file depends on -sc switch. + + If output file name is not specified, comment data will be + sent to stdout. + + Examples: + + 1) rar cw arc comment.txt + + 2) rar cw -scuc arc unicode.txt + + 3) rar cw arc + + + d Delete files from archive. If this command removes all files + from archive, the empty archive is removed. + + + e Extract files without archived paths. + + Extract files excluding their path component, so all files + are created in the same destination directory. + + Use 'x' command if you wish to extract full pathnames. + + Example: + + rar e -or html.rar *.css css\ + + extract all *.css files from html.rar archive to 'css' folder + excluding archived paths. Rename extracted files automatically + in case several files have the same name. + + + f Freshen files in archive. Updates archived files older + than files to add. This command will not add new files + to the archive. + + + i[i|c|h|t]= + Find string in archives. + + Supports following optional parameters: + + i - case insensitive search (default); + + c - case sensitive search; + + h - hexadecimal search; + + t - use ANSI, Unicode and OEM character tables (Windows only); + + If no parameters are specified, it is possible to use + the simplified command syntax i instead of i= + + It is allowed to specify 't' modifier with other parameters, + for example, ict=string performs case sensitive search + using all mentioned above character tables. + + Examples: + + 1) rar "ic=first level" -r c:\*.rar *.txt + + Perform case sensitive search of "first level" string + in *.txt files in *.rar archives on the disk c: + + 2) rar ih=f0e0aeaeab2d83e3a9 -r e:\texts\*.rar + + Search for hex string f0 e0 ae ae ab 2d 83 e3 a9 + in rar archives in e:\texts directory. + + + k Lock archive. Any command which intends to change the archive + will be ignored. + + Example: + + rar k final.rar + + + l[t[a],b] + List archive contents [technical [all], bare]. + + 'l' command lists archived file attributes, size, date, + time and name, one file per line. If file is encrypted, + line starts from '*' character. + + 'lt' displays the detailed file information in multiline mode. + This information includes file checksum value, host OS, + compression options and other parameters. + + 'lta' provide the detailed information not only for files, + but also for service headers like NTFS streams + or file security data. + + 'lb' lists bare file names with path, one per line, + without any additional information. + + You can use -v switch to list contents of all volumes + in volume set: rar l -v vol.part1.rar + + Commands 'lt', 'lta' and 'lb' are equal to 'vt', 'vta' + and 'vb' correspondingly. + + + m[f] Move to archive [files only]. Moving files and directories + results in the files and directories being erased upon + successful completion of the packing operation. Directories will + not be removed if 'f' modifier is used and/or '-ed' switch is + applied. + + + p Print file to stdout. + + You may use this command together with -inul switch to disable + all RAR messages and print only file data. It may be important + when you need to send a file to stdout for use in pipes. + + + r Repair archive. Archive repairing is performed in two stages. + First, the damaged archive is searched for a recovery record + (see 'rr' command). If archive contains the previously added + recovery record and if damaged data area is continuous + and smaller than error correction code size in recovery record, + chance of successful archive reconstruction is high. + When this stage has been completed, a new archive is created, + named as fixed.arcname.rar, where 'arcname' is the original + (damaged) archive name. + + If broken archive does not contain a recovery record or if + archive is not completely recovered due to major damage, + second stage is performed. During this stage only the archive + structure is reconstructed and it is impossible to recover + files which fail checksum validation, it is still possible, + however, to recover undamaged files, which were inaccessible + due to the broken archive structure. Mostly this is useful + for non-solid archives. This stage is never efficient + for archives with encrypted file headers, which can be repaired + only if recovery record is present. + + When the second stage is completed, the reconstructed archive + is saved as rebuilt.arcname.rar, where 'arcname' is + the original archive name. + + By default, repaired archives are created in the current + directory, but you can append an optional destpath\ parameter + to specify another destination directory. + + Example: + + rar r buggy.rar c:\fixed\ + + repair buggy.rar and place the result to 'c:\fixed' directory. + + + rc Reconstruct missing and damaged volumes using recovery volumes + (.rev files). You need to specify any existing volume + as the archive name, for example, 'rar rc backup.part03.rar' + + Read 'rv' command description for information about + recovery volumes. + + + rn Rename archived files. + + The command syntax is: + + rar rn ... + + For example, the following command: + + rar rn data.rar readme.txt readme.bak info.txt info.bak + + will rename readme.txt to readme.bak and info.txt to info.bak + in the archive data.rar. + + It is allowed to use wildcards in the source and destination + names for simple name transformations like changing file + extensions. For example: + + rar rn data.rar *.txt *.bak + + will rename all *.txt files to *.bak. + + RAR does not check if the destination file name is already + present in the archive, so you need to be careful to avoid + duplicated names. It is especially important when using + wildcards. Such a command is potentially dangerous, because + a wrong wildcard may corrupt all archived names. + + + rr[N] Add data recovery record. Optionally, redundant information + (recovery record) may be added to archive. While it increases + the archive size, it helps to recover archived files in case of + disk failure or data loss of other kind, provided that damage + is not too severe. Such damage recovery can be done with + command "r" (repair). + + RAR 4.x and RAR 5.0 archives use different recovery record + structure and algorithms. + + RAR 4.x recovery record is based on XOR algorithm. + You can specify 4.x record size as a number of recovery sectors + or as a percent of archive size. To specify a number of sectors + just add it directly after 'rr', like 'rr1000' for 1000 sectors. + To use a percent append 'p' or '%' modifier after the percent + number, such as 'rr5p' or 'rr5%' for 5%. Note that in Windows + .bat and .cmd files it is necessary to use 'rr5%%' instead of + 'rr5%', because the command processor treats the single '%' + as the start of a batch file parameter, so it might be more + convenient to use 'p' instead of '%' in this case. + + RAR 4.x recovery sectors are 512 bytes long. If damaged area + is continuous, every sector helps to recover 512 bytes of + damaged information. This value may be lower in cases of + multiple damage. Maximum number of recovery sectors is 524288. + + Size of 4.x recovery record may be approximately determined as + /256 + *512 bytes. + + RAR 5.0 recovery record uses Reed-Solomon error correction codes. + Its ability to repair continuous damage is about the same + as for RAR 4.x, allowing to restore slightly less data than + recovery record size. But it is significantly more efficient + than RAR 4.x record in case of multiple damaged areas. + + RAR 5.0 record does not use 512 byte sectors and you can specify + its size only as a percent of archive size. Even if '%' or 'p' + modifier is not present, RAR treats the value as a percent + in case of RAR 5.0 format, so both 'rr5' and 'rr5p' mean 5%. + Due to service data overhead the actual resulting recovery record + size only approximately matches the user defined percent + and difference is larger for smaller archives. + + RAR 5.0 recovery record size cannot exceed the protecting + archive size, so you cannot use more than 100% as a parameter. + Larger recovery records are processed slower both when creating + and repairing. + + RAR 5.0 recovery record is more resistant to damage of recovery + record itself and can utilize a partially corrupt recovery + record data. Note, though, that 'R' repair command does not fix + broken blocks in recovery record. Only file data are corrected. + After successful archive repair, you may need to create a new + recovery record for saved files. + + Both 4.x and 5.0 records are most efficient if data positions + in damaged archive are not shifted. If you copy an archive + from damaged media using some special software and if you have + a choice to fill damaged areas with zeroes or to cut out them + from copied file, filling with zeroes or any other value is + preferable, because it allows to preserve original data positions. + Still, even though it is not an optimal mode, both versions + of records attempt to repair data even in case of deletions + or insertions of reasonable size, when data positions were + shifted. RAR 5.0 recovery record handles deletions and insertions + more efficiently than RAR 4.x. + + If you use the plain 'rr' command without optional parameter, + RAR will set the recovery record size to 3% of archive size + by default. + + Example: + + rar rr5p arcname + + add the recovery record of 5% of archive size. + + + rv[N] Create recovery volumes (.rev files), which can be later + used to reconstruct missing and damaged files in a volume + set. This command makes sense only for multivolume archives + and you need to specify the name of the first volume + in the set as the archive name. For example: + + rar rv3 data.part01.rar + + This feature may be useful for backups or, for example, + when you posted a multivolume archive to a newsgroup + and a part of subscribers did not receive some of the files. + Reposting recovery volumes instead of usual volumes + may reduce the total number of files to repost. + + Each recovery volume is able to reconstruct one missing + or damaged RAR volume. For example, if you have 30 volumes + and 3 recovery volumes, you are able to reconstruct any + 3 missing volumes. If the number of .rev files is less than + the number of missing volumes, reconstructing is impossible. + The total number of usual and recovery volumes must not + exceed 255 for RAR 4.x and 65535 for RAR 5.0 archive format. + + Original RAR volumes must not be modified after creating + recovery volumes. Recovery algorithm uses data stored both + in REV files and in RAR volumes to rebuild missing RAR volumes. + So if you modify RAR volumes, for example, lock them, after + creating REV files, recovery process will fail. + + Additionally to recovery data, RAR 5.0 recovery volumes + also store service information such as checksums of protected + RAR files. So they are slightly larger than RAR volumes + which they protect. If you plan to copy individual RAR and REV + files to some removable media, you need to take it into account + and specify RAR volume size by a few kilobytes smaller + than media size. + + The optional parameter specifies a number of recovery + volumes to create and must be less than the total number + of RAR volumes in the set. You may also append a percent + or 'p' character to this parameter, in such case the number of + creating .rev files will be equal to this percent taken + from the total number of RAR volumes. For example: + + rar rv15% data.part01.rar + + RAR reconstructs missing and damaged volumes either when + using 'rc' command or automatically, if it cannot locate + the next volume and finds the required number of .rev files + when unpacking. + + Original copies of damaged volumes are renamed to *.bad + before reconstruction. For example, volname.part03.rar + will be renamed to volname.part03.rar.bad. + + + s[name] Convert archive to SFX. The archive is merged with a SFX module + (using a module in file default.sfx or specified in the switch). + In the Windows version default.sfx should be placed in the + same directory as the rar.exe, in Unix - in the user's + home directory, in /usr/lib or /usr/local/lib. + + s- Remove SFX module from the already existing SFX archive. + RAR creates a new archive without SFX module, the original + SFX archive is not deleted. + + t Test archive files. This command performs a dummy file + extraction, writing nothing to the output stream, in order to + validate the specified file(s). + + Examples: + + Test archives in current directory: + + rar t * + + or for Unix: + + rar t '*' + + User may test archives in all sub-directories, starting + with the current path: + + rar t -r * + + or for Unix: + + rar t -r '*' + + + u Update files in archive. Adds files not yet in the archive + and updates archived files that are older than files to add. + + + v[t[a],b] + Verbosely list archive contents [technical [all], bare]. + + 'v' command lists archived file attributes, size, packed size, + compression ratio, date, time, checksum and name, one file + per line. If file is encrypted, line starts from '*' character. + For BLAKE2sp checksum only two first and one last symbol are + displayed. + + 'vt' displays the detailed file information in multiline mode. + This information includes file checksum value, host OS, + compression options and other parameters. + + 'vta' provide the detailed information not only for files, + but also for service headers like NTFS streams + or file security data. + + 'vb' lists bare file names with path, one per line, + without any additional information. + + You can use -v switch to list contents of all volumes + in volume set: rar v -v vol.part1.rar + + Commands 'vt', 'vta' and 'vb' are equal to 'lt', 'lta' + and 'lb' correspondingly. + + + x Extract files with full path. + + Examples: + + 1) extract 10cents.txt to current directory not displaying + the archive comment + + rar x -c- dime 10cents.txt + + 2) extract *.txt from docs.rar to c:\docs directory + + rar x docs.rar *.txt c:\docs\ + + 3) extract the entire contents of docs.rar to current directory + + rar x docs.rar + + + Switches (used in conjunction with a command): + + + -? Display help on commands and switches. The same as when none + or an illegal command line option is entered. + + + -- Stop switches scanning + + This switch tells to RAR that there are no more switches + in the command line. It could be useful, if either archive + or file name starts from '-' character. Without '--' switch + such a name would be treated as a switch. + + Example: + + add all files from the current directory to the solid archive + '-StrangeName' + + RAR a -s -- -StrangeName + + + -@[+] Disable [enable] file lists + + RAR treats command line parameters starting from '@' character + as file lists. So by default, RAR attempts to read 'filename' + filelist, when encountering '@filename' parameter. + But if '@filename' file exists, RAR treats the parameter + as '@filename' file instead of reading the file list. + + Switch -@[+] allows to avoid this ambiguity and strictly + define how to handle parameters starting from '@' character. + + If you specify -@, all such parameters found after this switch + will be considered as file names, not file lists. + + If you specify -@+, all such parameters found after this switch + will be considered as file lists, not file names. + + This switch does not affect processing parameters located + before it. + + Example: + + test the archived file '@home' + + rar t -@ notes.rar @home + + + -ac Clear Archive attribute after compression or extraction + (Windows version only). + + If -ac is specified when archiving, "Archive" file attribute + is cleared for successfully compressed files. When extracting, + -ac will clear "Archive" attribute for extracted files. + This switch does not affect directory attributes. + + + -ad Append archive name to destination path. + + This option may be useful when unpacking a group of archives. + By default RAR places files from all archives in the same + directory, but this switch creates a separate directory + for files unpacked from each archive. + + Example: + + rar x -ad *.rar data\ + + RAR will create subdirectories below 'data' for every unpacking + archive. + + + -ag[format] + Generate archive name using the current date and time. + + Appends the current date string to an archive name when + creating or processing an archive. Useful for daily backups. + + Format of the appending string is defined by the optional + "format" parameter or by "YYYYMMDDHHMMSS" if this parameter + is absent. The format string may include the following + characters: + + Y - year + M - month + MMM - month name as text string (Jan, Feb, etc.) + W - a week number (a week starts with Monday) + A - day of week number (Monday is 1, Sunday - 7) + D - day of month + E - day of year + H - hours + M - minutes (treated as minutes if encountered after hours) + I - minutes (treated as minutes regardless of hours position) + S - seconds + N - archive number. RAR searches for already existing archive + with generated name and if found, increments the archive + number until generating a unique name. 'N' format character + is not supported when creating volumes. + When performing non-archiving operations like extracting, + RAR selects the existing archive preceding the first + unused name or sets N to 1 if no such archive exists. + + Each of format string characters listed above represents only + one character added to archive name. For example, use WW for + two digit week number or YYYY to define four digit year. + + If the first character in the format string is '+', positions + of the date string and base archive name are exchanged, + so a date will precede an archive name. + + The format string may contain optional text enclosed in '{' + and '}' characters. This text is inserted into archive name. + + All other characters are added to an archive name without + changes. + + If you need to process an already existing archive, be careful + with -ag switch. Depending on the format string and time passed + since previous -ag use, generated and existing archive names + may mismatch. In this case RAR will create or open a new archive + instead of processing the already existing one. You may use + -log switch to write the generated archive name to a file + and then read it from file for further processing. + + + Examples: + + 1) use the default YYYYMMDDHHMMSS format + + rar a -ag backup + + 2) use DD-MMM-YY format + + rar t -agDD-MMM-YY backup + + 3) use YYYYMMDDHHMM format, place date before 'backup' + + rar a -ag+YYYYMMDDHHMM backup + + 4) use YYYY-WW-A format, include fields description + + rar a -agYYYY{year}-WW{week}-A{wday} backup + + 5) use YYYYMMDD and the archive number. It allows to generate + unique names even when YYYYMMDD format mask used more than + once in the same day + + rar a -agYYYYMMDD-NN backup + + + -ai Ignore file attributes. + + If this switch is used when extracting, RAR does not set + general file attributes stored in archive to extracted files. + This switch preserves attributes assigned by operating system + to a newly created file. + + If this switch is used when archiving, predefined values, + typical for file and directory, are stored instead of actual + attributes. + + In Windows it affects archive, system, hidden and read-only + attributes. in Unix - user, group, and others file permissions. + + + -ao Add files with "Archive" attribute set + (Windows version only). + + If -ao is used when archiving, only files with "Archive" + file attribute will be added to archive. This switch does not + affect directories, so all matching directories are added + regardless of their attributes. You can also specify -ed switch + if you prefer to omit all directory records. + + Example: + + add all disk C: files with "Archive" attribute set + to the 'f:backup' and clear files "Archive" attribute + + rar a -r -ac -ao f:backup c:\*.* + + + -ap Set path inside archive. This path is merged to file + names when adding files to an archive and removed + from file names when extracting. + + For example, if you wish to add the file 'readme.txt' + to the directory 'DOCS\ENG' of archive 'release', + you may run: + + rar a -apDOCS\ENG release readme.txt + + or to extract 'ENG' to the current directory: + + rar x -apDOCS release DOCS\ENG\*.* + + + -as Synchronize archive contents + + If this switch is used when archiving, those archived files + which are not present in the list of the currently added + files, will be deleted from the archive. It is convenient to + use this switch in combination with -u (update) to synchronize + contents of an archive and an archiving directory. + + For example, after the command: + + rar a -u -as backup sources\*.cpp + + the archive 'backup.rar' will contain only *.cpp files + from directory 'sources', all other files will be deleted + from the archive. It looks similar to creating a new archive, + but with one important exception: if no files are modified + since the last backup, the operation is performed much faster + than the creation of a new archive. + + + -cfg- Ignore configuration file and RAR environment variable. + + + -cl Convert file names to lower case. + + + -cu Convert file names to upper case. + + + -c- Disable comments show. + + + -df Delete files after archiving + + Move files to archive. This switch in combination with + the command "A" performs the same action as the command "M". + + + -dh Open shared files + + Allows to process files opened by other applications + for writing. + + This switch helps if an application allowed read access + to file, but if all types of file access are prohibited, + the file open operation will still fail. + + This option could be dangerous, because it allows + to archive a file, which at the same time is modified + by another application, so use it carefully. + + + -dr Delete files to Recycle Bin + + Delete files after archiving and place them to Recycle Bin. + Available in Windows version only. + + + -ds Do not sort files while adding to a solid archive. + + + -dw Wipe files after archiving + + Delete files after archiving. Before deleting file data + are overwritten by zero bytes to prevent recovery of deleted + files, file is truncated and renamed to temporary name. + + Please be aware that such approach is designed for usual + hard disks, but may fail to overwrite the original file data + on solid state disks, as result of SSD wear leveling technology + and more complicated data addressing. + + + -ed Do not add empty directories + + This switch indicates that directory records are not to be + stored in the created archive. When extracting such archives, + RAR creates non-empty directories based on paths of files + contained in them. Information about empty directories is + lost. All attributes of non-empty directories except a name + (access rights, streams, etc.) will be lost as well, so use + this switch only if you do not need to preserve such information. + + If -ed is used with 'm' command or -df switch, RAR will not + remove empty directories. + + + -en Do not add "end of archive" block + + Not supported for RAR 5.0 archives. + + By default, RAR adds an "end of archive" block to the end of + a new or updated archive. It allows to skip external data like + digital signatures safely, but in some special cases it may be + useful to disable this feature. For example, if an archive + is transferred between two systems via an unreliable link and + at the same time a sender adds new files to it, it may be + important to be sure that the already received file part will + not be modified on the other end between transfer sessions. + + This switch cannot be used with volumes, because the end + of archive block contains information important for correct + volume processing. + + + -ep Exclude paths from names. This switch enables files to be + added to an archive without including the path information. + This could result in multiple files with the same name + existing in the archive. + + If used when extracting, archived paths are ignored + for extracted files, so all files are created in the same + destination directory. + + + -ep1 Exclude base dir from names. Do not store or extract the path + entered in the command line. Ignored if path includes wildcards. + + Examples: + + 1) add all files and directories from 'tmp' directory to archive + 'test', but exclude 'tmp\' from archived names path: + + rar a -ep1 -r test tmp\* + + This is an equivalent to commands: + + cd tmp + rar a -r ..\test + cd .. + + 2) extract files matching images\* mask to dest\ directory, + but remove 'images\' from paths of created files: + + rar x -ep1 data images\* dest\ + + + -ep2 Expand paths to full. Store full file paths (except the drive + letter and leading path separator) when archiving. + + + -ep3 Expand paths to full including the drive letter. + Windows version only. + + This switch stores full file paths including the drive + letter if used when archiving. Drive separators (colons) + are replaced by underscore characters. + + If you use -ep3 when extracting, it will change + underscores back to colons and create unpacked files + in their original directories and disks. If the user + also specified a destination path, it will be ignored. + + It also converts UNC paths from \\server\share to + __server\share when archiving and restores them to + the original state when extracting. + + This switch can help to backup several disks to the same + archive. For example, you may run: + + rar a -ep3 -r backup.rar c:\ d:\ e:\ + + to create backup and: + + rar x -ep3 backup.rar + + to restore it. + + But be cautious and use -ep3 only if you are sure that + extracting archive does not contain any malicious files. + In other words, use it if you have created an archive yourself + or completely trust its author. This switch allows to overwrite + any file in any location on your computer including important + system files and should normally be used only for the purpose + of backup and restore. + + + -e[+] + Specifies file exclude or include attributes mask. + + is a number in the decimal, octal (with leading '0') + or hex (with leading '0x') format. + + By default, without '+' sign before , this switch + defines the exclude mask. So if result of bitwise AND between + and file attributes is nonzero, file would not be + processed. + + If '+' sign is present, it specifies the include mask. + Only those files which have at least one attribute specified + in the mask will be processed. + + In Windows version is also possible to use symbols D, S, H, + A and R instead of a digital mask to denote directories + and files with system, hidden, archive and read-only attributes. + The order in which the attributes are given is not significant. + Unix version supports D and V symbols to define directory + and device attributes. + + It is allowed to specify both -e and -e+ + in the same command line. + + Examples: + + 1) archive only directory names without their contents + + rar a -r -e+d dirs + + 2) do not compress system and hidden files: + + rar a -esh files + + 3) do not extract read-only files: + + rar x -er files + + + -f Freshen files. May be used with archive extraction or creation. + The command string "a -f" is equivalent to the command 'f', you + could also use the switch '-f' with the commands 'm' or 'mf'. If + the switch '-f' is used with the commands 'x' or 'e', then only + old files would be replaced with new versions extracted from the + archive. + + + -hp[p] Encrypt both file data and headers. + + This switch is similar to -p[p], but switch -p encrypts + only file data and leaves other information like file names + visible. This switch encrypts all sensitive archive areas + including file data, file names, sizes, attributes, comments + and other blocks, so it provides a higher security level. + Without a password it is impossible to view even the list of + files in archive encrypted with -hp. + + Example: + + rar a -hpfGzq5yKw secret report.txt + + will add the file report.txt to the encrypted archive + secret.rar using the password 'fGzq5yKw' + + + -ht[b|c] + Select hash type [BLAKE2,CRC32] for file checksum. + + File data integrity in RAR archive is protected by checksums + calculated and stored for every archived file. + + By default, RAR uses CRC32 function to calculate the checksum. + RAR 5.0 archive format also allows to select BLAKE2sp hash + function instead of CRC32. + + Specify -htb switch for BLAKE2sp and -htc for CRC32 hash function. + Since CRC32 is the default algorithm, you may need -htc only to + override -htb in RAR configuration. + + CRC32 output is 32 bit length. While CRC32 properties are + suitable to detect most of unintentional data errors, + it is not reliable enough to verify file data identity. + In other words, if two files have the same CRC32, + it does not guarantee that file contents is the same. + + BLAKE2sp output is 256 bit. Being a cryptographically strong + hash function, it practically guarantees that if two files + have the same value of BLAKE2sp, their contents is the same. + BLAKE2sp error detection property is also more reliable than + in shorter CRC32. + + Since BLAKE2sp output is longer, resulting archive is + slightly larger for -htb switch. + + If archive headers are unencrypted (no switch -hp), checksums + for encrypted RAR 5.0 files are modified using a special + password dependent algorithm, to make impossible guessing + file contents based on checksums. Do not expect such encrypted + file checksums to match usual CRC32 and BLAKE2sp values. + + This switch is supported only by RAR 5.0 format, so you + need to use -ma switch with it. + + You can see checksums of archived files using 'vt' or 'lt' + commands. + + + Example: + + rar a -ma -htb lists.rar *.lst + + will add *.lst to lists.rar using BLAKE2sp for file checksums. + + + -id[c,d,p,q] + Disable messages. + + Switch -idc disables the copyright string. + + Switch -idd disables "Done" string at the end of operation. + + Switch -idp disables the percentage indicator. + + Switch -idq turns on the quiet mode, so only error messages + and questions are displayed. + + It is allowed to use several modifiers at once, + so switch -idcdp is correct. + + + -ieml[.][addr] + Send archive by email. Windows version only. + + Attach an archive created or updated by the add command + to email message. You need to have a MAPI compliant email + client to use this switch (most modern email programs + support MAPI interface). + + You may enter a destination email address directly + in the switch or leave it blank. In the latter case you + will be asked for it by your email program. It is possible + to specify several addresses separated by commas or semicolons. + + If you append a dot character to -ieml, an archive will be + deleted after it was successfully attached to an email. + If the switch is used when creating a multivolume archive, + every volume is attached to a separate email message. + + + -ierr Send all messages to stderr. + + + -ilog[name] + Log errors to file. + + Write error messages to rar.log file. If optional 'name' + parameter is not specified, the log file is created + using the following defaults: + + Unix: .rarlog file in the user's home directory; + Windows: rar.log file in %APPDATA%\WinRAR directory. + + If 'name' parameter includes a file name without path, + RAR will create the log file in the default directory + mentioned above using the specified name. Include both path + and name to 'name' parameter if you wish to change + the location of log file. + + By default, log file uses UTF-16 little endian encoding, + but it can be changed with -scg switch, such as -scag + for native single byte encoding. + + + Example: + + rar a -ilogc:\log\backup.log backup d:\docs + + will create c:\log\backup.log log file in case of errors. + + + -inul Disable all messages. + + + -ioff[n] + Turn PC off after completing an operation. + + Use -ioff or -ioff1 to turn PC off, -ioff2 to hibernate, + -ioff3 to sleep and -ioff4 to restart. Appropriate power features + must be supported by operating system. Windows version only. + + + -isnd Enable sound. + + + -iver Display the version number and quit. You can run just "RAR -iver". + + + -k Lock archive. Any command which intends to change the archive + will be ignored. + + + -kb Keep broken extracted files. + + RAR, by default, deletes files with checksum errors + after extraction. The switch -kb specifies that files + with checksum errors should not be deleted. + + + -log[fmt][=name] + Write names to log file. + + This switch allows to write archive and file names to specified + text file in archiving, extracting, deleting and listing commands. + Its behavior is defined by 'fmt' string, which can include one + or more of following characters: + + A - write archive names to log file. If RAR creates or processes + volumes, all volume names are logged. + + F - write processed file names to log file. It includes + files added to archive and extracted, deleted or listed + files inside of archive. + + P - if log file with specified name is exist, append data + to existing file instead of creating a new one. + + U - write data in Unicode format. + + If neither 'A' nor 'F' are specified, 'A' is assumed. + + 'name' parameter allows to specify the name of log file. + It must be separated from 'fmt' string by '=' character. + If 'name' is not present, RAR will use the default rarinfo.log + file name. + + It is allowed to specify several -log switches in the same + command line. + + This switch can be particularly useful, when you need to process + an archive created with -ag or -v switches in a batch script. + You can specify -loga=arcname.txt when creating an archive + and then read an archive name generated by RAR from arcname.txt + with an appropriate command. For example, in Windows batch file + it can be: set /p name= Set compression method: + + -m0 store do not compress file when adding to archive + -m1 fastest use fastest method (less compressive) + -m2 fast use fast compression method + -m3 normal use normal (default) compression method + -m4 good use good compression method (more + compressive, but slower) + -m5 best use best compression method (slightly more + compressive, but slowest) + + If this switch is not specified, RAR uses -m3 method + (normal compression). + + + -ma[4|5] + Specify a version of archiving format. + + By default RAR creates archives in RAR 5.0 format. + Use -ma4 to create RAR 4.x archives. + Use -ma5 or just -ma in case you need to override -ma4 saved + in configuration and force RAR to use RAR 5.0 format. + + This switch is used only when creating a new archive. + It is ignored when updating an existing archive. + + + -mc + Set advanced compression parameters. + + This switch is intended mainly for benchmarking and + experiments. In the real environment it is usually better + to allow RAR to select optimal parameters automatically. + Please note that improper use of this switch may lead + to very serious performance and compression loss, so use + it only if you clearly understand what you do. + + It has the following syntax: + + -mc[param1][:param2][module][+ or -] + + where is the one character field denoting a part + of the compression algorithm, which has to be configured. + + It may have the following values: + + A - audio compression; + C - true color (RGB) data compression; + D - delta compression; + E - x86 executable compression; + I - Intel Itanium executable compression; + T - text compression. + + RAR 5.0 archive format supports only 'D' and 'E' values. + + '+' sign at the end of switch applies the selected algorithm + module to all processed data, '-' disables the module at all. + If no sign is specified, RAR will choose modules automatically, + based on data and the current compression method. + + Switch -mc- disables all optional modules and allows only + the general compression algorithm. + + and are module dependent parameters + described below. + + + Audio compression, delta compression: + + is a number of byte channels (can be 1 - 31). + RAR splits multibyte channels to bytes, for example, + two 16-bit audio channels are considered by RAR as four + channels one byte each. + + is ignored. + + + x86 Intel executable compression, Intel Itanium executable + compression, true color (RGB) data compression: + + and are ignored. + + + Text compression: + + Text compression algorithm provides noticeably higher compression + on plain text data. But it cannot utilize several CPU cores + efficiently resulting in slower compression time comparing to + general algorithm in multicore and multiprocessor environment. + Also its decompression speed is much slower than in general + algorithm regardless of CPU cores number. This is why + the text compression is disabled by default. You can specify + -mct switch to allow RAR to select this algorithm automatically + for suitable data. Switch -mct+ will force use of the text + compression for all data. + + Switch -mct can also include and , so its + full syntax is -mc[param1][:param2]t[+ or -]. + + is the order of PPM algorithm (can be 2 - 63). + Usually a higher value slightly increases the compression ratio + of redundant data, but only if enough memory is available + to PPM. In case of lack of memory the result may be negative. + Higher order values decrease both compression and decompression + speed. + + is memory in megabytes allocated for PPM (1-128). + Higher values may increase the compression ratio, but note + that PPM uses the equal memory size both to compress and + decompress, so if you allocate too much memory when creating + an archive, other people may have problems when decompressing + it on a computer with less memory installed. Decompression + will be still possible using virtual memory, but it may + become very slow. + + + Examples: + + 1) switch -mc1a+ forces use of 8-bit mono audio compression + for all data. + + 2) switch -mc10:40t+ forces use of text compression + algorithm for all data, sets the compression order to 10 + and allocates 40 MB memory. + + 3) switch -mc12t sets the text compression order to 12, + when the text compression is used, but leaves to RAR to + decide when to use it. + + 4) switches -mct -mcd- allow RAR to apply the text compression + to suitable data and disable the delta compression. + + + -md[k,m,g] + Select the dictionary size. + + Sliding dictionary is the memory area used by compression + algorithm to find and compress repeated data patterns. + If size of file being compressed (or total files size in case + of solid archive) is larger than dictionary size, increasing + the dictionary is likely to increase the compression ratio, + reduce the archiving speed and increase memory requirements. + + For RAR 4.x archive format the dictionary size can be: + 64 KB, 128 KB, 256 KB, 512 KB, 1 MB, 2 MB, 4 MB. + + For RAR 5.0 archive format the dictionary size can be: + 128 KB, 256 KB, 512 KB, 1 MB, 2 MB, 4 MB, 8 MB, 16 MB, + 32 MB, 64 MB, 128 MB, 256 MB, 512 MB, 1 GB. + + You can use 'k', 'm' and 'g' modifiers to specify the size + in kilo-, mega- and gigabytes, like -md64m for 64 MB dictionary. + If no modifier is specified, megabytes are assumed, + so -md64m and -md64 are equal. + + When archiving, RAR needs about 6x memory of specified + dictionary size, so 512 MB and 1 GB sizes are available + in 64 bit RAR version only. When extracting, slightly more + than a single dictionary size is allocated, so both 32 + and 64 bit versions can unpack archives with all dictionaries + up to and including 1 GB. + + If size of all source files for solid archive or size of largest + source file for non-solid archive is at least twice less than + dictionary size, RAR can reduce the dictionary size. It helps + to lower memory usage without decreasing compression. + + Default sliding dictionary size is 4 MB for RAR 4.x + and 32 MB for RAR 5.0 archive format. + + Example: + + RAR a -s -ma -md128 lib *.dll + + create a solid archive in RAR 5.0 format with 128 MB dictionary. + + + -ms[list] + Specify file types to store. + + Specify file types, which will be stored without compression. + This switch may be used to store already compressed files, + which helps to increase archiving speed without noticeable + loss in the compression ratio. + + Optional parameter defines the list of file extensions + separated by semicolons. For example, -msrar;zip;jpg will + force RAR to store without compression all RAR and ZIP + archives and JPG images. It is also allowed to specify wildcard + file masks in the list, so -ms*.rar;*.zip;*.jpg will work too. + Several -ms switches are permitted, such as -msrar -mszip + instead of -msrar;zip. + + In Unix -ms switch containing several file types needs to be + enclosed in quote marks. It protects semicolons from processing + by Unix shell. Another solution is to use individual -ms + switches for every file type. + + If is not specified, -ms switch will use the default + set of extensions, which includes the following file types: + + 7z, ace, arj, bz2, cab, gz, jpeg, jpg, lha, lz, lzh, mp3, + rar, taz, tgz, xz, z, zip, zipx + + + -mt + Set the number of threads. + + parameter can take values from 1 to 32. + It defines the recommended maximum number of active threads + for compression algorithm also as for other RAR modules, + which can start several threads. While RAR attempts to follow + this recommendation, sometimes the real number of active + threads can exceed the specified value. + + Change of parameter slightly affects the compression + ratio, so archives created with different -mt switches + will not be exactly the same even if all other compression + settings are equal. + + If -mt switch is not specified, RAR will try to detect + the number of available processors and select the optimal + number of threads automatically. + + + -n Additionally filter included files. + + Apply the mask as an additional filter to included file list. + Wildcards can be used both in the name and file parts of + file mask. See switch -x description for details on mask syntax. + You can specify the switch '-n' several times. + + This switch does not replace usual file masks, which still + need to be entered in the command line. It is an additional + filter limiting processed files only to those matching + the include mask specified in -n switch. It can help to + reduce the command line length sometimes. + + For example, if you need to compress all *.txt and *.lst + files in directories Project and Info, you can enter: + + rar a -r text Project\*.txt Project\*.lst Info\*.txt Info\*.lst + + or using the switch -n: + + rar a -r -n*.txt -n*.lst text Project Info + + + -n@ Read additional filter masks from list file. + + Similar to -n switch, but reads filter masks from + the list file. If you use -n@ without the list file name + parameter, it will read filter masks from stdin. + + This switch does not replace usual list files or file masks, + which still need to be entered in the command line. + It is an additional filter limiting processed files only to + those matching the include mask specified in -n switch. + + Example: + + rar a -r -n@inclist.txt text Project Info @listfile.txt + + + -oc Set NTFS Compressed attribute. Windows version only. + + This switch allows to restore NTFS Compressed attribute + when extracting files. RAR saves Compressed file attributes + when creating an archive, but does not restore them unless + -oc switch is specified. + + -oh Save hard links as the link instead of the file. + + If archiving files include several hard links, store the first + archived hard link as usual file and the rest of hard links + in the same set as links to this first file. When extracting + such files, RAR will create hard links instead of usual files. + + You must not delete or rename the first hard link in archive + after the archive was created, because it will make extraction + of following links impossible. If you modify the first link, + all following links will also have the modified contents + after extracting. Extraction command must involve the first + hard link to create following hard links successfully. + + This switch is supported only by RAR 5.0 format. + + + -oi[0-4][:] + Save identical files as references. + + Switch -oi0 (or just -oi-) turns off identical file processing, + so such files are compressed as usual files. It can be used to + override another -oi value stored in RAR configuration. + + If -oi1 (or just -oi) is specified, RAR analyzes the file + contents before starting archiving. If several identical files + are found, the first file in the set is saved as usual file + and all following files are saved as references to this first + file. It allows to reduce the archive size, but applies some + restrictions to resulting archive. You must not delete or rename + the first identical file in archive after the archive was + created, because it will make extraction of following files + using it as a reference impossible. If you modify the first file, + following files will also have the modified contents + after extracting. Extraction command must involve the first file + to create following files successfully. + + It is recommended to use -oi only if you compress a lot of + identical files, will not modify an archive later and will + extract an archive entirely, without necessity to unpack or skip + individual files. If all identical files are small enough to + fit into compression dictionary specified with -md switch, + switch -s can provide more flexible solution than -oi. + + Switch -oi2 is similar to -oi1, with the only difference: + it will display names of found identical files before starting + archiving. + + Switches -oi3 and -oi4 allow to utilize RAR to generate + lists of identical files. Though you still need to provide + a dummy archive name to make the command syntax valid, + in this mode an archive is not created and nothing is compressed. + If -oi3 is used, file sizes and names are displayed + and every identical file group is separated with empty line. + Switch -oi4 displays bare file names and skips the first + identical file in every file group, so only duplicates + are listed. + + Optional value allows to define the minimum file size + threshold. Files smaller than are not analyzed + and not considered as identical. If this parameter is not + present, it is assumed to be 64 KB by default. Selecting + too small may increase the time required to detect + identical files. + + Switches -oi1 and -oi2 are supported only by RAR 5.0 format. + + Examples: + + 1) rar a -oi -ma archive + + Save contents of current directory to archive.rar. + Store identical files as references. + + 2) rar a -oi3:1000000 -r dummy c:\photo\*.jpg + + List all duplicate *.jpg files lather than 1000000 bytes + found in c:\photo and its subdirectories. + + + -ol[a] Process symbolic links as the link [absolute paths] + + Save symbolic links as links, so file contents is not archived. + In Windows version it also saves reparse points as links. + Such archive entries are restored as symbolic links + or reparse points when extracting. + + Supported both for RAR 4.x and RAR 5.0 archives in RAR for Unix + and only for RAR 5.0 archives in RAR for Windows. + + In Windows you may need to run RAR as administrator to create + symbolic links when extracting. + + RAR adds all links regardless of target when archiving with + -ol switch. When extracting, by default, RAR skips symbolic + links pointing outside of destination directory, with absolute + paths, excessive number of ".." in link target or with other + potentially dangerous link parameters. You can enable extracting + such links with -ola switch. + + Links pointing to directories outside of extraction destination + directory can present a security risk. Enable their extraction + only if you are sure that archive contents is safe, + such as your own backup. + + Links that are considered safe by RAR are extracted always + regardless of -ol or -ola switch. + + + -oni Allow potentially incompatible names. + + While NTFS file system permits file names with trailing spaces + and dots, a lot of Windows programs fail to process such names + correctly. If this switch is not specified, RAR removes trailing + spaces and dots, if any, from file names when extracting. + Specify this switch if you need to extract such names as is. + + Windows version only. + + + -or Rename extracted files automatically if file with the same name + already exists. Renamed file will get the name like + 'filename(N).txt', where 'filename.txt' is the original file + name and 'N' is a number starting from 1 and incrementing + if file exists. + + + -os Save NTFS streams. Windows version only. + + This switch has meaning only for NTFS file system and allows + to save alternate data streams associated with a file. + You may need to specify it when archiving if you use software + storing data in alternative streams and wish to preserve + these streams. + + Streams are not saved for NTFS encrypted files. + + + -ow Use this switch when archiving to save file security + information and when extracting to restore it. + + Unix RAR version saves file owner and group when using + this switch. + + Windows version stores owner, group, file permissions and + audit information, but only if you have necessary privileges + to read them. Note that only NTFS file system supports + file based security under Windows. + + + -o[+|-] Set the overwrite mode. Can be used both when extracting + and updating archived files. Following modes are available: + + -o Ask before overwrite + (default for extracting files); + + -o+ Overwrite all + (default for updating archived files); + + -o- Skip existing files. + + + -p[pwd] Set password + + Set password to encrypt files when archiving + or to decrypt when extracting. + + Passwords are case-sensitive. Maximum password length is + 127 characters. Longer passwords are truncated to this length. + If you omit a password in command line, you will be prompted + with "Enter password" message. You can also use file redirection + or pipe to specify a password if parameter is missing. + + Examples: + + 1) rar a -psecret texts.rar *.txt + + add files *.txt and encrypt them with password "secret". + + 2) rar -p texts.rar *.txt < psw.txt + + set contents of psw.txt file as a password. + + + -p- Do not query password + + Do not query password for encrypted files when extracting. + Actually you can specify any invalid password to suppress + the password prompt and force RAR to issue 'incorrect password' + message when extracting an encrypted file. This switch just + sets '-' as a password. + + + -qo[-|+] + Add quick open information [none|force] + + RAR archives store every file header containing information + such as file name, time, size and attributes immediately + before data of described file. This approach is more damage + resistant than storing all file headers in a single continuous + block, which if broken or truncated would destroy the entire + archive contents. But while being more reliable, such file + headers scattered around the entire archive are slower to + access if we need to quickly open the archive contents + in a shell like WinRAR graphical interface. + + To improve archive open speed and still not make the entire + archive dependent on a single damaged block, RAR 5.0 archives + can include an optional quick open record. Such record is + added to the end of archive and contains copies of file names + and other file information stored in a single continuous block + additionaly to normal file headers inside of archive. + Since the block is continuous, its contents can be read quickly, + without necessity to perform a lot of disk seek operations. + Every file header in this block is protected with a checksum. + If RAR detects that quick open information is damaged, + it resorts to reading individual headers from inside of archive, + so damage resistance is not lessened. + + Quick open record contains the full copy of file header, + which may be several tens or hundreds of bytes per file, + increasing the archive size by the same amount. This size + increase is most noticeable for many small files, when file + data size is comparable to file header. So by default, + if no -qo is specified or -qo without parameter is used, + RAR stores copies of headers only for relatively large files + and continues to use local headers for smaller files. + Concrete file size threshold can depend on RAR version. + Such approach provides a reasonable open speed to archive size + tradeoff. If you prefer to have the maximum archive open speed + regardless of size, you can use -qo+ to store copies of all + file headers. If you need to have the smallest possible archive + and do not care about archive open speed in different programs, + specify -qo- to exclude the quick open information completely. + + If you wish to measure the performance effect of this switch, + be sure that archive contents is not stored in a disk cache. + No real disk seeks are performed for cached archive file, + making access to file headers fast even without quick open + record. + + + -r Recurse subdirectories. May be used with commands: + a, u, f, m, x, e, t, p, v, l, c, cf and s. + + When used with the commands 'a', 'u', 'f', 'm' will process + files in all sub-directories as well as the current working + directory. + + When used with the commands x, e, t, p, v, l, c, cf or s will + process all archives in sub-directories as well as the current + working directory. + + + -r- Disable recursion. + + Even without -r switch RAR can enable the recursion + automatically in some situations. Switch -r- prohibits it. + + If you specify a directory name when archiving and if such + name does not include wildcards, by default RAR adds + the directory contents even if switch -r is not specified. + Also RAR automatically enables the recursion if disk root + without wildcards is specified as a file mask. Switch -r- + disables such behavior. + + For example: + + rar a -r- arc dirname + + command will add only the empty 'dirname' directory and ignore + its contents. Following command: + + rar a -r- arc c:\ + + will compress contents of root c: directory only and + will not recurse into subdirectories. + + + -r0 Similar to -r, but when used with the commands 'a', 'u', 'f', + 'm' will recurse into subdirectories only for those file masks, + which include wildcard characters '*' and '?'. + + This switch works only for file names. Directory names without + a file name part, such as 'dirname', are not affected by -r0 + and their contents is added to archive completely unless -r- + switch is specified. + + Example: + + rar a -r0 docs.rar *.doc readme.txt + + add *.doc files from the current directory and its subdirectories + and readme.txt only from the current directory to docs.rar + archive. In case of usual -r switch, RAR would search for + readme.txt in subdirectories too. + + + -ri

    [:] + Set priority and sleep time. Available only in RAR for Windows. + This switch regulates system load by RAR in multitasking + environment. Possible task priority

    values are 0 - 15. + + If

    is 0, RAR uses the default task priority. +

    equal to 1 sets the lowest possible priority, + 15 - the highest possible. + + Sleep time is a value from 0 to 1000 (milliseconds). + This is a period of time that RAR gives back to the system + after read or write operations while compressing or extracting. + Non-zero may be useful if you need to reduce system load + even more than can be achieved with

    parameter. + + Example: + + execute RAR with default priority and 10 ms sleep time: + + rar a -ri0:10 backup *.* + + + -rr[N] Add data recovery record. This switch is used when creating + or modifying an archive to add a data recovery record to + the archive. See the 'rr[N]' command description for details. + + + -rv[N] Create recovery volumes. This switch is used when creating + a multivolume archive to generate recovery volumes. + See the 'rv[N]' command description for details. + + + -s Create solid archive. A solid archive is an archive packed by + a special compression method, which treats several or all + files, within the archive, as one continuous data stream. + + Solid archiving significantly increases compression, when + adding a large number of small, similar files. But it also + has a few important disadvantages: slower updating of existing + solid archives, slower access to individual files, lower + damage resistance. + + Usually files in a solid archive are sorted by extension. + But it is possible to disable sorting with -ds switch or set + an alternative file order using a special file, rarfiles.lst. + + Example: + + create solid archive sources.rar with 512 KB dictionary, + recursing all directories, starting with the current directory. + Add only .asm files: + + rar a -s -md512 sources.rar *.asm -r + + + -s Create solid groups using file count + + Similar to -s, but resets solid statistics after compressing + files. Usually decreases compression, but also + decreases losses in case of solid archive damages. + + + -sc[objects] + Specify the character set. + + 'Charset' parameter is mandatory and can have one + of the following values: + + U - Unicode UTF-16; + F - Unicode UTF-8; + A - the native single byte encoding, which is ANSI + for Windows version; + O - OEM (DOS) encoding. Windows version only. + + Endianness of source UTF-16 files, such as list files + or comments, is detected based on the byte order mark. + If byte order mask is missing, little endian encoding is assumed. + + 'Objects' parameter is optional and can have one of + the following values: + + G - log files produced by -ilog switch; + L - list files; + C - comment files; + R - messages sent to redirected files and pipes (Windows only). + + It is allowed to specify more than one object, for example, + -scolc. If 'objects' parameter is missing, 'charset' is applied + to all objects. + + This switch allows to specify the character set for files + in -z[file] switch, list files and comment files written by + "cw" command. + + Examples: + + 1) rar a -scol data @list + + Read names contained in 'list' using OEM encoding. + + 2) rar c -scuc -zcomment.txt data + + Read comment.txt as Unicode file. + + 3) rar cw -scuc data comment.txt + + Write comment.txt as Unicode file. + + 4) rar lb -scur data > list.txt + + Save archived file names in data.rar to list.txt in Unicode. + + + -se Create solid groups using extension + + Similar to -s, but resets solid statistics if file extension + is changed. Usually decreases compression, but also + decreases losses from solid archive damages. + + + -sfx[name] + Create SFX archives. If this switch is used when creating a new + archive, a Self-Extracting archive (using a module in file + default.sfx or specified in the switch) would be created. + In the Windows version default.sfx should be placed in the + same directory as the rar.exe, in Unix - in the user's + home directory, in /usr/lib or /usr/local/lib. + + Example: + + rar a -sfxwincon.sfx myinst + + create SelF-eXtracting (SFX) archive using wincon.sfx + SFX-module. + + + -si[name] + Read data from stdin (standard input), when creating + an archive. Optional 'name' parameter allows to specify + a file name of compressed stdin data in the created + archive. If this parameter is missing, the name will be + set to 'stdin'. + + Example: + + type Tree.Far | rar a -siTree.Far tree.rar + + will compress 'type Tree.Far' output as 'Tree.Far' file. + + + -sl + Process only those files, which size is less than + specified in parameter of this switch. + Parameter must be specified in bytes. + + + -sm + Process only those files, which size is more than + specified in parameter of this switch. + Parameter must be specified in bytes. + + + -sv Create independent solid volumes + + By default RAR tries to reset solid statistics as soon + as possible when starting a new volume, but only + if enough data was packed after a previous reset + (at least a few megabytes). + + This switch forces RAR to ignore packed data size and attempt + to reset statistics for volumes of any size. It decreases + compression, but increases chances to extract a part of data + if one of several solid volumes in a volume set was lost + or damaged. + + Note that sometimes RAR cannot reset statistics even + using this switch. For example, it cannot be done when + compressing one large file split between several volumes. + RAR is able to reset solid statistics only between separate + files, but not inside of single file. + + Ignored if used when creating a non-volume archive. + + + -sv- Create dependent solid volumes + + Disables to reset solid statistics between volumes. + + It slightly increases compression, but significantly reduces + chances to extract a part of data if one of several solid + volumes in a volume set was lost or damaged. + + Ignored if used when creating a non-volume archive. + + + -s- Disable solid archiving + + + -t Test files after archiving. This switch is especially + useful in combination with the move command, so files will be + deleted only if the archive had been successfully tested. + + + -ta + Process only files modified after the specified date. + + Format of the date string is YYYYMMDDHHMMSS. + It is allowed to insert separators like '-' or ':' to + the date string and omit trailing fields. For example, + the following switch is correct: -ta2001-11-20 + Internally it will be expanded to -ta20011120000000 + and treated as "files modified after 0 hour 0 minutes + 0 seconds of 20 November 2001". + + + -tb + Process only files modified before the specified date. + Format of the switch is the same as -ta. + + + -tk Keep original archive date. Prevents RAR from modifying the + archive date when changing an archive. + + + -tl Set archive time to newest file. Forces RAR to set the date of a + changed archive to the date of the newest file in the archive. + + + -tn

    Assign work directory as

    . This switch may be used to assign + the directory for temporary files. + + + -x Exclude the specified file or directory. Wildcards can be + used in both the name and path parts of file mask. You can + specify the switch '-x' several times to define several + exclusion masks in the same command line. + + If mask contains wildcards, it applies to files in current + directory and its subdirectories. It is not recursive without + wildcards, so "filename" mask will exclude 'filename' file + only in current directory when archiving or in root archive + directory when extracting. + + Use "*\filename" syntax to exclude "filename" recursively + in all directories. + + If you know the exact path to file, you can use "path\filename" + syntax to exclude only this copy of "filename". If you use + -xpath\filename syntax when unpacking an archive, "path" must be + the path inside of archive, not the file path on the disk after + unpacking. + + By default, masks containing wildcards are applied only to files. + If you need a mask with wildcards to exclude several directories, + use the special syntax for directory exclusion masks. + Such masks must have the trailing path separator character + ('\' for Windows and '/' for Unix). For example, "*tmp*\" mask + will exclude all directories matching "*tmp*" and "*\tmp\" will + exclude all 'tmp' directories. Since wildcards are present, + both masks will be applied to contents of current directory + and all its subdirectories. + + If you wish to exclude only one directory, specify the exact + name of directory including the absolute or relative path + without any wildcards. In this case you do not need to append + the path separator to mask, which is required only for directory + exclusion masks containing wildcards to distinguish them + from file exclusion masks. + + Examples: + + 1) rar a -r -x*.jpg -x*.avi rawfiles + + compress all files except *.jpg and *.avi in current directory + and its subdirectories; + + 2) rar a -r -x*\temp\ savec c:\* + + compress all files on the disk c: except 'temp' directories + and files inside of 'temp' directories; + + 3) rar x -x*.txt docs + + extract all files except *.txt from docs.rar. + + + -x@ Exclude files listed in the specified list file. If you use -x@ + without the list file name parameter, it will read file names + from stdin. + + Example: + + rar a -x@exlist.txt arch *.exe + + + -y Assume Yes on all queries. + + + -z[file] + Read archive comment from file . + + This switch can be used with any archive modification command + to read the archive comment from file and add it to archive. + Use with -sc switch if you need to specify the character set + for comment text file. If is not present, comment + is read from stdin. + + + + Limitations + ~~~~~~~~~~~ + + Command limitations: + + Commands 'd','u','f','c','cf' will not operate with archive volumes. + + Command 'a' cannot be used to update an archive volume, only to + create a new one. + + + Exit values + ~~~~~~~~~~~ + + RAR exits with a zero code (0) in case of successful operation. + Non-zero exit code indicates some kind of error: + + Code Description + + 0 Successful operation. + 1 Non fatal error(s) occurred. + 2 A fatal error occurred. + 3 Invalid checksum. Data is damaged. + 4 Attempt to modify an archive locked by 'k' command. + 5 Write error. + 6 File open error. + 7 Wrong command line option. + 8 Not enough memory. + 9 File create error + 10 No files matching the specified mask and options were found. + 11 Wrong password. + 255 User stopped the process. + + + Glossary + ~~~~~~~~ + + Archive Special file containing one or more files optionally + compressed and/or encrypted. + + Compression A method of encoding data to reduce it's size. + + Checksum Value calculating for data block or file and allowing to + check data or file validity. + + SFX archive SelF-eXtracting archive. Archive in executable format, + consisting of self-extracting module followed by + compressed data. It is enough to run such executable to + start extraction. + + Solid An archive packed using a special compression method which + sees all files as one continuous data stream. Particularly + advantageous when packing a large number of small files. + + Volume Part of a split archive. Splitting an archive to volumes + allows storing them on several removable disks. + Solid volumes must be extracted starting from first + volume in sequence. + + + + Copyrights + + (c) 1993-2018 Alexander Roshal + + + diff --git a/rar/rarfiles.lst b/rar/rarfiles.lst new file mode 100644 index 000000000..22b5417f5 --- /dev/null +++ b/rar/rarfiles.lst @@ -0,0 +1,91 @@ +; File order list for solid archiving +; +; Here you may modify the file list which tells RAR the order in which +; to add files to a solid archive. +; +; This file may contain file names, wildcards and a special entry - $default. +; The default entry defines the position in the order list for files not +; matched with other entries in this file. Lines beginning with the semicolon +; symbol ';' are considered as comments and not processed. +; +; Place this file in the same directory as RAR.EXE. +; +; Tips to provide improved compression and speed of operation: +; +; - files containing similar information should be grouped together in the +; archive if possible; +; - frequently accessed files should be placed at the beginning. +; +file_id.diz +descript.ion +read.* +readme.* +*.nfo +*.doc +*.txt +*.htm +*.html +*.shtml +*.css +*.xsl +*.xml +*.js +*.php +*.lst +*.log +*.ini +*.bat +*.cmd +*.h +*.hpp +*.c +*.cpp +*.java +*.asm +*.bas +*.bak +*.cue +*.rtf +*.hlp +*.inf +*.com +*.exe +*.dll +*.obj +*.lib +*.sys +*.drv +*.bin +*.bmp +*.wav +$default +*.mp3 +*.mp4 +*.m4a +*.mov +*.avi +*.wmv +*.wma +*.gif +*.tif +*.png +*.jpg +*.chm +*.pdf +*.cab +*.7z +*.arj +*.ha +*.lz +*.lzh +*.rar +*.zip +*.gz +*.bz2 +*.xz +*.jar +*.fla +*.flac +*.ape +*.bik +*.mkv diff --git a/rar/readme.txt b/rar/readme.txt new file mode 100644 index 000000000..4cba920b3 --- /dev/null +++ b/rar/readme.txt @@ -0,0 +1,17 @@ + RAR archiver: + + * RAR introduces an original compression algorithm. It provides + high compression ratios on executable files, object libraries, + large text files, etc. + + * RAR provides functionality for creating a 'solid' archive, which + can raise the compression ratio by 10% - 50% over more common + methods, particularly when packing large numbers of small files. + + * RAR offers the ability to create and change SFX archives using + default and external SFX modules. + + * RAR offers the ability to create a multi-volume archive as SFX. + + * RAR offers a number of service functions, such as encrypting files, + adding archive comments and repairing physically damaged archives. diff --git a/rar/unrar b/rar/unrar new file mode 100755 index 0000000000000000000000000000000000000000..0519bb1d8a02710c99099f4b62b862833c5869cf GIT binary patch literal 307352 zcmb@v4SW^F)jz&B2@nw6sHpLkt6tks6%&g}6l*Rdu+g9hs8mp10tm`WO6~;|l*GM} zte0z3U#hjXQneNzZN=h)2pSSz60zDwe8ZPYM1@%{FR3pO5Y7MlJ-d6eq1-Zqj*H z|Hk3ddum!x@>!3(w*1b?Z~5I6!F$jAUIJ?BMz5uyAjlr;<^0~Mm-Bn4p7(5Vi+fM6 ze=N=a#<=|(lTieSa1kF`vHaWlWLf@3ei@m<^wxlb*&1+4de6v7QcUxnUcKv3k9_{O zKabB*ZhL9v;_{#GK0WDNICIA2O9oyzbIJuXXUvW+xM0DcOD?!%;DE|G11^$&=YSEG z9e&OA!jdOP9T0i$i~pzt%->Qn=-fY+#S#w2KdObe>Oxzb?(V6sE!dI1QbjrosO$4gbBBo>!;Am!zS;C=LI|q`}{p zhW^ep_=Rccyqc!`>1q1gHx2(!q$$5J4SswYd|ev+Non-IH4Xp!)6n^A8vb{tq2DbH z9eN)}v-5q^@H0M5`GPd#GAa$7Xd3*mG<^OwP5H7ka=0*!9Ii-1|C}`ZUzG+wC=LF; zH2gf7Ms7b()30;W(5Xzr|0`+A|20kdKpOt*)5z_aH297*{aTWyJpKKn>D%pT@N?40 zXGfZT?MYMqlr;UFm4;5=H07U4!{>8p@btyc(oWU1^g8p>mb6kpkROFU) z9v|XCd`tf#2jTwP&E>zyrIYLBV&794nNoh#RAmCsalz&5cZ$piQ`H z-h@$8Z=F#YnL2mq%t@7%Q!BNK$n?2WCrz19j(;OlQ{ZiLX3W+m+%$XAEc`oV(#UzB zRlZ=-1eBgLAE;|aM+zsS+N7B?=ad&0lpz16F*jUOkk4WZCQY6(ub|*kq}j@Z$Q>0^ zC(M{VZBB_xWiptUJ)wM3qRmEn!qnN(SzW8$x?sVCim7ue=ggiob4KKj3G?!$ zrk@QUX3r&H)U7Rp=LHX2*$c#DYpJYs(jou%fm5b1w${9!L#Z6OYLL`v( zEJx5t-CABgp^{L6HsSi&^JjqSsHv6FSyNfel`^yQwfS>r_#|CE2PJ3Bo)JmOepWOx zb-{!wQ!68L=iG4wwo5^&I)9R{s$jgD(<<+nU5-vpojZ5-oCz4GNz!X?#GPhypPoqfr`2^VS8B6Fj& zQD!Pi&zf8*4OVL9Gv`!JoibxCd2(AoU8aO_v=^CFemm0>rcIhLQ=4@=3uD@F3a~Z= z39h3RP*c#Df(aCvC5vyN#bIp1glP*XD|8)nZk_AUnKCCD0Rf86?Jlc9%F{$D(gcXia{5XJ zFt4@ftVxx(Ljtqr%$thZuH0N{&Ged~*eNLyCKz&>nG|u$dBs3<>g;(G9Q0Khq+W0+ zP-of5xdTsUYyy%srC-cgBZG>uG76@p}A_|Tyf zeu}9-bnMvhkkSbS1AeLvFDo4a5a@wUdcs8mE*fxgD*aQ$s-z6?m!?veq*DHR17ZI& z@V`v?H!GDQj{ob1C>5Xl^+1HHhd?at;90^cN!X!6I1~RPh7>#h*F9CstDS*}YiGWb z>gARqwQM(+blA2Bvt)OHy!M&XNtG@2(2ha-oj9+ZY?n&5Q0xJy2jX!7?GCJsUL0oR zkM1}|L;c^tpWrV5>d2P-d_3QI;dbO?Yk$DMtP|<~0G9S1+Vj5hzjo=deDu^AJsI&^ z?UtW=3gIkmW2$^NtqNi$E&fiPF{6*B_0n40@+S%0Q~St;BT~Pc_Js@gmHbSt&4r!z zGNe7yYkk7;OBggffe7#C`WdJuaY+yD`76ZJ7xI3dze4<79uiN_Um^Z(AHLN`|4tv? z^J7?ku@CS0CB)z3!+U-e@e6%;ZJE=r9>8&YykE8t?`W@+ljFm~HB0?+eR#N9sbA2C zXWQN{&xiL1V)K1?^5p#n`S6|($h;yS9tx5A89uxl!k4^}K0FjO^&9KM_fBCoZK4kk zg-ZRV`|!u6u$ork!!xGs{TBG}o{loF%7;JBD~xBY5AWYM)cNoy`pQ4*!@EZTlDo`@ zKiOA)xeuT6VUfSWhd;$vezgw|uRir_@ZnEOVG)D(;ZOJBTYUI4eE6+C{Fy#{s}Iju zuJ=cg+_ z;RpHft9|%FAHKndzs!e!-G{&2hi~!W2mA0_efTSU_*NhOXFk00;ji@J+kE&UAHLm( z5Bu=ilb!lM#D~xJ;fMP0IX--`51;G9m-z5OAAXn*pXb95_u=z>c*BPuhhO2tdodekulC`8?knHm!{6k?zwX12 z^Wj^3`0+mcRv-RmAHLOxzr}}FKKuk9zRic9=)<@B@RNLa?Ws=vpX|eD`|#yHe2x$A z)O0d)efX)q@{0twy$cL}?;SC@DHXnYZ4}ZH4Kh}qz z>BCR-;b-~q(|!2aK754_KgWk(;KNt=@KrwiFMRk~AAYV6U+2SD`tXnX@DU$=nGYZJ z;g|dH^L+RfKKy(iezgz3z=t=?-P!7I@Kn`Ja7)$2h~pdP#_SCp7yr+qkk)bT^Y~Zq zSA-N{8Bx2n1HW^hBpd)KyG7u~2-DTJ8w7rUFkNhWg~0a_&LX@_;Cl$urMBw?zLPLr zX}e0`xrD)(W>*M&8)5LM*%JkxOqedSJyPJC2-8)ziv%7;m@cxNFYr}_=^EQXfrk*L zOKj%|d>LW7!nP*xMTF@B+igDpaqdqD)AhAm1wNZFU0%CI;8O|H)wLT0KAteQTJ{Qo zdlBwSc$vT%gy{m?bpjt+2$-&~T_x~Wgz56y6$0-fOjp;QDDZZ|baCyG0)Ir9uB}}p z@D{>!Y3+Q0-ylp^)(#51o-kclJ4fI(gz384n!tZ0OqbPe`=0&(AHqSxtpYzu_$

      LW7j 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 z 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ͷof+CJ$Sp zL*$LmNO#*9HkQv6AX1;&t{rDgw+KSK`S5AvX?$^=hMB!uQ#MZu9faFQw%Jdp)a={p zM&u^*l*4jUwe;nuQVp1zc^jpqq;16+thn1&oX(26ZACdt^R^YDwq$~In)FlATvGI4NJ zQPQ%>ZiDoDt(JbZWWhGX8ZU{RzT_qTW z20rDC4L%w>e9mC#*y-lzR{~o|MOfaJmPf+=K8Y5bWlT-5wz1 zG_N-029`u*AR1Vwd$7tqSY;lpGdx(Q1B=1Ee7(i@Gu;B2OklJ6{tY{tC(L^|Abt~OmD1VaMaTET5P`E>7>t|leFSaN__b~cG* z0-a5w87kM=B(lLTx(Q@ENs{BYorPxz&;Q)RTPFl_o9NGigDezUobV)tyS_h$SVlHc0m*lN0t>`y5hr4~Ke|zIXhsEi zFWtAWV=ke1<9%IT6Z@U3+@l=P&M00ZU*zC5XtiWdBy8adqx5qkx6O*B0#=xPkm5DI zIXg6bG;eXpIgosH9Orh<;!tp$;r1i=U3>wr3|@xhKjj4G+Y{inb597Gr$f%VER=b* zxbQ$`Z$V+tc9$(ylv-Bk%;JEjB$v~7r)W$VQ2K7H$K+I?r(wOZ_x8J^B_X5LDj5>4I3qInVTLVc?^np#+rDoriH!{$&tWU>5x!Ompz zqj~XSXD}M+Deul?PP3iv$Y3ne6H6}-{?FV0;c7ND?DD?M`qK!rgT1!(%*=GlIK?>6 z#GEaW-F4}e=gVtn*5_N@(eh`2d75qgDe{aRY>#2vCwTbc^ivTfVQ8`49--9r`O)%B zEV$Fow4WAvfk4}On)8XM^L#9_CDWCEar(itlp|KYJ$Q&9=b32mMZ$we>`VvHc~t3H zXLmHRu`a#5TnULQf0}{`vYjnDro6xH5}l8 zPMVRrD{O#mNI!Ui;xGgl6*SJ$I;i0@dXZxbB?fn=uB))NfNBE*YUpu}Xz8;x#>-rh z3`y+rO|%MkG>>3A_(JNsvz4QzRDj8`gXgXi4;3Mftr{-EY zA$8qUYfJj6$$mw4nRN~>_;tTrr_jcIn2a8n!uj#$*UgPcFE7ogo*4vRcqJXNtCA>9SeM1<^XEvaFarfDg=M)$D zv)$WCf?W)N^GrEVXYa;Xnd(cJH+1|S`8d+bLZYfh7 zqk+)`+HHpi>@svw(F6y`+v&^CngmDaY!Z~}k-JPg2|{_Mjr6RSbyV+O3nH%#ck{nL z%1=);GGIrx_j1?qWjb5{?cViJU^inma)^3QR#-HWp<4w1G~)JoB%oBRr}rsFBggOd z$n*3!Njpv>aG&!Gty3&#B>NN*Wsj{p%KCjrlrG+2vo9CfZ})b9j1x>zfZd=KKct-D zsXEca1{$JavCl_>+$POF6RVh^AUdNV+!Ko&vf(qmnHlNj1qLi4`@SeN)NMyJJV28U z={8WccR?$MqcF;7xKBxT0I4`u_Y1q#7dnRif!;4?V-3F{-%R>6)&_82Ie2 z05rh(ztyV`k!nDn2Im0}&W6Yf%octGu+`D3?_lH*zg|WA{Ynz03T{=+_}{0R5!OT4 z2KxU4YT2ie?LqFL4ZR(-ps%;xPqicc)I`-R2PpCkU^b|60!4aKtDQo-I)hMQMc%FH zr^b!Q+Gnyt8gD6Q42BG(ejpL_Dx*0T>15oJS8dq=3jsLe7x+G0^{(RjAcu=a0N!8# z8>ExMARMUBH;SP?<^?LUQC-9M_Y-XpR~P}N$AH;N)~&-$Q<(<;KI-wB4kzyy{Jg^D z4wJW!yuxs(g)N6o+R{&fiSB=n92-8f&l^YGb2E5H6Xi3fZGT797qoF zMR33pp>5^Nyqo5V!i4!<5q0k^V&sYNhF-Wgfg489Snz3b?W20Z4~gmbAPIh7BhLghAK(HBP%EIfXeX;VM z$RTI<#p&N1=hYNQy%}bV@$$yXUx@Jxs=!mHeKXV1{DAXkynUIC`4o7X9dw;PM+*^H zo~Cxu^4*1RsTsbI5Dh-B27Ms*-5-nWHE7O&(ef9Bym#x;51wR-VIRKG2zasb&355t z3fNGGfMGkxaO?ApFm-Ks7o7$xvLotKc=HxI4xW9gAi(X_fxBXb88X3VVu&H-FFHU7D!$NO1Le&8XJ$8hC7p#4Jhyh%ofzppi`AM%{+wF2Bnv92bgwHL^sj8C5 zDT-vl_ua@&es{qhiSF${45ev#w zN){_5QwJ_|eLC{tBc|Q(IKxktSE?L|GNzW1_o6(v>|_vdSV)+hcKJ5D{19z2fHuR_ zlrk2S{E#p6;K3eSy}#Km@36~zNo9l*n#c%q`d!=eL zDECvI>;mEnOr4;Y4KaEYHnY{HlgkI~Lc?|?;cu|ZnW=^(82U*pf}h7I0@m)!FCMjd zlgZY?uJY%jg~#CS8*H8jfKSn+ivYiiDG|0rxG5|uIe}G6*J-^FAEl?4pZ{Fu@1UE* zir*3GpzS+QLDb+@B@D475GRVpQ@VsG2{iB85e!ImLV`#%(a5IWOnPO3;6UVCQADG% z8`z)6*MkHb>|m_z0KFR|L-G-o?ov{)T4jm{Q9WAl{4dtt1wN|k>ieHb0t7`*tfKOdO0&p!LQ_F8MNz4qQ~IikGh z{Sta29bI45ibu(N7~Zf+LcUKae`EEA>b(dRgd&-FLxReY)3mn0Oexb;xKnk|0IYMV zSki9rTcF15rKihCKy9y7Ke?`xY(4yEO||UEe4Czfj#MLnaz*(-Qj<)`G|9BpynMYGgHnD^>kt&23o3mkP1RPu zYSZ-qqYPLXG}8hf)OqlkWIleWqyK_7FhX)`Wy;`AI04aYu&Dud2NA&A-xB4+3-WYf zL_1jWTKGN8`zc9{51-@bp?v3pQ_szudWt6bRnE<0BAGcu^-Zue;*axjUHA=O1TZ?c zS2Q=mH(su*-YHS-+|1-7IK{Fnf}~j&-cpC##Ew;j-V)m+>1(h=TDmh@{V{82=JT&s zZ{g%l^#+t1>pH9VO2OfLe=HpQaMdeYL>^3i!dcAWF23qJ>%tcfb6$*uFDx+}?7A|h zP}6z`?L195Ybop!#g9+!2`}#89i^z#T+VTknk;s<9MDZW!b}b$FqIU z7QQ>aoM$=DN}iQG$M77(lk4ge#^!Fp2eV&Jx9@19dr0`$x~teda~^tnd-u7e`(Imn z5604GO+L8{CH0QC*01FDLsW`es8IS~4=Y8wuvoB%KLfV|BdTA;(~z7iU^GmC#Dpn! zj&$I35L?3g&bj_{JV{-51SX+ytWZ*3pNSvMEtprlJD*2|45(r{M?OimN2kbQ-&7qd zqvD#-!WwQl4JnURVY=@XZ#v0!HNV_AB4@u*mNR~x(=oFP&*8w>xEE&K?d!uyh5v@N zY>U?f$$nyz)t(dM%s%!9a#yo6+ONOQ+Y8v0cf0n&h1IWeZ-s`@jsIJ(s=l~a+2`n$ zEvvT$gIx#quIN$a$#~SdO&{#NHE}EWQqvVZoXhDu8#33G``f{0q~xD_3%3QU z+n0_d2baz=Hx`$Br$4(N!_6D>NiYK(WU|(vM|WzcM4f4ud4D$<-QmTKL8f+WtnVF8 z2fMLW$zOM|!QfgSgKK>ZuJtjv)?l!3i*dv_m=FvsyGB?hH{rrEA76rYRdqV;e%tPS zW`AGq3IOKs;6#4FNsjz}M&s7UsMyejJ9$W@^`tYoWP#vM%WBvM=Lo=ph75ikNk#Nn z&PhbwkUMit@yxAmjERU7YOL|RgF2o(9E!I%?`IAHt_i=Wn=b7mJD&U!m%qebp3DqC z(lLAN3~NuK)!dspr>?r4+e9UZfjCkchR9pzd?2RSLd-nQJnEvrJi_<5=MLv_A0tWk z?;|+hJ$ID2;C#XlAPL?>$_ILnYN>OcjykWS@QygIvZioWvW|2%jxWBZWC2_BU6JAi z?Ob5!cxG_N+JmciI$b)B(DBSj1;bA}9i!javo1RNl@<4(@0d@EP*$`^k2)_J z{tWr~KIuUo;ChC0lJkR-sB=}BbH#|L^8?l{-xMZZ@iS9 zx^hYjtrUN#clH}MTx@7P2Z5AgDzjV%^D`yi;3QUg{8AX8{oXl|Yz;Yj5AyjYZZB#l z!W%O;o`~7j_puL%iYK){x z?8A#dA%TM{t9N^MaheDM<*R5jpvtLG<&|Eq&K4J2Yn-}}TU(-MiCbH$XQ^8|OwVC% zZJC~BZtZYAhr6{S^c>;Vj?!~fcd;3hT7OJx{V}Qa$E4ODlUjdFYW*>(4aTIloHqLQ zkn;Ph2hgXzb&NawHf%6^P#?SFd&^)KZqr`%Of(RKROaihQ%%Sn-bgwTuhNy8bize$ z{j5>zBFhZIu$l^tLunP=JuLECCTfI6Z$yXD_<_(%3MfRG z8cqo}$vU%EA(6%%LOE&9UUSPDKM>-PY$IEskmh5wVV*%y$XvBH?i5Orc#f1~e)~B- z@z};hZ7BRO-|y%e9{!Ne#Eei3v%o#o z?{lT_ZIX3#jf@sw^RUP3JG|Cad*+pn&4DwOotvpBkA|O?>Mex*=51Czon>6i`dVEz0#?Uxilh~Ds<%+>Ci8VfB;2P2 z$i@$QVrPEJk;q>Yif{DG@szToEOSDY=_yhpea|VfdpOx8sFdY|rYA)75>Y1*Y{`Q(0!O10ehT_Jr|{Xp zm(O%=9$njN%IW~ZSDH@U6A6D>SG{pU@s*DYiW;9vwTae$Dp1bhquTI3`PA<1CV%?~ z(AA^`5*4D>A9?xKZg7=PYxwj$pXM0Zo}b6n-lvcuTKV#r4)sD|y=D3HOzvf= z1@1MeHPyYB1V{BP%jxihmD(W+cC)e|99fa%r2&z% z>ND&aS+;D!_2-Wj8!N;JoN}vlBF5lit}VjG^s8@x_)RRPsyr8G3pI$SPMLLACr6gT zlS;ftIKM%9zq(irj+1A{9Qb`K7IP+z^*wyYCixz~V^eq{dB>*mMDmW!;91FYCQl@9 zV;MPSZ?A#%#~kw(KfXS^t-tBFeurrr2_F8M00 z$1zsyp?bGfysf@FsjlfS(v=*cVBvh6+uRQBIKzejdxl}nyA7xVJ?lpjrh z49WgQ!?;-n%-p$Vyj>q3>@7&d*Vn`x6YCwZMoln-lEW6bj9d8UaWH0fcR9xutJ{~< zs6o4{w+RJf&P%`><4qyC(CxO%b?A^kV^_qxN~cbJ_&FYicev1eRy!v&V;!5ZVt3Y= z-UJfZpOq%w>as^rc({uxhX;ov{bdJ-w69<>_w!P0d&!B`tTFla)VpVK>Gl1kHB^Rk zTpcyU_p=_}I^E*&(_gL_yyA=%zjd4gS%LLnOL=} zVcZtWzJSVOjh}JbQZu3PCNOKXYmXrbiB!&@7w zw$+WTlQ7OUDp4X^rD zBPps|*r@37vG>NaL*7-QP?E^rQl_NB0G#8geF&~>$xP_O+!w}t50we9!#>RO zDI|JI46Tg0gL08$sfJr~?x0P65J&HW-tmK6TpP5}502t&T#I{DU}_Bi5%bz=Nzt}yQ_P8@1~TpS-);0O70c6|J}D6x~HXXDN-!A4}h9o!#?Z>iR+&p%=r z8j`uWWQpmp)AiwBl(?TBSy-4``Q1a*{QQByKq-Sg5JQ@r_Va4N#aQNsk`?Nw_revJ zrEzcIK5$=r)QYiSn%5abU7EY6T{z^|&(XpI@WGU4Z{<1z*2Cf#V=m1(B|ctO)s6Da*zH_&DX3S|4cay2If61Er5$NCI-hinO44J*}o!o?#vf2_CSM<=0wfL42 z@1$ntmBsBQ);NWe{nOgA-h2D;$-CjRaEM0e^k}aQ{?y}bym4y{wH|P+UBkodI)olM zgX7ie(>V1h8so65J{AtUTIqMpB(q9o6zp7c3!2>^QCVjtxUJma0wyB{AltFhsQkt){1819iGzDzoJ z%wb(qQT{o{Ge(|3{pp3s>2%`oB(*-#jp-3EE+w;C$igM88|3fHB3iG^w5MrxfCJLR zR^s&B9C2?h@xFrnZJD0`6B%)FYo!+wh_IOGMWtF}yt`nK;7#vB*pl2nrm&Pw_kr(b zq}K8pNMwd+8ly)}m-qA{P%zzI@2rZSmLGvPy|1_K7f~L2US`yvWDy9u6ET94zkAtG z=gxxssH#R#US!;AZ1mKP+hzT}b97JcJ#i)Fi(sQhmY`(!E2sH{Ugl=ub5dX zJE#1pjjJZnXEvQ?7O3za`Is0pfzof9OiR;|Cb8rFfE^Ovkoc=+u1dJ??vHO+1lq7P2GoI`N8h8o~G!#qW z1&X!Ox_M@(R!tJs@-$Sdcc_+!;gfiJQ{~$C9Le2EiJE8OFVrzD$zhZoB zyVOrN*{vyaY_&CaMj>6Yt;z4$7^0N=Sj-2j{qXDTB{a&rm0d&MT(KFo>;3`?o;e`@ zZGQgEV6yVR)6<{-V&xxyVE$8-{}WBS7cb^wQ+|As*~dB!z;?uk+AG8yi{l5IMOTVw zV7?-)dg7?iUW94oPN0N=>s|3DSd-b$G~>&DCc-?s(*C|CGZDz>k2E;%qx`wA~Y@Vdm~sIcoQo;_4U*8sAlNLdbg^ z)MIR{)G`_kYDC=`W!?;>5EJRLQm>i#?Oq%r#AH&Lh)X3$Su(8jE~icy%Ow&ZwtMX& zR55v<$V!Y1fxl%HK|{-kHYmf>pp1DwTv2JBkNdt{n6`M;W~UENcHk=*<1GeFz29Tr zcmR&x@c@>fZJ(b3fim`|g7lqPGp0XN`Y`qTq_6vYqm+h>-d%x9SuJHYG}$yv3) zdoqj9Um9XG)+G`zi%pUeC?o86x=U(MRZXGPoehspk%Q9z8S#Yv?cf%tsH< z0*K=B&8r28K&*5dDWb+>jyIn~U%*n#DoXev7V=pD+I+mEVtuFWyhionkJZ0;YlZ6yOn7a}x(oZ(Okk zTnUE<$oqNp0?dZLyr$L40DYSH%SPcOTm{yWKmX!Srj1*t06cgNXjbn$jb`g}6^5G55$0n0g7 zdKcfo4=A^#^J52$%vtlz?0$Qm z{|LEftKI#soKXsN^m}tIxUt5`b?y{eoyWKBUd{hHA7WFGk99@%hiX?b^A7?-k>KzW z6c@<1zDS$-o&<>k>rYnn(E@1nsTRybBESacEe;V$(6n>>O=p!Yz$AqY^-^L;O6;wMa(>xRZQY31m`he{ola+Y*tjxlMtyf zqs@SMFU*lNhXHLY+>PtNi6tF&7kV@bmn>2inbjycx>Cc;O4Pe>aulq+XwF8=nw@Wb9g={wK58$GcsRcgA*q4e$~)A;wTjzs6X&3? zEyMc)yA?1ZQr?KiyUUF#!Ajq2VivYAKC*^^H<}N`q2Ao-7k#7o?5@$6WahS-Zm^rt z=dIYsB5QT-GQNBNPO<3UZYZwy!WoPGDOV~4^P5rTxH!1ky zt$##wH}gQZChp-&XytM_r12Ht4bGopq_ifa6&GPMj4j@OUD_gS;NwNkhPQk7qrDa1 zcTBe_m*S1LSZ+Z*K8q3@S?&oWz zt`WJjREeS~eN0f{2rA6;TjVJ=FZX!QZ_^}XJT9X`MqB%4mpy~3!hm2(00M$jgCJ&k z#{3bp2=@H~QPjws>^*9<(nEM@$SfU` z)MpVP8xKOaV;&@@S*;t|jE@lD4k8lArZF}ntlJXgq{OIu|MMC~`_m~_s){&5b@5A4 z#bL6w)NY*tqYlR}VDbnseNd<5v718PWk|Ahsdt@~iSJux-Oq6N?tP@+z$6%Ek)_`l z+u&lsmm!KVTY}#zn#P>nB_#U*9gi^NQF>}h9h@&U{%FL$spJYP^${H<7`h_yI}?+* zE7DyTI!UqJbtQWCrlilPhd&L&Zi)8}doKMYUqs2g$rtK&uawPh_7)ZVA?FJOTVRl5 zc_?{osR8;&WRJRIqd@Uxl1pjuS1QS;l~sGw4||DVgYsE!_OfS?#9I=iXX(?YM(WQu zpOga;3-h#jIMKrmZ|s&+~-I#C~8g3-Nv_z;T7j?e~P&0cuoCP zFr4mDxJI}uH<(uW^x}zLb_D0EwFGIVX3ifoN}nW`iVj2Z)00`zSpe9?(Bz64;`#CK zp!*d|m?<6GY|U>;qM653hV*@nonz*!tM6w)^N@GKg>v)a`!yCL@CT|Zc^b8Zd;igr zozML4P2fPLQE1Dj;YgPkk|tXpVCX}MOm@Wer1_dj)9wB34h9K+ezf@c3`wx*8FX!c zW6K41s{ouJ2aO2YcKB^ZfzDD^hEvt+~A1tX4owFZx^c_>HUdO*Ui`o<{gKPlRvte7r(pqvX4(JQ-uv63BNAnT49vCc1Mf z`t9TDxB4N-tv!(zOoVNaG6O6ca<`!o}; z=@QkB@QwjUk{Vw^S0t%XgcgI@jmZ9#0=+Q@@rvBwFL2;E-igch`^z-t`tJGxFY_=D zoNuhQOdAetDB{KY2Q+lJ-_Y|-b@_&QxBnOGK3HA9ywE*^x=kosRXc)^iCTk6Z^Dq0us0hk6x|p0bo5aahqpGmd9!0o! zNr>gh-l|oaqaM_tAgS5A!x(bf?H!%-SMj?@nw|7h$mrE;1ygj8BDFUVShDvidKJ;x zhY2xN@L{zi8NlSv#HjBX$+x{M;-A@X&SWHeu}zY>vz-8WqHa?=lV#MsW0`r}-O7W8 z;8+7`a*ZrPTG1Xf-olbPdHAl|<(&_puCUp6Kl@YR8h zA6;ntkOLcE%7@+u^Xs_H-aS+!^y#4-vyhf3YkR7@w$!~-03;@WVIFetY&MWfF@gHR zX&}aK^479DQYdCCI;+CVN&iEccLZg2(2!Ur0Uo@a9ZuN0YY5OcYR|26VP!+rVe|Ua zUrY02q#-K>6&Ud6erk{g%6>`m)s|U?s;#MYQT`@ zDk)@oOM{yc{raPt&Xe#lvi zyKj+i-J4H|P3wt`+j7%a6d#+$!Wp6W6|eqg8dvpt?^EKR>1~d8b7$}Ch54B5YuF7z zQZffZB|K{x`MBZ`m>T|cpgt#ZQG*2Zr_Je5>>~5JS~^1CL9aGSQHc|4|#(JLlH-r`9z91;siRn`!rR1t>cAP z^MctR_)fdVyde@uJe6;QcMMH7jwy0=;>14Wo_y7Z+?W2yGia?=2OpGBCwk?6`JDMH zuKQeOGDCT8G+fwB0g#n!pB=CU_mB_ZFJgM>^(@e%?gC9~iCN6b$?W}fDwN<9!4}1#} z#$WYGZLSzK*y7!g1590o^=HgpE>%N*31l^&Sxh>6xrj7mH6Nij=sW5@cul7m>AML| zoZTIpz;Uf{bG4eX?9pmT<_RrtHOuuR^*XQO%|9Z|nR$81AXShuF(L1jBmJXZ>Gp_q zXSbb|yj^6a7DDoMslNDOOw`KCVS+AO>oN7xdk;)VE-y18;UUR3t?Zb|H}Z&Omix>0 z$18fKf_ldz_9vHLt&~>kUL_FIO+L)@pwmug6^cKZnF91trdASj4n4Y;1B=H$16m=> zxxX=4wuHx_8M+7GhwRW=i_(WtaLj$8l|?>g0FQq{!0WQrUbVB?tS99bqi<4WzL}}L zw1Tc#={o>Ka``Iq()e3>@z^lYESuH49fAv+#S|kx~0&zxpM@q|?pYVA3!>ES=%c;DhCo8L7AD~{> z5$3GGc;nE+ec~~{cX{lhFS#&Te0t`PUZ#LeH-SyLg!$(44>LFUbIEAr>fBnC9m=Qb z+strU=_iQGJ*hS@vY!Ar#`)qRf*tIX`1+j(S|WbwoGrCT;evXJ1cy3ug=wU6|E-9e-Mc|O*iHY7r(+^eRK0srhy8+uZ_`dN*QwRai(V5F_| z@$@NousWOZF*Z9`6+h2j*a~^r^kMg&!x8}h2C(lv-t2EdF`(-FauS~ZJZBHnNzjlU zaUyxTm0Hh$8!uRE32+>_h9UMS6+A&Ge+t6#mp8r`mzu#R@GKCuB4)%Ahx*T$Z4^cv zM>1LyPAGp?AODuHGJUWCiIz!0Ih_>ji%EM}5aqk$3wpb5)MzU4WXL;|D9g6~!gytV zE%*Qql>>422@e87G1E>e{SjQ_hoGm)6*Jrx>7!yUE)Bi17yUwmOqsTgr1TSbAHAS& z2KGvf-vh2GmQ$WIUbU0FI2z2l)b42Wbr(mQr(I&D2MboqgFUW~O9Z1J_Y+1y>DYKM zr-!ZE-_R%20~>b@vhFy95h{#C#|EL;4VIf3S)art1;pn1T{w;0wo#Ts8JU=V7y#qg<9t@%2xVp8Yfy_A$RN9 z9)6Nb4IV7Lk1&Ec3L=iCc+WB@)$17+a}X&}MOk(6!Te51934RHU@Eeg3u1#zA}jSi zt;>%=GeVoUgyU3VubA5|kC%eEnwG-JHp7&y^v-=ggBf3>0S}n($v9xjE$1hgRIJp6 z5UWZ_%^8jj~nfrkNzt>TjKZbZ^E`db6yY z;;liU?c+pEC^0(f-mAGd+I(e2O`Wu$)}lK#u{C3ZKgq3VOpc0frWv{!nryvNf%tGi z#Y(MaJ{FX$RGVhzpjLzAZ+aU8P54NmY$jur<(YI9Wh>!E;L#wSGoN>mZ>$=Ja14>< zwo*mF*WBw$m(=hI<7vpGN0QmSb2z`U<39!!<`}YbPBOWC1d$7~tRjjZ$|W-J1ZdIQP5Tle|o$w})m^LhVXb=YvzZ}2Qsi?d}0 z+aJ3Cisx;rgZ_tkec^K3furVuj3gcinS?(-Cnn{-< ze5*l=ARXmn8a7=9LUe2RzlB5Immfmu+ch|xdxpI?jp7tUzc)Y$_S;SFcmx^DL?r6| zbvYPwaXBJ6QYno1__+n)mbVe`f&#z@XkCoXr|Z-^!kmmR)fo{AE8e@kmzY4+YI%ti zw0uag2cVgZ59w`m2MYD)Kr6kUR|Dai0<`A62$QMatx`7dwLyzfwKRJs9g`}kcCW@* zZFhG2bNF|gC=}OGMI+O*-91DJnN1V`4vrB=_oXr ztzpc(udpjDNpOlU*o=xZfM3(sd!!)x> zi{UezEbk%jpxw+Y3i(*mdkg!`jBzOUE_mY&`!(3^!(|8{;w1C2>W!HTlS?IcFyKPp z0;c{7x)y0lTV~W|d8JwAiB{%lPUyZzCMn76taN7z_SjkJ&){ahlu6VM?>|*g5aG@1 z_DfaU+sjGGQnLJIf#!Tu)16Y#!LC(BK9jv9UsaF2#4lgvzKmW;gP3eJIwJ^*?grAR z=~wP(`opX!aRi*1X&!CbIP`9sA#uPQql>vF3b9Q{)z#E9Q5|raT6tQj6G@$1?o1|Z zHI3#4aM*2A2!v;GParLRfsdjUTm%ex4{ih8KS#FDdK%Qq%Nf)Y3}=L%B@1NFRkEq* zXoa$p$HuTX1Cs_@CR?f9!Z*#&>0#u`t<=(n*=~yPrc!4mH@(%@hpbX#M$+WAQr{+f z?(6)RB6DNtv+(sYGm){3t`Q*bOwsu-5GpFY>)tU0gNT@Vol0$Z9yxe>R&O^}j482F z?3*!fbCBO}P3EFTx5dWr3gi|`6^sJ;HJTZ zAe=EH+c7JUyIl~1eOxR&InxNw*6ojiqye4h)&mw_A1I7yr&{l6cIm}%4+&^okp{qr z(NwRGIXCx##=+=_=U+zC9#<_!^%oEgJe>PtO4&v0d=R_LGXB)N>^bs4Gqj9N>OJ0B z?0!n|^zI$~$SiG9N*jg5KSlh&{S_I);K0+w%)=F0c5>VwH*V%88vD8QV&>G(DUO=? zh$tI>%P(Kw(d~PuLNDT2uTe-opU*oY34okU-Xi< zaeC7of~hqc+ivn`2wSMd^jGlzD=I`hw+811i|?x#qqK|WRh&WQ6}~*W-TnZlEbF~* zE><&rl^YWeC#|H)Bfb6 zn0=sq_13%&&bscKY^9rMd}?i%nPyqD%;vQ#sfB=1T&M(ZD;owzuMoi2yR=;6J*VR5 ze9hOxY60N`F+!0c?DK0jNIV66OoWyGHYL}C1n8m7;xs;^AC~dU^Tp^i>wW2PsJEeC zUz}|hlmFHwLYQs_j-ed)GiJ$EKdEILw|kfUO~B<)&ImJlK94^4my-UHw1qLtkFNJ4 z)R$6g3M2YY>TIym8fg@MLZjf?XMg=GSP7VlKK!eX7FQdI)E{so!I*KTDdMV+$TT}3q-=zujXK72ENuJvuvk__8x83^m)JeCR>eh zC?$|%ml>=YfE@n|%n-(ul?x6&_KYYuL4!TzLD>82SA8MtHop1VTxbveKF1(vfX1dz zedz9j?yaiwyEm6i1*%Ag;0<(2{*40oivTK_P()F?DAs^NnEgKT=oID*?;CgeBWR_+ z$M+n}iZ!P>+_v32)NfkqKY&s_LX|=8<5Px$V#Qp1qYtsF4W`xg+yT>fUwK2df2Sx_ z`$Ll%Bz`1nqOh**xGZHbPTqv?eE7r_I>2(9cj8MARWuDAFWMSfEW@F@^JUgD3)-Xz<&jry#QvL=E4<& zeUJf3Et52Uu|IojOFfkMc94!Pv@>-{$NFKR(nm(A()dydtOk~0Tbp9NegMPthPAyy&?C5b(BiZ_Wm`*6MEni5&J^BYq^=kZk*&0+5-f7?GAQzhl+N2!! z6Ex(V1Db3`or4yPo8Q%_&X%jhcP=t4h4OMg1_OQ$l4L!7 zc(U-JM<1wo;Q22$tY%|%WCr^*>`Yxr(M(_LHtFcMR?cO_PBn7lwcnr-_Nv+azF2gM ztl)n%7C6EJhiX`-H)%hi!F_Nn4~i*g8viQp;(yBtM}7xLHWXR4y>qff02diAYM_L9i-%TXSuh5jmHB1 zxW!OU-y{wt{dc=5?@j47D!r9Vz!zY4ror*!gLIr_qAU@hcBKpvc$KzP$aAGa&VMk| zW-w=d{3r`rc+i$rly9Z~9Rk8;8WGDus&L&%{8J&hZHw%AF=B5j0o_4vGj*wkY#o`r z-OO?^7mpYp_|>b$^r{$`&>TcW-nnfljIGhtqJnw71KQ&~%i@pn{}eG>{Xv15{05rJ z6oog4!p)VZ+Me{e=s(4rp}aib z2}Z~ag!dwsg4H#hZSa=}HxlyYhP!*%)DX4+P|!?>8cw#}Pubw>c(^aH;3$WgGHU2w zfG@Gk`5>@lW9g%EIv20y_?SGz{q7%v<`-eQd@@!J^hCth_^U0K^UO~9B^14vlmEfE zihq2}Y+{53vGp4_oAsM$=hw6d=$b=&>5;I?Hqj(oUl~3?R9|Nto*+njO&_h)RvJaE zBk(@PT?*PxC%Mdge>vL1w2F(lw@&3H=G4^~LW>}N7=3v_Y2D^zH3>uR-wk~|y&?}l zxeL^I(?;*e{>G%QV+a&^9YiKzxeN1qT?@^bWP_@HYg6AdqnT9s*~bKl_a_O8{yAF1 zOSfIg$_O+w+FvU@nhg1!fc1Pb2dT|G(`EV-%AID4tPz?Ylnqg4?str|K+mfDF9dVV z{Pdrfjr^b?b91?G!4SFqqNu-Jj?`XyypD(5E#7p%PVe4th<@u*Yf*_@Edx;3Sn1o~ zEy*(&Bcwxs+BTz{M=MRaMgL>tx~)_#Nu)ll`5J5kvB4;P4*jiw)MmzjZ|$RlZ{Du| z0&i|8DYjBJCA#)7zC_&%M@idnHejUYPo0iJIo;lXcwfVJE8RlcsMC{=;I2ODiKt`2 zwNZEXUyIo7-}B=}_SqXT6$k>`n>R&TN7%I?yBh;YN+N6g0uuZ*MaenC#97-$u4a8s8294zXiQ0;04W*(r*PP#=oSd)8cF5hKmn*wxv=(d07b!O72 z*nUaaDB`+`!nrY&VDKy1RyrDPod<2Cbq<+LKYhmLkLY%~G@w6yzwGZ%>SRzM-<$MB zCBg<&A%)&NOnD8?OLCt*)q4^46w9>5=z0vin8_2F`{|`8(?M?>0sz<2eF!Dn{=~;H z`f%j;?8c_r(8%3fqu#XJ?)rxJ=#TRKPtP&BBfqHZ@S99eTlma*`s|HV4G6$@8=u8 zVAKu=Fa>!oyO9juCeHhE8Gv(I*(o3=WLQp-u)DkExA!czS^6|3z`&_xWg~;H&V<=foeFlW|&DGWEepPZ@N-*R%qsc z^#4x!WZTC;8+5t}YDTuy08!^1AeSUf|81QAHpPE?hm_gJ(iD1_>D0g`SQP2nVyuRo zXOdCpFH%jA5-jT)f)6W>VA1jo*U`Pyjl6R_APsi^NNsTK5O}%t0Zzhkf3m*g{exm> zgR-Gn!+2f#Dc~V)xG4b@?bTmyolF#=X(O{^Z>tS0kMe3r0x8P#es;c4KuRm8YofCg zHs^Rzj!VrTY0Mdp7`er}1g4>DY&+aveMOG*ECuQCn0*~~Q zTj_6_mrr~U?FBcJZAU~X(Mli7OZIvCO8)Ja!>@nLMAN_CJ%EL-n1?_tEzMtqM+;d# zv9Ot9C0miH=?L7pmQ%FG>3ngQr@tlA^1f_{4h<*A}=@%-xcYHfz7hfGxd7qZaLCajQ8f zvb!@JY14=JkxV4Vg=i(SK;6h!BlbHb5qo8vSmvT&*3cYeZ(d|~U$3cRx4o&&?z)yT z@Kjt3hcqSdG$r76`>jDt6W5s%%7PL!BiU~)vO7!(>+QGO>`s+X!#zPT$&?^!QX80P zHc~>nO33$LK7PuNOVVKGyD`jdl_Vu@1bn#6pS;2<1_hP9aZ#kT6y~vnrEth@zg}~g zVQY0G*E5l=P;`VAV1$@cWZV^)T+twVrwtP`7h%QdB^rON*Ne&|Cj)#w9%Ne@0|NAR za$I=8ob-dj#{7R|khM|LKNYAsrLBVnpJN=a`O3|e#pqtDyDKpfmz z&ApCK)N6X?y*+^?wIRJEujG0QC0p)!zN`P)Q$?RENW)?00c5s}MA@X+?H~CT(^NG2 z06M%^31Z6Js04-#`zM8)RL8OVR7VOh(ee=j@b{JUfZ1cR65ebQCY3Hvw#?dM{J!SR zOxM3+ZIo?Mg=ImDG@TD<@=z7^axks~%F%Q(pq%k4XST{&!)ZqK>~rOGTueE3P)>HL zQvUvnQ{JtV=aW+Mm03o+b2T(8W@`#fjR+f-v{6vJhNM3G$^D27E!Lvi5oZmxnr8E2 zEozUsC#)-3zo75O>U*PEJ?Wn768+S>oDi`lxKmA| z{Xs^ylRkIaI{5mOzDecUTB~lys!V-H?4GVvi4Y-_D`pJ6*RM0%IsNd=>%+7*)LzbB zPMsaF9Q265a9q;{w2SBtPGYK=9I@tgOJg$3&b~%8uY9ogj@RV81L&fIYoJPfSRG;K zO`6H?6IrQ9ohYx#2gaHJv(Ffn@pU2Rq=LNK&bFg?@hD^h;dh|-{Dc`=T8JKM;(UcS zQd_Uen2+>c;(UoRKFfrFb+gq*KTRd&`4mR|;7twm;&BQ@EyMoFvlIz~7{bg-zHX4k z$h<_-=n?rwmnp!>1rb@zEN0ed#i-sU3b9Aa=0YRJghht$BKn=xgaT4QiHL%t)^p|?oO4Snv4pzFx1UTz; zIsq1#CjpZalu)&cgU?^04*Ctq*GmLVy+p!(0n`#9Zz!TlH=Ad9oCnUD--v z;MB*dKQVnhSYP?@?o9Jxm^zm-Bfr#xDI>{Q+;>t)o1 zG<_b(g1C1yzcKnW-+%3;O?k zkkK=W|D|92y(%GbBW2xfLf<2FpDFdL*&cOdJek;7U7q#K14zP?0h=p?K|sV%h`<{u=n^3rHi|>Lc!1${?+=DKih? zBULn*DWtD=I&4fgw~ipg5=n?=39&+<>UQUZ3UBQUQ0!9xC$w&63o>jq9Y=|VR7a_3 zv*+A-CS^iepqZe$@;g+#|5I{NkJ%EtzZ8Y}hsY0wxgmZ?;bV%AXay?6vks!%#31pT zS}{Y-X9exg^p=9nGEIB~^gnr`&=%wZE-Opr+x|12@QWJJbAdZ}RcSwZY@W=0Hu5E+ z4aZ1)9e_3z@)%T~56aM~_fga3rZdi7^coey@m5tZ)?3YSf3vjGIEXdnvrFe>N*L>x z@UTj#poBo>>l;7lY6>wD-0g2F<*7exADeXxHr*8^JHo?q+o?2=AMeB9#&4o=|nW!hY&Oqo(?sri-kiCi3kcs0YwPq-~ZS62`+{1)?RJ8n>tLRe_<^@UFM&9f_KV3An**ihR!(J{01K7*| zgE#0~1*6~dF5vwFOoi7s?%$8_Yc&bp`ND(Zus23oQFE#Cg*@6&@=*(Fhgr#7YlUf3O%sY@Ye#@dYEnRE$|AouKtfn0|AA zrjUSM!I8(bZpuT8yX&U2Ufa$6AoOl-0dxIvO7D*Uhk;y;An1eG&#`uYkb^JYGL1mG z-RwIU%CpjI0jL+h%3vs0(oz*Zj^@58uERkQ|IE*Im%)f0A?X2y8(4Xpuf*)htva=& zE-e-RQof7Sv9IuhU8aq6%{zxm`nRr3=zqW8f9pYCwBH|CgXzD&=`+awcl#VHzsmft zzdj7o!zLf2VYwgD@|J<;-;Dj4h;Qn3W2ECfY>Ap{lNbhzI@@S%Wo+C@uuuO8b-dQQ z7bs!FY3W0M``h34yxp;-I5Ye=(aZ^VR#JSOgEx@v-q>jY%x%>fKjFMgv=V!V$HVVR zA=kjd!{@E2a<-vzCH5LHsmZxW&t}Eg`#k#5yVp=i%-PQ(;@=2GT2*t`1o=dGDQ23% z`!~8K3@wsJ3-{2NyF%4=O*p8yYr?@LT@!{4?wW82hbh+J<2dH5*b9nwO*r(Rt_jw# zt_fvU*M!5q)HUHtM|4d%d_-&y3amA;j=kr^I`);ssybUa8i`GZby4flHFZ_E66>kM zQSqLQQD=?1KKVC;GQ;j9Nr*USEiN3ahVV;#p`J3j3T$G|?NX}pXeC*u#H5ZnAK;%Y z+|fFUI6k$T$4=H4&Etm~$0nWOvo(N;?OnG?$mjCmn07-S)Am}6Zv1xXxR+|I-*2txRHJh24jtB@3C_vva6DUj=?_=N+$KRSc4kvMkFF;5r7vFGrOi0pP{lHT;DiL6 z_2YUOub5o%u6|x?aMsaDAOGv!M&VCAqsmodtM}UhzcH6}dSY%_z0+Rr{90)moJqsv z2F;0;#GJ@5?Nh!sUCv%uI-g%U-H8kEZ$ zS&L)KVGZsjC3x?i9-*cNXG%%T{T>Y&k3IK)E##g;A$SuvW!$_hs5+4rp6D3xYc#}4 z?Wb$~`jL9KW>~#Dsf7Bc;DK{eiC!X&pCn18%5J_Ql6mMBXq;QWJLpo!wjoY0PBQMr z%gNA*nK>a@dT(&rdxr+{muRZYK(k5dV}neBacdIq?Rh}0=eq9zY1ty&kU`e)|5edlII-5Z;>etc%w z?`R+sc_${98(u1P*4E?dyTKXCX^xk;1BNRp7YwU+Shz;PxP0%^!{`bqR-c(9{3fYn zf&LCJZvPMFgsVG; z$Eu!*IVJ}t)AnqL6*u{0ZXUTB5+P&OpdD&jaGsh@XqPASizxk;yW) zPXz3)oTUEwz`$G2Ln=yY&P{0g?6x?`hP4hOm34uwmpwg>tqn(Z8E2f&<4k)h4=Yt7 z24s8ic0XS8p{)k+P?M~bL{@jM%7}H#PXco4Ty1Yo@2)8dhoJ%%HH#KrL}?A~pOnS$ zj9*1#MoDv5$}>Zk3jb9%C4 ze$BdMZCw>SebZo#hqZVJ4(<0H6WO!3dj0f4p_+gnL^GofvO7!deKixOy*e>--zhaH z(WZ}gqL-E=-hs2q%D(+^X(Ed{I~-~JI7#h^-*R-VHmg3MJe$^)8TJ`L+`?=e4CWUX ztG=#KF`Q$6S4|iv0eGx}S8T<~zuk=^rAamR{*j3;U#MO*=kUigx~>_s*wt%?!&pmW zXU;Vv>C81Fd7C7rSQRA4@n93>eFap=-A;72l)AmGm+$XeTJvu;jAQ7r1y_bv)co~I zhPm6j@Cqhn*Pbc7fXCwtf`OW=*PMM8M7o(wF%MN4-PCD#vK_OE!y$X1UZflG^xeu%iOgq(G;*1^Fa z-XC^%8ut$m#SiKpqF6aT*xiX+gXwxVL-BT)X>G z^39?h{tTOGZnpWHDAh1@gxQUf&%|+i6YsJKoCKkvJoTl^uBE#}BxPjgwi7S$qO~;m zBl_~HOsB4W9qF`QVxOZFD<0e228G7h|t;QMAZ zr#aobL^=!rW-3Zx_*QIOXZ$p4(HYjFYaxg8is(n7!xvx1!CJHO;d*88fx0 zVcg4!->a>VQ4&Ha8K0aTX5F`$VZk_p;S&_5D=NgtKeQGXPso%MO|R;ijy`U>!#Rv6 zNlI^UQ7eLFgxBqhtowM~-Uw-;;o71IRxVS2AW>!#S9x-P^Zb&D)7CQAAjmv^$cvC7 zS1OLsv)*|sGVaCr_xKje{6j3S!M$cz*+h;RrkKY3SKW_X%NhV2<= zy?4_k80(wX6&vJp%E_ydH)PxI%GG5PovjVdH1?VQtWh4YT1qNAUCN<^>T7VPmGolM zmRP-gR3ldm?oCmK}yIt@}8_oJl+LO~*2s-`?m8OpKsM!wV>f zFJv_CRHZe|HxxD3BCK9lQmB98wB6RC)DhxE%!~6*Q=qDo{$+mIhtL+Aw#R8_P*bM~ zGz?9+e%cP+=a_`iaZkq2i~!Psu!`=YZs5UF?NWi6Q-4$SQf%5w9h-`r-LdcvKyExfs%I^s3*${eqV$xh-Vs+qzPjCrVzxG{C%-BFfUKVH38F!PVVl|lZcUgjdWGV>&o z3+wO7Sf&mwVmAWKUK2ecen!mRhBWv|?_ojz8&{e_>}}ks;nLskhRjdH-t=qex&2um z))Y2Uh5iyRNQ1;R?TH+e;8b*<_v^`AX_Y-x6i9v5+qgn>1p0VD{%6O9WeDfVR~8$rOQXyH^BhO>ar>PF&gDv~`NS_7*}O`Sd3pV-3qy=9&TWcPw*3P1NZI zNGX%bT0D46`_R499j3LeqS&~diER%K$}=X029Ru~ayil&yt6`D#CSLw7D zQ)SI=JP)m9BGO!`5;dz3=}(sCwaDINCd*K3Io|_$r+GXTZV8u^Cw6_fvP-Vnei@#Q zjYE8KsT})#xO;a|?_9r7`+YN8_5P{_f1NQ0(J9}4XPxunbf;zgcaT0`?$}fcPwsdN z-u~G7@6v4^6ZL3bf1#SvUK9vxNbjxdFEYXbvcRV_%gm3y2dH(XV*_OXzMFpKWq_bt zz6=1uw5eh_E19cdbUPTx4PKRz=#tK&hK%^X@Xgb2 z6mRyVpxV*+&JLEzV#;!7S9#`0=LP17iO%Y4ac6J%Ealm&!wu7R)Sfx&@#}Vqxw3cs z$W?uPwQltBPpeigDWeu=i?g9B7js8dJm-mdmqv=Cchcr7+3@6*wI$~4jUvhv@S^uq z3P3g4UXX|Lj?+JhWw@S&^K|bgB#E?^|M^O+7x1%`bwkL(z~r0W7=U&*?MBZ#Uy-YE zs~}Xu#F6O1TAaFCPu3$_N}ajlD$MG1gxT+co*0iky+AMgruRq9 zV*mFd{4Ca@orpiF_Mn7#JJW4rmsh3QCtrt*IL|a;x)YT+mv_xRz+QO%JOzGae_m?z z^(;Nq?d#a)!Pu#5i+`Tomk5QfuRXi(hwAJG2=VN`(-b^}W!l+&hY-B&ZDJ#>HGct4 z<@^{p8OINAdP6|R-f}aJk=CRjIaQF96dt5_k2Oiub;WOw6GXB1=&v_fccw?EmSecIyt2AG{yS47(`O}gLu~c8bn^N|EE8QG^T$L$@IBFj9iYl))r%7i2aiX z)YZ=1Rv>NQ?9SCpnK>_P@3S0N;hQ%`UF=5-w(W`MyKTW5SSpvyF$VKSq;;dlr(NSS zn6JV3)S*$yT}rY@Yr94`sSz&e|9+glpJ~3AD}PA&MJYl4LHhm`zH4S5ab<9!2K>^y zH;r=ltkR5ZrJpvLHX0$1kH>{-bkKy;qVGoRRmFrRj@;%gA_pJwxm)5rN!Zlq6X^i@ zY=MGECBImICeaGD$GmrY3Ems3%n-6@-oS^5yz;uP7+s`e`@wZX_Zv8JU&iNmtTVQT z8>&8tjegQvH2lcs;e&&WK_;`x9K8m^+|+4GOsvdZK#zS$Qv=ACmtJzG@xhlLe&FAA z@%2FPKGz5*{eli2)D4euOgwn}s4&3l&EEG5tLZc7 z6QAK$(`D#^eO`6jk9C}-`rX~Dk~ke8?9(NF_vFj$t>@lOZc4^kZ+u!3;gC`|lDVd$ zm}O!YF=6Y@_Q+^s3j9>nV+XZH!yCoq234V-Qk3^C(+bI85Md=%G)<-zn=8cqfF3P8hx9c5zvCY%z>= zx|2HJ7l&ZEEdRXIISSzpujuefS4d_fIcK(EMniknc@93K_e|Bs@@{voWLUSP!b-nK zGS`)WI&O{qdf(Zi%*@16YeKGZ-(!5c{>u>?e=1G?O}Md5Jg-kY{-IcliOC1YT5(n>u@1@1z% z8YyFF=Da?~6(pRUIkxtE{`Gl2Aa>IL}y3oapGwTpM=wbZjrJ+V3n>n{y4O#o%+h z>Pe~|&^y$7m%mP0QN{}hpkWVP0a}z)P;q8Paev)X!Hj+}_XsR*p0Zd)Ee-?KUk}IJvfn^1wolPi?c?v^c8BYEHD8?gzizf6Q+| zd)j4x7LHfv<$d>88;Ojt3a~p%BG2u`8SS2R>7DTt{M5)`CPU&S*VUpdNN9Hy_oq!f zPl;CQkAT7P+*8vkP%R6qWuKK=x6Pz-`?H}|>JF0FpB-wYx@f0s3@a0psqa%>r13Mo_%so99_mqn8~UPW zJ|x6r%g=e(&;)S-jo5~6d=lx*lSq4<^KF5gV33|oQ0e6g^wEI8`9IKy)_bN1Lmy>% z`amEKxxbqF#qb8wIFtwmsQ7<^HyW{%>8yh|y%~_JOz+p1`S5OHQypHd;XeSnVNXoE zL`+-XyhhUZPu#FapSGAi&&BYI5zAuJ)@bqC*x`L0U}8Fd@#OQ_1lt!sicOM1inJET zYhj4-^ZA)vTjURF=At5eUpj4O2v&!kxdzbd0}ylm3gLcZv9rvKM=+l{1|9If;7`wa z{Oq5P#dWIo{SVWzbSA-Uyc*Ut5cK}~++8R%w!4aR7mMs$Tvu(g4GM-4nABucn^m^q zmk6a2atbqlfDrBd`)>uj=xnI!jE(*PS>dSW;cO)uk$~2V%lfjy4yh%B#))qZY+T5Y zKf|T@&+EQ~0VHsCA57l5?OLI=Y3CO;@VE5i!0OnDE%3|#*Y@RVDHeRSKRd`u-w#)^ z4dB=}Ik4RaV3>Cz4gX>e{LxO`6v0#6>PY6NgSI zU;wuHlUvkTsDZ)t4=pKl))(H83G1{}^~bj#Um_sP|3-f6$C#A|bS~W9&zN!#vMXcc zH@C@5xp%8M5iWgJ-62GA78?xDBlf&I#J!yLj!7J>l+6+v0q4n>d&dkRMPsg{jK{bq zE&EVLIL2nA%|Uc6zcm$WgPHx+dQ`IZezq;lvU=7H_WOt<9We+0<{v~jnZWsl3o;Gs zOM`jbS~Rw%8O8GKa82_s5SV7OmGBET17@?T`2{BBW|#0p_dI(L&p|u~^Bl}`2uNB= zm}f_61N*&CoR=wip_G2un})=~ois(d#(!uS78Tk1!;xmj<4@*wJS{AWG}kZ-{Kk(U zK`{|bNsWF)vAw^9h~jwMS~R}I-am+!lK54;45D|u3`$(W%V0u-#V0uq)L_4lmf;Q& zP(vnqayXFB7aKWc^g0P6NGXRl4?{9HzzGrul6k|p&b%(-$q!c+&JVH=zJVsivH63C5m)VW8c)MbXRcUv}?6egFmKm}TlJ{Jk|;dv8&!Gt#w zj#!UAAIS{=Qq*mEjaRC8ZUV10)`}N9-Y$-G>_dKgDbmq*47ceeQAMgg;KY6Pi_xn6 z;r}dkcy?*WD&p)>qGB0?`Rd6`l-3_R1?;{^& zXU?2CbI$Ml&hPxr@7cxMp$Eg1JA0{H`*zLS&eqVqU*f*UGKmZFasEc5apVwA#i2i;1}lb2?u9^L! z&U!wE=&DYL15OHVyxFgk1-6iIV9Nl`Oj|ny5e)Wv-BL%zcW*@93RG`jL7o{CZo8>g~Jk9wd@}z1y{(RNp15wW&i?!BzMhm7ube%ly!1>FXKbQ^aF)9tWHvZ1he!mo{{yQns8 zFAmxcYZwmg_oMzGH!0u*Bmmf2h!MQ-$r|+6OSqxIkW)68w7y&z5 zhjGO8&F*nS#f|ZX?{S3Y&Cn`Ge^Yxt1ykxssKXKtb0P;;DXdZ4%Pogps%+UA4Xwd60uIJmmD<@K zwkUK`H1fLB5N>`NJSfLR)zFyL(`q|Z>dkkv%Vj9p^U9sKYo4+)cganAFaOr83$^d# zcitgE${Ril0-a=P7f~BItRb zkNiONFFVx+7--7^+@}`8zoGb_LV0z*QjR0Y-qN8!dV+Swlsk+#Xvr}b~x2#nnSF^LCe z^vC{uVBc^>alU4m4{W;C5-*#&D~Th7^oqzu&7b@zus}~1KS*smvaNaBjMP^{R@-5~ z548|`5KR2UA`eAN21UHJjQ~H z#cI~oZa%nwJi>#9FlMxGl9r)$1=J)rewed#39odgZsT8BY~88L=$I@HA{U62T4!(n z8PS?mGsYub2q!xCVBqxPSEB^c8ipmHle$7jIiVCwF)BlMb=+K)WR{e*@X*<3JLhn?2tN=t}m!yXZqKd$){%>5O*1Y$kc`6~`b&R)^?=HCpk9n4@o@ zD39{LY1#kMxLmj*R=e&TCbMML?eh)^iZq`cJ@{O7-Y&VOngGzdjtWL!N<44$7)1!x z(zCFD-&p)HDo*tVRkDIA(56aOk{x-*nyQ)F&SnXd0kk;~3usP(N#_f)I*D>#s zRPc$P8VBYtF&Wv#G85UX%tSUNeZpqf7|O@W0-*VLg{g=?JkxtC{V}=^Jfv^dvJs-q zYxDTHovkm$YE?RE&EGBsee6`TDZ$I^V)2k9c{xeM^ zkjNLU(WppFSaQW}A^nrLJ6|mC+=(Vuns@Y5xysVoP9{Mn<7U(oOn}vX2Qr0&+dm^W zjt<;w*2!oQH0lF0U6bAw)VFgJO5t_I0>)oy7nV624{q#m`-e7WCX|g6{b4wz%Pf># zA;auW34rC#AZy54zHUa!ZOMIYn4?hdJlr3PHvJ@Z9B zz1v+!%ecU(y9kIW(<3A3)M<|1YOCc z>8-Ww48ODWW)~&r3uqM#Zte^_JGlsrWn9k5UV~y@Ocu&PTsGKL&qZ}1`m1tzQxWz? z4{*XjX>L)~(zT7|wO}9{elI2t-gs@P&`w#1eyum zr;N3j^68EbG~w5y7a)%T8~ixl$|N>c1>%|hUF|Al5s%sjX&wpGjr^Oad12D&xV*v) zLyCk(yM9rTkMc$rdP1u`= z+)*vX%3RI*A&gIgkOU7Rl2hgWZdVwFNi};V;IR4R&!rE!OFmg*4`1DrOGI9{`kNXR zhkU}j?V9K1brBc^$6T+Q3H0$s=(gCY_YP}pv?I4a!gpu&z{H9Q;f2J=ht_BZ%O3iJ zeBYbHmlJsDsr=CNOByzxaj&G=i@%k?q0TR)6DAU=hkYN9%nc}8k3#r$4g4mxwP^%d ztkL55v+qgv#St87^lae^%Z&8Qw-B<@KVau@wt#~l7%U(*=L{L zCV)mNX{A0vomgaV0yK=kEsn(4-d$X0*v6?sN5Bp-P&1>w% zHL>9xY#2iuE25FLR_X4kRSW&QQ33H zsFvCv#Ki2_QPPE_Be4w5#i~Pu(wC9i*_&mIbYfz6Se(mCtkiNo$02o9GBSY!`8^bo5};w;u-9o+U~E(91>TMJi&!hHp4F(R}zJ^u**56njB>x(I5mmCry z$UwVXpBt`ARu68vLEcT|;^j?^lbpQ?XRRFe@w3q(%8a=CF%CU;m>1(V=?{%W6{E5j zkC72dh`Mr?`e66>pTqIAPA4;fKzDc)A1<+4v78FAd^6d&H<$d=X5(8u7;}^%1qNmK?R(M-Az34{-PbI7r0|lFj!sL z?QBkFI2qYBivz<-ndXVP!HUZ8f%q}l!40qKV^p`cBh&*}qPQluTKcM3Q zeG)MORPL8@97AU9uSe1}N2lf;+WoUz_qa+bl@tzd{p9f00J8iJHoauzOq_LgAiQ^H zBcqaiZ4tksbdjgrM?3eH<7xfAdlBU^=P;-K!)4eG#B$%4eKKsN@1kPN=}oP|qZmhK7|o~?54#P#q%Cm-=P9SSD%YZ{c5^oeI$kt(COmSmkoXu+jDzL^Xlct% zLWorQ$M#M+wtHn|1EY~YaBO!5Hm?P%D~Y(Adh?sLtN0{Gf%4i_QrOvBRZIG@voVLp z@1-vS$n&T(sXUh~C(Yh#d6W81IJ}xYsi)~BdLqaB;`6MxLg{i|-W0tsf&Aoxg!8^{xrjK;y_Gsx zUz72d)}kwi@h>E~&pcpqj<0vkOE}Ra4!-@E9JcIp^k1uiq_|sbW@+Y$Jy-JF?sSi{ zYgXHlq1DabW&YeT|De|4HpbmMYY!wse_}n`WVuDb=2m`|JlW1KWrzvqtVF7-oQN=$ zp-GY5vj$>XUwN7}f1dO%vb%XO!y6K8LWp`5&c@5BA4KH?y`26Z4;V_%6T$khBg+kl z52**xtdn{^ukCbn2fT4qP{O?5xRkNjMf=^G9WmZB)e^{|;((qN2BF|f?R%$29PT^dN z8Z1Nu_?3nx4exAYKcTVz;4zaNqOD~1r>6gY1Cif1-=B>9So+&M1iD_t4@~vTeSRQ0 zazVGenk=i_<_Y6w#$DhaMkniT^2aUwLvrL2zy9ED9`;$Lellx$b$XMgQ?!;nMU(Re z@I`OcN1kF6*Juu&Mm--l>w@t!%Fwt>_~ZmIPewM)x@1zW^2B6hp>z&&as^EDwn>qU z4(b!;J;s%Q^%6d(+J7{wC+c))N6o+{msNK6{5*hj*6O(hct8XD^e35Xm+$mc1@s-m z;AEt`@idfw3fRd0Sv{C4qad{-n}|f#Y4EJJqmTRr;ma}dFk5tQ?-4!(I~tiVLTwx= zD|rM*H*^5wx7&4h%1$zCj#(mAvV1}%%~wdokhVK{p=G7dlFp`s_B^(#Bk((Exyi27 zO@*K)Rqn5m^rsQy}00*Cv9PZhX zu4ra(<;l&>9Agx~&18+RK*bLVG1gwTYc zV|2f1yEl%;3j8bkv5@Y@xrp>dPAh+0277>-ZFEo2{SHZ@|5Vr-`Ri7xs=1PFNB(%Z z*Ie;fFjoFd+jRSg`_3-ithM2by>p0xrR$v6z(oDyvctc8><*5u-D+hZCFq6y2jtvq z-{@c4xhKMW$NkA_UYP_x+!pQdS%`C3$3|yr#AGaEY0B??0JWer$^1l zvnol@O8d)R5OLpP8FIXBbJO>Yp*f=xr`76vdEfgDhf53F#@`}QL zC$IUC^#&Eblj-vv10)sZ$oU%uRl<22Zr^zdB;P{F%M7hJ1J&OpnY$FXL}&L~_YwGr zoq3pe%e3$uj&|A9yg+EsVgU7E>yoM6-j_p*M4*Pu%jNGc^^CW~Zj#Et{IE=O(7q8l^zf^KGx&xtTHT z8ljEey2nbB)CRF!fqv4jX(e>2@nrtVRxWX#hBLx|dZu*Asa&Fb!P-z{ZS%9a9636V z;FNE*zf5oJN2FuyRUP&g!~-3cBhI#0qO+!R%bv2SOJk8|XWi~>#>{+*43rok zH_7*U77J#d)?=bqD&o5hf*39cl-BFvgYsM3{wQ3*Trv(2eWP!A)Htg**T)D(}70^ z^EFJPiA);R-B_a8S8~2KQjT#D@MyNprBe2bB-WPX-4g2rU+F5MQ)K6a<3x!ZJ(eS> zwJbb{bkT#bYnwU<-Q1y?Lj<6yLf#*%=%~OrXu}qljh^=E(n}tq3s&o2=s-M&Z+oiu z1grfP`iv`iUF_!Y%#V9R`Er0CeyPmZg{cg)0tQ+7kta)v(IxKna$Pjj@>%Q0ZHo zaRr!}*x;(@y!U@iN3HoH;`MIhJ>ccqumqy-9L6I=-pK!C`ir7;y(oL%yfuO)N1v}! zy@N1h=RvBs%1S@Ph0Z^&Y@Kd}dMj|B>KKSntkOM?VkWrp_88)uN|IY!=^uiY`Cds> zk$~QGwaLC5QgPiNa&BaAmYIv3WG%dyS0vtT)uUpftOD3K+-lh2L~cp-Yk*J?VjPbi zt@j5g`J(0F_D`CJt@2P-uZ(^VrkC>o%=+{vzpbN->1XvGrt|Eh z0m$2z@MaGT_6~P5^2Z|Wda6T`e^t6aq1ZDD`W^0Xj;%vSW>ZQ>ysMcQk&n=R9zN0B zWMn^zfOK?Ova%|Z91NyheN;axr5~GTEOK0yH#kDrW?9qpcmOAsC?{JX2JP=LlRbZQ zT>r7<&8Hx%Y;ejQf_!S>_b6~@y-*OYoKJ!G4}4DdouY*neMDB8E;nxhA8|WQB@kYb z|CCsd*ey4VVGgdVCJovj%OM>N)krO4*@p7aswm--7QRGbS;HCdVzA2c7k!+Pl2~pw zHuBpkOSx6iNH>-zfRh+44ameM3yl&X?}$b5$lAH1;v^7SAas@dAN(7OP;)L3{9lkJ zQ6|V5R?XSra#VDT=_0frC&#ff9SOOamipVM7K~r{a z&R9ElMg}qSki_(L*0RyW*qT}nnM;<3I$y0qxm@vPg=|fN(R+xmH19sY~l;o#K6iX9{16>ZUFaTdfjYILZm0+Ijl6Lg<^?WXGL9 zPRLab7&mh2PwHdNGttzp{+(}-|LojK%pCi(#VuLdLfyJ4V~I6V9<>^_I-3bZlAf}L z-7Y$>mrj*5Pf4wi!G)~(vp|(>{4Zcw+mE=kmdAT%NO<~oi6R7%o#DiLCAvo@cHFzE z`^-zH$p?T8Y5JN$zJTt`>lGVmtNoAs%ZEzjCjDpGkmmIoXOKfOvUzSPPrBn04-L4k zC^=KW5yy3|0g-gW5P?5XPgDGNL3&9x%qv#w&ruE*fGq)N1lUWK%2VLIfP%j8Udszd z!TX6kxE%sxRSp=rWQDvQcQy#T#kgAlJ^{N@1$c~Sb&JhF0+?INADWVh0K@nDTkRKM zY(db08BSB!TcaSW7YHaAGx72n-EqL={fZ|A`sUNN=eF#DTOnrA8fuTvRaV5<++@JznO5aX* z;f|$}St>f$FR;?#$CGQ+7}2KHsHm@p=9N+o-8X@bBmxfLTI4~Pp`B8}xCSt6yx zE9iW&D!)WFZP}B}-cK#FN}Q+bmMlF(UTVD(6p7`&0rJ1YQn`bUU?uB6oq4Kv4+Z`> zq+Hj_E?qCH<&|K)^qs%KCozB0eB9ZBkqYzI1MH?Sf0YAu{;uFz-D2rA(^^uoshm{qy{%A*0jVh?B2y}@1+$@=oO|q}_j}%?qb1%N zeW9LDb&(eoTfVZ+y`|CAy09QV)Y{n}g{z+a47`*;Fd#Bf;1{ddEQBUcW)wwg_Qyg` zWBV*j74JH4ZrKwBIb@*mT&$`T3k4ahjLiF%;zpWo$WRGZZ~SNP{6yMz-WR4}ZyC{jtDQNOGQFvbD6d;AeRXE~vnvGgj?Xb0!)RPR z18bgk_6JMtK`;R$^FcAfG8uzMfuLD@;JURO%s7dccd@EOl{P}+r4V+Q$mZ^6wsTaC zmoOwCL+D`$Xqc^iG!)LPB|CecuD*>T7|(_4%|1i?rM8l8|Fx;rV`mUBFgvw+jB|du zcN46XPIWXl=SZyPIo*?E*^716C8ocFuf-T9U`$!(t|1lpL?_1(8KlZwu|vhigng{p zwB<$Jp*C%CA00*q1$DMotaA2k*@HF;UYQ{daAq>np+jQM#pOg_Qz|~c9|MgF%S{0< zTJr_#{elpkj^euK?V{{&@6~l5(5p8dt)^EMhimqa%Qc?-?v_2BFNV>ngf^jT@>#*k zSm=2{L}yC5=9PC2re4J>@!ZPJH%e1ahf{BaoI_h)W#cGbKCyCWr0mSHh%h`-yxg+K zET2QM&@*QFIK9Au@3>`ry%g+WM+Gt2<{D%MWZfIYiz@4*+p%{=FOsnFW0=axa0nMv z+qqfg?nZp7MG}st?ity;WXq`iC@Sy$2D2FzBnuBz?yf5l1mwz_ zRKSsI!I4c~12wx+J3ji;8{xal?vN$9Jl$}|r~9zoWddbZ{giUBqTJgD3iR1haIZHo zQDPfi!J07~ikG1;&NIOXy=wyCnTkcQ`zf$9)tnvD=Y?{AG?;ajdmrO#ef14S=_=O3 z6UtHR*3|ydKUcqClLk(rEnR*RHy!V<-J;aJ`_t-B=dR%Qz?v4T z?JPDe44}GGfrWN=s$OiN`0Gx^{3{|uLNhdU7VTi&&aV>EYxynuVw1!nG)#U-lRSiUKy+$t{^z)j(M z=n&0=S-0A``yS$OCZ|LBzKRPt_=sVbud?3b{`obI6Dn2}gJ}^G%sojCM>iuHWGSQ* z0E;Kc46v<2W&n?u9dizZ|7elH{tpuw)TI|cLNBb=PqQTzBnA)DFtULN5`$SoJdsrd z=QouiSgj)|Qd;$a@&b_+ATk&?62E*ofELLODn)Lv#Vt!O?&XOJ3+hq=2(}TG7Rag@ zn_xl^7L34lY2`W zv2LzBd4@xD0|bBfh8p{W94BYOr>G!7#4B=9Bwjg{_7Jbg(k)`Q%>4WGXT8W5gv^Zv z*>u99eaIXnPNWMn%e^lta|C7;$rWBG@Xab$_%TD4>DuwBW2fsr%9tf9Ey9RkrrL$& zin1-i&$xmg)ab(H&r0vqJ@pOtRD&b!U!-QwbJF@eT2fnmqzVQZ%G^nm2{N?3#d}y0 zO6m=%JM9DN4yVk!O5{U)IFPqQbJN6--|qul+u+P#EJ?)KTB_x{aX$q`@&u9_DbbJf9A%QCkRcjycxpx8bqk=cr5R=@(l?IRMx^qF0s?B^v9`opEsC)KSZGL zBPcycCVnk6XG0zh;p8J=*bDB|XBnLAM)&=8QP0nR@!(?b7H;l=umQt5~N&No)3RaiQLgBM<=k zE;+c#DVO9lSKtTIsuJ1vBZDa`<=9D2fCjz20eHSf{YxH`XC_hONr|bExh5fAibZgpZwx%Crk1Jc#RkAhF^XwdfD`#Eyrp2;10bUCnu|&*c z1!A6k(#8D<9k;lg4^)_4XZ8-ORpN5T3H8L8k<;t@P$xNM)x{nP&pg>Xg*DQy}@{$MK#}P1u*qC(Ni<7@a481@vSW>p8!GmOLS}I%9qcSD_)-;8! zsS}Dqn7FOBAAU0-gET#zEPXi70CTV zsiZ!t7bn>%x$)sTJs()P1aGxG;p1pMH_7aGkYz3uifK=OI+ndq$o0^H{1Y3fo6f*c z;_^*`sSv-4?Mk(A%sNFdRH-H!;!_l_vbQgyOesy`^7SjAR#8VHrw^<@8Pn;y*iWmh zR_0q*GA%;D@^Q*ZKrHVDbV%hZ zdQzK^8+?-UM6n;Hmv>--jZe;m!5V7IN~ahJHYM2Wo+l@T7(Q>Y>`yZS(OkQ5 zv~sd9QZg#6g0sEIoHmM{@p)g*SeL%FoOi6&*O}>p$mxgDjdk;7}F+AT9Fw-~J2e z2)n|B1)N4j&Vw#i<;c>=dCCJfm!BinBv#w?tiy}FixFOkyf=4oK%buT_OcT4bgM|d zEUxjo*cCoT7+~~6lGxjj0rN;p&7;S7seq4aHCylqWi3r&0HlxPgpKRUPHz0DA>4^I z&Pq9Y7v2{`giI5I3(RTsFiKRHl#4ly27RhS!(hTcSvS5S)I95()9kZrHrm72**gB_ zkJ|(x|Cp@)%T}NRUtv1Z=7F;LUFa47B~tNZcFK_K3R&bLghK8lyv+bvCQ-s5eA4~`q zc_fytLcj5E)baHjo9kk?u)I^0>j32h3SGq%JM)vOQI-@%#Ijy`#9Pv!bkAZmCiWqfQd~ zk(iFWtMU})<`l6{I7OwT>yT4B9weh?eKFNoY^X*%SW z!h0lz9}e#V+4zZk;#jz=z@b1jQaT7GAs`zKLN+vjWOE@Nn#N7dgt3^<$3^x2#PVYO z3Lf9pVK`kmf9FHxXpknam*bY=i&^{g+o*D;L_M;WJy=5UGHcnQoeRmn*;Uqty}jhO z4fH*U>6>uMZG_Aub1B(aVG;pu@)S6hsi%~(p<($^vCaUOAa5_`N%G>qNbS}W6`e03 zvZZcXU94TEAd=R{vp(sGUbnEmdF0dOs}-U9>{rppSz<;b9d}-qJqy11Zuv}~olA8- z@4@Q;g&3 z*6kDFPG!O3p^aPI5DJkF;p92Z2qQ1TRrxqRucx7)tmL>!=x$`{sTb6=?lTX=fSf8s zv@bm`^XYlR2hnp?2A8VnI`5}b{Jy_FgAGPksctZpB#dCC7VizFEwgr|MXRk|PUv9O z*}jx}j(@*L+!6zeKk;buMl2KLN;5UGjEeRPF+TX9eZ=S(Tcm#D9X>-a8Js&uR)IDD zWy;S~E%UNPe_(3B(I@#~YOsx&BJ|j&!onl;nHl8%a$wmg_^1R|!BHcgR$yJ|X_=V( z`Cc?2M)I%nSWoz1>($*_W(`7F%vG4r6qi+=vP^6NhS#uYt5?s$rP_3J)CBjEPjOM z3(UWdfapDfBkGg1W3`S4kYtDo7TpyrcQmPy^ip|@09CvI{r%$w*4u+@AYz4e6n|*e zn{SYiUvJXHhpe}ym2~}4fnJ>%kghlXpnCq<0QDuF3198w=`NpdDVq)0CS(U9z$EaCH!U=Zv+n6rBCv&z@qa(Xw1VOqvRfYXO~x)Q(S5oV;|s&Slqak#<(6l^0pMm@xSa47l-qE?aQB69S{o5o{_%%$xn7+j3CT=4@z?+`Ea}OAl3#V ztDA`EG^f}7fi#(0IR@K&_qj`fS5Dmu-RsS@gbZ@8GS?gBx=mUzF1K!E4+a&vmHQxD z?o&A}7mpHm-g>=W1o+)orc0aGU*^6$Mk-%l@4h7$LPm4fqo?vln+Bx=wzJxuR@8?> z`tC~Y!|Uc+`w%MX!^0RX27O2r_2IpBg+6>Q=)>%w5C38=%H3uCsRoL?FJN$1lNyA7 za5G!IsOKrU{Du6pSnucYuZhsb?>7+X^p$stKl;Wb_FxiUAW2MrlldjL)HvA$`CteN zBXI}(u;TT^t@A>}kMe^I#@LhR!nO}CL|2y0K zrds5ezphk9elYr%iI6`oeG)I1cWIfH-s@j>X`amz_pWZBf*S)9D}U0&U3w*^kMgR2 z$K`GQr90HcEhcxjOpv;ei12<01EP*hp!{)}k1~ZTMxnHX$(O&bRJmMHPh4B&k4y1* z^)H7NE=Ty6U8zxWMLoeFzg`dmi&DE#dVc$Vv)_W&WbrZu%4@3&p84CbS$)66shArS2<7uk%V3y zmqCl-9E#WMA|F-rpUtUfHRk$%XzqZ7X&hYy5-ohaWGs=9)BH+k5dX>8QW21WL3n=F zTT8lY*QegV)lzDqptvd=d2?36S~dz1xi~h|k2y#NvzGVWrk7(`LI#Ykn1^8hh-6W) zG7EVl?yQQ=+rvf3%G}CNs*_wg9bs*#dAWQQ2SE|tu1*~;%YWFKe+8|OC9ZQ1$wM)Z zz9rma$+?MFrG?18#x*Uo%X*sjTFcJo+&DYLi7|ATaIX66JcH#)&0%L-rmAyK74gV3 z=M&g@>)i`B{L!76WQ}L&Q zYzX~hE4&N?oEBC=`yYJbfHPS@CbCcLY(y{{fbjEENAcxIH@()LBM^+}ep(x~snJe?FPb4x#2G{Bfq(SzS-H z2Z#;SA$%rAAqS%f?P@xb*^?(bgS+k2S3*RYhIQy~cXQGg1PVD%CnHZ^y#*9&n*)tY z_y$nzlewWIvP6r9vi+MP+0c*r-}5!sz#^GjAybv8>73}C@r({#NWd$Y1`zNdyL3Ar zWUA_O^Ta;ZfG@r-7p^saemok6tG(4$%~RG;L}zE#0ERBm$c7hTXvWP>njv{Q{$MBC z5}!jUEeVr}&~eMEY&;xIy;@~=$E&GUl9^V{C44pC>yC>$AFEU`;4g9F)mGaEzNC|D zwe6rxx-=p?uF8p%QEkm-Ixeqtjo%WzvUj73W$I;$W#a8@81d}& z@ZcD6YxGK=J_sEwcbRJ1uI(sl*njSHc#n#}FrW{@9`0~Y{tXn=;B#$9?Pl-me9ho5 zz?DoBZh99)H@j46tKg*A<5BK}Z}EZdbxE_tqk$e%mwr`)Nau+8w$=V6V8C0|Ws7BS zcvD24wOXI#tidjTtrxoh`X{oaR*w>}$%QTgxu_3HY`N%)Ri9ttHlw)q$3sMOT0~P~ zVh6Qvp%Q)2_(kqq(l4MWBZ7k(*buPqWa*zxu_$a}kt?dJn^#H-j1kg1mby)chnx@UfOm?@V;7^5Nty3d*7qI&b{RJ-BY_>@wg{Xf0gP=FxdW9 z`T$VHN^obaZC~SVUNk{R1d5H-L)=fx2L-frVTi(Z+~A%L6g9LBTX3ip7Mk~_b6$RX1hraEyNgQBv!hL zS&}pksh9glQyNQ(PJcoQQ}05A)(dEvt17}s)&5cD#*ip3hREE=h`1gm*K#pJE|{=U zC2kiIZ=W85pW7eMZ#Iq;$X7Yfqcn*{UPA76^)3Mb?eB^?L>73%J&UtWjhxO?zM z$bNTQVE-inSC0^vqulL(CdwqtL{UCpQf&*nalUXG7fC3q?+PkhCY;8VtclsdJ}T?v zeA5qSb>percD_{Ze#Ml;a@9kczNF`OsW;~6@All9Uq8Cug15fgzwsGK2+}4_mrT_E zgZ?r{f+Lp_GghYQT@Ofni2Xw9wR(veE3)vp=q{gz)d-WY6d5?ei2)c_>_i~afj}hs zNI9Stt#N0~p;R}bIBVG&@$e9Dt+?|VLNRokGLLAOqW)Bhxm8*;6J|Cgj*4KF%;vFk znV(3rEDKW^$MNZidw>+Y#$F0x5uUD*RX1GW&#zjhAt5HkRNjM4l}jVBF2%*;#qx@M z6&syBtUt+V1_ID`<{r@uF=U*LVkzvFl_7(Qyn?x~h{{sC8Lj!8erxXS0?F2UMfA{g zRy4AARt=EuOW&7C@F&eQA**X1YIA5}+gxx2jI1wEY5J(!gINH3 zWsqkg81RM*8p-fvy?=ty$&;n1n2Y0C6?8t?Fn+a1qAGe= z6wOw(ZN6bb+<7{d8+$Sv_m)>B(7yAIPfsUJ$Np|rXuLD@*Wdli4@%;px8jk*(M;Pg zZkk@qjXQ#w-&aCg37@ww7CK1C3rO3EjmJUedVb;Sc)C&>VMd9SpFLhSs;q3uh|8~J zf5ik+2$PI+_$IuFcoGq9lGd>n-k^G?f;MTLJ$$2mP8pcme3l(~n$(*N{OpH-MppCv zuzd^PYb`vHFXc5%@8hDAS|L<|J~$!{XVPskOZnS%8H%wVrp`DV7U5suh}6XAkftGU z7fr;hPk7Hzkf#rMeMW+g9Hr0r-3g3eWkb#Z^^Zv}l_oyOKSskgx`*uI4#j>&a7RUj&f+x`Wfwm#51eNltpPrBi{w=P?XYXQ;q&CA@0e<5 znoJtqR_dfO-Xi2vY5*6>tO^#KeF<#25=6E|3!=F+^mDWRMRRG8C8D=aE{$#E(qNqB z87Q6|%1lJjWS3^h&b`bo%S=QNZih1y!~7hVnRpyO{W23tpkZqQjm$)TR%!l>m3{JO zbo==;?o~|cALP&YH@%%u$e)oh1%><>&88s8pFtE!QxN3Pu+q~^L6AqoYKxfy&81Pm zcA+ocJ+MZ)Z~I!0->^~oIh172JVy=%9H3di=ZO22HNPA%p4nd;Tr^D4|G^=G{;CVP z;BV7~1hx~ta^kP5L$aw3nR`PSyERJ_i;&q@#7GHZI9dgvx?CIF*zD*NB3p=>J-b-Y z!=AUtV8%u(RR(qv639v&=G4V=S^ap%l-i*UP=L~a$eMYt4`s$d6pCrHcR9?K5ZIcZ z88zoNpmJ1|?}+SKxW0l##NVnx`?fHxFjIfL$7eX#TIuP0p)Mshs#aPwD*3M|TE{YH zlz#y2S|wt1=|ePkwfbm0L8l~j%Q6{v4qTJ8DoXB>x$r1I|GS7jIH@R5h94%N52`Ja z9-ff@q@j;ODu-`MMml_OHFbMm=X)QG2Pni;OLa6JY{I%s)l^YDpq$O9sZdslsw&il zvMR5t`b7b#USD+$wCSVOHF1C%CuC4CC*JEihi|w|zfdS!ZDQgsU~f!`fG}X4;X6!3 z5fd>p`W^4(`;QzsQ+8Ts6~T|QSW5!o##1#?r_4QxKiuZzythcTeS`07%YtJxb=rB>DRNnfA#yx0d^ZRJ&Iuj>vf zo4~P-X3^ZaM{r4y77U2caVhGuor)^$F$U?Y(tNe`k_J_y?Ew-;tEge}0wY%6(l%bP zJ?a|?qowi;p-cF+s-Aq{!?LS8F7uB@kdy1xQBWPuGM}oUo$yr!edw`H8Zj^KE zN}pLFtGxAnXjlQ$VGlP66a z4J(T5epb3tKGu7j)%H#LDKuiOEd^NV|CYMBE5jPBP96-MP_&G7O?iW8|GxuEk*L&c z8kd`T;=4XT6`F9=Vc(swFGRnGxGPu)!8#Ic;s>icB}1m@7-cfVHMrFeJn& zLc_^s=B#pb7l0kG=j|1Wo`eI49JEr6LKP$Xt(3Tx`}B*bayCr39eO$;`+YCDv$Q>H zehUywNw`YF!yS%dF$=wco1C1xWE=jL%SvMzIq8fG#WGR7pdcz|mvLoWl*vVyi?CcA z$Hj4S(T|IMa-kbPH~dNht>>G5O;Auxphc<_JG3?WqfNaS^urpZ?*_N6W&Kl!Lz#Y7 z`ewa@E*~z16R@91z2NC_Huf(d)zTZ<4;({fOR{2w#rwQ zU01w&sm!$JXFm5!bVjlu_}p*OS(SuAG7G}l--F^~Ov)qg+u5RWsLxyrvpXBj!nLA; zAZ6UOe#*FO!`zcH?phdLNf~!-QOdY$74wncHUHMxFJ|M<{Ahiz-MPDr40aLH*Nq81 zZKWTC$XUw-{q4AC2-4?JIC6$=qUbJTs;=Vp0{5D-;%|vA3%2lE0P~dt@iI~C*FqEp-Eo&_ zGd|KF$-#UU5Aqem=!7v|(SBMD=vX9z)TJXKTZgL}=Y}>qi^ZqYTk0d>S-8x}T1ko+ zV8PThn{xRjJKRG7&lTGn>p8cXV8tK z>?!*CyAq#;_~Ezl24}J5JNXIH?`7MC3ej^mRU$vuzMdpz=kQKD*HAC1n?d_$Nat*n z_J~NOY)sFW&_Cjb9JWWMv@Jh2A>mktUEME=DD`;R1LSj(Tgi^>HQ_fC&g+TJSHhE= z*OFy-FXE{rq$zLwLlm{c@g+_7N0G7-T?4ioK9aM4aA*Zf|FXUr!h)(+WVG>szj?B z&yBWX<||3w2wF{YQSR=>6#y}3J#lu#?^>HqiUYPt#78t%#AL_&738gDg{sThLxhb* zkc)KVx@wFWh;2=Wd4trL?wDVp=F-=t1`4^Pvx}jaZ;ceU1TsO$FxooCb%j5N7Md3& z(<0YZ=)A4x}&$KOqLx+2VoGP=a;^`RqRPceB)1*L~A7&u-qFt+R*_qO-gtIzN&md4~Up- zM>Z0vM1of$3MXIWCnP-sr_7pdV$VJN8S?bZgw0s0;Vn}~MdfJWYof0cW(K`ne$M_? zdr_FP^}(Da1;1qC<|4vPDqhLNC1G1+c8TL0dfJ_?&zLChvw%1+PcvBRKFqcgAg8l< zr+mrT>RBq-ZQ+iCpjr(8RQH+&D9WGxc@kI$`6{oIZ*EXD$#?0xXHfZ?F6rYpeI_Cq zddB^(K9epjhU@j=e{_2Vw5-inzm)3!!c96lEz!qi^VSu-RvwZA3AWZQQzII|rCsOAfS&QAG+i4$3i>T(q*U$ZJZ zDU2PzS^XQVTRO|);moAteQ@~%Cp%5_dv>;|#Jxne=G2;UUr)K(eMi`qc`JknskG}> z%utj7Qqc2b@>}?EyYa_Ny;kM>A9S_*BH=g(3BOC=v-AS1q(sgT3+4#2JgE2%mbZ^^4p_ z5ih8lqVGSTZi>pb6}c(O>&Lh$j;{S6gLYBrNW48c%ZNQY*3W>_nlH|M^A4LhQVo0; zQ)n8s(yI{>%{y$ONKNN#mup3nNfdaF_r~y*1AnKe|GOx8Xz3#~<~*e5eskbAlBhn$ zv`c+s+Po>P+R+vaX!EBd7kAITHnh{}O+5E)UlzPt;g>g|{g}6Npn+dtKl>#2`9r_& zN2J`ZZ$FC&UG3G?1o!W^pMA(2{KIt0=o>xFhVrWLrxSjyobp+qB_opwl4Vnz0y|ALIi7_g8yjn-)vqnmddJK4J+L1=Ppkf?Ph8gu zR=UbPvZ=rDcBG;5x-~sn>KW!L@RwYoQaH@5u~uKDX7S>WgeUUoFDPyx!3I}+^k|oW zJ3f_e{3>*5J1yIFOC=MF?L24a# zSPHoTLQ0;8l*m&YWNxLv*UuI7BJC{Tqu0YDMS77Ae?6p(UgX%AU7}O^YyKOEfpX^) z;Er5~m!QnaHSOK>T`W&Hz5g`7vM)_41milr3-pB<6(3VAx~<6Z*=dH8T>i9G_r z{Tziy!$;|bo?c)-0(v2hd%pzsUpUFEZ@vgiYMW*4{_>zfDAf8?DxpSWm)(MiHIbxeJXT z+}~uwU+6*YQ_o(GYf~TxKLkI^#%EHD7cXsP90csC@&&#s64GBBFes1g!{YzN)vro-#_oS*F0~DWiyNK4}V!o-&HeMj|^~ z%O)5-WfY;!JF+`1n_%>mQKU9|OaXezXg}}Ix_9aN{FyMp|Lf~>?O%|pIr|i=Uo}|$ zbRVoHp4&(H+7-yJk1<8=cDcrW;B|*`7JVJ=yd8i+Ux?=#P{%#zwF)j8Dq&W+_YA0C z2x+&P#oC`OAlbi+NPE!=RvO_Mu(a_nk<7*VORPQaMWeH2SJ1Nwxv5p}vgWFxq|u5_ zR$O$8hmB5HqBu|!t$;|pW!c3;&*`eWj?VlQ?E31^oM=DNy_iNUfox-fc*>d?~Rv6^ao|&!p+UAIJPy z{1dZeek#^+DPda(g=j8IDY(wkV2Bu?ZQ8Okn4T?fJj(8eYPhqaSDiGWkVhkpiHPV) z#?5$cWEm}ck@ zC$!~yJFZ|a@k>)+@Sq+#bh9Za*h{2MLBU>PrYR`cOMKrH`1TUT`@FXZ@v-80pV`=f zxY^%vy?>^LnHgm+i>0o&fjDOALv~pC8M%krmqd+Lq9~Z*w`3BJex!_;C$jH?e{x>F zT99jy$a@T+d43>lL%cdWjp*0$Ao}$k6qd!$uyfd88`L)8uhq1c@NeWu>l*_*T?4tQOqyW~xX4Ku>{xaZUa5C>063i0#=>|M1+4W?(jOcZJ6CVD z{z#7wfiaq^M+ZV+KU_~Zj>SC7^TmE#>^YPjWrt?Mar(#TATIWu^~G_qCy6hw#>IZP zg?`peBQ7>Mr1NpHrxnM=CXcv}WNL&G%V31!^KWweGn>8uK<&_s9F6GKMqcq2vWtA& z>#@Sa2XU|ei)}NSTcje3O>LVoQc%%EBZdL>5_Eh|$l2Pq`B=HdBp5KGTFJKc=`T4Q zNs5mE>dHimT6yu4%vAyz_dHLO%9CnVC5Y9Y8bW;~ixwBb?zrhZf+`u-3{7pGEY3;o z!NqW0(%Ix}C9H*WU{Wr&zr3(s|F@`PN7KU)>~x86==|LQsA7y0kssD&*w0hSlV z1AhZb301%ie;Q|!4igW2<=+$!Ja<1LgCe9ogIlZhWX4uN+G(JqL0Wk_>s0UC6y)iI z9}m11@|Qn8e<JS`s&e13-v^rIqZx67==vfolr{O<>8 zZi1`{OY*Hkkmg#tB<^|nAkD)H1^FP&m6REL$W9v(nMS`<=o``h=9Pvbq z8eoVgV#@$OJh5NKh8;GB!x>{n40}{Km&>VAHXgD9$Sgk(QG^bo7U&IS;E*?%drfUr znwbE_f5b159+zb%K=FU+mtbAl8_rCC;xF+_@YL%)E;9j&-|CkfM@j$81StNMeo4Q~ zgnr(1ZonhibMA-cByv}W;3xvV1z(9kekS%m%GV@^Z%R0Cf@cFVl|`Gc%Eg4w5w+_3 zK0uM54MgPD+?{3AoM@eJ%%D=gzpi4qxRUtR)I2jSMfdF z9fSD#+gMm#Z9&-f5d}XNoMZb`JirOynBebQ7HhxSDmWPywNgY{&3U3I9-0Y@7~vFh zlz8!@gr=jFynDe+gX4&%#Scg4*dBgJGN*m?Bp(bWd4u;^Jxl+s+tq(BdjIu)^!~6j zt=yX?bLk)I|5HH~1gjt6t8DZ3Uq!47{#i?o^CQ;BkBwL_v_u+zlE(WmEZ0+jU)vC7 z))yk9-!#UEL;w{Mawtzi8lxCqNit&Ruz0i>5;8d#+X{yNPiP0m*#+7mq$|`VHb_?b zXL`)-Pao9m@Fu;TAPQGwcSzPAk+Dc8jp5;yrU0UG$XFhJ#}q&_4jI$K$)*63amd&n zo?{A(?O~sj^ck4NDMlU>$p0D8yC{%<2e%(waW732RooG@Se!1w#PNTd3GmNN#?5<>MKsTToMQ2Y^q&3%q1fBNj z!DrP1U$ua%5U7kj!CKxFCMH5nr@x3IPtW{4HV>7F$ZJ;nWDGh2uF8Z#U{kQtU*-&} z2Fm}==hS3b?1LcvGZr230HH-#7ZbknfL})X5%E&Tw5vst0B_wULg0H ze25SbM|y77b+2|Y!5D~#orrW;sn639cmn`n`oFevoHLkEdmTJ}Eon})R{KvyX_%yH z;d~?=5cB!R%~^FA8V1$3KV+ObjCQ>d*Wpb)FROkg&mW442X<>x*je!i!xVSn;2>w$ zU_Hb^Rar|bH3AZ*=eg6k@U0@T%qx;}3H}CK`}MLe)q-kceqC;vn7i(I)ejLUqCQh= zExVG*xeB^>CDN{|*xIi|+I1Cs`;|z$u3~e)5^2{}?Cw`0?YfHX{YsT`ajjA>?8}=( z+9ikOlIX$bu@&58gkHi3r%BH#LN9t{q+XJIjgyxy)o7-k8J0A0l;~Qege@MQb}7-t zN(s2O)s*OJrGzbhjVaOPN(o!Mn5UaFU41|0clG;sPzn?ZH2=B*(EJwqDiR%?;o*Om zUMY{Tcfv(@6Xm0R{Ea~WWu+wr+)?||hpWBfg3o=`US_@j_xk7kO1YbuDBe04C0Ge+ z#lywEXaVADhYEJVEP5~y&NRmjA@>AdoFHSTi;CZhvyeKgx%E=nx#a>^~PaR))@h4x>Pl+$Q*ia`tJ`D&c=rIKaZOHScpr8#|Zwd<95KSt89|IzOBj5QCQ^RQEZkHQ5 zcZ-pZ;Y?RA68f8$Kl^5N^IjXnQgqwciRyj(`Sq`2wJeuBuUd$q=d zGe{Q=Wp^fwwsRWD6qaL^!nyg)qslW47 zj35$~Vim~=rLp=`&emM`OOdr!>ObjV)Olml!#=NebIjRy@BrdPl5c79-{p+SS%tM4A)F49Df!asVKRJFSwss#GEf^nag}?^%k1T4msVHCBDnF-nh(X z3AztCq<>xih(>vdc27X|4mxyC5Uv9~Am2aZ&~-MgS6kgK;mp`Hwl-|_MIEk8b3YVN4etcu|2*Q{l4dXH|_$uRW9 zf70}fJUQ*>`E?MKFPHM}>+|Ju>#mSn^S<1VV6$7~|4AS;JNtwl5y^#hocqqd10sTU zUhEBe`28b`G*XZWB1FVAh~Lga6d@BhXx?iVDT!J5T~2@XX*@U{u(?WRuYpU?F}tWW zN#u3~J}zyW@kwF%Sm`^o{D-B<$a}Ez;NGMN58TGjSj(rC#I0ptP9SBO0To7{Lsf~) zb>Ce{7Hz90-pbxlJwiWvfAuJSli6QX3;9T9@2{@c--oJg{e8Upe14%W(nk|dB~Fkm zakyziw@*)gPxJZS<$gdQ=1b+kmLm5c>pVwny7UwZ2z$yYCp3oJm^=^QiJW=B*`-ar z-dU7#UbL1?D#Nt#UhpYFj8)k4%Mh$$P5WJb64}Akjpx{@y@T8Nul{poEHkS#Gr7!muI8Hqqzlg5J@?VzmC~TtEVa;eJKGPUDn&iN6@EpB zGKq0`zhxyzz6Ua@o;|9uDmc%iItFmxgrDM-Ax@K}*7D69ENV8fG1lylbY6XOZuGLq z{!`Z<+(eK7uU1DD!?1C5MeXKX`q^2#(k4RPKg~!* zK%&nmTZSv^m{CoZH;TIe9@zbjxpDv#J)r3=YuVMI`m?VLUH$1~mKLrpO***4F0U^q zG3~hWSY{OLS$*b8Fk?2KeE(_^x-t~yucFz^!c!qN>QtX*w&47;hsD=N>1A|!R{7@1A%pj0y_G08RcW95S zbgi&j%SXbgu}|e57i& z(fw}vPQK+x7fs=I%JDLun_7BYEVN0Q@-bQ1&&R_L%Iai-WKHJAKGC_m6lqE>97)ur zt7TaxfVn)IW!p8q>VpJ=j|fU*fDrC4N$^36VYV*8J8tTi#b}DFB)E>HM`sN77%ioE zv+*vdXthZ=1tPdI!;l=pNN!}EM7z?}Edwav;9>V+f6`J-Ct9#w`CWPGN3#70?P@5M z4ha&-uOLO^ua0R%%r)yXS3^pprKR45EU18Q@)0NjuF1OuH>AU(?8s{C=2eNBC5pV> zoxEW90EBnhDdA0fi1=jR27$gKycHmlPziuOq}S2NTPB{EJsrCF$Q9_26WQduRWkH6 zhYUz)DB;B3t;!9)Dd}t#heu#ILZJx;763|Sbp>hY_V`egIjq4lcf>a4}x^}RCd*3KExvIW&w0LM_L zV%s={bWG-XllMiMk~|?k-W>wdQ|;&noiTHOK}*#DrrWDX86_j~0v#kkkunC!wm*GCTLR z(y^!2Teo!O!u_z9@J>@1gwVZJO7_}Mpg{8iD*fNB6X|Y3;iH(TCmv?YYWsrJ8)T3u zz-PJ-oB{%7J9cS+gG#}@8r})GlSPZ*Pu>DI5ocS=&m*vHb`fY7%cd5{&&X6pew=j& z_d7Sv1ys6Y0&Qwm*`; zkNd9FyaD`J%lkuodybR%i3BXaU;uA@JroaZ(ii0j!{erxm=r{yOJ)5cd|g5ZtYzu4 z7LYQNYNZgFW_{+NvKGETix}7A8z-NWKPPn=S7cRG(u(5ONo=_p!m2wi8*|Cpez^MZ!&`&EQREWsST zBdkin2NFA$a7?h4Te0kXfg<|^+jvdK49TpGK3KLKo1g@nW4X$kY%%Rxa6*e1Id$&p zhobWYWRT~P6tzO4i42}d3|CMqYTdCaUb{ZBNj=gZ!#s*LcSmQG&_C8>tOv3(p)^oB zF<1Go{4a}c5MeGD3*zp{yuWw@T75XGIvL{3{O#RQslXrLm{`D6V4!ZGO(`klL`E#db<7j zfHR)AMygASD(DF-M820*{09Kp#b%`}mX#6>t!F)m1VAfAoz=lQ*%&?eR@7Nl+Yyg! zy5ZN+$Oao$)mk8HmI0n(keh@ire_B4Vj~v|@NH*THSLY%oI9$9+2QlCK#EsEYe zmNCO?+QCAY5euDQ(BGh7VF17*w=7Dd-6c8ODu(fAX*U_sMoxhNy>#A?xAA$KPnX&1!TXw?j(O_nBY0v$TF*|pw zOlw!W%zWt4Vbo&EoNZ)nT`g1&c6B>t;>wek{x3A%JZhtdUdKwQKR0Na5}&hVwp}z5 z&M|h&+R!Xxx7=ytbwV7+K+BrkTyFMp;$PHfA_TQSpL0!!Unmp@H4T1o4a96V`kZUR z{G!jf27QhMzqkejH&)ABt3D?gSyzzTBC$2P966KxmcfX5o^QW=x8C}a+j`dKO{Sn= zzdX+r1oq2~jm%bHyWIFs+yr*ZP2c23ZI*@p5sxRS3Xz5XpSE|8kGi=2|98nE0nv>b zC0eRc))rKhR8%6UiELn_OT~gp3n&(AwPK5~3$&ty?nZd`?P^-F@@cK5wHK|nTBXX( zBwPbn6~PNi6}&Rbg5V9J0{J~(^M3Cpp?*H?_mAH`An*5ku4m4iIdkUBnKQDlh-adO zb3jiEJ2>s?bPmYkCg$429S<|v@Z|cBSAJ}JgZ@Cr(dzrl)!KItQ%_&5k?}e*;M<;W z6FdbV=*g{YIWu)%z=3X^-Au8?ruU$Zo=KS8Sps%S+&;D0H`QTO=^iT4`nuItSR}u% z!#U)Qs%d)hv|HgHW%3Qc!LC=ra~=a{+Wo_~dMq=kq&!ynX)Jv42X(iW2NFMI``t>} z<`#TJGauJFtHS9&Du;VE%f`g_@U&2(J)7lk7n$EQNFg${1br}$28zr9)G@r9Pstm1 z`ox@@h#H5v2#rOwMYm{M++n^TV`iXN;p3b`_bN<`@iXU^`+TZ#?TvUIZEjl7?|b-b zP91FX-p0?CljEV3Keag950+trB?uIoY8xlUe=!k$IbOD}5tX}N2=w$97wN*0fogy9 z$g$Z$0AE<2t8utcFnzq1jm@4wY&-m8{eI7P%a@gBxcB&w@`}u+(=DdPX4ez@|5o1o ze=o0#N#)D?$^Tj2|1b1nS74_4&V2X%Z}if|+$@?Z&`THd+-V-YtS0aO1HE_^)`|Em zf&K@28BTY59p8V}|4uJQ*|;yIm%TVR_2|VL({_+sj|64Tr*>&&9`rM4c1^c}|Q z&utpvzxvSeI*q8@JsM-N%IPIjdWflc@=EOV>BZSUgL{7f+VO|9A9DsqY{%G>8^&8d z%586HB*vuedB;FG2Is&JS2UaC4-dADwLau6LbF|GqI=c6V(~G1=SW&n*Q5#p$)oFg+E)pfXVI-UDdrK?lc>brkVB^#3(df#pvaZ++ zwzR-{@6pJF=Z6LwN6u68cbkcjGG5irso3JLgP#l#t(aOb<}0z(N;>t6k;!)&>+bcU z&a_d<^J`P9ifd=@-yn4SvFW9$7LW>oNCY=lTO@kglzkPAJlnj+9q{NPgy;dkJR4 z55GtZ1Fv0~g^}`dd6q;**UrwR^A51HllZ<>gc4zTP?kH0S=#J*=s+90or#IW7gy6k zDzqlOEBTXr;)=cI3#_zLgHE%vdK2+6cVNW2INEL+peVB5X(dyCzNF6taR<$kCkK-5 zkNHw9Y#yclb%8+GmAEU<5AtcuJBtK2o+;^1bVh1(Jo5+p#NMmKmSImJ=iDvDm5rZXt6DlP3#hUHfl4w^emp{rr)Y? zh*Q^AdHWNaB{v~NAwMBUu>yFD|2r6gn;C(Ut=O|j=z^?|JYnwB8fOi*wAG6=MxYj> z`@x+R7A}}TH&#LEy~$H!Zf^jY*gp zm=5BXepW8hm{^W-%mTrXgD}vQylTD)qSMXvWlyyw`JGti$r!0MD7AjWOUiI}Xz%)( zK=Pux+lm9pTWZp6;ra!njd5_VQ#*7zKv^r-CdSg{e3>)9>ERj4yQk*xzUsjNl3WL= z2dmVBG2Q+!l5QNcvZ1<#!dYbw1wZ1q^);d7&vMHP{GNI{<4+YH-J!zUu@Z~|$L!VO z_iD+ve}14%;6N3D+(~}FF-w*BhxD~aNlQ<)d)dlR=E*@ZXJvA8z8zVgZ)%I6ERZ3?)h>i!Ekg3 z{5j+fM({qtyn;`zRBJT(mcnK~7pOu5K}_;}@ngq~9S`}Yg=Y}76+dWu&AfVsu_9NG zbYHP6EJ|B(rwap}Lq;FV7w(lRh zw}s67Q>|1IPQTC{jUYlv`YHR;Kei-4Y8P4Dg`*p!!<|fh*<&oh2HX)LZ7n3pAW*Io zDA|4VexB|qe~>MIRQQfwA$5SoRRU#g_JvOAVwv$Fvy&+dMqU32)4pKaAMs%u%a9G< zeU$}lXgK{HeKKCccLjK>PTd(9L)FDuh5>Oa_919J_GdG8<{oF~!xVOLrM+4nsaG~-lo^(CA38B0KikY-j1X)BZl`DuJ;iF7%QF*;iX zeCHG|^+v#tWok;?n@buW`sGkd8iRiClSch6D&J$Cw}M_reYfgc)JLQ`G}U@k_>N_i zO_Ne)fUNh}xQWv2@EtYe@q6ZVjtpea;oH)a^3PCykwv#Ih5lQpRAHN{PP9QfOSiDg z7n#rNo+}apxYtP_{F<(gf*L7T8^eWa8dHSd+7AjT~qNzEwe}CEcT+%qJcjRH?~~aO z5~W%x{}f&d^yGt=#J(oGfto6sEfDjXb;OVE_$MNE_Guz~{AhoByU{U@?C%I|h`LE= zac{Uj2mC_EM2n7kn?v;F;WNp%Q1i^mLQM?sz80EM;q2B!SeM(VJO8*85e=fg0$S`<;*UA? zDu9tE<9w*Z9}`ySX@rVDJOrM)P($|k4gr>76nDsHOPg~A`9AvWkkW2Z=)VXR-s}=C z`+SG5V78gBRO`jz`ltQiWmFl=KFn8vek`7v|2Y&zJC@Ixn&QT_@B&G@CFSA;psuEV zqh$umk@TZ3(-9Fh+F+VMLGjF^HlUVgS#2fU(kD7;1JlK{Q*<|mmN_~FJ^d6X@ za@$JP28fT;r?Vy}f1-POqdgXbmr63GnUHnN!yUYszX2JSg{rV_NJ~0%VjN(-fj#-j zrLwAp zDVzS+zNSyC1L}N+Zyx+H__>QHQPZ`SQ0n}zRW{oczEZap_gB_%{eB1oJ1Ftm4|!Fl zCNc%Gm-?9=XIuoc7x-TjY=LL-U4 zT1fHXIsXG%8qc?_*=oApYKb(_CzhEJGW)3T0;94?y-2C=euvafi`hktOm9?#*~3Tn z3s^Pl%2eyOm?yfZ;;X{-hlyo?^2bRQ%x<J@Uj#a8<3SS<+7JWrc{TA&fh~d=Jd`%eiCY(pb4~G$v zY8??y%X^2UYyU`7ydhkF8gc%xGT%i1A&Ndu1%brdDOpAXS{h}81U7UMSj~m3EV5bV zI))9npqrUd-CGeAZVH*8S6KZ_dI~MRlgnOBY+e+z$^S-HkDl_uz!%8gM{uh3>~Q^E zyyVF!q?p?XD3I!cV?EL=OLivJ`OFmAQOe2!O=1g%G~3NjnckT9vBNHACgzYzYu zPfLdYOSVsS2(az?BLR&!_@uJAmnD_-bZYlx#TkCgnPnakO`}+Me2K)x#wy~3l1Eqj ztfPL5ogRJ<>&cFwT#e>qffV!c>l<=C{P`fYI)tce#=-nyPWh{?nos;(hk!2Xz-4}bMzDU_M>+)96u%?zgdjkQ&Kr;b?OpGtMq>d=_8#X(#F=g;q5FvZNfVj+0 z!DXs-SU7!k7Y+Cy(>V2Ix{^=7{>OHZkTA@kaiz&6`>+kPvgw6Xn7s-SOm=n6l#Tu% z9ob1L^+j!J73OfOlDX_On`O5-XqA1OET@xd(3(Z+fSvi&yL``1ZYSJu~Vc zR4_(1@?vE@-)RrW|Qoe{Ru1=-SkI;UVyQo-#(C6sgr0rtWODeZZLgl?d}qH!2H0R?B(-Y4-C}g7X=}4m z2j?A}&F;*4YeD&Sl4{1+g3tW;H~|_@uFRKMu`%~zzEs{(LU}dwzPNG!t=_Wj>{1QI z7v(4`zric6W+$T{!sq-7;lijPK=8r|M9VcA{wrr zX9J2QXxvSSOI1qlB-)hhuDYa}4|ZzIjifRQz3hp8x4+C%F3~^LdbyRmlP~4FQsp%1 zkBOlm$}Ll2SE{hw-}O4$zWzzwVnyg<)EZx|&K|~x$BE|q;QzsbpPb>=lpqHru9-C$ zWSpV87SgE}2`@5dK|=39_$W@7u{k#9F|%1wcy;2$)ZqS!(=?_}nS7v4 zswc7AX!zRe8>A1D=knszh5ZxXa8uew0+VIRh{ji+ zOG@A}W5;Jt{vrA_uRs-+rdiswSx1sUa&_wV5Tf7@IhFc91UI%?^z1fw9%ae2+nQAG zDiC7_YGY5kMYP*&wULQSb%rOX_7wB2n&_4d^B$$c`%vq)4EF1y~pAT{~6o#^C4Z7y zs&#xYaf@9(L zxlOUxuNeE_A z{}*1@q%6wqel2Fz<$#JFb0kmcF~`^^`)CTEy-EmQDWom3ih3QIjW!ceqr>$Z$evxsAB{uWp$@YvQV7j_g1*)_WUUME6XlK6 zY&Z()0N!}!!NOSZS^ILb_~1NMBIY^DvBM{vK8ZY95TuXeMWgLX;{qkhxl*;z8o#2g=7Y4a%vJM$C)s7RYVEY2b6LrfqXJl0ipv5| z<#KM%z`5g&VDjTw%kYvwpo(47f z`xCv{-!%83iQaaz9SU~aI9&fPD&>9wH>G~F>e6OHxI;nTLd&%n3DD(s=kW3_psy?O zjbkiVX)#le@aDTmpl0_;RohfWl)2TbB%I!8OIxbl1QEnBKcRPBrAuXNQlA|&Jt-X! zzmlWodODyPQ~i)CG*nhA^yABgx8pxM$d0qOm)$e3jY?c*_m|aZ@#6x1I8AW;-hHpg z#*C~FyamO{OsFv4Y~vM`A}aR~`rBoZ4YSp2Z<+~Bl<9w)QSWs4IIbCblUksmZmC^{ zhwCMHDRCWE`sRIKmF#*-8!o5d|>KNO)N?9XgzU^jO13@sA3GY}G*!LUq z@0mv|&WN7u2X(ZUq@a;21@CUtY-`PbZ#T{JEl=k@nC&KgcL(r#v7pM%vh=R~(^7Np z?H=14Dzc@dHJtF47XNI%wM$z^#re@<^_d(twBL=*KR`1?`3nir^G+{k`ZH9^Hig}I z+HF2z*CYF`wA7h~mY-x-UG?#?t-b zCq0(1H!~WwKfl#%)AZo1%y)z-Pw0EAS!=_wI$w!B62jM;4IRc0@&m%d zflvWj(9@)K%|L}0Gs1xBTadn*qhGlGCIV4$B)VIb z$aubp9^*%6NAPVGlja*!fMND3b)qk!*>LrGFGWEJO+S#$iGGFsbct)G1+MH*#4UEp zQOzxuG3w2m1^mgDaLEc@xMfOak$O3^RJ%&%QSaSuH!bkqrM5NmymyUkGuL~c!LS&c z{Ynv3(GHKlzm93b%t&iIFC0wLwq~cZl!%xyvm3bMPMi5Y1;#T^3V^t?&y2C3j|c`S zaBJ=7gQ{91_Iz9WBZ5kZKV6^T=3@;=^edj7sy4v;Y6G0D@PxL)XGW@!4rA>9ME6i*Y#I&n%`sgNv6f216G)ztT52_jiS=W>WRK>P zWp~n58joK1{rPYsA*>*;H#MM32BU*a|LbXj2JGs@wV3>v{+7yhl4X0$AMvp~2ha=C zvp6~1>v};KRURl~;aUG03r0s}x~hMzNcOrt&E4N6RSN?~ zI3H@+Fi+bDdAnSYGlQXXgF4I^7@=n-2uYZtRPlbD-c1=f0b_=&G-H`LQVOoIf02jQ zbR(*TyYX6*pI|fdpX0HR{)(VGuA3b-n6Tj(r-&*`Go?TB}k_pvYBskCFBSc)Aq0ACXJi=dJ zVTI1^8*pI^y)o`T;Bn;|=Q;B_NDM!f3DRn8Y+m*ZMLf$@hCi3vT_?LG-&Wo8M%95| zs{TEyOm^pGI!uhI`=_iVFZ58zNZDtux`uXf?~85&vWw34;yqEidQqKVPOU1->L@eo zfvUYNA-@xrs6&z$a_M0+-uP2*hn#hsen=jBh>5MY&TnD&mXZXyR|#bz3zC|@ zq+3Ed>+G$s*UVAF1C5)p0nDC7-G|Hvo!eK}Bv?T1$Jq2GztX}6)xTBd!BNXi%X0a# z&gv;+&OsyfRZH}d{a=!$1HXs9KlZY4ND1|bW>M8?rUIK^*83V6vVYT@tVrCGnNfCZ z&a>YzEN1OGVp!CA@IZW`BW$;lpV&y-jJF#)g>#UGDj7N*=AYR+izz2xv)QR>fuWlo zuP&t$ubhHBeMouA+iv{K_^O(FLFUXpI!f>1zxv8rXRk~pYn;{6+`P0zi)lv1b9SW9 z-Z}XcwQsxGG*0Rl|5B1+pEBJbT=EUYJ$^2^ z7+%M;Tf3od4c8+k7k0JxBLX)~evyUC(PwE&^X+TjBe**CUa)#u32{~7d8>VSh0AW6 z<}+K=hNJtgaxVE*(P==wsw(BwBvbIMES0Qcj9`#S(3p-lUYh1^qLxqk+on>)=hYHA ztk;p>Mh~_P2_C;O_4a|(icq#MseSncfd$UcF0;TRWRC@NLaag5mTJPCQ?){;+qe?+ zd21T@PfxL{E5ya#tcN}gpSq>8m_iiPIhNE?<>F+}@A;7NY>(??T`c!R$#ku#OKf3BJtL8cl=2VWLW!Fc8SyN4w3}t&F(a{Pqt% z6lrOth^%qm8sRYQa9_Ap6Cx2{7@KVo)98@Dg|&aK(avvGX_kpU85&qLhCicX;V6p* zm}`r<=k)gBH#U3kMN&aV{X?f6=RY~gaGvKxoT8#N-iC@uc$YrP74*bm7 z$3#VzS4{BV(w{~8FX8`2^Ba?#rC&SG&7O6`ogiu2@iFXU#D&DUCpB%`LBf0egwC7!by2>ej#*}r#l5Dg zsr*y2e3vYiT@^~VWusuwv^v^P`uHb91G!C2B|OXkuad0DEav`*3G<|;)^~~MMT7^K ztlTj~79UhAZP6;Os}Jnvk4bL&d98BZ%wA!OI;pAL5Wb;3`~t$80!qA8f!Z!!WBaoJ zY{zz;M?b{e^P1{fnUuTuMUMH1+_#ZizOvTDoY(*N{QG?97JW#TOFCphPe41HN)-N$ z0w6Rn_q2_eyN8J5J4HNTBLa#Dbc(3A5wYDwZ10G8=Ol z#4^03F-COE?S(d>%?tzJrWs0qe?EQoZ3d0|qbhaEgk8k^l$iET`I0`lWrz}dpA#)K zaobL^T;{=LuP@fd#+M>{{RIM^ER&U`x0l6Yct`dD4P3=l<%kP(iu);X9+q^Et zH*fX_3ZE+?-k@-&C3^&1plL>ykj6sFY*D^wY^MX}kA(O@Yn z3u&@zRHCJ^Nrgbw{ei+C-%jGuh4AeED6mR_7by^cW~$5?dkN`JNYftPXmEDEf*UkW zkMk3HH&S{dW7~T~9KdSW@6IeFnEi_y8&k|X#CS-^_NBr?M`%E0r{o(uS;K2lA*sma zd{SE+mnrW4PH`s+^abw_o-TxE*8!%@&{q*R6(UsFE;V8D+k}rQgnR93ev7~h+XGYi zQU)pF)Ix+x`Ljw{w2km13gOvrDR86$Td@cBn|gr)AKyygJMDpe6O)s(heRT)BZU81J%DxFdHLRa2pb)liDKHTGNkWk^L8m zN}CL&AeFV6qRv&!D^#%qYhwv)Qwmk6#V9Gf`FSF}GUULv0}PmEQo6lTpC5Jm`LT)X zQ#+29I}DDI%Y{i8uMFY+T-)i(J8nsf#Lz&+$Ym8H*K%Yt#KD-Q%6w{(-n2dBJN9iGo0tEyj@JVIA4khgxL(<`}C`kO=bFLC#XV0oXw70zB~!>D+s z_naEH^zXS|2ytG2arLTmo`W(%Zaf2S&^<4j36(@E*Gzej72Y*5_p9qq>Jw=1A7=$d zl~x1emj1k&|6Gzhi%s7%qrr`}nSp0>PiXD(ZCz%6evnZ2%xOo?-l6z-CS)^R?3NZ) z>~N05MmD+7J&)!cW-%GiMU0_2HJA?U#%+OfUhZ8_&ZPgWorBx|65z;O!97Mn=hzE* zza6*a?ft+}zb=fgZ$g%62c%)_+MPs+DPBZDo5AJu25u8(XoleqCdT+=;JO zJ%#6S)=ADDDAz4bojtmqZJ^S$draj=Q+ME8pOrdZ&iZY@$2IPM6X#H4sZ}1D7r_w; zP(V1Lh}}Y^oT*n+c(YgdX|_W=IGh!zB;B6(oE^WH@_Wv6uLxAGn3{DDN6J+BFM8z< zJe%S(LX(-I;)^<*U7I3j&f;{l=LSxvq3sti4A~FLEve+1((_R*zpv!!FLu?AGS6XxnNA zGYjWlaL>=>ESjT8f^gcdkKZ=wB z9}Le~O##(zDBuL$Bb~LNDV%0!mOI8qcRv`<4F4pRWukbiC^kRte)ZcFGGgM!+J0-H ztvfEsMDN?rU2_e&b2Sd}P~@z&Ncqf1O4dh;rNW_Z&mvqWg&f9};S$XaiM}mW8aV;C zN44A2@wy?o*qeNmMyW}c-0U8iiFa>v!r4krO%&+O;{omT=dp7pG|SGd3e4gO2VL`9 zqI0bFH(SPV&d*c5K+CM-`!Fu+H$n-ICnhpCLN8MZ)9lr0ikzt_5?5MP0k;GcH~5pw z*Q5Q`XMU!3q6uO2&Gy>f1Ft~-WJKa`;OoFnqpism;#uB!slLh%>cWl^+ex!`Dk$n6 z$6j-?7wRj0dbCh|HFxdU_OxgW1zLt-E?qAvazAm_;-szF z+32RzD!O0Rc@FwXSDzl5muaw=cu}bH=GkdIoMy(7WpkVqL)P%%#r2f414EB}oRdIl zrFU&l89sfGElk^}z&#`47`HU-tgXyW3Fqqa_;Yr+rStl&wxHZ;K>>_;fN|%41BQne zNy*y*V>0#Xl9Q~!*k`U47-vMVU`ZU0?XH?xxq9kdw#Mv1R+N?w5)teT_nC!SbK88W5dc1M z6pDRD91x|ljRULd92vaSOLX_kXA!4Opo=XyUX|_nMJ1&3^3U`0?=#0*a8bVRHovk- z@>TfxX~`+7!g;>Wy85{(RZGjp<>%U&Bur6_h#=jEC@8c ze#-3B!@WbmA?#fob^FxRznd86D>s+ZKVp84@X~4aHh;2F$?vwLlvh8W&${ zolQNn!WNV7B1rB{^Oy~4?~=#qJ+s5dw?5jtW|?)2Z2s!wv`RqJ2?uPa&a;trZ)Uss zjx99bmF!h*H^VzsO_#lC26jvZ0oVc|APa)dYp7}qg1UI03HhKZh`o@w^S1dA6A^zu z=$E`^e+wEq%2yoqw$z9^neEQ)<`$*T+|v;+g5)pxVs@L|c0NbFuY6MP>&ZcH9v$fg zRj_BWstC7R#TF`nQX&!>gTxp6d;$l~TAJ$OXudh|Hw3^? z>YZTjkA?Z>if7>Rd9NNJI#oNuu4j-DPjv8x)NpR|woLXO3Lj=#6(u-KpjWKYn} z(dr;zcVL7L*_-Hw-Hdvqa&@9>iZ14iuD39-m^P<^=G<>&=bLE~`fM9LdDMd`Uqe(K zETgeP5C5O*A4wY>*FX(+{S&8#|8D&g`#;t{7i<0F$qml*kiWk2>F?{#2Dj%NXTy>} zT_CW0TPQR6LmjiMvP--5$>JAxaKq!r6*wHR;J1$_<>$7G%8#b?a`reME;pgnTj5l5 z&}nA5yvbOa?zrA_!|rjJ>R{!D>Brl7&#q%yLif?afO{NEm=D}=<@#w|oL*7)M7VI` zCM$i&m;=ZlVP^viI{bIeDGFX(6uJZNmd(ozM@JD{xnXo01XoGia&Iw^RUS9>pA4R4kDS*&f{?T`p*e0broSI@t&CIb z0+8GDK2m)JaJlX}3OKq)%<1Nq-iOeK34ihfZ(Vz+zQpZDmha>0vwCR>tw3LKUvJM45$4=(x%q|iJ$_|5{5~l{Mw&}t;yyQY#|P@S z+e<4r3fMaxnLt?nm;s34EO=oi1jJIiLOL~QUMGM3mRV>vR*m%5mL2J* z!}>k7lLcijTlL2hm7~~LYb*-=W$mURW3+QNLF*~zkbpe&!|C9PJhZ^?6kQcCvVZX% zmu)q7!4V|N++oEb=F+Wx%Pgb=>~z(shz7S8V|`+^RfTyxx8Fyogr@h%on!kMG}9#v zkEruv94h9UfkMA*+6Lx#}F6k;-=_c}kZmg{= zGaxR0#A1&?C+^K%XL$06Wn(LY7VVM)x1VZ-^XR<+bGgv3c`o_7GhXVUF>u5$k;lL@ zhdszzvCI4w;lwMy2UrcsBE#9~qiefqv*;3<%ykqld$X^*MO1Kd2eu5(N2*K4Xfv(Q zFW!Fj)!;ezMyLKpBg&XuL~$5^K#W&_&1pAkVi|4mTY>94@KEi@1H>@5Cmi9i_0_uG zIQ;ZFM)oiVB)f;<2YBihM&L=+B%6(`xt7{dryJL*UrY*GFNbzjxRb(tl>PGX2VEWE ztug&z^B1IsissyNUc44=d5dLjoF7C&pA2oOGwOCp;PK@Pe}z^9*)fZK&qjGuT1&mC zR=*`O4v?Q~ibt>xX$8uu8E{KMdt z_MWKow$kpfJRZij(Jj4a(~i{J=(U$~(?NLNn(C8ZN#oAudfWRP7MjM358c~Lnf8Vn zSxgl82UEDvm0#Xk`s*a$AqTM#0G*8!4x&&W!oepimv1+-Ewv#wY&Y*qW_G_^aI_Ov zL4W1;@||=|AOCn@%D3w`-hKt^{l|k*x98o_%AR+{Ga;*}m~!Fcf$8VhW~%mkSCZyV z@W)fwJ*;y1^uDpw?hqG>&2|Cu)NFjkDg<)&o@VeT0C zQhp3^^3asol@-Hiw;2Jh7(Z{d<4Xf&yE(^(C;Bi!_Ag|GrRqXgA3aBVS>N!{-$z4h zIri>$m>0?u|9;5=h24imF$8RvM0tU0J*R|fF&>HM>ChC5?|E=MM}1aA-EKb8=AEC3 zI?XAZ3YK)0Us+h`?Kv@05-G5;u8j`OsTT=pAVkX~`BSjV9<6Zvlx7%-81YBv6M9)6 z_mk#pP!VRZFJ$UNL+RHNQ)jPIlM1s*2mLely!QO9r+|4bj}8tmTJ`W4b1V7%7Cz3a zy&g4jQvrWbF6O9sH=aq<2Xd!&=tn!`E&~?p#%Q|<(E?2AOA=qJb`Oh&AKW(eW!o`Z z%??`uy}H%PkGW?&eumL&wDPvV)CasCD;Vfna&DKu#ILtmV^eF=Rj@bpPEXhlwT`&3 zzJ0dVdD-meysqDO)s|N5_&GNZ=vFfpa4dQS5GrGI#t>j%jjkEuYb?v^cxvT5*FGPO zG$`D&^tXpS)YB*(7OQ_TV2-O>=h?w(TX`dlKpp8Nd(+$q;ZVh~?V|WrlLU$!x>t`# z1jLf|q7UFp2T^LR+GRQL4NnEsS1*+@qSWV-q)_ z>GT=OSq!f{5L)3N$7G^)U4=}P^ojan^Baq1*54g!`nPihQsk-~!0ZDIu$3!kJ((Hz z>%%14&0eJj=gDLx{(96we`nm~{&fgHfe+^KrD?(AgR^&9gsscN8ouk}&In_j*b!gR z%8zav_GJir{_0K$a-5pA#OP|tsd&+5uGvz{29Nj!B})H(Z5jJDHTyQ9u5C+^xB zys35e&dnfl*^qruXQP=xpda$S z84P7rG%qfu3fL?=PvNJba0Ep`2d^o$4Am2XlX6t7mN3T5+ux8rp?Y*YbN!H(!@`8- z>BZ7HEIR<(b!rfkRIJn^+oq-{W2qen;G+P>ht5L zorvqI%$Rk0J%(bZJrB!vCSF_MJ9bIC-TYcBk=d(M8NJ%z^UGQ}fga(k0-TpEZ=St# zj|3_SYRvAP$XJ?lj9z}>i*|}fj;gSQd6o~Mh0!Jl%C1FLy?c#Oba8nO^;Eu`N5kV?G?mf_RzLM z^_Qx8HY${%W2A-AdCNQ^A+MBcMiZ-InMWhrZ22>hel^ME%zm=F90^((%KWtL;K76Y zHlDoU)H;5Ntg~YAEtBw&O^yHr{BT{JRh7%6I>S{|xZDdg$68j<6CAqQQiN>MFIVks zHtU1~daaAv`!D7Mr0w2(a6U`z`5EmgK;Pe&ZUwE`mh)oNKC?+5hzRP9b`haJU8|03 z=ly;+Sa(v^-Nu_n{`c%%Tjoe=@4Q~Bb=Go!GzRPM01M-bLp2<&kr$57F$sH~z|QI2 zuwC)6(mpSWHc7fq{Fd0TTu<_&`5Jg1W;MMS5tvTwIdpyGs~8L8LG<{FPTL{ydGwf{ zlC0E8Yb+{`^_K!d1rsl`hS@0bHcw~ALN2%Hez`_IQd&?E`Z; zc{GVXe7Z+!<7_^k)a38cv~5AC4>vLyg&RjlVA-saY)@uFb(#Aw{s`>ExaTa>yLb4h z)7KPX|0$Sc!SH_7+|w(zm^1lydq%)kKU`=;LKYj^<2ougj3oy00Qfp%Uj44*dBWH7 zse8!u<9|^|zTv$gSNd4Ua5fiuxt*UNgT^bQ_*g5wi`O?>62}(&8cVG-ZeCn^rJi0D zyK=v#pV)sDE^XFKl)D0$8co zF{BB1;2MdoyL(sq*KStXc=e=Dmmg{Aru|rJ&fGzs^XL&*;1zqb+rV$(8`TR0`5ZwV zk1P7~FZ@)84pIk;rhTpMqTPvpnkI&{C9WNEFfqcy>1lW1fO)x|gRj$eHWcd+I0au!>EFNx)Ef%r483(;WsmBZ zF{4G`Iv;;E$7|ssN`e>?OK%C+FYS=cCaTzIrgLPG)A9pw&q#_}!Go9mw>qsmdzHZP zCe-Tj)?xtx)$Wdo2qqKR7$_kN5b8rez0at!ulBvJ!~0zS9nr2qucj7$S+UEP)AL0_ zE)|3axx{;?1!jrrkepq#&{ktE<{U4}xs}O(=JRM>dPW8A__^`&j(b6}_@_V$KUKos zASN(`)qQ>t@HNE;xYvUKz9cL$G*Sn;Ogk!{r*6=0a7=uSJWHL$OLeNPiyBr{rQ}{C zV^#LmHgaT#_c8uEjhvv@aC!@a!4|cV7m5nTGk>r}h11Pm2uG!Q(mBL&R;rQ;b>c~t zRl6q@=tq7_(-fHc;)p~T&uU-v;2vxo*DNNi+LP+yY|mzD_G`nU3cHrn=iS5g=TJq# z1}9Wo*)r{Yt6AKoY}$he*9S-fdp*q^k3-YjLaLxE#V0c?fJ1=5d*Ty??gobXnGiLy zl%z3^B38y6tJJ)sg1Av)MTjbo!J|wpbIJbX z#qJ5nC#qCFYg;_sYPi0Zx~!KG^5rSsBhVuu+${TG?c*!;#aYS4elcey7q(pNoey=^ z<{q-+l*Xo7PYKueu<*B;o)OK@7!suhos#%ErnQ{bK4{jk3eN6E1ZzlrULH=b;LYbF z+10#znB*$-kZ_Z2Bq)yq{1f~AYJwSg4e&ZS<}S1YLMU5zCn$phi*^*QE{@UFqEs`k zS)PH~ILr76%|hGX^Kj^sZ0zd9j^7g7w<+}wmUfnNhiiyNpMhh2Z@9%?G&)XhzE2Ht zIKGBpZR)Lq@ychzsdMSy*hKDeh)v|`aE=b=$t&)U5>A7%GG~2qHhAXfa%cb&Z*OkG z;JU}UKnETK904_uI!JPRW(X!K!6PR zW{Qz6d#RUyX}JE|_N_}(c;3qF2;SQ}!_1VEoes#4>zf(-Q2a07eo<_B+eNAEMX@5k zE2>vQ1T!cuk0^V^GF^eWuZbX8<*PAY|A9WlaBtR$bL8NEd|l6#^1ZM!_il$7%u`)> zHzyaHtB2ZTwl^i);Du_`{@Tiy@Y#{d6(jXD$T_IbS738)E z%_W|Q&~7iMlVER{r)=`Xt6Efh^AqJU>~~IiEVrW5eHZ?IhrcE$f&WC^$I8z*WJyp= zINK|OABzwZ&OAp)$l6Jkh_w@U)jBes7FS}ucTZoEpoSkD)z!34HtxCu2#FQBC3=uc zj3(~vxs1z9b1Vg=XsC<_*TpNFtL9#a-EcCOPlY|1kh$n=%1xc2a+`0zDCRzC3v{+s ztjl#Pd~tvAAhv(w{oYoQvG8NB5LKosgCA7Q9dcZys{&@dVD${3C0hB2ZOq-5zzH;f z)W&u}yM%d9*eHl#WfdqVY9Vr3N!eg0(IK)f)<+H!ei)$eNt| zUecJmRNWy=P3+0FnY+b`IrkZUs%KAdXE8jt=XsU3z*+07*>KYGJ6idmhcvA}Ez)RO zJJOB>X+nZel;-YJ{N+bGzP=29@-GMhTA8ly_L4y2yHWQ?qj8{~7+wnpj3FExk*6;k zQ0fq~x__YS$$=FD$t6bl1xSSee+qi5xc@URtDeOwYw|B^;x0twG5 z*X^CnTwt>gZ$=nDydC7CYb&c<(1s3$Jgjy-|9Mh3zr&bTw!XBhq+*x!LaC*78aN6a z;LYRer=}{x%+=5wXF(J<$oy^)smM17pGj$gQ*|UscI8s%$b@Rt)}yQ4gtlU5lJ*}% zFzTGF`Lc2n_Zf$yTme1$W-3`8@0Z1VK9qu6;XlG%KpC}}(WNuEpIooxp4?bcjG~`9 zi_LA}96aQadx0^mxW)SZ+gILo4Qm(Jxq?mRMI zLELTX$Mj{!?HZtr@EzmqJiI46o~PPv0ie5L`GHq`O}6jVAkybA95l8ZSimt=LWI0! zuO_$8=a?wU=^cr6C35J@Wo)(rMu~_CA2|D{TEazG#LjD~VC zveZ+DzW*KS^Rt;+qd$=)*^s>nV#C9|NN~Q4pV5uucoN=xdYvSOp>vEb?$Q@l8OVg72m|7IF_{Z94Q zipKkY%#p1P{Gn;z4d9ToQ2@{VHnFo;siS;OXH9b7^y)bQSC5CrS_edzD;q@cKPTaX zCr{7b{#V}O0KM`*y90cJdy;g~^}I;QUkONoTi~Y{2-YcA03S zQk&plKI)sHzi|3A`mb@n_V1h)^AOUxB>rQ4;!oE@H{8(A77 zT$v}hFE8^75A-0}!pDWpg$4L*;8q2)LRzq{D`=+|cz-DWj#9kg;jT99aX&0~B=&mP zs6JO5FcW{&Ub@KSO>^=S_WHD|W3JGVPj~5LFP$;FeIO(_Sex-}`d)>Un(pOdO$#xBx(#QP%QDi>wA_CRX6CAG}Cet7JewxwY zz0QA!hei}XA~W+hVyNZ%;E7~mopF`Yo6OJp%F}bcu8NIPxm^uT#d8YVS4XA03nQW#HP~FE0f` zlar3j1t4?em&K$N^9f9rJQZ88Ch#)U5uC5Yyi9aE&y$~AnBH5O%=(VV4BIaPalx^pF#m>$d}(ZPSP@!_=muL%>=gozh!>(H>bX?d0_7z;Gjbe7UQLK@~bT5G9y z=S^f`sVD}5AlK9G4mq2{^}jrv@yqTI;q6oLN+cNf*8SWjx8Hp0bdT=Up(84HPJfp; zn+-m(DeLF4g$FXgL|c3Z2+H&`^spHA@q&{^;VBSKr09XrKATk^^lQ zv;p$PPWlf*-Yl6>c2%}uE%In>YJX9(nR5dLc;QG zM(nsqxvWqRk5*n6DMuRygNq_N4b&!3kIHe8f#Lc;6K3i02mbgI9Yv2l(AFe3HD>+s zG{tEVm9#-SL~8$H)#X;xCOCteCDzTyAJ6IlcgmqhM%apBiAIg=JyC=1ds3!rARozD zu|iyS8BvmhurUaywt~Iv9!*aLePn@xiXimtkp;O&NG?Gx0Lk(#GjhM!S1?|=BYemI zP^4S6zXG@6XNJ?RtpMjg*Rbx^VJxULxSWL3OH-fW8R(l-XY*#SC1r!#gB?bcvnhos4uz1V*m(7n(d0&!*pjx2BL<$>nh7t5rL^}V6DT-^Cj#z zFv8_VN6G251$35XW%k}KA8CGDax_7j#V)1K#F9>f`Cuz|I^tvXnouNI3C|CwUxoPc zJh&-A7IP~zNg+gM=**3TRAUqZ*_2v3q4-+1)K{y>$6Ph3534K1BS{gq;5a^nGyHJm1 zF9Z&q(^1`^Adi+hVN5l>-8>A$k69%qf%+0fmu=1Wikj?Y(R4CN)#HBMB zCz}B$A8cE2Ngh3ujv~4T(a=%UIoLE+4ZaUvVRf~-8Ynt=W+W26dkGOXD{%auvs6+g z9Q!n54jL_rN6MKZdlQCla!9l^d{=i%V;~x;M?r$an!Oq#r8z9eSw>U_!8zyD z@?xxpJzvjt=LZsR#U>t1ae_X*tYrORf!t=>Uq3*4V+Qz!>OC+$&)uyQaOR&GWhE%z z?1#YRIHS{T9O$0v`8yAr=6x+wXWQ!#Nw@&k(U3!-#zE-gX?OkScWC9?S$8KzkN#l_j za=w{zGWv{_L3nuC^nZcRGVosv?#D5ZkV>PGk(6ug@?lhPiE>My=B9-ZQ6f^xD*diU zU@v)oBpW<*pSzf;MCKB^S)b)@@bw3^x&Ve{A=iO-v%3=i(8>>&T^N~hwwQHxWn1E_ ze3Q4|=keh7Sdm=~I-!Uea|BiPj6^FxjD|161?9@%h~R#%Q7Cpc!;T`bi_+Uqsv8_g z{7Oq*FP|;RoJh{x^O_%Y=UqA@N&@&;3Vc+#x&V9FLM%DPMaD^av8TrQ6y-&kohAXu&|loCjnS#EV#nCKUBw8G?-&nEDQ3P z<}>ar3pMa0?OY!6uO|wR@jah!^7iI+0k7dX)*lpSi)LdwENJeWq7L?#;`>L~)B{IM z+{;}6cMH&XkalN}5ex8H<$##WS@6l9X`QjP?ef0QbR(J9UXR6I53|*&s}J)zz@S9- z77z|}%<5GPPUfLv2(3z;hEuoF+kPl|9TaoRq|1HHia?2Hg!?KD-Y2s&0TkIwdFloQ zl6|~_;z2I7=vbCFUr5E4+vL@YkW}Oo*hew9(yX}@I#`}!6vN06s_zt36x+9Mk?r@y zWIHP_6}aL0IWjT;ioSJAt`t>pJt-kghIOr(`35v&UBCSFLpb3$-yY#VatBnh0dv+9 zYEL$U$k()i6$#^b2&LqHDpIpcwg$M2nGZX)OaNfTdK73)>dajeG?gVU%7>cqaF^^i zXgT7Mrp7mVD67Awnecn9X?(%;Z1Ew@=OtbW73!`19-gE^6OZHzZPX&ijQRuVn0)4G zHz4*m+|c@vu>U!ni9`U}HDw;aKsmWG#K>X8tn<+S)n8!=?ccH&+w5Mu%%vk}!5Jj< z=!q4fO0^XIcV4*VlsI^M<%ZiI4L?-@iw|P+pIneb>+Kbxc3%NvvPG)S^9TKMceOTW zg+Vh2EF+UP-}#2*8+{6nwIK1_~w zeS|fw^!F!X?yNzc`;Qu`lxnW8_j#^98NbDW#31IcEgj@jG^We99f69mYi&^}hG#>% zbkLr`>YUBBjFsXkuZ&x792Lvlr&^?;$2Cc6XGzT4CFSl1x`l|A z;cP71XPKUBhL^Hi`Ws6~uzjBs1bco5%d z|EArZR~8RD%N9#BNu_FU%N%iLTXD;r;`UeFkK>2RRkMC;=9KFVQ9JR~SW8M;P5or# zTP$;5&lRKkDf5U5Z6uQYg572r@{_HT>aDq<>0ujYi#Q~^$dW9deN%1SYJT36wg~!U957i;XAIk$NoVT5@q;z^MH(IH zX}-5XqtS-#H4nYSXsTQTo!C9Z*G4dmFCw4lH=76#&r1~-q&4xaiG$ER3r0@wDBE7MpqXRthg~|f=#`-8e$t$xpHc^ z3+!n~&SPgi=g2C55^313XEQfBu-3(i!)B)W@^Y=EmUS)WnLST%-m76NfW&HwX^=X6 z0nA)`6k`~uwGdUYIrCT$eB;Z?kI7~=bLdAbTc76NJfARF~MdbDL?OR@M&+SdruVqn1$jKkm?Q^^{KcPo| zpF4!a03TsVF0&Z#UaLdZ=(USz_$>YZH*I<~iw*PF%h5}1(OwT7yZjya_%`hIdzaM~ z^^UMdDouQ4N(fC}=xNG_2)siy<%0mK&@^Au{>cD{`bB1%yggRt5N-WX6j2?t^%2$s zxg|p12^Uk^A=-AUPY)^rvZ{sFV8ZEue!e4r9fDFX4tk*z<48yP5&-Y0->Ws;0-J?p z<0+s!{M6sp+qLHXk;!%bZi^&)YM9geKwDM#sps-qWQE-$jTVzLy*_zDesiWDr?cLS zaVeS^O%~!FEyQ^$+kQLD`Cg2*3oHy`}Us?5(9-rhbF8Fo+w12FlzRBW-zTsZXxc`V2a@*tDzp|5y`D#8cc zQ4g6J9U=P7!}RWaPxi9Iq1%PFaXv+BKj)kw9?k!X^7HNvE4C{Ymkok)m7}anG_lAo zHcjVYan*`1WuqWJ-b`ZC0wc8aZ~edpYnf~S1pl(WXsQs74oE3?5wxzH3Njb7agjR> zMdIS)JXlI0^VDFjyFUooWjFB$NWDeq`>pK_FpC+D+RGMc6!x;i^%+6HfgD2fyF7Vh zym}v7L7v%Ja~`~@K6sM}@xd#9*8@*M=D~LW&pmYdz+fc^m}-PliCg}JgavebRj@&A z-|LDK#Hu2FtjxWoXmz@hUkWTrF_aW}Tqyi(3`uiOv%k&!Sm1Bo;a1<+~v!NU83Ew<*i*} z`%p|YNK7yz{GuAlt!i(<1ak5-$zOVOuet@b;>`jA?U@}>_+&!#)BB8a`)c3o{C5`g z5rt}HU!@mc4)Y81_8;B^Iby}IPZ!PiClPRBgsy%>{9U+$5H!r0N|A~+D+ z$zBq<34tjJUFe>4bq9F~>!TUaAa%eH~5@rG-%d+rK|3+z1R&Syr=|AeF8rRIKfOh*=0rP2o zxwcE!iw|zhU!+Q#EKq5JwKZoa+Na#asP>1!C zRDUg@qi8DJ$I3m3hSQC=7=*YNEU+Uf0FCL#=m@pH7V~-wq2}J-BX-_2re)|2N~F^m z&+tUElPmT5zgpUx%86sbcl?0}5fyWpUAVp1H5ObQD>^;K)s2C~x8s?ci|sy}814@z zN`kvv`nZ_A0eN9$3{_TJfw*0^U`c<<}vcw(?#H4D2?fo9EUauh;Z1RcGbIk>NWM zmh4m$WTr?~$P)-l4ZQ)P_hFnP9iBV&22VTt?e0udLvPUdm`!?kQzU%Hqr4$nM$m83 z{BucSnc;%}fUI+s`i9?W;AU}=-Ntz#e=jYC(!zo`XS_gEYh?gZ7Hg>?55p3Q2wGwH zzpChLRn)e?R)o0kvFZi?0lK6zttV6J){$Usd(d{FINkta0=dE5r&I3@aZ$zu4M}eo zq8|IhxJ-ZI;i3HXF*#CqgANGa@n;J9(k`c!ardt!RB{q;jYy;f+wPcyz~{|yWoFnpssp8`F7&tt z8m(PSC(qLV#hSNRU9q49&%8rP97ogBJa&mVM)G)+I?5DigjWR;13a1H?VQT|hmaR@ zQEi&H&Q|~f-Um14)Nsu@L?-AK^!r}GoV14x53ek4RjjIezsKw~Dl+%iLLcV^{ddvR zxwqyAwE5${{cY~0xCj|Kfep7|arc<0d+A865B64U9FYlqqoTPsH7Jlc96R1RQ3xAk z)s-*K?KX{zFp?pSF6}SOUQ;e`+03e3KV>Z=te}10`w&Zjp|J!8Pi$uL=Bz`@E}1A` z`ck=wz62bIRgN@=vAc#v-UN5l=zN4bb)-4#INjZs9D#-21W$2v0CHfCM0GSWkmw;i zjWk)Ga#Wo8X9-KlC+%T4NTLpD@+?*P>D7pfyRyGhgnMgD5S!oaRga3HIz#)?S7H)Y z(LcyS`HTC(*r<{98(DBi!s+LNbSqsxAbvU*uEEQ75Vgue?d+%eRs^EZB#k+M&?4S&%&$N{ejn!5* zC%D@Js)*w!n;n4_c%d*OKV@vVLs87LbvdGPPxWE}J|aAPjl32jp5SlnRT$sUku{a? z)r8|aS(jCs@SGU!WGV`$KO=d?uG)z&V=ND3%B_uxzPNz>p)a2)%S|JvT@!OhO>j)z zkS>AbPTf@ns~5YJo-Uq=bcq-B8NtkIM}8%`+jw{we`}eyu?C$QV?4x)rdFA6GH$Fq zGNPZC*eibe?=+aI)WAXJa|Fifx+bfKc2;-Xfgk~>Z>rJ`#HwGj12HKwZp6f0@gO@b z**F8k>H#t79cA|_%24DW4aMeX7u&cxwa?-=`w#(GPu@BP54{eq_u6};s0fu~NxRCi z%tAP3`fKep_~TaSrV|BzpO8GriE(z$e} zy1?h?-iW~7??`%r5z!68i5x+h0(VA4{&>FD*q#Sl|2ce)e^cKlG8+$8z3s z%jDm9Qe>MHV}`@qV&4cu<8=AYLEZPGtA1LK2(tZ*$q4!?szn#pK~t8FtR)&SOW85V zC$VCuIhq-o!8wgR`}D5FRryHsI^i;pSH@1-vp6V`_G|+YavQOkr**h!pN~e2eR4cg z@ti>Au@d+{@Oa%+*dyCY^YiNlA6##3w|BIa4Zow+=PnO*YKytLKlJtmRtbNkHw57T z7&2ywU)$l$p!$TvJ%?j_twO`{2_b`b`P)mwV#k<4nY8qO4vSr};+q&^^a zWeR6Dzao-#=~9*q5P%MEwJ+L;@1*lfwFZyh!jX)XMOh6>>e2quc5^-OwZo;5(#?Rz z+2fVwS1$wAT@bLD%=jlveO^ys9uhMKJ-!D2Wbs+Z;Qf4?lyaBe@tO^o~c+VA&+rAz<^ z@`zZ)`*j)-X2^Upr@XuU1cay&((HVnPv2P4bkxSfOSq*k=1eaR-*G>AWA0UKjBQMG zk5#@Bp0i0IVnjPIVw+S_9;^J6tMool8^Y;3Y$T(>c!1+H0)9E*L-65Wn7qmscs7ch z#BIzxw2{T@dR)}nt%q1}z4;cy$hO{Ij?)nV58Z7MU=~nb-02f@ZYq(cnm?0tHQ#mY zE2mcVMdKS4h%C^IE~Bu*v4_E{)NvMH~axo7-!)!G}SnDgiN_mMvAOyBig4Jx|A zom!mjYDpzc3z*&%ty!$ty!DRK@aA72R#%8OYlzC-Yw=w&h>4GPi%H@mezc+bEn-Mz|U6o>^)y4=>^(3s1A={ z8(~d|T`8R5ktO+jY<5d1#8B|o`)(KKr~8X2SLX#PKTqz)r(8$>B<>u^N>_|RI=^d` zt^ZjaJP5Q17*tTC`~1V|o%g4DWe06|YzSf9$<`d|g$U|9^66duU5j zwQA5hY_-*tOGyDGl`2V_(o<@GX@*c?C?s;F?`yNP% zysp`Fm2}RnKwgAq31QmCAI9tCsRKUWQs}xX(e?Ve?o(NB#;&GQqLuOKx}`#GI&Y~| zkyvm4KSTqUV1DnRVfyn`H?P1KEbJN`9tnKd^`|rTz^0qB#~>}w(^0No=frn=)9?Gl zPq*Lj%sK)mi2&cKSiAa1tw-_g@<~0sHJ|Hls9exp*|vRjVz(ObMo6iR?f+M9=>bMhqY^FMS^n1et6oq+5C34+|tuBIk$XE zcaA4i9_wmZ)6=!)6RN-q(i?d&GgMm1iF9MjWxSiwauLBevujlxpED~~-J|GS4<81c z>o1^7c;Sc;b?$?RI z{d^&aiSb3u(x&+Nf|CEYR`fmc?9O6!Yed`G zRkMH9zzm%|{XeQcd^O%<=hE24t~!2!u4?sBDATqf4#TR|pJJ-9%Nxu8m6lW1`g+_v z*55U{mwc=;=(o8oJIQznF~4OccX{|HfpVRWRX2O;nn%;|4eigBHFnQ0oZfxzy{s+$ z4M&%=aUZ+-F-CSq`}G&Cj$hZr(m1|q_r_PfgE@rt(|&Dut@)UJwHzIX*Osok<80Ex z0)lJZL+;)6by>CNq#2q5_>(J8-d;7j&osy_U2jA)#)Wlr~r zFP`7|bH;EyXBfuunR(skwpV(L4o~EHH>vyDhqHQ!dDih#S9t!R3rP7xIRCfe%_z2H&r4bZoKm0)rI+;{Z*^Kf)$NjU0N3p zCRY&S=PuvYdG{R|9;(~C>W)fEOjS33fWK(``v=r`d+LAo8;kk)693+yePcFNw_?@D z)Vi_k*NL{=e;icXKRh?AnhjlR$6`p(_6uHKZ{!WwUr)2~%7@WMMGVfy&RE+9Lz^GY zxr?=_oZ&E<2uc>=#?GJ5_oeo`bdBp@!^mW84e9ow)t4& z&Br07p?eN{;70!k>97%hI1u0Hzic)38`ua3_x|2B(7 z%T?U!xFTIl?v7WHilkC*`R{pg@vdo)cW}aworcrd0zAq&{H_dwt3Ld^XTR93C%5ZW zU!T3<5!b+?wUot%Wo+i=Rq<+r!!q%+O)N&Y^DT-wOtv%>T@L0hf3WkG_9P11LlkcN z6KB74D;7i1{(MBfu+1$g|KpogaYX*tNv<}@{ZEohAF%m;l8Y=Gd(O5^WRvxz^#AQB z|AFUu)FA)SpL2Q1QyD~2MSe9I?=yGK%EnJxd0Fxu_fHL-TV{5i*w*>-&QI(tRAkDY zguw=I4DZSjqXcO~)vPTzk2@@tH{dgNfZyEAn@?US-LSJTDwD4Nn{OB-W8w)Wb|Me1 ze3nZI?nm-8&E`2o9FucSbpjIvo~ematVyvp#rS?r{L~l!?`TdnE6jOaXH6ig@3sHL zZsM|jUf1b0;d`8&Pn7+p>dtSMJ;=?jPU82WmI=A8)3cpV&hGqf zt9S>>ePWTgVeLEpPC( zS-%!r{5|dD{?^LhbuC8H4{%cVgz=mCpfHO>X8IKqd6@RJ2|T;pU$trqr&R9F_(XH1 zM$hJ9M(#K9iw3t+8#{m4HsfWPmeU$=)Tud7%kC?$n8+pC>$vWzVVhmKwrduhJcPIS zdH^5yoi=ZEX8PiZSLNY%KG=Zav6z>$RDRG!iVqj8>f&I}de%r+l}h8T)yLI=$F{5P z_Tb4HsRVPhR*yp>XsJ?zz0AYsS3{(Sn%G z4LBZP=ho)^Nu0%>Bj;MLoW1r4-i)mr+1Pa$pCP`vv7%~D*VvB6&cnL0WGkxp_ck3w z*J%@`KhfEL)n@$8nRC_p*e$%EbL}Md2Ay=&~YKmUxC3GQB&ACR0H;`_|T?g__-|5oldeu%uQCa}5fJgYigSNIue z4)0(;j$3&^Fv)-Gz zOi1Qa)mQmphkJze9sFM>J|8gs(Us5mX!TE!-hDmm{j7;J;Tfa4vhCxEXDh|b>3?i_ zS=;o?%3sOxij)7^*4Q~~;>ur6!&kq#@`%n~C+qEFGuvil%i5nRSa15{S3S$80H$xg z{6bdt%iT>~67Q?{=MHSySaGhJKm7-n&t=ZAsi(h|w-6EWNrCsBo!(bWXuD>7X60ON z%T^P%?vMEYmQUeS9~hiflfM@+$$mJ#f6*TQ&$>P1iR-iR|5wn6ZGJKwK@;}~nqMU7 zzY*k)q?5;cV}aZMpYO}h_kH>KotyabLFf0qrub&~9~2Ciu6q!TygeO%27BK0YwB8F ziw)^%ZYN98Tf1l67pwi$e|ZDu8lQTsosT~jvOLu~Exi~@*So5FCRFkdusSE)z$IZh zU#_`|7xZVD-*Z<0m@{+m6Lg$yq&FeYwZ) z>)L+wp?)bBO%F_p*q;@6^UCcQKP+V03rDrQw!Lsl%Rg|9vhqltPNzmgdNsYeu<|K? zi+vIPjIXist26Np(1Cf~cPPpme)aX@9W_hSAK7Mi@`l~7@_&wR3O>gs<#ubB@}GE? z;ipM$MCKJMlSeC(_9=5V%mv-I-xdq!Zi6@aP5V4r1V4&m_TKd>i1nWFFY-6@!#>xz z@8U z=kJEf-aegZeS&%dI>qxdJ)h3&{=B}4U;k%R{rx7_{y?k(Zv=7%n%Dj1Je_P>-M1`5 z4rN~b4CZ#-m!)d(LVgz;wd6mcR;@alR$ccckx{kkm*nPl{)*R(ru~TXC$|scS7^s% zw%4i$KRS#l&1`5lRT5-J8CxTWt@vfgF=hE2 zKW%a+|Lat>w>01K==LvqJr_@1Pfd@}qt{TJakQbVYSnMy#E(zL`o}}oz$?{FKibF-+{*T@rjUPt6j9>Ql2Eyii zfz^epnAMNaZ~C#STsIeVcysOzo9r(?Z+qO!S1R)#jC*N$4=1PCgw3lyt#u~XVZJmH z?X!7L2Joj(Rj8z-? zOz3@;j0dW0`#OJ$&woSSPp{7Nh*BC?D>>^<LC@?iGf^Cv5YUSf68umy2{ zE8pJOaa#me){mH^Tp)IFIoa|q-tBB@ojZk#(G5OCwf8Q<+y{5^6_faql-FBt+ep0R zZ{UV{V*AyxO>G%c*M?&v${zi*hP8a6YlCYLOKa6Fk8JP6?!E4_^Z!DG&;R&NX@}1l zSE9wsd@nV=mEps|oA*K6LX=`kPr zh(j)Zy36@|D_a%)N3D@f9?mf{H`< z`oq$-I=(~xbpC!$J`cQ2576i%Jk^@~TJ!R6_)E;KlQL?aPX#}`*$MeVAuu6Cxe`CT=s3TcFO_ucW4?*6zN^Z53LKP6Dl#69bIU6Z~$ zpYM+z;o=qXH2|^W`|Km*%GB`jj?I<+8s{sPF}JGYnOHr3zL@b{evPZM`*c5+j?4W% zm7%O_krn?G_Gn8>JW1K3cv@fboPAVAJ}<65b331|T62}xk4!WfY2{xuY-S`$`Pa~5 zkJ!nHSiWz7Q#RMf%W>Qy9k`EEIre}11}6Z&5MMz>wk5izZ1xd9Yxu+W*lkt#loJD4 z4cCE;KnJoW#xG5(jq&bDbup%UuH;$s^#6Ud-8VMMa1-P#R#bO#|HjWYj$-^9x_g;B zdVS%-9@~FbvHimhUq_G3_M3vgaBo$IZ#3iT*qtrUCQjbQ*G>4ISlb52o6FtX_-hAK z`HGkR;nHB`YuYw^Z5jNPN6>p>X$3czADPoV>HKZ4W)bH3fUXTroj8Cx6yY8C_?8bb zl)rRAJX_9fXxo*lSneKlo9}2R@tY`I3Tj~uqg3q@J{@WtNqOWS>iqa6A^ zLzQjuN1wjp^hou{e<|*9<;|E9pZQaFtsE17?|>hi`7t^j$fxtivEfTI@kbPnByYW| zp0wW6oTl;@b2zuVv9c`pX74v$HU5STdS^FYuDaP@)A&Z*y?yZ$oxgwJOf+lwI?PP| zXP5E_=5EfK;e3#s;qpKBH)J*^mG>$RW%6HS8@G*5Bqi~b>Z=w{JnuQJq4Uv}Yx(#_ zJSd5Oyb=42GJd;tJ;>ktA1cd6_tE@k-@{2}d0ew3%(;{}=HdJ)bj3eWs#<*vt@l*q zi+IT4v6YAOpD7YRe%rHLdhJ~jRO(i0xc9n<(NAMD9_^}CZSUP^JQA|C@M)81X9w9;Anv+`|cQkul$-0rI?)1~3*d=;C)ZLgqgA8*ES zmH#dSxvh^NY`f2Ou`CV1y;DD)5}X~Fs{5QnexGk5Y&nOVpUl;5N9m%wG?Y(d>}DzX zp;9-*=hBwL+IN>#t?q||kIeCv){iOlv9=8nO;{d%7>S=~)48+yRI++B?Sqtv!nATK^0KbQaXcMQ&_@~)@J`%b(9kbG{;f1bhD3XQ!DWhlgF zs;fFa$HBbrd)$H`mi=2}SG?=?SNc^w6uNvg{NWL99b@^O)^@#rF8@3~TeJ_B``*zP z;IqoC!*ja?six%Oi#|C*jZ+wZH!Kbe-Pe6ji{eo6d_>n*1AjeyGs z%?Tmzl@Pe=X24;UV0vWF29j41&@0xKk2`HwcDYx zZN4nxeuXD`s#d?7j7D9S3jBjZx(Mb$KJRknHTyp6qMwF&)}`fA?!A0D*6fULGgj&2 zEsjI3D}KD?0`9oRkGJs89`e_1p-$HoJV(LgSKmNHrG|rdGXqvC9jSqH(&V6Z5Qtf zcAdvFethD5`=0%N=XOo&dM}R{`QyqhI*P!*^_$xG?8>K-TS077hj?CzHrz6ICr-;x zI{59^M2y(cjUCIgyu8b=L=4B~S@G`~Eyr+FBWF{4<_HVC7Rzx_Hq`al0|Zwl|NC#K z&8%qqBhxmvJrK8QsmgWT)J*$a=g4@AoBV&se zJiy)qQ~517n?KyoxOClBV`10Fs)0T`%pLu)xIWdU?8r@jC|5Oy3lTOTTX(cQa0ONP z-$=8!_%POSJl7fJf6uG9?EW6TKEnNNeQ}MIja)r&7HvIPv)0=n27ictCX9?d$fYV z`T&Dgay{jE4S4y)izUye4@2^>S!`wU1SG$K{SexGJZzH$Gy_^2zT7;4_j_-@9aUZ_I73Sk&mbImwlYY+r20m_67O# z{?SLxIoy>08AaSr9J#CWmk<8(NNzP;$a5(z%a~p*=W-*wKI{h>tXS2q*rD^5^GxT{ zD9t+_^Qz|Ta4 z?g#Hof`J?3Q+~%(KZ$1}^QSrsHphmbJ&w8~u7u0iu<=QCNREzh(u{>$;RG#-C z;+r>bq93~B%WjO-+W0OgZ`J3Qdz$XLCQ7E?OTR^j-5cs?pFfOO#N%Oa=k51x*U)2} zi{tkabKD2uR^aA*n+ssPG<089>%g;6xJLL3LcZcd)ZE;z#8{)v?e*y);kUUxx0k;# z@PEIly~$(dYZSM^-kqE%U0ax6T*Jl#pX!-RsB_2D4c&dOt4Oh@u_nFV3-dFVPUEUo z_u9jrS;M~;>*}a`6W1bNtNj;BR*nm+M7!TKCpCowoz`X8`P7ddFx4mD^4G-3? zV{Wq$@#8YpZj;Gzwrj0#pm$D~bg!qx{88O#mbezXot-8Q_YBtFAYX{dz< z;{X4iDC2#!beZ8=K3->7SK6DYy{Uag>^heqF7ZPdpD9UZJ9CaDfWIeix@pT|)|~uL zc|L9f>S%fmNk*i-V;^OZ+i zI_7ZRqtfW`e|0@eHoNw&!1Pvr*iQ6IBbuf3J?>e%?sBHHb}3`dN3<^<`Q%b$-V}6> zqk8+N(sRgd`hbx;`Elp!p5GH4zr;TNA6&6{b^8n=|8{_XNz*ce^)p^qauu=k+{y7| zxQfTdp33|7I=9(>(zYRkYMGVCa4z2v&yuRuZm9MyE1JlyG2XSp#5zo@r|>Q#0r5r$ z&qZH8+Z|!W$Lh^?&wB&BC$5^7o3e?sWoo)>{+dnRuDvArS1q}+JBq?-`_0VXRD+dg z#an{-DflV83Cu$^@5uGc<&7iG;I>I_+@9?@BH1qoeNLYCWQRM6hY#aZ5&ZkT?6wn= zO38j1vAoUquN0<%wf!GU&O1KMyk~p1*4$0w*AXj{k}TCz4UT5lI#2<;n)53Nj+rl-Esk6DmwlVg|@u4f#(GJHX`e5 z=hHsE_`TmF0tLZq9`qcNyyi{z(|uv*I_sX|9`h&Cn=gGUpIdtNnT!+qKd=OG`4>OT zg&1s~yW(FyX^QKm_VH3q_)&o^RCayje~CCXsZ+9lY2O`ritIe;%Ih|did3_EgI`0P z_IsW&R61!>do`R)e&a)0xT(F>9QSDjQp-8_=gRiF?(uyMdGA+taZNrxt-HB>!k(kC zsd&FQ!}G~2S0_(|Z@YS*@$KHwMhjkw_)XmV%8#Mo`h-)PaBhGTC7f@^oT}CDMFiZ1 z2{)T^{XEh(9}+J9J^z8W-(A30cy!x%!lLV?M}71)neLhVhuzK*M{?NmW-hs|JpTc2 zbmuRn#{CgCvmJ=%^`rR>%(_@c{ssyi2A;={|9MUu^)gAjH}2ame52ou z+7J0mf?s;ydL+*mzQT{8=ekDE?HtSQeNlFu2y{hqmo*=gwK|KonM{J%6>Z2w%cUU8aC9vRv9eS_GOXVII_k1|E~p0CsMS$x9o zx@kNbAAOUP1Aox@O>yVEllPbB;-tT1yf)qBWYqilMd;WS>s%HO1U!7NNAgcolunZT zH$0~LYr(b+w$8Nt19#2!q3eg^`*i;MoJ!MD-^Y9IFZI~=Q3S9a?%977+r#Hgx;|ml zan;HSw5Tgy0J^%guX`ct{-FIAN9Lw~yQQ9gqyEz)d7i1V^JBUo*S)Gbj)cydd7VqM zf7vYqAJ40N1(Ch|^Ys5z-Wyy=56IsBWmmX8=hr>|I>FC*Eu@F}{3>A}pSd{CPi~HC z1OEi68ctchiiM(~ebppaHm-A?%l{h;Z}9x11$>2AlXx`ib$nD|+Ku&~=;Qpo8sGP^h(*um#u8a}GS|FGKjbNGq; z)dd5&<)mbBxWv=P$*;P;n}z8Z4pw?FUMIYS7!yzXI+Ehb+jdZy=P_eBT_YAzl||z5 zB)CV+BD?ZFTl^<(5MM;g?RVh3V*eSxJhJQ}ncql-d;4!YKXbp?2R1g(idU#@t?z0Em@CwYI=r5Cf8r&#M%+}G@MAws$!B9O|K;AhF~k1;m&OgR1MQP|pyKE0 zEt?U|=*7SOEVLZ4A^+*~nGKBuB>(58u!ZX<3;5omEAnH=i0AcXj)t?^l|D&j8FvkY z8MF*)h28^Q0(3K3-a*8X3u0u`BR_> zvW|57U){&HIONkCAq{e`X-Qmmb5}@PATxU zK?>OjiXiKTat`CXb3ng2 zZkCnKPuqkt4rBd{LFd@PrnXB{KVMTHH`$S5baj#s{@eKeB)>GpD8=BvlNv5x-u#{` zbxoXhr2box$`9id$^-uCpX%eo+D|9AAMWe^H7*y*n@rQ*46J|xG~`EJ~J>{@m_G#oFYth65Yq7I68Oi{h*9NR}oe=j|P z{8Kn6ChZOR;^U}@uU(-IhZ*OjdO9~Oiy)JBMIMkWUmhPNe`W*DSLf~pkmC?RE1+eN zvLw%=uAP><{zs7WPyTx#=baQm%CoLABgl1G*&d7b-wavDyz-_%CT*Av{a?{3LKn}? z!FKbLp;8~K_aaDpq!*%p@t6faC{sE;#ZYG<`DM^><0C(U^sTykTskgHzdh@A7!&(7 zodap7{CA|sj<0e});kk2uf4`a1Uc3o%TvGiLO~{n8TGbYojgZ)Y&~^}(qm-=e}}l# z4wJIf%YKXHj(>FnoJ?j?33jLXhSwzJD_)!6XQKqyPfoD)bqOv_F_&UbT3(yxccl5s z%8?`ab!b#&C9hsVZ=mm+n$P-j8R*(^{m=h{Z>}VJx>Gveb5aGzuY#@{HF6vcGarZg z-*L=Dnq~%|vZq&neFQjM>N)O1Ge6RJ()+&i=Z#gGp?VN|+HvQKx`t{kjfAEx# ze*c{l@96pBsDZL`+FyMC>S>c6zHaQ9E$_Jh^4UMqjXD^hH-ree9td zRv&ZuNB=qhz`vY!;VXJqbe;ClZD(A(`H1{SpO`fApMJ3V4db3)vF@VrFMIIzBeEBt z^bhl{%Dw(8UtfRXU1KLsf9n?q7M%Y0t>^sqvZ>9#`rwCKE?fS&)(NfstFq;r*Ziq) z|Jv;rFTDK^xBc<{-?YAO)4P9h*hQ=V?cEzL|LvtS-t@cEKlgz}D*IJIX83MDW@ElWcP{d2%c-c=s76NG4swx zdCr?K&%#<0!8@3B+jB-p=W%d0*;(GC-EusJ zk`ck*pPpIDOUX8+1S?L(>s|y${ngRq(sg|iJjYFppk0EMJ{+k~-> zI5u8SgG`n$fs707Rc1KfD@XZ~<)XTUbCrIuZdk)3j-?QXrG7APxhWcgvd)1> z8AHvpQ{g-2j==?xX%@67#S_5eA=6A~9@GFi_SzN7tfxM;kjeR6oIjKNrI3B;3zPm) zFZB(#>rlKt6!VK^6!RS`ePy}&1fPlaWtshk zximTDSsp>AVxDu*^jb*1?E)`Kd0}kKOD64XNHGFWgiNJ;W5A?rbqFYLF{C|BW=O6% z!G@I_7u&54mgz6g1*X~1>5wu^&TI3^HHG8jI6gk+?7cszoCpeaEH>UQDB*cN)}O}h zEXY1h_F>)2A@#P7GUb`nMV{sIEOY!XgX9@!CS@*4@dWUAD1zog`qy%k=cQ$kaD>wC|YVQd`}Z3%H3aV!nB z?!b=MJ;(51DLTly);pNG!_^s%Ka`%s)s;V7S+Shq>d`!I-vBy((%&O~BIN!xF)-BF zdOj<*@j%DwaG*MtTTeQex}pA1b%&FK=r~R0uWQU-i;1+o=l5waT-%%@o?jx!KFpi+ zrSr|T+<6~C%OKZ%$KQEo47d)<54?zD=X~Ia@{}9m#Y!fwC9H|^ zBFH_D`pcJR9a9d{clti8twY)5xY^b+{T)HJ@%X|NLq6zXSxEa^%k_n_!+F3q4Ujs9 zF}8fDa|`S^9n5&wQFAIJhCPY)>z5Eu5yz)Piy@Qe0n3d6eHd)Ce$d-;Z8jZ9k44nc zHZg)GL;6%%HIRD^d5*;tD1w~l_8<7gJnOx=sLVRb3h6-lgnAcn5XMa#!#-L6TV_9| zq2eH1OWJNIpV;m|dZ@QC9MVwpQ9ru}QBQTUzmS6bu(mnxYoXxVh-3ShUcw_Ar=iN^ zod^}nNNOjtO5-V_P%_!p{*Q-RhsYa;Qfa*io)nVT$or#+aw()m95g^;1nCF+(GHVk z`b|H%zj0oL@#ApMI602RYh{S3M)(&%#>Fzo_Q5|K4!g&XDAU#uN9v#)^>AE+4)Tq? z2r8{(KD4*3abWw<#`#$suMv4|w640^)?@1jdnR+Ne};>f5R)Okj!)|bnKYkVGJ+eSifj% zNXj3oZ}|snbCBVDDb`PZ&@I%_j?y~vY^!b&WL@iownxo4_LO78%>(#DrJ64_#O#0h ze+jNl@%j`mPVwz2mdbeKx>+&ndnwj_AjzM9O@jH9UwM6!uTF8`iX>l(#++oD%E3$X ziC!DFCD@(fc_~gyu_DFqr}cYNye7rPDIT3-^Nn8Rac(&PE<8YaY5U>oS0AFBQn~+I z`Px*^^7v;1e#@!Mj*sfwHpb2x;!h>K^1p({r838s$Sxz5lPXA+q!FaJO87lv^w@FZ zCsa?2YHI817cO1Vwr=Cr;dEA#QbvpzIdasfZ1%9jMvopdX6)F*4<9$Ks%rc`sYH#W zOa5wO1*E+rp)91%gQd_qXbZFz+5rthJE4tG8?+Ycfo_G?L#E(2eHZ+v4}%3-VSXqc>^QCC z?@;~jhF^d-LT%7c{p@}!p+pt%T z(!6@wr}kTJz0h8N248X*`&VCThh??U@sK=|`q<|JNImqA7(qdn$NK(q=z^5gDfmQQ zGz`sxua4^Meoz_e?RW*>MI6^a`gIBvLGBgYmq;f-`ci$=JAxV@)B4bO=6Uid)IJ$D5#CWH_CTxf=`rb|Ms~Ox&*RJeIiId>JQtfUj$hu zFI-2#Db88_VAX1-}&6GhVGHFUVJ}zHtnUNBNfPkKps+d}lr5 zEcC4|$}?Z=bFy)Az9~Q0r@hJ!>y+0Ej<3({1zGkH^0vJw&1<7|k5BXVYa992S7wl9 z8*NjTe9HqbU(vSQR{>ZuI*A#Z(C zShpKEZiE&>P0(y;33M7{a@>mNP>3Dvx6FGgrUTVGk2;ef?JsUuygsO-a`lPz&VjVu zxhUxypRtNcXfb))h4smD+gU&8tL)-fcWhlRBPjG~8|&G3NX7cuUOl2iq}kLDY^2<23oqgyV<0gWJTZ1V2i}gqO z(IHX;^~0FiRy~7X)ic;p99Lm&w(b7LZ5id-Bw0_n`lED>3VybpsdyZyH}$ez1cjIjYmxD9x%En8M;W0n<%hLUS(b%1mRT>PVtbWsyW^qg5NI}a zUB7G_^a%4Y@a*4M($^7WUR^xacKxM&VU8E;Wj%cn9U?jI!C$sr04;$|g)EC8$3*$T z$NI}Q>M3~~Y+1&!dP~+DD#l^QsZ@V`ZvE&GsDZk{C+g_Dj39k#UOm)L*&Zuj9YdS2 zj)qt%jVJ4dcFtAXDKCPQX}Nw0{@`$*`Kn*^Lv)DLNPT67{(>FKF&5M}lsN_wWF2kx zcoAfK?a@Xt)Q>ox2?d)uj8pM=gt7BEorRFM-kjTSg5((+@=E8qeEU_G2yz^PEOiUV zmIvS0a9j%=3+XT0YvVE~#Ju&7f!zCBPoD?guv`M+MAZ0jarQ@carR^ek zQi!jRKUkbi+u`(7#!xJ~vk7t4Ze*0C@1_7QXr$L5315y$Es zbWx6FreeFp8WO=j6k14q{jNSiciWeaqdaZYUXQ~ZaBPallI%Wuh4GEx9||p@zP5&b zY#V$K{HV@hZLqvl=b_@m`e95CB|hFpJN405j)yiYU!LO?&M6-MUyP&SVhDBj887E{ z^a5x$ZT=SPf_*!Vt_}K9ilEZD4=dI?tb>cm7q2lPMnVh?w+?zvi(UZPUziVJ?immJ z)4_hM6Xw11EvyBi=WkQ-ysjs2oE{Agw{}I8l~NgrD^=ojQDbGUOvL|L%K^I)(ujFIKak+073!KM+&$_@UEI1V(2<6xg?o1jO~-Ta~2>%7svV4J!{ zka~FD4YG|v>ndLgx>zrQ^i{DwWdFi$`-l#a=2Bms9IN1~pwm$C7IaWA^|Vi8IqV&5 z8)C3D{v5xd_Fk?9(J-_azA}R!N@Kuw!MDNBA+9V_-{HoLqBs@n={UTQHK>tx>Y)zy zSvtR!tACBdFdy`}cG)IMG3>=$w?Zn_&v9|g4n@xc=@(*7-SuAt1)bG1#De{XIJK_& zYj>EZ9PSgB$_VF-h~tB$S=0?O!=6GNLmZT@Ey0JD+b)9a*JFKY4B0+{)JffKBR`~4 zKWk@ni1fG6+kTC6=}`4{?2Mu45b1R4hyL`f?e&kc^i_zD5E~&L!a2;kAr<>k{goRX zBF(10`I%eFYx{ zUa5}7F{-}WrXRyR3F}#@?SVhsImCXo-FjipL>z}PvR_GCtrt@9c&ShH0_arQgcu2N zV?QC5l&fArm*L{YI@;m+TlI~-v^bR!yDn*R=LJS>G~ViT+2fp{iu#XmtsFC zEBHyfqJyNxX}jV$P#^7oJ#e!?+{ZF#|J|P^53D_K)3tM zFMk_yOrk?1f5X#e$?=aM_dWu6r!ghY@tJ@u*z)ET#4Lw`Wm)17u&4 zvE=xP>a5IVP>6|ety9U?8FzP?aD?a=-(W~K2GY_wj`Ro!hPPu(3){bgR;CH-nD z)z=t^4v`j9U)dp+Y_AT%b}@{t`h>FKY>Lu4>Y@*<7i8Iwys%z*zPC)7+VA+7itUo; z_=d65XOi-RF3Ky7TkW!Mb&j9|wWrEo^m{D4=n$!q`s!snZS^?l;66z^gHOVF=3sQA z**^LOpGNQxg%(lY{*5VhQI7tU7p2GYolE-F__I!EQyc@9$+x|!c--XKhwHuQ+NB)V zddE}0*vCas@z^)(ug)wq0Ln^h~ z_2&PY-Rh)I^{w_t(BIN-W$8cd);Au@`+JRduqVu^5Eu3*FM`xTe$XSt?*4Rid_xSJ z&2cf!CoeUolmn%}U(B%-LG~N`t**fz9PTr()y;XkKb<1VOX-Eq6LnFq{rOFO^kcCN zA!hcc=l_Q9Q0p)J=Xj}?zElTo{CmZneJR`ZMhr1!->##MbBLeebfQX}iq{R>J1)bu zi6|S2UT7THmusPM@VB=uFypescVRF7_2cVJ$2^*TLSW zU;P}t0GdY|=a}~BrwFot`;sC^*&)8PFU&{Vn2PNWwf8T~z6j6{?LI+bJf2sX+u zmSta-hcUF=@d$Z!x6hy_hkv1${*4ZioR9iLyVW6#$^O<<>)1y9TtgygI3H59kDlHO za?L0m^Zo6yBI?hE_ILkT-L+rc)JtE6KI9p9Q4ueU1FXN$uO41>h_s0M!7s!0rA*^R z-xbH0e8<}v|kzat?l*`QgQq$w;pl~^nrCl+x?BfZ0a3ICuIe{ zDlmkbLbmZoQmxZ*AEdThe8e1S2wA6ZBT}LE$s=mhPi6l zGDv--2r9ky)ArDo!~Ld>pPw0*uS>DEH_2acTgv~}1b3w6*%Y^=80yuh_11rG-}Y-u z@|m<=eag?Ja+*{A))WVCPvrEb*p}kb6r&V(qH;UmJ!W+Ltb7D|%+dtnvSpVCItv z4y4%psU+WYYl1scT>t4L-|?9Q>pz=dsr=S;34h%`C%EEY66{T}?Y1P}dV7N7KbPRT z6gU2BTK@S2*QdC!H_5ksJi+W265Nqu{)(|!5t~K-I?TT z)+bo|?+LC?vF`t+^-~P~>9{N5*WaDs_^%{5nBtDFrtMPyt-UA7_x2^&^tA+Q?@jqB z<~Ahx;NN_j@A-PdUwdDI9rq`=@qq+04<^{3;@XGO@`n?wdnC=L*z{!JbALF8 zn|Dt&8!Fzn%MW|M(!HH!XF%>7Jm0%NGs*v3^gEPn<-6}W9V*t->wou*K@ayH5i}VJ z`o+gy~F?_N`x z>Snpe`ZqjlQM%`gC=0fzyT@;Yf^F~OSiO~{eEG*f5j5QOwe^C{+H3z2RNT){_i?q) zde&Elbs{LpkoUi-Bi+TxK4(Mf75w1XL@BRWSLHCdym8KfMKs~9raRANgs+P<CAU zYmgPjK%WO2Mf=fqF@mi3xA6OL_YLgBIMS|=v||Yr`i(fYT;0`IogCBP&te;beZ%=G zO50iGr|pE`D-AAJ%0yMSZs$crHB*jAon?Rcqk1cmt|2D!$TDa7+Kj%^=g1i97^ zwptcJlcC_F1GU#b!3O(KuDV80v7A}thtokBuHoupzoEUdipM34fptTj;yz%RiXDCcV#*!j5){F zd8!Wf9YG5e=GeBTzo!2%C$ufZ&%yNf_l(1#`gaUM42HQYFM>i$X@fqIZyIX8 z=x61Ganz^AkQD3>;~l|MW|%|f7eNgvnpc*6hGS*ehvTPgG3cZ$>j(MfO|u}!-MnOf z&evd{ZR8sdL(RQo;YX0|>`PlB==IPd$b6XpA+{}xAZ6OOItSmVw|0aS;%k38hIK?; zZEK(E96`Yc9y?ab2|g|DXFg@h2>y%G{Qm4e*uI0U%94uxOg4^}$zT}I;8({X^bv6! z;>|b>z7FLFvj0FjATritHn=FI(^D)y&+Tt4^r?ENw-`bD({HFTIVNrAI5^*oiO{Du zmyX-PoS)B3<+z3gd0s<#96>KsZ^tskt~MX6?#A_BM`F41eGGp9w?T(=0u{M56?N=Y?WCSgO8d97Jnhq4V!H$T!%OLd#x)qlh zpXwE2)Ox{3#eT7^I;xWtY!Pi^-3SWj9`hcDq`nIv?Xt|ZsB}z<`_oU#4smTC%CnAT z#wPTMi^`TCIuU{J%aR|eRv$|YNup8gtdgj1I~}R)X{(XMZJuFar5%kBZ91N z-JqMiU^jL}TVbs{MABR`C(V{ILMrC$y-jt8@!DLpsXpZZIo-(uUe*SvabThMoZHXDcPt?UTW zHrvY6h6qxgXq;K5Jnao_wKw>Be|{*|)i(C2OyxTULtT5qj_2E%p!J8_+YM!7MEx*U zmOD1VZ|WXwp3JfOPlZfj{PltMO6sew!Ka~31n+OzH{#;{i{-1Eb3~o(Kg{JQpJZ|ka)Jd?5FoGtc=eFgbJ*U9jLFF4%O zF7&Ogt{wI#Zzvho2{w3aOeoWK>f~_*>65T_2KmahY`DFKZKpyZX_q<&e+2vNSNY+* zB|nV+{$xkg3+FfW)tAZ+skFZX$ z@i7L}BZ9O=zsR#Zg0xYdbt6cAI6su`Ei69~66Zi(?|E!{ee7|F4fDp8eTA}8eeKJn zU$rghr7p$3ipa|gab;ea*5BV)m)0>~Jf4%u2R}p{mlCWvsoz{kUs*rcq)ri}%rMSj z4ZJGl1--2o`r|N8K3_Hq(tpY>w%akVpW&WOqbM$0l-9GY_Br;pX@J6-E#LBxv}ZPC zTj}%^!+vW4`Qn&Rj}Ry7<+z4@*ig3XBV%V7rRDCVSdRoy%kc1 zeVd#I%F-^=e8_U;nHnJb4f#;6PfW@S^SU^1%$jT;>@&X@vOi^-^po}kUj{$94wxDt z>sx2Y^j&8RDaFrzBgy~l$prgT{6dPiq}Y;TQ;IWEd`*hk6rXt_k+UVmyHosZirp!` zFU9jxd`pV2NpWO~&umHLeKW&?(|KA|GG9ye5A(E?|G%9-JB`O=k@?HNYX?2s@W0zqT%Y2`6t|?f zHN_n%X8xG88=qp7Vr`1`AwTW-6Ha`?8&9g6zU*Dg&%eOsexLLra^I}WWR4rb|H_-3 z$$W8kCe!&!&Lu3IAIx!HIXsiu&LaEmGm~?}J@Yb|hsI_yKR!E?`AkhF^FJ)EyWX~s z$iFJ1KA)eK$@~Vnk5p$eFFrAo>EPt^;F3({Q!M`FoG?al68XW4Gnp505_#vz{3kv1 zyX@7pIhymp5t+;nqrXapeHxD^H|<-Q%m${*D*SW!J2RQCV>6jQoJPN^*mI4@WFEdB z-JZ>4CbHp}@Y+nK?*{JW4zR~7kN>^kKJv2UiV0KWXM1Zw#K#2e`G0YqH*rP0Zso+~ed zJjdIIJoir4aZhF22vRTGOV$@7NIQaV2isq<9?DmC1R1cQU-ty^m3<5pK|xn}p-t%D zzC-eu5E|0v2);hi2FZRRNL%$muvt_W%RRn2&8x5Z;IoM1;q-Q#Ol7aEIJxCznasC{ zk^GdMg|!^l9JRBMeK~os1{^qgXQ3B<_L!Z8ez5M?orN7>6S$W0p5t~Fa@Gg?!RA`Z z!45FX+!+9Cz}9Iy3(a5$*ap@ezq8N>HiKKh9x%(i=?81T>JxSrR)8JgS}=Da^}zu! zPyOs0=vV$5=?`oIv#&rN7=e9YJy>%R?ZIAfD>w*dSX**+)N_pi>%b0hA=nExgZ*F| zH~{v5d2l_LosOMg^_!3<9~=aGPu^Lmok)E!2UgG6Sy&1-gRNjIxEAaHd%=FNAIyVW z!J0Rt*Q+Q8BQOuvgZ*zoj{H;52OI#`fxY##2eUJG7RLVr_Jg%xE4UEspS82l0aiEC zAD9FC!2xgwI0$Bsq~F>28_a?AU=!E`HiIj`4zL641=oSuQ;{Pd+yM@P)e-()Kz(ok zTnjdzPCalCtbR4)yAZ#C&5Q7(d9WX>UW^{EArI!j0dOf;y#&939pGAU5bU-5OyUL1 zgL(O2#`W%P*a2qGLJpWan|5IJ+wm{h0cIvq53B|Uz*_NK#uv$XA6N%& z1e-uV5Yc=Qw+Q2lFl1ZTU*-v*5N~iCi#u74r`4 z0BblG=D~$vu9fy+6Sx)}0DHkfa3fgre)I>cug2djgmqv&n7a^A;ueQ0`v00@tiORzyaiCyBKHXfgNBgxE|~Q`@sRrmD7#CXx9TS1qZ>kVD@J8 zR35k$Z2d6yfq5|E1YNxreZVHL73=`lf_)#uuVCFL7|-J=|15q0YrcRyu=!r}1G5__ zKY?)so50qu6Ib9MxRmxa_n{~Gng^I4CxQ;VVCUU2+L z$OUV_-fz(!to}Cb!9K7b90c?7zk}U%_yw#6vs>^#*a7CuKgoDm{$1h&Z2dmXm@{{KUJu;v$x1DJi9aR96Hv_F~tx6u#S|4Z}(tGA;cSn~{W zz-Dm3a&U*`&*GmM=mADx2UrL8f(yX`uo7ehYemwO}61frH>uu=;nzA6WAT#tH2BBjW?+ z{)FA9&%cy+59|lMT~U+WRoDUM!11$?57vNvU_ICmHi12d?JBf^O`~@e zd>y%U%&x)!I0$+f)iZWiA!BnFQOjU{9?+%L9l){rGSS79mG3$}s%;5xA8<+KOuz^z~ote!)Cunz12 z7lQrZ3b3Xce}Wz0Mz9au3icjBe>waL)`5dy6Ik<#U4>RK2ljxiU?124ZUKA29pC^s zelGfgHDL8CcNKDA4Y(A{f!<_p1+%sT+u-+sJ>USi9vlR>fE^R@1K9g2^mr?B!4+Wc z9~fV-7wiRVCe!a}*atR=N5KbcYH1HPpRlV?JCAlJG7jP!=nw3fj{RUCxD^}(y#ZPM zCj1B1fwf>Wm;-ykW-zx9J;7G6A8a}U`{gfUoEE@eOg*sfO#EaX+yZ9bhJQ~-{#lF% zn14It2WHQuf3O)G6yJgW7UBZ~$xqdzc7Ow5>kY)u+vsl<^13G$H?9_+Sof1)IUOU2T(J5{>{}*zpYgfi=$}U;GW@4i5g7abHG1&r=WV{~hJ#|493Hp%)l|`9I+| za1dMvR{t6OEC=&oGw6kR^G@Oo><62{fnBtdzngYoFW4tPv%9cWe);Y~_I&yqvAa+w zj@n&l1)In2F7$%~FWX&Mcme&re0QM@%)V-OVGGy;=E0`d?k?0`h}_rhE-VH6YIhf! z-i^J-?=EzJ`8Vt?^ntx6!EXj<&@b5ZmfeN%??F!e?!pQ%yJ&Zz`Xcggqa9dt7VW_1 zckeFv<7v;8y9?{U{B`sT)~rI`i?I`2XuNPZ%b{C>^!0z3JUanH&0r5${VDnZ2f*wl^z&)_1lD~9JHZ^dPCnQN_Jdo%-gU^olzzc#upg`i z2f!TI^v{fkco%kpc`y$S-c7yB=(i7lgH7NHuxG>W!g}#O{uS06Aa}*bCNe z#6I!C-GxEwH-pWVgSGENA20_FfJ?#bL)Z)Ez+SK)+yZtyjQ*En2UrbOKeD?}Zysz0 z2f;Ql`zU?_^PAA${A1L=g8soeFb6IKTft_q7i=^C1bTu!;GlePd<$~HTCna(+JPP5 z3NR0@vmES`|6TM1bKj#qSoeL}t%MIQ1be||Fb}qYgJ2I>_XFC4&Hq7vS7Pq~^}*~9 zsSkF5ZD8+@k#GJd_~9zX;i=t)8n6${fpuG{4|ae(U=O$+90c=V^H0&Im2xl#_JT{n zJlF~jf@{I-|KN8p2W|vg!2z)PXUqq%56r%w@}Dy=z&@}EZ2ARyg8g6*Sp76{3ig6K zz+9ejxEj5-(Jwd%wt=m`q&}G4PJQti?7Idz;6kwPS@Z+*zrud7<~i&EJHYI<@WDE; z`q#(J6=6;J`ucJO#5B7mgVBPcB3-*A$VD;~?6Ri0Ie!ZS@upVpzo4{Uh z1=#mT`~voa17IH9A^%Ub`vCPag+d!xS5_!&1e?nXg=`ykf)UtTQ79}0`@mMPuCh?* z6Gs*b<8MG;umLSY^J-ZRky%!56azYTd{FPI1W!OVy7!&&$b zY&{#lg8g6{*!=cFp%-jAm-=AcJLsniJKsq^V8?mX1N*^sU~Vb$!Des(>;ZR(%V@U- zIq$;XU=P@4emV8QK`_&epU=mBZ~&|aTQ6YTz`6_31MCC0fO)VPxr1Pye8;kKaI;;emB%d`Ohs+`Y+#_Dq#QLgL2h73p4kYpH9#7$DG06)5kPe zRXL`zs~66TEgw~}WlDXfBG|8u%G!t>Zz|7ZDl6AEW@cjRn(|Y}RnNMy;?!|bdu2sM z+30cAsBrqYY(s2VY(I8a)4%p*=C7$}AF*IuZDV)&jg^<7z|6Sb1d6Vu-U{kfTMzpd zqgZS|{8spHl~2=IHI+lmU zGsk6TrSckS*GjwB+AdA@b1wX~@Lv;{p!T)E&%bi$_=)YOyn}YHvmITX)?R*gI=pfF zyD9IXd~RC)*7ox2LU}y?l=mTj26pZfe>da)(_;6>a&}U09deqLbJm)2Bh@gQhcM+# zqI?JC#$jbE~&Ny=2-Og&@rMuww$R(r*qaSO|rB|$>q zB|$Xdo5-l0 z)jsmNL}XlOV4SK*x`xp>ZajS?<9;#nHX^T4dHSfm{Jm)3FowX_zBQEZpuAyk`L$tO z^~;wik6yL2@M6mmJfA}OkHD`Pg8yUqweVk+)^AGdKM%hS{>$X2NjYOj;9vNo0~3@# z3BL8KO87J2EB~b>{3U7q!;QZ*Dd%GA|HID0Hv$tp5n2U54}YWlJ>xd>#>#ZuX10$g zzb%<~dnU5-zD~OpN2c@0wj}xAgWmyP*&)e)2L5{Zje!ZuuN+DL@G0JtXqUadPYbk$3ft0iEl%I!)Q^%CMbjL~GE}`B4^_m=iMr;lXK|E;~$YfB< zPunw`ZylGNJ7zxFx$!bh)@3@@_g3WWce zk@4fSd{(Ll=dRgB>-n5<>*^~;aRQ4P<8v6MzIBX#o`5ZNlXn&ta2(dWh&At$bR15k zyqWUXTh2UuTkL~V%X9ka-a#>utdR_ev`)4C-4zXg6C z{_A8Ub}b8b+3s%22Puy%r~h*(l>bfmnb++sVD_FQ|7U4^md8Cw{!aKikW;#zOyI<* z{CHj?eC1DW;u7lJPQ3x@eO1GVr&%8+EURbTT)|R2(}lLSVO-s;_E9&E zTr;A(a?ZH*A1bT(Nag5pb#X~eTr1rIq-Vdx&pVM@KQ;AZ;%8kMrxW=*k%iFmRdSMY zPLGR5j~maKZ1$LQl7q%Emm~-A#%3N>m(Z?MpF3`6;n5KH zMdz)V#pkW^&y<|FP8(BxehF*#nDPrtSYh8YgAUi%ru!arcqh)ALH|qO_rvE>HLT~1 z!7R_0H>0@&#!2(W5#`InSu$DHt#12UXrJZTjBwsfPP+TFpBcA5_b=NU*WaUkj`nX> zV4CDV1AoO3{K~P67yM`+=cc$?x!nSt z&Z1O`u3AbEV!6ypZW+)X%DI*B1bSKYD^_n;hZ(FRSH|1F7xTYiTQ{X8TNSMuK4Xrc zeb4Pp{z&Oaj*T2mS*?CYYgjFa#w>5ifmOM`V7PjsQ+#ZbmXj6ZG_EayUkPVnFj)=E zf6^lnDAiXR;mw4ft#IdrZvgKA|8NN6OU}1}uLu8YDCa}Q1$vl+e)sBjX5K0bK&R z+Z`SA8x7fDN0Z8Y6jcp0wmn3@3Ho;EpHq2fwC1$rUKQ^yyyjkiO`uZxJ7I5ES5{8; zKwm`u&K%%B6OxMjY4JRjtCw)^lbQOE+Gzxe-URRoE*|+`8jgz!FC}~q;U9J3RV}{O zmsR;p6bi2;d^zDJUB(4wcT{vcMW}w72wz3`tBRk|f4&B#EwA`=LRa!{1L;sdTER{a z)7eIN4dL0+QT#oG*Aae>(xDyDXD&BcK_fTiC%l>PvlQ-};*DTI(gAMfMLX`JaaaQ7 zztn{<5j3?WiYiCvZw+oW%q^YTYc6y>@cCq_y=JJLX2ugU)Moy}snXi^YJ>j3M5nh> zZ_G4kBv!RD?N4~&`Mt>t48OKmOD=rGucl^A(3)cw6Jdu_`Sw6xbU|;DVIbv%9|Ru_ zeu_{ePUE)lf}^N!aHEfaYrUZQCwNv_JS*_&sjR z5wu2U#d`{`SnZ?d|BNzAh84dPy3L;&+P}7dZv+q96}do{i!3zV#pOWh?4_Jt(A~gu zbcb7)nm#5uvVBW*Q5rfg(VM(UaVa12OzG8UMPpS4)x$XG>YzKr(UII+$@jCUobO7Zf$vu2{ojGy)J+cB9lB}(5p)z=E}F7R}{RQ0tM zd@Fc|XvuGNynPmJ;-?RYYL9Kul}zbP&K4aKQ0PykLT$lIfmH5B!oS6H^kAy}E8{)Q z5&tu`b*JXj6a&Mok-HIO?hx@1pOjO6$MNR?xY5g9i10H0#LYif(Q1?P z?GnbcKXmOOom+>NT-4^*LFdfSM&6^N=%3IPh@W#btv3d|3!E*YloMVGK6bjBA6 zYVZ5TXgsuy^;}qXH<+B!i2lxbGGn{_z>^$PXf^_H1WS-SH|5fto+NP$F zCB#bdhXq9C*#KS5g}upJF-%3jYv^JvIWx45s*ZQP6HzS_rOH+R6*VkJ6TJ)^@ z%dj!k)F^preP#Ln7i`g$DO~a^d+n}l#c{_QDdZgu8+)=9zkAY!e_g1#;=Qseo6i${#NE2BZ2sILbo0| z)pe?0xJg9$+D3Rc`M-N0T%!|RTQV~xALFVX%(__g`=Kwn(v7<|U(EBVWxR&Zvan|; z%`q78>Yz`bw@SfF!RLVgMCn$U{wllFlzgUA+K%)|)BbG=^+xeqLc9aSdr0w|Q+=!i zUw&0@aL0hys-t%U#V2vM~s{V)oSCd{F`6yY~n;fMwn~_(> z_5t0;T21U?u9YR{fk{d{%W{tXQwxi|r0-o%I}IcKuiN}%05n>X#%iV|>EqI@EK|es z!K^I9@ltX$k$mdx_eAuy=&J+$;lSi8QvKoIDV8cj?ORXdt@=W5@?oAO$JH(V6w|s( z`Rmq$%5R$*c~x(6t>{woOJ&-6Tl1b~7u3$Nh_0DzZMFM}L6EVc+VuCrw+g;L7GF2k z$R1fw@-y=NPfLc%2r5AFKLFilM5pwPooRB~{ui@pkug0fQH(|8VM=H_RV2G_QVX9s zcl9RUbMv=s4_19uW2Wnm>aKH){41o9*jvMnCSC33Y$}=J z;?%#^!fy`zJ|;l*Vb&|iT1886Rj3ju3@7^S&^P>x^lG1j&@YF6@P1E05$lC4crm#6 zUq#%|nf5PYeF~m#$208@zA+2F1bjVs`g&OOE5SR!2j`~~yd9kErd%ygTZ%0G&!fB` z4;9Al6%LiD{*^K>qmxF1gW0w2O2#NT<)h#v>;>yGMy!f>V2M0g(Gh!iQ@IpJ;Kh2ZCgAinSo;QFRy(;$2scsF=c z8a|QdU83*c+k^-&)K8T$mLs|dA4dc17E~~gAws<+)9_hJlo2OW-Y@nh!+oR5)&2}) zK4n8rd&Oem|0#@VyQ3laLX_*I|6pAEgqUpTp>-VehM#UbammfYZoAZs3(yVMSy@N3`LoBX(IN39K{ zcBoQyQlW8q`gCL`Jk4W!C|Adm*wH9g^q`&hH3tpYziGvCb4Da69NZSpfU5Q^R{CG( zTM(Y3M?7HkAGT%5Mx~h(F}k!wb+|z?gq$-c+C?+;>Nj(X(PuWX9#Q_o{jC|R{kFiz z$jj(#^+mJUCHgk#3!m;yzG3OH@6OPwWfqlHZw!XoY<2lleQ$%l>zUr;Id1xPLh4h-%VD^^6SEGZQ@r$ zSGRfSzI#3RD)6~t=$z790p1N>7J~S~*MjFg=f)2gCVUfk3HV74lP7#TcojI)dddmk z16~7uW(u|R2f-V_C#T_KcrL)OvmX58!ri)Uv^&`)e&Y!5B7DBWofBRLKKl9IWJL(# ztKQ~<*MK(*=NwdPbVf^THA+*7UlX>Z=vG3v5xVO|SJe_sjTcq6YS#_xuRB&?)>WIJ zI{@7@(a{b!LJ@9gDjz!uFZu@SITwBnts{Id_ylmHKPU{R^7ewagI_ElO)u1W1LbSX z>9h~wf3)Fde>O2w@{6{XW*;hpu47AYQanSaHk}K;9{l6ZxH_%dXv$RIll01;O*e1-Kmf8e9JCJ9~(r!-_aXA%Y~KVN5@+J zxyol%YtBXLbuGE9o{gRU4hmbIAJmY)%=OJg;x%sVO+3SN^@!x9R_cC%!#khfbZLDvQ^#SE?ZONZ*dDpx(bMcHC;BK0N_~sTGC$>nj{)Bdu5F^w2`_c@EPql?c(tRSDwI9# z+noH>gYSb+o$!iyLZ{gzUn{^%w)H0eA>7Gdb7WeZOw#rg2x$?t0lK{JFfVHSVg4I3 z5BRSS8G}_Pdx+OVJflxoJp?84I#Y`i3GXG``)+UYw|Hh=J?uU?@~$z|D7G5r?K)y2 z8v&b%KUgkn!8d{rmcJ$7>%rAGLTB2YeC!7Q8s&?g!aOr$jo*@U@#;WlAKRj>vEW?E zo|#)z&s*R#r_0$P9V7AC1)sw2v#-K)bS8X^z~~U3wWqOq8;!XF87j|L{rAGB9eShJ zh5f%08x)ohtOka&=!zLY^ImdtYxW(lh$kwol(X%4H_dG4f9Tdjccts^=0p#brsEFb zGCQ>(K&FFb6f28$Rs~f#JK?u^`%ry(3;0Ix!Q=f-N6)ri%Bf!VI{KwTLpdlxc~DhU z=4b31Dcuo7+6RBO7gA36IPe2m@G|g2;OXf~{^mOR%f)3DmUnYthBHXim%>*NUh)H1 z4)TRPr&eKdru;7aN&$>-J_DTaE#S+Emn+;k;XA<_2jObJz2FVtuZmXb#CsxFGKYWJ zRDeJ`Ulp8%{Jhee{C5FqbZgS+VC9uUw-LG#>W|P#A&MV3sa|sC@68;iRL*+nJNUNx zMxMiYwaBkP$fg=OTuHdTy?#{T@WcMiE=0t4CvA+zQ%cY#=o)wQCcomwfkE~O;^di8 zx+tZNO*Qs|y~Nx1YH#w_PA)%aeae>Dk-^gJYOXZQYVuKv!Fc&j)~7BXmfwJ#N>&=T zM@Ll`u|ejq&Z_4!H>iGA!mr^c?z|Y~*SWe|ogk?FHW0r1wGTeeExKKlb2EG{%GwJhVBW`-3A?JNKiYZms}H$Gs@SPv*Aa&Q+byBeL4)}Rq{5G z@E*cXR=9J*Yr*x+`(S(tc;V}OLmd+1E8i=@tHA$FxNUzKhHgv~JFEXdR|nliq9Z@j zkSg-8G&QCC?j(FY;kPLqJL*)~zUSCXD||oUUbovf4(;;Jf~xR>67(m+F{6k1$T-(F z&V^sC@Nm3D2SC$|iob5p&w5uVtUxlf{a z8^FgBPtUG?Qs*rdZ@UX;IM@DNd(nJ*4r7n_5zpYH$M|9^3o_MvFX7716^h3u5<|a^ zo9c|jG(_Dv(G`Cb{T;emAvH!hZ3$$tugG5zj#tWCHFRAcklqr)y9s|sd~7?@KTh&@ zr!}<7vlhCBH;3A(H-R_*)an1!tMomkyB)j(JX`$;+v~zr7ME`7oS(v@=P;fTKU=#i zyx4_ji?95a5x$l9!+8#!;>`u$`~iGdxbVaA?IgS_3*Rj+y~D-ZMfi>^@%B4@*~+PM z6ku>GdLwhcLwGUxXz-)M!r`lY6CJ&=Pg(hrUAtUIeU!JkE_{vR5sthw7P(y+w{V$D z&`Ri5!GFxaeByK#GazwzSc6wtK2~q(z;vf6`7EGQIQ>uf6s?9X4Pm8;Q~vkDzY2Mp zU=aI9crSP(xY>ttVJg>%QrZ*z5@A=w3v1K9@2LkWCHxTKx90F-?L4V<%}{$M6WOY) zqyMD*pfN_slx$}=%3$3|I)%S<-?^xO;Wrg%v5mIO)XU_2)`4zqP@X?8d?db{=BvH% zX@HMWREOrbjJfu*0o(b#e(=@9n~u!?|_;11=7xiK;~oge$s6O1W1%K;U# z=BByyxqh*C_sD%>NVl>J&CJKqi;)&i_c?x*w>pZk6QYRhrJ#23B|-21Q0^O8zu7r5?l`4rD7eM^VeagwWpgij#+k&(PmZ>sFHlhiE6 z2R6onb4J=zorVHBwE~Ke(w~T-q@BA>P_I)?^;HYL5&SKo&hFJX)!4mMUb9CiIa&c- z9e1Jpr|430G@wVNTQw)^m`8JjBS6_jN$Ku{pBL>*o}qEX>^07gH&*G;aa+{?H7O%K zO7|did9l9ax1IhrsQi`jeS`YL%1E|U;bhyPjDcmj?rbrL{iAf|g0Ba^SCB1VxDUpn zXwc>e>t(<3u*n#?-2}fL_~p5Lr>%o4F+{!}b`mA0^!GsDmD`tmCG1z3?aUV-vof0c z;o$J;PlVsNPoPh5SIjXkeYSx(46H@7I}R+x*BpNNTjp|^xRRG8#4jr7v*(_8mm9}# zC3pk)-vkUA=lr`;{n1!b)XrO=pKt_sRyg{L!v5=Dn$jf1cMo*U(9IAX^>5b;tmDhH zeSJrIb(#DXe3JHpK7HL@OVncU4)FhQ<+l2MMe0mmx}0(x2@T8-W@~ACxIqt|s?Qbh zEjh9;`8v-gf2*m=(UooHdqeXfBOlCQ%lG|FLkza2{}aE9_@;c~ffK$9{1EsugV;a9 z_k-6J_9ahD!!=$+QM?<#Ckt2obKaNUGDGJYRo}&gcM$$zmEVRl1L^3AMn7wJ7hN@U z?c5pk8qX>H7=yX=<4O5iJye+WUK4Z^j^>UK$tC=z#k)t(ZIMk}{07d?cS4sK*_ZL1 zn%Z>>xb76XLg{46ON~x#rjOsE-wXY6=wB9nx*V8e4CG4@Se2_JWsr=ZaYl0&(O%IL zq<*HgEfZUFgcB8xKVL?Ci5D!Dre6@O3Rq#yGQiL z^(7y&d{OOn;By`Z9y*mXWlAoh=d)fpzAxi@In~=3@MiFrZTx|=8(l>l-SFRrNot)S z`fBKlPUy4W2dQ1mIa*E`sDh^CFEYn#pp%oltbo1-`n@Usm&LmZuUg~lgoyu!VXypc zfNu1MGxMkT+rSgxzfk`XBA%jYM%#15*1;ds{?HvNB447bZi`){s%^=g#o_sS zb9iYD#7?si{Rk%Lu_yN>dPYR^jGDt4Ens{zKnfK@u?@>67cOj zNAF>s%^YZ^!|Hg+G&X_MvPQ`uT;*8{eK+)TME_;zS;JOJ@UDf>%$iou*rN2f8|r%K zTz~Y#eFCMsi|{#wk5~U1$UpY%i%s@_4m;axZMsnug*jvUl4Z6XjGVMbYTA6AL9$|M z^qXtiY0`bXP#%F{v+kdldSM)`sV1&Hf~N zKcvaI>hHy_mI51$#TJ#Ze`f_x>26CPFXesqoK4y|HIp-_!Ka+kOxIJHtD)ZyeNSay z@?FwZU8UQ>vh4RBXpRI=A8s0}g~h~4$U`;yK-}^x3(p}8n0%!X3>^OLnjIXOeaF}B zlGy$3PV!lGd0+BX44ly$Q}ttY)IqjnrpK3}*Gi2EUeEb}DOd8jpZs=lm)LPUhfa8u ziBETpeJBL+$LI&%4L(XZ^@}Y{pIjSP%HN4D{Cdf?l|6emg598|5swN+Qh@`~S7G+E znuwRTD6^laecHee%?pX~Y-oZBP88?Y`xSkgBp!ftKyzXyJeXZG9kBX&Gy zr2%i8%H2zN*FyA3gV;a9M@(V;n*|>Sz8Ux-3oFpQ{H74rF>K~D@-8mH@_@Az1M^63G3bmYPy?jrF0_=`3I zD%A^_4K2CZK>WP(`ZM-9)o$CsJ?`qO!jlb~u@gP*IwRtWw}PLns)doT4k znt0y@k9IJ=%xKANi_MAGO}ACwnxhHVb|vvCu3-M+F2F~44xR9c;3YRX{oMr!uLa)+ z{*SbDg)af`ZgTUdqc6r^2|oH3^fY0WEjd?lTZ&bJ_(qo5OLC}s+yq@abnlAJ${})X zrzm^Ks0tJQYnju9XmJ`}_7gwBorR{KrR3NyMau@3{MLk38BYYA*@ZzJTKpzfQvKX@ zcuJI)LHvf=!RmsSvrD5HA39;t2EUry`;zy>()pDQ`EHn{a_}5k8$9?SzDu*fQ}g|{ zY{dSitmsdNqSU|IZybV__*`G|#k6)+`;~$3Yw5G+AL$R;zfrSQVvP&OR@45_)vfGH zzCfJNA&TBgaNYSh%++K1xhd)q=^SXB;5aH#1y8rfkU!;PCw#hBafhIoW6$U6AldVM z9RfF%46J+{gs$PPq3fywHhLPtjT};raNVQD-aX-}N4#<3GZFe8=vxh9|42@2!ROq~ z-HU>d3)u+<>~iM#oc5ad`Wwz9VnioT#CCjHOZ*Pv|4x9$7q|XWKE9b+<=Bx?<=(FJ z?&-7p_~ALLX~y34I7K&W6y<9_bVY5hACo9+1#2?Y>=5dD%Gs?$yO7cuHw}G<`2VAJ zV!d&3yyRlL+>i!4u%4@hE|2kU9%Oc0!YmT-odHUGgOdpHTLE3keSOIvOP zoo$jK2_si)NoT@CtiJ>}r}Q_0mw?~n%4zl20ehiUHV3{6t1~l9mf37lK1;7GIExU; z^#}&HIo!Eg5GF2+-#G9Z@DtMTaXgnf`cmP@D~Gpi*Fj+CW$8Cf&^N$G!(8Zqyf*&S zfgchm`84{pJ?EJ+7_z7d#{&&uSxR9hF6DO*{0hI=XZP*I6DN5(2tEhgS3R=1qIKMR zPA*OPF(_3%+-L8vP$ZlwKX?~7=9H9^9G8Lb13%5`G437@)Bm0i`=98RKzE?C&(6oz z{%zL4)AEBz#HBwDy0y^Fd9*M2w$m4|&ua)V*Bk`HkSX_7m{vmS*W01bd%Q2%=j5W? ztl}ITzTZ-j9|YM$CguBV0A*==r(N1{bPxGx ze$LsYHI5p&L?|&TTt7%I5ecv0Li7vh-_59pl;maPn-jdz;M>_3b6U$wUgpBDuPU^t2AKMw9z2UszDUujE&)f2CgHO?S`jQnIkC3Me*^`+@ z6EhSCAD7R}&u1~lVo(doe&`e2WgHo3mrzJ_d7Qf+EciB?av3wzjQrqv+B-vX!ta5M z{MWGlKdb)(?^`qS58e9l{pogA?T2LC%O|?E(Czpa=(a(3;GfW`KdIbvUhPZ1ME{6x zM&Csi%0pRb3H$l``#{g!q)*P-cnAR2x z)>0$Tt6s}yv3`0DJB;gp8vN4FX_xq|>5Jg1e7*)$A0!)Q5vDa#5sR7d9hOF)>4a|` z<@;y%*lmYy`Puy$=XQ(Sx!sj2Kjo=E-=yd(GeZ887P zPG09izXAHh&-#+*GY&?}Q~5^o8`4)e3?IxwZ7NGZo4*KXA)u|r-y%*7ce%_ay zcN8y!#;LUPxpv@_(tUa!P@!?C-xkv(+TILX-i>n~<~ldT;&6%{UUHD0tq zS3*0c+h;T`Z2;f*`@ZB|wBO)-hNE(L!qAMT?`0pI)edI<6F>5kfSvk+wNo!MJwWX= z0-?^^@AmB!o;IKBLsw_=H)CxX^kvXDK!08#FR6OW(ng8E%QBo9+gB%1+u&2j-QZ^& zna(Ghe#KC%^OMgV&f*meKit8B+YZxCK@rlERjA1ePUReT3FFQ1{^WEWJfxha3x{?U z>CHWv{W_@4p?8J-T3qb9u?aqhj_Ob99=(D3vgI5icbqJY26M7cG&HE>W;^`$jpFWO zCE#2!{vPlIRZn}N+gjD1JWmmwQ#qpGJ>chRp0Bs_ zOGckY%2!4G_tJZHXsA~?$`pTkfAY_o&mK6#n9A?a z3eRuO+M!*&8Tlu_b(G^o_=ZmSF7Spd_{=gRsgwHhbK|6!Pk}yHh?S!ryx->cA>YzNnH`eH^$TppW&`r3g-+qUI zB|3^Qsoo0aQa|91)X-P+w-~$uyeAxw*XVp&>K;6OY1eA*bJRU}>&yK=4Ar>8Vc6<{ z@H=#IfAV;{UN-l*^(4$^LlReW2UZwC{bK|4`z~?w(@b-YcUF3Nwu>L(nodKf^6UXW z0Dh7{)<@d>5q=OnZ??lLq&Gz4n`@>ec@bvjc@jAiViHBL(KsW~DEG|DvJ9GT zohCQqu0o%HUTR+GRG($w6Tm+gg7}ihx!{|@Ulh*17DkL|W?u_)v?Nj%%u<3@LRWQl zzqRYD95Qg|WA|27y~_rhB&?#`+%?JEQ@f3LUY%P{(vCA*%u$LIMggEA_(KgyB^otOAv3Jx+5CI1#>`@U59g`#8QRQO0;J@Xlb=w0=S=y*I~MT2FhUSt{k))#KlQ9X)GyK7IMEXh(6YqIJi+*kLK-l^ z$Ry8MqX|P7J;wf~adj^Ix)=7_^FNeLgN7QF{rSM}GQ~}eOOls1=$jYyCtp{7P5-No zABgGVU|kb#?aOM9Ezpf^=(p$SX2rXF25gq`=6(l-?;^Z`aHIby9Kmi0>fkZmtnUvJ zzJqYgW~Sd*TL4*;k?gk2e5t;Q=P~|3pDy>M;1j`n!0UK6dah}A+vuFHvu#VRbnlhg zwvx6jgS3fwd5ifUAS$PtKkRoLunPQFh-Wpls(i*7x7eDJ&wTElm7Mam4L&8;_Gg?+ z7rqO80{Dp{bWZqw@C5i^xsT4LzQEJvUi4$Y>%e6$3Z3v$@HyZg4MBY2)!@zGYRk|G zuLth{e=G#?g|7fFx~|{u8@VvyYr!{yf5Bn$O8IRP{gQtB9k13EVLxNEKx?3<%}BGW z*vQJuUgFImo=JaZywTj7&uKdbAiF8Sw5@at79g+CU1y`3zmnr(@UhqPKV*c^URFPt zEPHIDRyIHxa$F0274$1b@8*$4GV3cfx1p_kt$=PbbPtP;`NT`_nf*=e(4_RhF~dloYmV6Q%gB)GdoAJ131|6kYh;LYH_=6RqWF`q>07`~sf<0U0iC5pZi`jTaCoI#HG zE<%S)!~2*nGd+*FQ|y%PPUsWRpC!OK$>Uz|IpB8)OP9ygxKYj$FJ*u=6OH(dxrX%+ z@n$QYbIMmK_&)H@3QP3|Gk>)ETrQD5AXGzA5B-E&`;)%Ui_$mklhU7UM`j*16}vvi zoIx4dLQ2e*a|`?qE$>erVWAYh6Z`;p`gcky$6iOTHV&Qg)eBy7TYob4ujH#M2#!F} z7;H+lr}1pQsvAiE)0y+6(ys^K2YyVLIKJ9tg`?joJiQ)i7mQ1;8c~zl24=omNVk#i zRiEikz7u2Zmb1>DdsI)=HCx6o>r@p!ny@DaSjgWQ(Rrc?SwA*{=R|%5ib%fK|8E#BU`2_>6JHbhXTVovx_ana$S5s;{;1ne#c?h3C*I zf1AK-z{7q{{s!rTSR4Exb~t@-Kk*YSL-|IpMLxm9{*hVk)OiKIi_9pv*#c5~sNBnm zuk$|9OVZoJHikQ%Wi&;W_sx+-YM0<@@;SkP8P;@b-%&kulCPrA_h;M(r2e;!^hSd- zt$WdHNiQWkW=<}W{UQ9$U-?tH=Rp5AvTvfX|yeM`yr?`s55xC9A;C+Lc;G zJ|{d1-O#LTn(=nx66Oo?`4ItXSJp&opSkcG+tHu=9?#La@Z+1==|)9o@q+@Sm2x;y z7DKZVKFi^=ME%C;OC^_}FFgyPJJBh5*aThIvzhxNN^d9WEhoLtFpfp9B|Y|)Qg;V+ zMXu03mu%G92vxoHLcinT{^SoO5AC+zuu)Gl-Cfh7ISXUNfm1HQs-Y4=ap6-&erh_I z=K}aVm*Qi)j}Pac{G>!FbDIY% z%gcUnnflMr@ysfis+Ya+ZGNghIZE|X2VZB?ZSIWD)D0V}1OIMn#n_-#zXdlyPdnVq zbLiAQ#o&_1p9^H2%}SNehUg$-ZuQi) z@M+kb{oHOfG+SKwjTz~rEl_voR)izJ+TNT6&oa`e0mLu56#0J+d!7bd@@?0>)+U*{ zw}Xut+XysiQ4sy0{k~fG?RdfI*&3U$*G{6M-Bsr#V#~P#I`5nP$<+cJ-72^KS9^34 z-bnZb3U^NU7UdV5X)xu~-aEk$fNvB^IkeuE9mU*L>OYvSF4_H0@!#5?+~wx~^sy^b z;B-!-F8DGMoOSz?8;pjI<2GxWx9S^_pBLGOQhQO(^z%VM8B)wNrom;JG5OoIZ#X`v ze{3Lr)wcfR-^G%0rS^l6F0}NN@i^5)`j+s4tdomdeYtjr?*aJk)Htx#_B&e#Msd#g zUoDIVU6G)b%x2esBuCXZQlH;t-8Z;CE5qGcDS1YYSm`HbG8e26U1H8pA4_O^sjfe||JaYQjU}!K2imOzE)N3E!Sq=`WHqJN|^< z4_F;r|Ffl}n!T*&>`-hPTkD^Se6GpR;G9CjeI7IZF(6h^o&;>?B+Dv4M1o-sn&MO!=8cI__+1bA%Iatl?$RGfF7o;=2>R z-Ow*meO%5l9lI&RP9)lkll&0`9fWTAuQK&uwMD@#{NaBtoADNVjJ3DVGcu|0afBBU zzJh1w!Oel6y58EfYc=7`grA^r;)nOK)q}4BKgr>`az*@BfUgIC&*7RUv^}Jnnh3Um zd^Z2AKe>(P=ptLsnB|c@Gy7IiwWLD(u|%3=>)BWv#ZL9N2man$^j87&2V-HDMOufG zmYQ~Pt7o_V!SGWEz1gpF{m1E&mErMVZt(XX%G6`T-Q>5L`0d1hKmhT%H4$W(yP?2` zf}*-O2wmRp{^YmC&z4g&i9K~UOL;3XUvb|T4hb9%3oAr37@3__v&~8jm3^>{M$pyqxhZBHA1K9B;6&0 z8zXa$gW{anMn86bY(q4+=F>d=G!ko%=Dr*Y;9y?q~u6raxreBGi@Y-G{{g zVm$w8*zttEI^5>t$SW$gM!XHm$1AP~r+?x%|NL-ob>3Y_ z+S7{ol8gPJ(|IX7vopuG?AAz6!1Gf%miLJdM~?Qq7bD;Bf0yHZKDvq~e&2rqwi z6d(F1ls6V`J;qz5#NUd%cofe&jwC9%t z@1ocj1MkY%LxFdlo|eVn^`2{wQ6o=k@XBMI5pPzE55*S{@qWjp;P}`_y>S53_#uSx zg@6BP<`N84eiFOuye>rju zE%wwgP2i7@SVR5)WaLcnCy!-kw{z4Ne4ck7SBJKB{5d=(mH+NBTXK1Rs8|`%AM$tn z$MGwF8@!X}y{LLU6#bc=59Qh5Qyz&ho$QKyBi0f3wyMkgJ=Z+Hc*Mz`_x1P}Nf<68 z?jVFx{KNNt?2q!iZ>h6`f9llQHeZ$cV&FX*i9H{9Peo$~x7q zX>5JOn-cq<2;#`_HZS(y5w9`!hlsa4_Kk@5jFX9@FM@QzQ7sWq|MlcPhaP#&{GN!n zQ*VEA(DaLsWO$6kdh)$aL7(&W_^|&}@T+`pXG|}D)L8VL96dgmyFKz;zW2_s7@?iR z1^s4t0_3fHXlSIPz9c3z%)0^I^s9&!V8IDvrhDq7S6ZSIkEOk5#P$Z>B|NN*JmvHF zjetSyFRr9tjLcwBxihl(XGIMErT;`c7$M2LPkG+E!@3o`EkD+AqW8o6PM?>*9iiX@@l^_GDU7Wz^4beuj`H&M z2oo~mP#!ORC&cb4^46Rvj$J2`=QmDliGb`YviU#qit2Ag?CkMFSB?1{kz>GKbFafc zJ8DyeAqj~qmE0^a7 z<$k{a>9eQVkvfry>Lu7JVczWzoZ&GXpLhl)ohB*Fj zJXfkGm`)CI)ZC{`2aa_d;cd#(Jzapu9m6y=zWPrQ@5u-n!tWz79(!HW6r3D8*DHa~ zbeql*qw%kf-R!M(1Vwj7ZevXFkA5p)W;xFD?hXPTw*+YC@4C#5E+W#Ir}JGv9S`?M zM)B0`;*UBDC=ugZ$AvuH68l=jGebtYBKE(}|62q9TLb@F1OE>-kaTYIRSCl-@h9uI zH%!Uk8q#Heyf8l*H`rh5fDpfJ(EGYU@6F8kas}4&#-5TePvIW(#>F;2@AW5{;ITjZ z33(o4qj4oiCXA1%&bWPk!uZ3@Uo=KXh-t$(26W>_IzRLn@{QZ~SiSLGw!DOk$g0;k zrVHcHGmYCfDq;K(FLduLrH$L|{9(=y)9+8(@{}B#Fd@{lDIZgiaR=P{86y)8`Tye; zK5EN9IJMcXT^2cine$tnzs~tjIR6FbzvBG2od2%#-*p2F^Ph133(kMV`ENP@UFW~={G72aednL% z{PUb&;r!XoU*!B{&Tn=8I_E#({1=@6iu2!c{=3e9-}yNoap^n%H0Ph^{0isKcK#yg zFLQpY^Vd253Fp7y{8ya+mh<0r{`=0)Im4yz{L`F&p7Sf5Kim0>oWIQZtM&M^ncA@w&fH|HDVWcKe$b-}I&S zqVL~Z{OF3mefzSvR-b*_-t#~AvzMOv$GjWPd*|j)bX>Lgue(0})Av4=zhTFRJ7;bF z-N@<%_iX#@QHMVE`tt9*k@wq=RDJWuU-;@16X)lC`m{%$D&N%mr_)>it$F|P2Wnb^ zOJ2M0!iU#9w&&H)PfLurv*%lPU-R?}XP(@D(JK%Ae#<9^FZx>udg8Th z4eMe%Z)vQ3JAT)wWee6_HJTqG;Ype_~qd_x5c**0Z{Qrp}^bh3w zUr9q{Q1O4s?;rfKx+2gnem(pS@cWDX_597I#amVv1;xl??fCdC=gjZ3_!+L5w=RA? z{2cFe|6eHwF*BU1MCH<)d{UMl(12UdV;8?}em(sDz>m5N%bFlh|2KJv5mj;_y+FDS z%X1G?v-cr>C-YNNWw>VE*7NJ)cbGh=KK_+Fs6D0cgn7v4S@j?tM|Dx;et6#dP64c( zGUby+V=tM1%MDGpoL#;6hIuzFEh-&%H-MYnXR)gEzkZ zwi|A~?Rx98wQE9_ExhUG#Y=CVsT+H95h0FQ7h!?_^*3WC2 z=Z#<3aP^{_=3T$=>V|sahHo%ku;A*2%NHzcY`U6EFInh~U(mGlrklxv^{!n2IjPLM ze(?gRm%^Ao<4tOo^Zc8kUa<7~>lfb8r0V^Dc51r_Keegc1V14U-*{%f&pz3|qD^Hz74E< z!gqEt=yL=45B2pkMp}v-SK;bwa$!25&nI!7)&k*sxE?6cV1Vl}e?3q6SKWpAcd&P@ z!^8OD`lHY-P z*f*P2_$(h=Sw{TCDG9+|!o_cwaHY9Wel%Xmt>l-Ue)ky(!CvNfu>C@G^Pu?Ab{jw1ZsXq`E?iv%i-xhWHM{s> zEq8yZ-UN1k$x@CTAT>{e(|>hP{6jAOAs2sedkv1?Jt%&jTfgQ#YSSM~KluG;#Fy-b z`488>g)V-#8V483cNjm+*RKf^Nf^J!*$;Xi`{49LKEE3jKeRvWbMbeFjG>bYnk?>g!N2Z{V7U4*$1go;+0BfqmA#eDJ8dchN}ScHZ(r!ok_pMg{M3h bzcvNfhmc#kpGrH8w${Zr%+v5NUI_gk{;!zO literal 0 HcmV?d00001 diff --git a/rar/whatsnew.txt b/rar/whatsnew.txt new file mode 100644 index 000000000..d2ffd1b4b --- /dev/null +++ b/rar/whatsnew.txt @@ -0,0 +1,513 @@ + RAR - What's new in the latest version + + + Version 5.61 + + 1. Fixed a crash when processing corrupt RAR archives. + This issue may be also associated with security risks. + + + Version 5.60 + + 1. "Repair" command efficiency is improved for recovery record protected + RAR5 archives. Now it can detect deletions and insertions of unlimited + size also as shuffled data including data taken from several recovery + record protected archives and merged into a single file in arbitrary + order. + + 2. If encoding of comment file specified in -z switch is not + defined with -sc switch, RAR attempts to detect UTF-8, UTF-16LE + and UTF-16BE encodings based on the byte order mask and data + validity tests. + + 3. "Update" and "Fresh" commands ('u' and 'f' in the command line mode) + quit immediately if no files are to be updated. Previously they created + a temporary archive before quitting when updating archives with recovery + record or quick open information. + + 4. "Repair" command issues "Recovery record is corrupt" message + after repairing RAR5 archive containing a broken recovery record. + Previously such message was issued only by "Test" command + and "Repair" handled most of recovery record damages silently. + + 5. Bugs fixed: + + a) fixed potential security issues when processing corrupt + RAR archives; + + b) -tl and -tk switches did not work with archive modification + commands; + + c) command like 'rar a arcname.rar subdir/arcname.rar' erroneously + issued "No files" warning and refused to add the file. + + + Version 5.50 + + 1. RAR uses RAR 5.0 archive format by default. You can change it to + RAR 4.x compatible format with -ma4 command line switch. + + 2. Added support for 1 nanosecond file time precision on Unix platform. + + 3. You can specify 'f' charset value in -sc switch to use UTF-8 + encoding. For example: + + rar a -scfl arcname @filelist.txt + + to read contents of filelist.txt as UTF-8 text. + + 4. RAR "lt" and "vt" commands display file times with nanosecond + precision. Such precision is used in RAR5 archives created + by RAR/Unix 5.50. Archives created by Windows RAR version + have 100ns file time precision. + + 5. Only '+', '-' and '1' precision modifiers are supported + in -ts switch now. Use '+' to store the file time with maximum + precision, '-' to omit the file time and '1' to store it with + 1 second precision. Intermediate precision modes previously + defined with '2' and '3' modifiers are not available in RAR 5.0 + archive format and ignored by -ts switch. + + 6. If a wrong password is entered when unpacking an encrypted file + in RAR5 archive, RAR proposes to enter a valid password + for same file again instead of aborting extraction. + + 7. Bugs fixed: + + a) fixed crashes and security vulnerability when unpacking corrupt + RAR archives; + + b) directory owners were not set when extracting RAR5 archives + created with -ow switch; + + c) if only creation or only last access file time was stored in RAR5 + archive with 1 second precision, such as with -ma5 -tsm- -tsa1 + switches, this stored time was ignored when extracting. + + + Version 5.40 + + 1. If RAR recovery volumes (.rev files) are present in the same directory + as usual RAR volumes, archive test command verifies .rev contents + after completing testing .rar files. + + If you wish to test only .rev files without checking .rar volumes, + you can run: + + rar t arcname.part1.rev + + 2. Previously "Synchronize archive contents" mode (-as switch) aborted + if some of archiving directories could not be read. Now RAR continues + performing the operation and preserves archived files matching + unreadable directories. + + 3. If -iver switch is specified, RAR displays the version number + and quits. You can run just "RAR -iver". + + 4. If -p switch is used without optional parameter, + a password can be also set with file redirection or pipe. + + For example: rar -p myarc.rar myfiles < psw.txt + + 5. RAR treats 'arcname.partN' as 'arcname.partN.rar' + if 'arcname.partN' does not exist and 'arcname.part#.rar' exists. + + For example, it is allowed to run: + + RAR x arcname.part01 + + to start extraction from arcname.part01.rar + + 6. Maximum comment length for RAR archives is increased + from 64 to 256 KB. + + 7. Switch -scul can be used to process big endian UTF-16 list files + as well, provided that they have a correct byte order mark. + Previously it allowed only little endian file lists. + + + + Version 5.30 + + 1. Directory wildcards are allowed in RAR command line in file names to + archive. For example: + + rar a backup c:\backup\2015*\* + + Recursion is enabled automatically for such directory wildcards + even if -r switch is not specified. + + 2. New 'R' object for -sc switch defines encoding of console + RAR messages sent to redirected files and pipes. For example: + + rar lb -scur data > list.txt + + will produce Unicode list.txt with archived file names. + + 3. Console RAR "l" and "v" commands display file time in YYYY-MM-DD + format. + + 4. "Test" command also verifies contents of NTFS alternate data streams + in RAR 3.x - 5.x archives. Previously their contents was checked + only during extraction command. + + 5. Bugs fixed: + + a) console RAR crashed instead of displaying an overwrite prompt + when attempting to add files to already existing volumes; + + b) console RAR "lt" command did not display seconds in file timestamp. + + + Version 5.21 + + 1. While previous versions could produce RAR5 volumes of slightly + smaller than requested size sometimes, such situation is less + likely now. In most cases volume size equals to specified by user. + + 2. Now by default RAR skips symbolic links with absolute paths + in link target when extracting. You can enable creating such links + with -ola switch. + + Such links pointing to directories outside of extraction destination + directory can present a security risk. Enable their extraction only + if you are sure that archive contents is safe, such as your own backup. + + + Version 5.20 + + 1. RAR can read the default set of switches from .rarrc file stored + in the user's home directory. Previously it was possible to + define only the same set of switches for all RAR command with + "switches=" string. Now .rarrc also allows to specify + separate switch sets for individual RAR commands using + the following syntax: + + switches_= + + For example: + + switches_a=-m5 -s + switches_x=-o+ + + 2. File overwrite prompt displays the size and modification time + for existing and new files. + + 3. When archiving from stdin with -si switch, RAR sets the current system + time to modification time of archived file. Previous version did not + set this time at all. + + 4. It is possible to use -si and -v switches together. Previous + versions did not allow to create volumes when archiving from stdin. + + + Version 5.11 + + 1. Timestamp is set to extracted symlinks. + + 2. Bugs fixed: + + a) deleting a file in RAR5 solid archive containing files stored + with -ver switch caused such files to lose version information. + + + Version 5.10 + + 1. Switch -ai can be used when creating RAR archive, + so predefined values, typical for file and directory, + are stored instead of actual attributes. + Previously this switch could be used only when extracting. + + + Version 5.00 + + 1. New RAR 5.0 archiving format. You can use -ma command line switch + to create RAR 5.0 archives. By default RAR creates archives + in 4.x format. + + 2. Changes in RAR 5.0 compression algorithm: + + a) maximum compression dictionary size is increased up to 1 GB + in 64 bit RAR. 32 bit RAR version can use up to 256 MB + dictionary when creating an archive. Both 32 bit and 64 bit + versions can unpack archives with any dictionary size, + including 1 GB; + + b) default dictionary size for RAR 5.0 is 32 MB, typically resulting + in higher compression ratio and lower speed than RAR 4.x 4 MB. + You can use -md switch to change this value; + + c) -md switch syntax is modified to support larger dictionary + sizes. Append 'k', 'm' and 'g' modifiers to specify the size + in kilo-, mega- and gigabytes, like -md64m for 64 MB dictionary. + If modifiers are not present, megabytes are assumed, + so -md64m is equal to -md64; + + d) RAR 5.0 format includes Intel IA-32 executable and delta + compression algorithms, but RAR 4.x text, audio, true color + and Itanium algorithms are not supported. These excluded algorithms + are not efficient for modern data types and hardware configurations; + + e) RAR 5.0 decompression can utilize several CPU cores. + Though not to same extent as in compression algorithm, + it improves the decompression speed on large files + with poorly compressible data or when using BLAKE2 checksums. + + 3. Changes in RAR 5.0 archive format: + + a) file times are stored as Coordinated Universal Time (UTC) + instead of former local time, making file exchange among + several time zones more straightforward; + + b) file names and archive comments use UTF-8 encoding. + + 4. RAR 5.0 recovery record is based on Reed-Solomon error correction + codes. If recovery record size is large enough, 5% and more, + the new error correction scheme provides much higher resistance to + multiple damages comparing to RAR 4.x recovery record. + Smaller record, such as 1 - 2%, or less random damage type would + result in less difference between 4.x and 5.0. For single continuous + damage 4.x and 5.0 efficiency is about the same. + + Additionally to usual data erasures, the new recovery record + is able to detect deletions and insertions of much larger size + than in previous RAR versions. Maximum insertion size is several + megabytes. Maximum deletion size depends on the damage type + and in some cases can be as large as the recovery record size. + + Still, the best recovery performance and efficiency is achieved + if no deletions and insertions are present, so all data including + damaged sectors preserve their original positions. Thus, if you use + some special software to copy an archive from damaged media, + it is better to choose the mode, when damaged sectors are filled by + zeroes or any other data instead of cutting them out completely + from resulting file. + + RAR 5.0 recovery record is more resistant to damage of recovery record + itself and can utilize a partially corrupt recovery record data. + Note, though, that "Repair" command does not fix broken blocks + in recovery record. Only file data are corrected. After successful + archive repair, you may need to create a new recovery record + for saved files. + + New recovery record is not based on 512 byte sectors anymore + and incorporates more complicated data structures. So it is impossible + to specify its size in sectors. For RAR 5.0 archives the parameter of + -rr[N] switch and rr[N] command is always treated as a percent of + archive size regardless of presence of % character. Typically N% + recovery record can repair up to N% of continuously damaged data + and increases the archive size by only slightly more than N%. + Ability to fix multiple damages is proportional to N. + + We used "Screaming Fast Galois Field Arithmetic Using Intel + SIMD Instructions" paper by James S. Plank, Kevin M. Greenan + and Ethan L. Miller to improve Reed-Solomon coding performance. + Also we are grateful to Artem Drobanov and Bulat Ziganshin + for samples and ideas allowed to make Reed-Solomon coding + more efficient. + + 5. "Test" command verifies validity of RAR 5.0 recovery record. + Recovery record is tested after processing all archived files. + + If corrupt archive contains the recovery record, it might be possible + to repair it even if recovery record validity test is failed. + "Repair" command attempts to utilize even a partially damaged + recovery record. So treat the negative recovery record test result + as a reason to re-create the archive if original files are still + available, but not as a reason to avoid "Repair" command. + + 6. Changes in RAR 5.0 encryption algorithm: + + a) encryption algorithm is changed from AES-128 to AES-256 in CBC mode. + Key derivation function is based on PBKDF2 using HMAC-SHA256; + + b) special password verification value allows to detect most of + wrong passwords without necessity to unpack the entire file; + + c) if archive headers are not encrypted ("Encrypt file names" option + is off), file checksums for encrypted RAR 5.0 files are modified + using a special password dependent algorithm, to make impossible + guessing file contents based on checksums. Do not expect such + encrypted file checksums to match usual CRC32 and BLAKE2 values. + + 7. Switch -htb allows to utilize 256 bit length BLAKE2sp hash + ( https://blake2.net ) instead of 32 bit CRC32 as a file checksum. + + While producing slightly larger archives, BLAKE2 can be used + for file contents identification. If two files have the same + BLAKE2 value, it practically guarantees that file contents + is the same. BLAKE2 error detection property is also stronger + than in much shorter CRC32. + + 8. Features removed: + + a) authenticity verification feature did not provide the required + level of reliability and was removed; + + b) switch -en (do not add "end of archive" block) is not supported + by RAR 5.0 archives, which always have the end of archive block. + This block helps RAR to safely skip external data like + digital signatures appended to archive; + + c) old style extension based arcname.rNN volume names are not + supported by RAR 5.0 archives, which use only arcname.partN.rar + volume names; + + d) file comments are not supported anymore both in RAR 4.x + and RAR 5.0 archives. Console RAR 'cf' command is removed. + It does not affect the archive comment support, which is present + in both versions of archive format and is not planned for removal. + + 9. Switch -oh stores hard links as link instead of file. It is available + only for RAR 5.0 archive format. + + 10. Changes in recovery volume processing in RAR 5.0 archive format: + + a) maximum number of RAR+REV volumes in RAR 5.0 format is 65535 + instead of 255; + + b) recovery volume operations are faster than in RAR 4.x; + + c) additionally to recovery data, RAR 5.0 REV files also store + service information such as checksums of protected RAR files. + So they are slightly larger than RAR volumes which they protect. + If you plan to copy individual RAR and REV files to some removable + media, you need to take it into account and specify RAR volume + size by a few kilobytes smaller than media size. + + 11. Command line RAR returns the exit code 11 if it can detect that + user entered a wrong password. This code can be returned only + for RAR 5.0 archives. It is impossible to distinguish a wrong + password and data damage for RAR 4.x archives. + + 12. 'v' and 'l' commands display archived file names in the end of line, + not in that beginning as before. Also some fields previously + available in 'l' and 'v' output are now shown only by 'lt' and 'vt'. + + 'vt' and 'lt' commands provide the detailed multiline information + for every archived file. + + 'vta' and 'lta' also include service headers into list. + + 13. UTF-16 little endian encoding is used in RAR log file rar.log, + so Unicode file names are stored in the log correctly. + + You can use -scg switch to change the default log file + encoding, such as -scag for native single byte encoding. + + 14. Command line 'r' (repair) command can include an optional destpath\ + parameter defining the destination folder for repaired archive: + + rar r archive.rar destpath\ + + + Version 4.20 + + 1. Changes in RAR compression: + + a) Multithreaded RAR compression is enabled by default. + You can disable it with -mt1 switch. + + Comparing to RAR 4.11, some speed gain is possible + in single processor mode as well. + + Speed gain depends on data type and average file size. + Several cores are utilized more efficiently when compressing + large files. + + b) we had to increase memory requirements to achieve higher + compression speed. General RAR compression algorithm allocates + about 120 MB comparing to 40 MB in RAR 4.11; + + c) RAR text compression algorithm cannot utilize several CPU cores + efficiently, so its performance in multiprocessor environment + is much lower than for general algorithm. Also its decompression + speed is much lower than in general algorithm regardless of + CPU number. So we decided to disable the text algorithm by default. + + If you need maximum possible compression ratio for plain text data + regardless of speed, you can enable the text compression + with -mct switch. + + 2. RAR general decompression algorithm speed is slightly improved, + though not to same extent as RAR compression. RAR decompression + is not able to use several processor cores, so its performance + does not depend on a number of cores. + + + Version 4.11 + + 1. Bugs fixed: + + a) if -x*\somedir\* exclusion mask was specified when archiving + and if name of current directory contained 'somedir', RAR could + exclude all files and stop creating an archive. + + + Version 4.10 + + 1. Modifications of switch -ag behavior: + + a) -ag can be used with all RAR commands, not just with archiving only; + + b) 'N' format character behavior differs in archiving and non-archiving + operations. When archiving, it is incremented until the first unused + name is found. In non-archiving operations like extracting it selects + the existing archive preceding the first unused name; + + c) 'I' format character allows to specify minutes regardless of presence + and position of 'H' (hours) in format string. It can be used + instead of 'M' (minutes), when you wish to place minutes before + hours or do not need hours at all. + + 2. New -log[fmt][=name] switch allows to write archive and file names + to log file in archiving, extracting, deleting and listing commands. + This switch is especially useful, when you need to further process + an archive created with -ag or -v switches, because -log provides + the archive name generated by RAR. + + 3. New -@[+] switch allows to process all parameters starting from + '@' character either as file names (-@) or as file lists (-@+). + + 4. Volume size in -v switch can be specified as a decimal fraction. + Dot (.) is used as the decimal mark. For example, -v1.5g means + 1.5 gigabytes. + + + Version 4.01 + + 1. Bugs fixed: + + a) "Repair" command failed to properly reconstruct structure + of RAR archives, which contained at least one file with packed + size exceeding 4 GB. + + This bug did not affect the recovery record based repair. + It happened only if recovery record was not found and RAR + performed reconstruction of archive structure; + + b) RAR could crash when creating a new archive with -agNNNN switch + if archive number in generated name was very large, + like a thousand or more. + + + Version 4.00 + + 1. RAR decompression speed is improved. Depending on data type, + decompression can be up to 30% faster than in previous versions. + + Both the general RAR algorithm and most of special RAR multimedia + methods benefit from this improvement. The only module of RAR + algorithm, which is not affected, is "Text compression" method. + + 2. Changes in -x switch syntax. Now you can specify a wildcard + exclusion mask for folders. Such mask must have the trailing '\' + character, like -x*tmp*\ or -x*\temp\ + + 3. Recovery volume processing involves less disk seek operations + resulting in higher performance. + + 4. New error code 10 ("no files") is added to list of error codes. + This new code can be returned by archive, extract, delete + and repair commands. It means that RAR did not find any files + matched the specified file or archive mask. diff --git a/regression.sh b/regression.sh new file mode 100644 index 000000000..51bf92c86 --- /dev/null +++ b/regression.sh @@ -0,0 +1,27 @@ +set -e + +# inconsistent data +python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_sage_minibatch_on_dblpnew.yaml federate.total_round_num 20 +python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gcn_fullbatch_on_dblpnew.yaml federate.total_round_num 20 + +# standalone +python federatedscope/main.py --cfg federatedscope/example_configs/single_process.yaml +# standalone_local +python federatedscope/main.py --cfg federatedscope/gfl/baseline/local_gnn_node_fullbatch_citation.yaml + +# fedavg link_level KG hits@5 evaluation +python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gcn_minibatch_on_kg.yaml + +# fedavg graph_level hiv +python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gcn_minibatch_on_hiv.yaml + +# server in distribute +python federatedscope/main.py --cfg federatedscope/example_configs/distributed_server.yaml +# client in distribute +python federatedscope/main.py --cfg federatedscope/example_configs/distributed_client.yaml + +# HPO +python federatedscope/hpo.py --cfg federatedscope/gfl/baseline/fedavg_gnn_node_fullbatch_citation.yaml device 2 data.type cora data.splitter louvain model.type gcn model.out_channels 7 model.hidden 64 seed 123 + +# femnist & CNN +python federatedscope/main.py --cfg federatedscope/cv/baseline/fedavg_convnet2_on_femnist.yaml >> fedavg_convnet2_on_femnist.out 2>>fedavg_convnet2_on_femnist.err \ No newline at end of file diff --git a/run_reorganized_standalone.sh b/run_reorganized_standalone.sh new file mode 100755 index 000000000..595fdc43c --- /dev/null +++ b/run_reorganized_standalone.sh @@ -0,0 +1,18 @@ +set -e + +cudaid=$1 + +if [ ! -d "out_reorganize" ];then + mkdir out_reorganize +fi + +echo "Starts..." + +lr=0.01 + +python federatedscope/main.py --cfg federatedscope/example_configs/single_process.yaml device ${cudaid} data.type toy data.splitter ooxx \ + optimizer.lr ${lr} model.type lr federate.mode standalone trainer.type general federate.total_round_num 50 \ + >>out_reorganize/lr.out \ + 2>>out_reorganize/lr.err + +echo "Ends." diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10.yaml new file mode 100644 index 000000000..d2b15a6d0 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10.yaml @@ -0,0 +1,68 @@ +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + # save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ft_15_conv_grid.pth +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 2333 +expname: bench_grid_bb_savemodel diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_avg.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_avg.yaml new file mode 100644 index 000000000..1faca6225 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_avg.yaml @@ -0,0 +1,69 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False + # save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ftsetting_15.pth +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_hk_bb_avg diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..dfee557ab --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,68 @@ +use_gpu: True +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + # save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ftsetting_15.pth +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] + consistent_label_distribution: True +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 5 +expname: bench_sig_iid diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_large.yaml new file mode 100644 index 000000000..2eb4e6855 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_large.yaml @@ -0,0 +1,68 @@ +use_gpu: True +device: 6 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + # save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ftsetting_15.pth +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_hk_bb_new_large diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_large_avg.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_large_avg.yaml new file mode 100644 index 000000000..301cc4115 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_large_avg.yaml @@ -0,0 +1,69 @@ +use_gpu: True +device: 2 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False + # save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ftsetting_15.pth +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_hk_bb_large_avg diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_small.yaml new file mode 100644 index 000000000..ad73d4ad7 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_small.yaml @@ -0,0 +1,68 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + # save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ftsetting_15.pth +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_hk_bb_new_small diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_small_avg.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_small_avg.yaml new file mode 100644 index 000000000..e367d66ba --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_cifar10_small_avg.yaml @@ -0,0 +1,69 @@ +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False + # save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ftsetting_15.pth +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_hk_bb_small_avg diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_femnist.yaml new file mode 100644 index 000000000..67dd8c97d --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_convnet2_on_femnist.yaml @@ -0,0 +1,61 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + total_round_num: 1000 + sample_client_rate: 0.1 + client_num: 200 + batch_or_epoch: epoch +data: + seed: 12345 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: femnist + # form: dataloader + splits: [0.6,0.2,0.2] + batch_size: 32 + subsample: 0.05 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + transform: [['ToTensor']] +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + # dropout: 0.5 +optimizer: + lr: 0.1 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + freq: 10 + # split: ['test', 'val'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'val', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + attack_method: 'backdoor' + attacker_id: 200 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 1 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + mean: [0.1307] + std: [0.3081] +expname: bench_sig_nodrop + diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..24e7fbc46 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10.yaml @@ -0,0 +1,68 @@ +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ft_15_res18_grid.pth +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +use_gpu: True +device: 6 +early_stop: + patience: 0 +seed: 2333 +expname: bench_grid_bb_savemodel diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_BN_ablation.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_BN_ablation.yaml new file mode 100644 index 000000000..2b96d33a5 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_BN_ablation.yaml @@ -0,0 +1,69 @@ +# this config is used as the FedAvg with same config with FedBN + +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + # save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ftsetting_15.pth +data: + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_BN_ablation_hk_bb diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_avg.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_avg.yaml new file mode 100644 index 000000000..875179db9 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_avg.yaml @@ -0,0 +1,68 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_grid_bb_avg diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_defense.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_defense.yaml new file mode 100644 index 000000000..bcb491f8a --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_defense.yaml @@ -0,0 +1,71 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + # save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ftsetting_15.pth +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] + norm_clip: True + norm_clip_value: 5.0 + dp_noise: 0.0001 +expname: bench_defense_hk_noise_00001 diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..9b3ef823e --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,68 @@ +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + # save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ftsetting_15.pth +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] + consistent_label_distribution: True +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_sig_iid diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_krum.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_krum.yaml new file mode 100644 index 000000000..ea5dc4e1c --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_krum.yaml @@ -0,0 +1,72 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + # save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ftsetting_15.pth +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] + norm_clip: False + # norm_clip_value: 1.0 + # dp_noise: 0.0005 + multi_krum: True +expname: bench_defense_hk_multi_krum diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_large.yaml new file mode 100644 index 000000000..40f7cc139 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_large.yaml @@ -0,0 +1,67 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_sig_bb_L diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_large_avg.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_large_avg.yaml new file mode 100644 index 000000000..935848928 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_large_avg.yaml @@ -0,0 +1,68 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_grid_bb_large_avg diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_small.yaml new file mode 100644 index 000000000..874c4f741 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_small.yaml @@ -0,0 +1,68 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + # save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ftsetting_15.pth +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_edge_bb_s diff --git a/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_small_avg.yaml b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_small_avg.yaml new file mode 100644 index 000000000..1b8604458 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/backdoor_fedavg_resnet18_on_cifar10_small_avg.yaml @@ -0,0 +1,68 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + consistent_label_distribution: True +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_grid_bb_small_avg diff --git a/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10.yaml new file mode 100644 index 000000000..b9a1b935f --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10.yaml @@ -0,0 +1,69 @@ +use_gpu: True +device: 6 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] + # do_sta: true + # plot_boxplot: true +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedavg diff --git a/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10_fedrep_baseline.yaml b/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10_fedrep_baseline.yaml new file mode 100644 index 000000000..73b83e459 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10_fedrep_baseline.yaml @@ -0,0 +1,67 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.5 +optimizer: + lr: 0.1 + weight_decay: 5e-4 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedavg_fedrep_baseline diff --git a/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..5d1dd6012 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,69 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] + # do_sta: true + # plot_boxplot: true +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedavg_iid diff --git a/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10_rep.yaml b/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10_rep.yaml new file mode 100644 index 000000000..3007303fd --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_cifar10_rep.yaml @@ -0,0 +1,67 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 10 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedavg_rep_b10 diff --git a/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_femnist.yaml new file mode 100644 index 000000000..2aa2c22eb --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/fedavg_convnet2_on_femnist.yaml @@ -0,0 +1,60 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + total_round_num: 1000 + sample_client_rate: 0.1 + client_num: 200 + batch_or_epoch: epoch +data: + seed: 12345 + dataset: ['train', 'val', 'test'] + root: data/ + type: femnist + # form: dataloader + splits: [0.6,0.2,0.2] + batch_size: 32 + subsample: 0.05 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + # transform: [['ToTensor']] + # do_sta: true + # plot_boxplot: true +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + # dropout: 0.5 +optimizer: + lr: 0.1 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + freq: 10 + split: ['test', 'val'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + attack_method: '' + attacker_id: 1 + label_type: 'dirty' + trigger_type: gridTrigger + target_label_ind: 1 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + mean: [0.1307] + std: [0.3081] +expname: bench_fedavg_nodrop \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/fedavg_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/fedavg_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..3c4bf8f08 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/fedavg_resnet18_on_cifar10.yaml @@ -0,0 +1,67 @@ +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedavg diff --git a/scripts/backdoor_scripts/attack_config/fedavg_resnet18_on_cifar10_bnablation.yaml b/scripts/backdoor_scripts/attack_config/fedavg_resnet18_on_cifar10_bnablation.yaml new file mode 100644 index 000000000..8a933e913 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/fedavg_resnet18_on_cifar10_bnablation.yaml @@ -0,0 +1,66 @@ +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedavg_bnablation diff --git a/scripts/backdoor_scripts/attack_config/fedavg_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/fedavg_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..3abddaea1 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/fedavg_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,67 @@ +use_gpu: True +device: 2 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedavg_iid diff --git a/scripts/backdoor_scripts/attack_config/fedavg_resnet18gn_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/fedavg_resnet18gn_on_cifar10.yaml new file mode 100644 index 000000000..f747e601a --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/fedavg_resnet18gn_on_cifar10.yaml @@ -0,0 +1,68 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 64 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18gn + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_gn_new_gn64_size64 + diff --git a/scripts/backdoor_scripts/attack_config/fedavg_resnet18in_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/fedavg_resnet18in_on_cifar10.yaml new file mode 100644 index 000000000..5d1b6175f --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/fedavg_resnet18in_on_cifar10.yaml @@ -0,0 +1,68 @@ +use_gpu: True +device: 2 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18in + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_in_new + diff --git a/scripts/backdoor_scripts/attack_config/fedavg_resnet18ln_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/fedavg_resnet18ln_on_cifar10.yaml new file mode 100644 index 000000000..6b037b32f --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/fedavg_resnet18ln_on_cifar10.yaml @@ -0,0 +1,68 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18ln + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ln_new + diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10.yaml new file mode 100644 index 000000000..7e36ef30d --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10.yaml @@ -0,0 +1,73 @@ +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + client_num: 100 + save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ft_15_conv_grid_ditto.pth +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 16 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 2333 +expname: bench_ditto_grid_bb_savemodel diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_abl.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_abl.yaml new file mode 100644 index 000000000..8892980ad --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_abl.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 2 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.01 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ditto_hk_001 diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_avg.yaml new file mode 100644 index 000000000..ad436ce48 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_avg.yaml @@ -0,0 +1,78 @@ +use_gpu: True +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 2 +early_stop: + patience: 0 +seed: 618 +expname: bench_ditto_hk_avg diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..3c491c9a3 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,76 @@ +use_gpu: True +federate: + mode: standalone + method: Ditto + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test','poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.05 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + # split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 1 +early_stop: + patience: 0 +seed: 618 +expname: bench_ditto_sig_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_large.yaml new file mode 100644 index 000000000..4777829ce --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_large.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ditto_hk_large diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_large_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_large_avg.yaml new file mode 100644 index 000000000..4487d0c42 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_large_avg.yaml @@ -0,0 +1,78 @@ +use_gpu: True +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 5 +early_stop: + patience: 0 +seed: 2333 +expname: bench_ditto_hk_large_avg diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_small.yaml new file mode 100644 index 000000000..7551d2891 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_small.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ditto_hk_small diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_small_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_small_avg.yaml new file mode 100644 index 000000000..1d2386b80 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_cifar10_small_avg.yaml @@ -0,0 +1,78 @@ +use_gpu: True +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 0 +early_stop: + patience: 0 +seed: 2333 +expname: bench_ditto_hk_small_avg diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_femnist.yaml new file mode 100644 index 000000000..fc30d302a --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_convnet2_on_femnist.yaml @@ -0,0 +1,75 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: Ditto + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 200 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 12345 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: femnist + splits: [0.6,0.2,0.2] + batch_size: 32 + subsample: 0.05 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + transform: [['ToTensor']] +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + # dropout: 0.5 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','val','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 1 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 1 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.1307] + std: [0.3081] +expname: bencn_ditto_edge \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..fe0806dea --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10.yaml @@ -0,0 +1,79 @@ +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + save_to: /mnt/zeyuqin/backdoor_surv/save/fl/ft_15_res18_grid_ditto.pth +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 2333 +# expname: bench_ditto_edge_bb +expname: bench_ditto_grid_bb_savemodel + diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_abl.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_abl.yaml new file mode 100644 index 000000000..6df059cc2 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_abl.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 2 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.01 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ditto_hk_001 diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..4a58c90da --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,76 @@ +use_gpu: True +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 7 +expname: bench_ditto_edge_bb_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_large.yaml new file mode 100644 index 000000000..271b4597c --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_large.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ditto_sig_bb_large diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_small.yaml new file mode 100644 index 000000000..73b54a02e --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ditto_resnet18_on_cifar10_small.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ditto_sig_bb_small diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10.yaml new file mode 100644 index 000000000..fbc516728 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_sig_bb diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_avg.yaml new file mode 100644 index 000000000..77c166fb3 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_avg.yaml @@ -0,0 +1,78 @@ +use_gpu: True +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 0 +early_stop: + patience: 0 +seed: 618 +expname: bench_fedbn_hk_avg diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..334207c8c --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,77 @@ +use_gpu: True +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 2 +early_stop: + patience: 0 +seed: 618 +expname: bench_fedbn_sig_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_large.yaml new file mode 100644 index 000000000..874d7195f --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_large.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_hk_bb_large diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_large_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_large_avg.yaml new file mode 100644 index 000000000..cec3c56b8 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_large_avg.yaml @@ -0,0 +1,78 @@ +use_gpu: True +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 2 +early_stop: + patience: 0 +seed: 618 +expname: bench_fedbn_hk_large_avg diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_para.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_para.yaml new file mode 100644 index 000000000..233ca7b6b --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_para.yaml @@ -0,0 +1,79 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn1.weight + - bn1.bias + - bn2.weight + - bn2.bias + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_para_hk diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_small.yaml new file mode 100644 index 000000000..b626052c6 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_small.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_hk_bb_small diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_small_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_small_avg.yaml new file mode 100644 index 000000000..4140d0f9f --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_small_avg.yaml @@ -0,0 +1,78 @@ +use_gpu: True +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 5 +early_stop: + patience: 0 +seed: 618 +expname: bench_fedbn_hk_small_avg diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_sta.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_sta.yaml new file mode 100644 index 000000000..ec4b8fb44 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_cifar10_sta.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 6 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - running_mean + - running_var + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_sta_hk diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_femnist.yaml new file mode 100644 index 000000000..9e9140670 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_convnet2_on_femnist.yaml @@ -0,0 +1,70 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + total_round_num: 1000 + sample_client_rate: 0.1 + client_num: 200 + batch_or_epoch: epoch +data: + seed: 12345 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: femnist + # form: dataloader + splits: [0.6,0.2,0.2] + batch_size: 32 + subsample: 0.05 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + transform: [['ToTensor']] +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + # dropout: 0.5 +optimizer: + lr: 0.01 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + freq: 10 + split: ['test', 'val', 'poison'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + attack_method: 'backdoor' + attacker_id: 1 + label_type: 'dirty' + trigger_type: sigTrigger + target_label_ind: 1 + edge_num: 500 + poison_ratio: 0.5 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + mean: [0.1307] + std: [0.3081] +expname: bench_fedbn_sig_nodrop \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..fbe04bc24 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_sig_bb diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..1b36121da --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 1234 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_edge_bb_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_large.yaml new file mode 100644 index 000000000..b64d77bcf --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_large.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_edge_bb_L diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_para.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_para.yaml new file mode 100644 index 000000000..ebd906924 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_para.yaml @@ -0,0 +1,79 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn1.weight + - bn1.bias + - bn2.weight + - bn2.bias + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_para_hk diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_small.yaml new file mode 100644 index 000000000..9000c5c48 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_small.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_sig_bb_small diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_sta.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_sta.yaml new file mode 100644 index 000000000..1689333df --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedbn_resnet18_on_cifar10_sta.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - running_mean + - running_var + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_sta_hk diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10.yaml new file mode 100644 index 000000000..2ecad2c51 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10.yaml @@ -0,0 +1,78 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: FedEM + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + model_num_per_trainer: 3 + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.05 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedem_sig \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_avg.yaml new file mode 100644 index 000000000..70fff2470 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_avg.yaml @@ -0,0 +1,79 @@ +use_gpu: True +federate: + mode: standalone + method: FedEM + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + model_num_per_trainer: 3 + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.05 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 5 +early_stop: + patience: 0 +seed: 2333 +expname: bench_fedem_hk_avg \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..fb5beeed8 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,77 @@ +use_gpu: True +federate: + mode: standalone + method: FedEM + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + model_num_per_trainer: 3 + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + # split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 6 +early_stop: + patience: 0 +seed: 618 +expname: bench_fedem_sig_iid \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_large.yaml new file mode 100644 index 000000000..2fb3f12e5 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_large.yaml @@ -0,0 +1,78 @@ +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: FedEM + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + model_num_per_trainer: 3 + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.05 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedem_hk_large \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_large_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_large_avg.yaml new file mode 100644 index 000000000..cf0ae88f1 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_large_avg.yaml @@ -0,0 +1,79 @@ +use_gpu: True +federate: + mode: standalone + method: FedEM + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + model_num_per_trainer: 3 + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.05 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 4 +early_stop: + patience: 0 +seed: 2333 +expname: bench_fedem_hk_large_avg \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_small.yaml new file mode 100644 index 000000000..8f08e8d16 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_small.yaml @@ -0,0 +1,78 @@ +use_gpu: True +device: 2 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: FedEM + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + model_num_per_trainer: 3 + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.05 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedem_hk_small \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_small_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_small_avg.yaml new file mode 100644 index 000000000..8c56a0a5c --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_cifar10_small_avg.yaml @@ -0,0 +1,79 @@ +use_gpu: True +federate: + mode: standalone + method: FedEM + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + model_num_per_trainer: 3 + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.05 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 6 +early_stop: + patience: 0 +seed: 2333 +expname: bench_fedem_hk_small_avg \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_femnist.yaml new file mode 100644 index 000000000..29ae1885a --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_convnet2_on_femnist.yaml @@ -0,0 +1,70 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 12345 +federate: + mode: standalone + method: FedEM + local_update_steps: 2 + total_round_num: 1000 + sample_client_rate: 0.1 + client_num: 200 + batch_or_epoch: epoch +data: + seed: 12345 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: femnist + # form: dataloader + splits: [0.6,0.2,0.2] + batch_size: 32 + subsample: 0.05 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + transform: [['ToTensor']] +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + # dropout: 0.5 + model_num_per_trainer: 3 +optimizer: + lr: 0.05 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + freq: 10 + split: ['test', 'val', 'poison'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + attack_method: 'backdoor' + attacker_id: 1 + label_type: 'dirty' + trigger_type: sigTrigger + target_label_ind: 1 + edge_num: 500 + poison_ratio: 0.5 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + mean: [0.1307] + std: [0.3081] +expname: bench_fedem_sig \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_fedbn_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_fedbn_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..535d0862a --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_fedbn_resnet18_on_cifar10.yaml @@ -0,0 +1,80 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: FedEM + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + # local_param: [] + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + model_num_per_trainer: 3 + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: True + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedem_fedbn_hk \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..04ff1fb8b --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10.yaml @@ -0,0 +1,82 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: FedEM + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 900 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + save_to: /mnt/zeyuqin/FederatedScope/exp/FedEM_resnet18_on_CIFAR10@torchvision_lr0.5_lepoch1/model_hk.pth +personalization: + K: 5 + beta: 1.0 + local_param: [] + # local_param: + # - bn + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + model_num_per_trainer: 3 + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 500 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedem_hk_tsne \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..7c2c108cb --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,81 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: FedEM + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + # local_param: + # - bn + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + model_num_per_trainer: 3 + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedem_hk_bb_iid \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10_large.yaml new file mode 100644 index 000000000..57ecb736c --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10_large.yaml @@ -0,0 +1,81 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: FedEM + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + # local_param: + # - bn + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + model_num_per_trainer: 3 + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedem_sig_bb_large \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10_small.yaml new file mode 100644 index 000000000..73faeeaf9 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedem_resnet18_on_cifar10_small.yaml @@ -0,0 +1,81 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: FedEM + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + # local_param: + # - bn + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + model_num_per_trainer: 3 + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedem_sig_bb_small \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10.yaml new file mode 100644 index 000000000..7d96efbe0 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10.yaml @@ -0,0 +1,83 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - fc2 + # for convnet2: lc2, for resnet: linear + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + epoch_feature: 1 + epoch_linear: 1 + lr_feature: 0.1 + lr_linear: 0.005 + weight_decay: 0.0 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 10 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedrep_edge \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_avg.yaml new file mode 100644 index 000000000..ac3d26f44 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_avg.yaml @@ -0,0 +1,84 @@ +use_gpu: True +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: + - fc2 + # for convnet2: lc2, for resnet: linear + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + epoch_feature: 1 + epoch_linear: 1 + lr_feature: 0.1 + lr_linear: 0.005 + weight_decay: 0.0 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 10 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 2 +early_stop: + patience: 0 +seed: 2333 +expname: bench_fedrep_hk_avg \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..b2607349a --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,83 @@ +use_gpu: True +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - fc2 + # for convnet2: lc2, for resnet: linear + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + epoch_feature: 1 + epoch_linear: 1 + lr_feature: 0.1 + lr_linear: 0.005 + weight_decay: 0.0 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 10 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 1 +early_stop: + patience: 0 +seed: 618 +expname: bench_fedrep_sig_iid \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_large.yaml new file mode 100644 index 000000000..74fa302cf --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_large.yaml @@ -0,0 +1,83 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - fc2 + # for convnet2: lc2, for resnet: linear + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + epoch_feature: 1 + epoch_linear: 1 + lr_feature: 0.1 + lr_linear: 0.005 + weight_decay: 0.0 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 10 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedrep_hk_large \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_large_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_large_avg.yaml new file mode 100644 index 000000000..f09e29ef3 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_large_avg.yaml @@ -0,0 +1,84 @@ +use_gpu: True +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: + - fc2 + # for convnet2: lc2, for resnet: linear + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + epoch_feature: 1 + epoch_linear: 1 + lr_feature: 0.1 + lr_linear: 0.005 + weight_decay: 0.0 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 10 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 5 +early_stop: + patience: 0 +seed: 2333 +expname: bench_fedrep_hk_large_avg \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_small.yaml new file mode 100644 index 000000000..7bf7290da --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_small.yaml @@ -0,0 +1,83 @@ +use_gpu: True +device: 2 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - fc2 + # for convnet2: lc2, for resnet: linear + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + epoch_feature: 1 + epoch_linear: 1 + lr_feature: 0.1 + lr_linear: 0.005 + weight_decay: 0.0 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 10 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedrep_hk_small \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_small_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_small_avg.yaml new file mode 100644 index 000000000..f023fa661 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_cifar10_small_avg.yaml @@ -0,0 +1,84 @@ +use_gpu: True +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: + - fc2 + # for convnet2: lc2, for resnet: linear + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + epoch_feature: 1 + epoch_linear: 1 + lr_feature: 0.1 + lr_linear: 0.005 + weight_decay: 0.0 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 10 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 2 +early_stop: + patience: 0 +seed: 2333 +expname: bench_fedrep_hk_small_avg \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_femnist.yaml new file mode 100644 index 000000000..9abd564de --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_convnet2_on_femnist.yaml @@ -0,0 +1,72 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + total_round_num: 1000 + sample_client_rate: 0.1 + client_num: 200 + batch_or_epoch: epoch +data: + seed: 12345 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: femnist + # form: dataloader + splits: [0.6,0.2,0.2] + batch_size: 10 + subsample: 0.05 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + transform: [['ToTensor']] +personalization: + K: 5 + beta: 1.0 + local_param: + - fc2 + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + epoch_feature: 2 + epoch_linear: 1 + lr_feature: 0.1 + lr_linear: 0.1 + share_non_trainable_para: false +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + # dropout: 0.5 +optimizer: + lr: 0.1 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + freq: 10 + split: ['test', 'val', 'poison'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + attack_method: 'backdoor' + attacker_id: 1 + label_type: 'dirty' + trigger_type: edge + target_label_ind: 1 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + mean: [0.1307] + std: [0.3081] +expname: bench_fedrep_edge \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..d8f4a4172 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10.yaml @@ -0,0 +1,83 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + # save_to: /mnt/zeyuqin/FederatedScope/exp/fedrep_resnet18_on_CIFAR10@torchvision_lr0.1_lepoch2/model_sig.pth +personalization: + K: 5 + beta: 1.0 + local_param: + - linear + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + lr_feature: 0.1 + lr_linear: 0.005 + epoch_feature: 1 + epoch_linear: 1 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 5 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedrep_goldfromfe_sig diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..e286c35a7 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,82 @@ +use_gpu: True +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - linear + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + lr_feature: 0.1 + lr_linear: 0.005 + epoch_feature: 1 + epoch_linear: 3 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 3 +early_stop: + patience: 0 +seed: 2333 +expname: bench_fedrep_edge_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_large.yaml new file mode 100644 index 000000000..914c42450 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_large.yaml @@ -0,0 +1,82 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - linear + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + lr_feature: 0.1 + lr_linear: 0.005 + epoch_feature: 1 + epoch_linear: 1 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedrep_goldfromfe_edge_large diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_large_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_large_avg.yaml new file mode 100644 index 000000000..1c9b8bff6 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_large_avg.yaml @@ -0,0 +1,83 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: + - linear + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + lr_feature: 0.1 + lr_linear: 0.005 + epoch_feature: 1 + epoch_linear: 1 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedrep_hk_large_avg diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_small.yaml new file mode 100644 index 000000000..df89679f7 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_small.yaml @@ -0,0 +1,82 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - linear + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + lr_feature: 0.1 + lr_linear: 0.005 + epoch_feature: 1 + epoch_linear: 1 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedrep_goldfromfe_sig_small diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_small_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_small_avg.yaml new file mode 100644 index 000000000..3d3678270 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_small_avg.yaml @@ -0,0 +1,83 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 5 + beta: 1.0 + local_param: + - linear + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + lr_feature: 0.1 + lr_linear: 0.005 + epoch_feature: 1 + epoch_linear: 1 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedrep_hk_small_avg diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_tsne.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_tsne.yaml new file mode 100644 index 000000000..3a97053eb --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_fedrep_resnet18_on_cifar10_tsne.yaml @@ -0,0 +1,83 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 1234 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + # save_to: /mnt/zeyuqin/FederatedScope/exp/FedEM_resnet18_on_CIFAR10@torchvision_lr0.5_lepoch1/model_hk.pth +personalization: + K: 5 + beta: 1.0 + local_param: + - linear + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + lr_feature: 0.1 + lr_linear: 0.005 + epoch_feature: 1 + epoch_linear: 1 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 5 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 10 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedrep_goldfromfe_grid_tsne diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10.yaml new file mode 100644 index 000000000..4eec15aef --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10.yaml @@ -0,0 +1,72 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 5 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft_edge_epoch_5 diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_abl.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_abl.yaml new file mode 100644 index 000000000..a82aa3581 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_abl.yaml @@ -0,0 +1,72 @@ +use_gpu: True +device: 2 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 50 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft_hk_epoch_50 diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_avg.yaml new file mode 100644 index 000000000..a6da05497 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_avg.yaml @@ -0,0 +1,73 @@ +use_gpu: True +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 2 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 100 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 5 +early_stop: + patience: 0 +seed: 618 +expname: bench_ft_hk_avg diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..c5780f6f6 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,73 @@ +use_gpu: True +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 2 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 1 +early_stop: + patience: 0 +seed: 618 +expname: bench_ft_sig_iid + diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_large.yaml new file mode 100644 index 000000000..c2f5fcdf9 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_large.yaml @@ -0,0 +1,72 @@ +use_gpu: True +device: 6 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 2 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft_hk_bb_large diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_large_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_large_avg.yaml new file mode 100644 index 000000000..05f2e3766 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_large_avg.yaml @@ -0,0 +1,73 @@ +use_gpu: True +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 2 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 2 +early_stop: + patience: 0 +seed: 618 +expname: bench_ft_hk_large_avg diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_small.yaml new file mode 100644 index 000000000..a86ba0eb1 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_small.yaml @@ -0,0 +1,72 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 2 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft_hk_bb_small diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_small_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_small_avg.yaml new file mode 100644 index 000000000..8bb5db6b8 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_cifar10_small_avg.yaml @@ -0,0 +1,73 @@ +use_gpu: True +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 2 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 5 +early_stop: + patience: 0 +seed: 618 +expname: bench_ft_hk_small_avg diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_femnist.yaml new file mode 100644 index 000000000..9b0eed827 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_convnet2_on_femnist.yaml @@ -0,0 +1,66 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + total_round_num: 1000 + sample_client_rate: 0.1 + client_num: 200 + batch_or_epoch: epoch +data: + seed: 12345 + dataset: ['train', 'val', 'test','poison'] + root: data/ + type: femnist + # form: dataloader + splits: [0.6,0.2,0.2] + batch_size: 32 + subsample: 0.05 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + transform: [['ToTensor']] +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + # dropout: 0.5 +optimizer: + lr: 0.1 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 3 + type: cvtrainer +eval: + freq: 10 + # split: ['test', 'val'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'val', 'poison'] + # split: ['test','val'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + attack_method: 'backdoor' + attacker_id: 1 + label_type: 'dirty' + trigger_type: edge + target_label_ind: 1 + edge_num: 500 + poison_ratio: 0.5 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + mean: [0.1307] + std: [0.3081] +expname: bench_ft_edge \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..95d84dcbe --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10.yaml @@ -0,0 +1,71 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 1 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft_sig_bb diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_large.yaml new file mode 100644 index 000000000..9a3aeeac2 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_large.yaml @@ -0,0 +1,71 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 1 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft_edge_bb_large diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_small.yaml new file mode 100644 index 000000000..89a51cafd --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_small.yaml @@ -0,0 +1,71 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 1 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft_edge_bb_small diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy.yaml new file mode 100644 index 000000000..037a5b91f --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy.yaml @@ -0,0 +1,71 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 1 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft_sig_bb diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_abl.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_abl.yaml new file mode 100644 index 000000000..81a468f42 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_abl.yaml @@ -0,0 +1,71 @@ +use_gpu: True +device: 6 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 10 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 5 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft_sig_bb_local10 diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_iid.yaml new file mode 100644 index 000000000..cc10964ec --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_iid.yaml @@ -0,0 +1,71 @@ +use_gpu: True +early_stop: + patience: 0 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 1 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 6 +seed: 2333 +expname: bench_ft_sig_bb_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_large.yaml new file mode 100644 index 000000000..72456c1ec --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_large.yaml @@ -0,0 +1,71 @@ +use_gpu: True +device: 6 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 1 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft_sig_bb_large diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_small.yaml new file mode 100644 index 000000000..edaa83b7a --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_ft_resnet18_on_cifar10_zy_small.yaml @@ -0,0 +1,71 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 1 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft_sig_bb_small diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_avg.yaml new file mode 100644 index 000000000..8742b34ea --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_avg.yaml @@ -0,0 +1,78 @@ +use_gpu: True +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 2 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + # split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 5 +early_stop: + patience: 0 +seed: 2333 +expname: bench_pfedme_hk_avg \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..ec69ebcc6 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,76 @@ +use_gpu: True +federate: + mode: standalone + method: pFedMe + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 2 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.8 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + # split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 1 +early_stop: + patience: 0 +seed: 618 +expname: bench_pfedme_sig_iid \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_large.yaml new file mode 100644 index 000000000..1d6bec029 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_large.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 2 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + # split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_pfedme_hk_large \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_large_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_large_avg.yaml new file mode 100644 index 000000000..4e7758c12 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_large_avg.yaml @@ -0,0 +1,78 @@ +use_gpu: True +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 2 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + # split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 2 +early_stop: + patience: 0 +seed: 2333 +expname: bench_pfedme_hk_large_avg \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_new.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_new.yaml new file mode 100644 index 000000000..fe05c8dc8 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_new.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 2 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + # split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_pfedme_sig \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_new_abl.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_new_abl.yaml new file mode 100644 index 000000000..385cceab5 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_new_abl.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: pFedMe + local_update_steps: 6 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 2 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + # split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_pfedme_hk_abl \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_small.yaml new file mode 100644 index 000000000..4da5e3f6c --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_small.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 2 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + # split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_pfedme_hk_small \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_small_avg.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_small_avg.yaml new file mode 100644 index 000000000..6fd267f46 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_cifar10_small_avg.yaml @@ -0,0 +1,78 @@ +use_gpu: True +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 + weight_avg: False +personalization: + K: 2 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test','poison'] + # split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 5 +early_stop: + patience: 0 +seed: 2333 +expname: bench_pfedme_hk_small_avg \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_femnist.yaml new file mode 100644 index 000000000..2683f0497 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_convnet2_on_femnist.yaml @@ -0,0 +1,73 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: pFedMe + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 200 +personalization: + K: 3 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.8 + share_non_trainable_para: false +data: + seed: 12345 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: femnist + splits: [0.6,0.2,0.2] + batch_size: 32 + subsample: 0.05 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + transform: [['ToTensor']] +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + # dropout: 0.5 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test', 'val', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + attack_method: 'backdoor' + attacker_id: 1 + label_type: 'dirty' + trigger_type: edge + target_label_ind: 1 + edge_num: 500 + poison_ratio: 0.5 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + mean: [0.1307] + std: [0.3081] +expname: bench_pme_edge \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..75f579e9b --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 1 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.5 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 5 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.5 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_pfedme_sig_bb \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_abl.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_abl.yaml new file mode 100644 index 000000000..cb9d98f80 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_abl.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 6 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: pFedMe + local_update_steps: 6 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 1 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.5 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: hkTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.5 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_pfedme_hk_abl \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..16df1f432 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 1 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.5 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.5 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_pfedme_edge_bb_iid \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_large.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_large.yaml new file mode 100644 index 000000000..f2a0aab2d --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_large.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 1 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.5 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 45 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.5 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_pfedme_edge_bb_large \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_small.yaml b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_small.yaml new file mode 100644 index 000000000..22001c38e --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_backdoor_pme_resnet18_on_cifar10_small.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 1 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.5 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test', 'poison'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: 'backdoor' + attacker_id: 78 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.5 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_pfedme_grid_bb_small \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_cifar10_dy.yaml b/scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_cifar10_dy.yaml new file mode 100644 index 000000000..56ba86ba4 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_cifar10_dy.yaml @@ -0,0 +1,75 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.5 + share_non_trainable_para: false +data: + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.01 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ditto_dy diff --git a/scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..28aea9ab0 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,76 @@ +use_gpu: True +federate: + mode: standalone + method: Ditto + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.05 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 2 +early_stop: + patience: 0 +seed: 618 +expname: bench_ditto_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_cifar10_new.yaml b/scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_cifar10_new.yaml new file mode 100644 index 000000000..97716b847 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_cifar10_new.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ditto_new diff --git a/scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_femnist.yaml new file mode 100644 index 000000000..1ad747967 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ditto_convnet2_on_femnist.yaml @@ -0,0 +1,74 @@ +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: Ditto + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 200 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 12345 + dataset: ['train', 'val', 'test'] + root: data/ + type: femnist + splits: [0.6,0.2,0.2] + batch_size: 32 + subsample: 0.05 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + # dropout: 0.5 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','val'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 1 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 1 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.1307] + std: [0.3081] +expname: bencn_ditto_new \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_ditto_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_ditto_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..e648e9a57 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ditto_resnet18_on_cifar10.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 6 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ditto_new diff --git a/scripts/backdoor_scripts/attack_config/pfl_ditto_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_ditto_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..a2014fa3d --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ditto_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,77 @@ +use_gpu: True +early_stop: + patience: 0 +federate: + mode: standalone + method: Ditto + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + # dataset: ['train', 'val', 'test', 'poison'] + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + # split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 2 +seed: 618 +expname: bench_ditto_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_ditto_zy_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_ditto_zy_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..e399ddd76 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ditto_zy_resnet18_on_cifar10.yaml @@ -0,0 +1,75 @@ +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: Ditto_zy + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ditto_zy diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedbn_convnet2_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedbn_convnet2_on_cifar10.yaml new file mode 100644 index 000000000..79391cd3b --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedbn_convnet2_on_cifar10.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedbn_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedbn_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..5f6ef215e --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedbn_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,77 @@ +use_gpu: True +early_stop: + patience: 0 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 4 +seed: 618 +expname: bench_fedbn_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedbn_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedbn_convnet2_on_femnist.yaml new file mode 100644 index 000000000..7c3109301 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedbn_convnet2_on_femnist.yaml @@ -0,0 +1,68 @@ +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + total_round_num: 1000 + sample_client_rate: 0.1 + client_num: 200 + batch_or_epoch: epoch +data: + seed: 12345 + dataset: ['train', 'val', 'test'] + root: data/ + type: femnist + # form: dataloader + splits: [0.6,0.2,0.2] + batch_size: 32 + subsample: 0.05 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + # transform: [['ToTensor']] +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + dropout: 0.5 +optimizer: + lr: 0.01 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + freq: 10 + split: ['test', 'val'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + attack_method: '' + attacker_id: 1 + label_type: 'dirty' + trigger_type: gridTrigger + target_label_ind: 1 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + mean: [0.1307] + std: [0.3081] +expname: bench_fedbn_new \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..9ded66df5 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..4096a36a5 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn + - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_iid_lr01 diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10_para.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10_para.yaml new file mode 100644 index 000000000..d6b76e1c6 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10_para.yaml @@ -0,0 +1,78 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - bn1.weight + - bn1.bias + - bn2.weight + - bn2.bias + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_para diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10_sta.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10_sta.yaml new file mode 100644 index 000000000..c2312d662 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedbn_resnet18_on_cifar10_sta.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - running_mean + - running_var + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor']] + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedbn_sta diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedem_convnet2_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedem_convnet2_on_cifar10.yaml new file mode 100644 index 000000000..c5e4ea618 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedem_convnet2_on_cifar10.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: FedEM + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + model_num_per_trainer: 3 + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.05 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedem \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedem_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedem_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..14b0136b2 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedem_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,77 @@ +use_gpu: True +federate: + mode: standalone + method: FedEM + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + model_num_per_trainer: 3 + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 5 +early_stop: + patience: 0 +seed: 618 +expname: bench_fedem_iid \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedem_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedem_convnet2_on_femnist.yaml new file mode 100644 index 000000000..8c03536f4 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedem_convnet2_on_femnist.yaml @@ -0,0 +1,68 @@ +use_gpu: True +device: 6 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: FedEM + local_update_steps: 2 + total_round_num: 1000 + sample_client_rate: 0.1 + client_num: 200 + batch_or_epoch: epoch +data: + seed: 12345 + dataset: ['train', 'val', 'test'] + root: data/ + type: femnist + # form: dataloader + splits: [0.6,0.2,0.2] + batch_size: 32 + subsample: 0.05 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + # transform: [['ToTensor']] +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + # dropout: 0.5 + model_num_per_trainer: 3 +optimizer: + lr: 0.05 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + freq: 10 + split: ['test', 'val'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + attack_method: '' + attacker_id: 1 + label_type: 'dirty' + trigger_type: gridTrigger + target_label_ind: 1 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + mean: [0.1307] + std: [0.3081] +expname: bench_fedem_new \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedem_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedem_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..8ff75032b --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedem_resnet18_on_cifar10.yaml @@ -0,0 +1,77 @@ +use_gpu: True +device: 3 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: FedEM + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + model_num_per_trainer: 3 + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedem \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedem_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedem_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..4175d1754 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedem_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,82 @@ +use_gpu: True +early_stop: + patience: 0 +federate: + mode: standalone + method: FedEM + local_update_steps: 1 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: [] + # local_param: + # - bn + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false +data: + seed: 2333 + # dataset: ['train', 'val', 'test', 'poison'] + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + # transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + model_num_per_trainer: 3 + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + # split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 2 +seed: 618 +expname: bench_fedem_iid \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedrep_convnet2_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedrep_convnet2_on_cifar10.yaml new file mode 100644 index 000000000..14f487f3c --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedrep_convnet2_on_cifar10.yaml @@ -0,0 +1,82 @@ +use_gpu: True +device: 6 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - fc2 + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + epoch_feature: 1 + epoch_linear: 1 + lr_feature: 0.1 + lr_linear: 0.005 + weight_decay: 0.0 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 10 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + # transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fedrep_final_b10 diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedrep_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedrep_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..dfff4700b --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedrep_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,82 @@ +use_gpu: True +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - fc2 + # for convnet2: lc2, for resnet: linear + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + epoch_feature: 1 + epoch_linear: 1 + lr_feature: 0.1 + lr_linear: 0.005 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 10 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + # transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 3 +seed: 618 +early_stop: + patience: 0 +expname: bench_fedrep_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedrep_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedrep_convnet2_on_femnist.yaml new file mode 100644 index 000000000..ad8a4f3dc --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedrep_convnet2_on_femnist.yaml @@ -0,0 +1,72 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + total_round_num: 1000 + sample_client_rate: 0.1 + client_num: 200 + batch_or_epoch: epoch +data: + seed: 12345 + dataset: ['train', 'val', 'test'] + root: data/ + type: femnist + # form: dataloader + splits: [0.6,0.2,0.2] + batch_size: 10 + subsample: 0.05 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + # transform: [['ToTensor']] +personalization: + K: 5 + beta: 1.0 + local_param: + - fc2 + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + epoch_feature: 2 + epoch_linear: 1 + lr_feature: 0.1 + lr_linear: 0.1 + share_non_trainable_para: false +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + # dropout: 0.5 +optimizer: + lr: 0.1 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + freq: 10 + split: ['test', 'val'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + attack_method: '' + attacker_id: 1 + label_type: 'dirty' + trigger_type: gridTrigger + target_label_ind: 1 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + mean: [0.1307] + std: [0.3081] +expname: bench_fedrep_final \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedrep_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedrep_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..2b68f42d4 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedrep_resnet18_on_cifar10.yaml @@ -0,0 +1,81 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - linear + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + lr_feature: 0.1 + lr_linear: 0.1 + epoch_feature: 2 + epoch_linear: 3 +data: + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + # transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: fedrep_f2l3 diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedrep_resnet18_on_cifar10_goldfromfe.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedrep_resnet18_on_cifar10_goldfromfe.yaml new file mode 100644 index 000000000..7bc5de336 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedrep_resnet18_on_cifar10_goldfromfe.yaml @@ -0,0 +1,82 @@ +use_gpu: True +device: 6 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - linear + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + lr_feature: 0.1 + lr_linear: 0.005 + epoch_feature: 1 + epoch_linear: 1 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + # transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: fedrep_goldfromfe diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedrep_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedrep_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..53af72050 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedrep_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,82 @@ +use_gpu: True +early_stop: + patience: 0 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - linear + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + lr_feature: 0.1 + lr_linear: 0.005 + epoch_feature: 1 + epoch_linear: 1 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + # transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 5 +seed: 618 +expname: fedrep_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_fedrep_vgg11_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_fedrep_vgg11_on_cifar10.yaml new file mode 100644 index 000000000..89ac64b48 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_fedrep_vgg11_on_cifar10.yaml @@ -0,0 +1,82 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: fedrep + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 5 + beta: 1.0 + local_param: + - linear + # - norms + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.1 + share_non_trainable_para: false + lr_feature: 0.1 + lr_linear: 0.1 + epoch_feature: 2 + epoch_linear: 3 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + # transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: vgg11 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: fedrep_f2l3_vgg11 diff --git a/scripts/backdoor_scripts/attack_config/pfl_ft_convnet2_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_ft_convnet2_on_cifar10.yaml new file mode 100644 index 000000000..3a831fa92 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ft_convnet2_on_cifar10.yaml @@ -0,0 +1,72 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 2 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft diff --git a/scripts/backdoor_scripts/attack_config/pfl_ft_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_ft_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..14ff323eb --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ft_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,72 @@ +use_gpu: True +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 2 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 2 +early_stop: + patience: 0 +seed: 618 +expname: bench_ft_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_ft_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/pfl_ft_convnet2_on_femnist.yaml new file mode 100644 index 000000000..05490b4b9 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ft_convnet2_on_femnist.yaml @@ -0,0 +1,64 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + total_round_num: 1000 + sample_client_rate: 0.1 + client_num: 200 + batch_or_epoch: epoch +data: + seed: 12345 + dataset: ['train', 'val', 'test'] + root: data/ + type: femnist + # form: dataloader + splits: [0.6,0.2,0.2] + batch_size: 32 + subsample: 0.05 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] + # transform: [['ToTensor']] +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + dropout: 0.5 +optimizer: + lr: 0.1 + weight_decay: 0.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 3 + type: cvtrainer +eval: + freq: 10 + # split: ['test', 'val'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test','val'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + attack_method: '' + attacker_id: 1 + label_type: 'dirty' + trigger_type: gridTrigger + target_label_ind: 1 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + mean: [0.1307] + std: [0.3081] +expname: bench_ft \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_ft_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_ft_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..c9cab99d6 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ft_resnet18_on_cifar10.yaml @@ -0,0 +1,72 @@ +use_gpu: True +device: 4 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 1 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_ft diff --git a/scripts/backdoor_scripts/attack_config/pfl_ft_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_ft_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..dd5350817 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ft_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,72 @@ +use_gpu: True +device: 0 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 2 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'val', 'poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_fl_epo_2_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_ft_resnet18_on_cifar10_zy_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_ft_resnet18_on_cifar10_zy_iid.yaml new file mode 100644 index 000000000..04e3b655c --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_ft_resnet18_on_cifar10_zy_iid.yaml @@ -0,0 +1,71 @@ +use_gpu: True +early_stop: + patience: 0 +federate: + mode: standalone + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + finetune: + before_eval: True + freeze_param: '' + lr: 0.01 + epochs: 1 + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test', 'poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: sigTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 3.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 5 +seed: 618 +expname: bench_ft_iid diff --git a/scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_cifar10.yaml new file mode 100644 index 000000000..fcdd5f6da --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_cifar10.yaml @@ -0,0 +1,75 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 2333 +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 1 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.8 + share_non_trainable_para: false +data: + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 1 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_pfedme_dy \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_cifar10_iid.yaml new file mode 100644 index 000000000..c67eeaaa4 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_cifar10_iid.yaml @@ -0,0 +1,76 @@ +use_gpu: True +federate: + mode: standalone + method: pFedMe + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 2 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.8 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 100 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +device: 2 +early_stop: + patience: 0 +seed: 618 +expname: bench_pfedme_iid \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_cifar10_new.yaml b/scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_cifar10_new.yaml new file mode 100644 index 000000000..91c226b19 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_cifar10_new.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 5 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 2 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: convnet2 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: 5.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_pfedme_new \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_femnist.yaml b/scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_femnist.yaml new file mode 100644 index 000000000..63f955873 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_pme_convnet2_on_femnist.yaml @@ -0,0 +1,74 @@ +use_gpu: True +device: 7 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: pFedMe + local_update_steps: 2 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 200 +personalization: + K: 3 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.1 + regular_weight: 0.8 + share_non_trainable_para: false +data: + seed: 12345 + dataset: ['train', 'val', 'test'] + root: data/ + type: femnist + splits: [0.6,0.2,0.2] + batch_size: 32 + subsample: 0.05 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.1307], 'std': [0.3081]}]] +model: + type: convnet2 + hidden: 2048 + out_channels: 62 + # dropout: 0.5 +optimizer: + lr: 0.1 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test','val'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 1 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 1 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.1307] + std: [0.3081] +expname: bench_pme_new \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_pme_resnet18_on_cifar10.yaml b/scripts/backdoor_scripts/attack_config/pfl_pme_resnet18_on_cifar10.yaml new file mode 100644 index 000000000..b58b45ed3 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_pme_resnet18_on_cifar10.yaml @@ -0,0 +1,76 @@ +use_gpu: True +device: 1 +early_stop: + patience: 0 +seed: 618 +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 1 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.5 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor'], ['Normalize', {'mean': [0.4914, 0.4822, 0.4465], 'std': [0.2023, 0.1994, 0.2010]}]] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 0.5}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 10 + # split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + split: ['test'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: gridTrigger + edge_num: 400 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.1 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +expname: bench_pfedme \ No newline at end of file diff --git a/scripts/backdoor_scripts/attack_config/pfl_pme_resnet18_on_cifar10_iid.yaml b/scripts/backdoor_scripts/attack_config/pfl_pme_resnet18_on_cifar10_iid.yaml new file mode 100644 index 000000000..faa5449b4 --- /dev/null +++ b/scripts/backdoor_scripts/attack_config/pfl_pme_resnet18_on_cifar10_iid.yaml @@ -0,0 +1,77 @@ +use_gpu: True +early_stop: + patience: 0 +federate: + mode: standalone + method: pFedMe + local_update_steps: 3 + batch_or_epoch: epoch + total_round_num: 1000 + sample_client_rate: 0.1 + # unseen_clients_rate: 0.2 + client_num: 100 +personalization: + K: 1 + beta: 1.0 + local_param: [] + local_update_steps: 2 + lr: 0.5 + regular_weight: 0.5 + share_non_trainable_para: false +data: + seed: 2333 + # dataset: ['train', 'val', 'test', 'poison'] + dataset: ['train', 'val', 'test'] + root: data/ + type: 'CIFAR10@torchvision' + splits: [1.0, 0.0, 0.0] + batch_size: 32 + num_workers: 0 + transform: [['ToTensor']] + args: [{'download': True}] + splitter: 'lda' + splitter_args: [{'alpha': 100000}] +model: + type: resnet18 + hidden: 512 + out_channels: 10 + dropout: 0.0 +optimizer: + lr: 0.5 + weight_decay: 0.0 +grad: + grad_clip: -1.0 +criterion: + type: CrossEntropyLoss +trainer: + type: cvtrainer +eval: + best_res_update_round_wise_key: 'test_loss' + freq: 50 + split: ['test'] + # metrics: ['acc', 'correct', 'poison_attack_acc'] + # split: ['test','poison'] + # split: ['test','poison'] + metrics: ['acc', 'correct'] +attack: + setting: 'fix' + freq: 10 + # insert_round: 300 + attack_method: '' + attacker_id: 15 + label_type: 'dirty' + trigger_type: edge + edge_num: 500 + poison_ratio: 0.5 + target_label_ind: 9 + self_opt: False + self_lr: 0.5 + self_epoch: 6 + scale_poisoning: False + scale_para: 5.0 + pgd_poisoning: False + mean: [0.4914, 0.4822, 0.4465] + std: [0.2023, 0.1994, 0.2010] +seed: 618 +device: 0 +expname: bench_pfedme_iid \ No newline at end of file diff --git a/scripts/ci_test.sh b/scripts/ci_test.sh new file mode 100644 index 000000000..b4c65a856 --- /dev/null +++ b/scripts/ci_test.sh @@ -0,0 +1,56 @@ +#!/system/bin/sh + +#================================================================ +# Copyright (C) 2019 Alibaba Ltd. All rights reserved. +# +# Filename:test_env.sh +# Author:xxx +# Date:2019-01-11 +# Description: +# +#================================================================ + +#pip install +#pip install oss2 +#pip install -r requirements.txt + +# linter test +#pip install -r requirements/tests.txt +# use internal project for pre-commit due to the network problem +#if [ `git remote -v | grep alibaba | wc -l` -gt 1 ]; then +# cp .pre-commit-config.yaml.alibaba .pre-commit-config.yaml +#fi +#pre-commit run --all-files +#if [ $? -ne 0 ]; then +# echo "linter test failed, please run 'pre-commit run --all-files' to check" +# exit -1 +#fi + +#setup for git-lfs +#if [ ! -e git-lfs/git_lfs.py ]; then +# git submodule init +# git submodule update +#fi + +#add ossconfig for git-lfs +#OSS_CONFIG=~/.git_oss_config +#if [ ! -e $OSS_CONFIG ]; then +# echo "$OSS_CONFIG does not exists" +# exit +#fi + +#download test data +#python git-lfs/git_lfs.py pull +#wget 'http://xxxshare.oss-cn-hangzhou-zmf.aliyuncs.com/gfl%2Ftest_data.tar.gz' +wget 'http://xxxshare.oss-cn-hangzhou-zmf.aliyuncs.com/gfl/test_data.tar.gz'>oss.out 2>oss.err +tar -xzvf test_data.tar.gz>tar.out +mkdir -p test_data/femnist/raw +cp /home/xxx/dev/federatedscope/data/femnist_all_data.zip test_data/femnist/raw +cp -rf /home/xxx/dev/federatedscope/data/MovieLens1M test_data/ +#export PYTHONPATH=. +#export TEST_DIR="/tmp/ev_torch_test_${USER}_`date +%s`" + +# do not uncomments, casue faild in Online UT, install requirements by yourself on UT machine +# pip install -r requirements.txt +#run test +PYTHONPATH=. python tests/run.py diff --git a/scripts/dp_exp_scripts/parse_nbafl_results.py b/scripts/dp_exp_scripts/parse_nbafl_results.py new file mode 100644 index 000000000..5b0fae15f --- /dev/null +++ b/scripts/dp_exp_scripts/parse_nbafl_results.py @@ -0,0 +1,52 @@ +import argparse +import json +import copy +import numpy as np + +parser = argparse.ArgumentParser(description='FederatedScope result parsing') +parser.add_argument('--input', + help='path of exp results', + required=True, + type=str) +parser.add_argument('--round', + help='path of exp results', + required=True, + type=int) +args = parser.parse_args() + + +def merge_local_results(local_results): + aggr_results = copy.deepcopy(local_results[0]) + aggr_results = {key: [aggr_results[key]] for key in aggr_results} + for i in range(1, len(local_results)): + for k, v in local_results[i].items(): + aggr_results[k].append(v) + return aggr_results + + +def main(): + parse(args.input, args.round) + + +def parse(input, round): + result_list_wavg = [] + with open(input, 'r') as ips: + for line in ips: + try: + state, line = line.split('INFO: ') + except: + continue + if line.startswith('{') and 'nan' not in line: + line = line.replace("\'", "\"") + line = json.loads(s=line) + if line['Round'] == round and line['Role'] == 'Server #': + result_list_wavg.append(line["Results_weighted_avg"]) + + print(args.input) + if len(result_list_wavg): + for key, v in merge_local_results(result_list_wavg).items(): + print("\t{}, {:.4f}, {:.4f}".format(key, np.mean(v), np.std(v))) + + +if __name__ == "__main__": + main() diff --git a/scripts/dp_exp_scripts/run_femnist_dp_standalone.sh b/scripts/dp_exp_scripts/run_femnist_dp_standalone.sh new file mode 100644 index 000000000..bbb68c0de --- /dev/null +++ b/scripts/dp_exp_scripts/run_femnist_dp_standalone.sh @@ -0,0 +1,54 @@ +set -e + +cudaid=$1 + +if [ ! -d "out_nbafl" ];then + mkdir out_nbafl +fi + +echo "NbAFL starts..." + +clips=(0.1) +epsilons=(10. 50. 100.) +mus=(0.01) +constants=(1. 2. 3.) + +for ((iw=0; iw<${#clips[@]}; iw++ )) +do + for ((ie=0; ie<${#epsilons[@]}; ie++ )) + do + for ((im=0; im<${#mus[@]}; im++ )) + do + for ((ic=0; ic<${#constants[@]}; ic++ )) + do + python federatedscope/main.py --cfg federatedscope/cv/baseline/fedavg_convnet2_on_femnist.yaml device ${cudaid} nbafl.use True \ + data.root /mnt/gaodawei.gdw/data/ \ + nbafl.mu ${mus[$im]} \ + nbafl.epsilon ${epsilons[$ie]} \ + nbafl.constant ${constants[$ic]} \ + nbafl.w_clip ${clips[$iw]} \ + >>out_nbafl/temp.out \ + 2>>out_nbafl/clip_${clips[$iw]}_eps_${epsilons[$ie]}_mu_${mus[$im]}_const_${constants[$ic]}.log + done + done + done +done + +for ((iw=0; iw<${#clips[@]}; iw++ )) +do + for ((ie=0; ie<${#epsilons[@]}; ie++ )) + do + for ((im=0; im<${#mus[@]}; im++ )) + do + for ((ic=0; ic<${#constants[@]}; ic++ )) + do + python federatedscope/../scripts/dp_exp_scripts/parse_nbafl_results.py --input out_nbafl/clip_${clips[$iw]}_eps_${epsilons[$ie]}_mu_${mus[$im]}_const_${constants[$ic]}.log \ + --round 300\ + >>out_nbafl/parse.log + done + done + done +done + +echo "Ends." + diff --git a/scripts/dp_exp_scripts/run_femnist_standard_standalone.sh b/scripts/dp_exp_scripts/run_femnist_standard_standalone.sh new file mode 100644 index 000000000..193feda98 --- /dev/null +++ b/scripts/dp_exp_scripts/run_femnist_standard_standalone.sh @@ -0,0 +1,17 @@ +set -e + +cudaid=$1 + +if [ ! -d "out_dp" ];then + mkdir out_dp +fi + +echo "Starts..." + +python federatedscope/main.py --cfg federatedscope/cv/baseline/fedavg_convnet2_on_femnist.yaml \ +device ${cudaid} \ +>>out_dp/standard.out \ +2>>out_dp/standard.err + +echo "Ends." + diff --git a/scripts/fedopt_exp_scripts/parse_fedopt_results.py b/scripts/fedopt_exp_scripts/parse_fedopt_results.py new file mode 100644 index 000000000..c0af3a263 --- /dev/null +++ b/scripts/fedopt_exp_scripts/parse_fedopt_results.py @@ -0,0 +1,52 @@ +import argparse +import json +import copy +import numpy as np + +parser = argparse.ArgumentParser(description='FederatedScope result parsing') +parser.add_argument('--input', + help='path of exp results', + required=True, + type=str) +parser.add_argument('--round', + help='path of exp results', + required=True, + type=int) +args = parser.parse_args() + + +def merge_local_results(local_results): + aggr_results = copy.deepcopy(local_results[0]) + aggr_results = {key: [aggr_results[key]] for key in aggr_results} + for i in range(1, len(local_results)): + for k, v in local_results[i].items(): + aggr_results[k].append(v) + return aggr_results + + +def main(): + parse(args.input, args.round) + + +def parse(input, round): + result_list_wavg = [] + with open(input, 'r') as ips: + for line in ips: + try: + state, line = line.split('INFO: ') + except: + continue + if line.startswith('{'): + line = line.replace("\'", "\"") + line = json.loads(s=line) + if line['Round'] == round and line['Role'] == 'Server #': + result_list_wavg.append(line["Results_weighted_avg"]) + + print(args.input) + if len(result_list_wavg): + for key, v in merge_local_results(result_list_wavg).items(): + print("\t{}, {:.4f}, {:.4f}".format(key, np.mean(v), np.std(v))) + + +if __name__ == "__main__": + main() diff --git a/scripts/fedopt_exp_scripts/run_fedopt_femnist.sh b/scripts/fedopt_exp_scripts/run_fedopt_femnist.sh new file mode 100644 index 000000000..f8b748ac8 --- /dev/null +++ b/scripts/fedopt_exp_scripts/run_fedopt_femnist.sh @@ -0,0 +1,31 @@ +set -e + +cudaid=$1 + +if [ ! -d "out_fedopt_femnist" ];then + mkdir out_fedopt_femnist +fi + +echo "VFL starts..." + +lrs=(0.1 0.5 0.75 1. 1.25 1.5) + +for ((il=0; il<${#lrs[@]}; il++ )) +do + python federatedscope/main.py --cfg federatedscope/cv/baseline/fedavg_convnet2_on_femnist.yaml device ${cudaid} \ + data.root /mnt/gaodawei.gdw/data/ \ + fedopt.use True \ + federate.method FedOpt \ + fedopt.optimizer.lr ${lrs[$il]} \ + >>out_fedopt_femnist/nothing.out \ + 2>>out_fedopt_femnist/lr_${lrs[$il]}.log +done + +for ((il=0; il<${#lrs[@]}; il++ )) +do + python federatedscope/../scripts/fedopt_exp_scripts/parse_mf_results.py --input out_fedopt_femnist/lr_${lrs[$il]}.log \ + --round 300 +done + +echo "Ends." + diff --git a/scripts/fedopt_exp_scripts/run_fedopt_lr.sh b/scripts/fedopt_exp_scripts/run_fedopt_lr.sh new file mode 100644 index 000000000..72a895ce9 --- /dev/null +++ b/scripts/fedopt_exp_scripts/run_fedopt_lr.sh @@ -0,0 +1,31 @@ +set -e + +cudaid=$1 + +if [ ! -d "out_fedopt_lr" ];then + mkdir out_fedopt_lr +fi + +echo "FedOpt LR starts..." + +lrs=(0.1 0.5 0.75 1. 1.25 1.5) + +for ((il=0; il<${#lrs[@]}; il++ )) +do + python federatedscope/main.py --cfg federatedscope/nlp/baseline/fedavg_lr_on_synthetic.yaml device ${cudaid} \ + data.root /mnt/gaodawei.gdw/data/ \ + fedopt.use True \ + federate.method FedOpt \ + fedopt.optimizer.lr ${lrs[$il]} \ + >>out_fedopt_lr/nothing.out \ + 2>>out_fedopt_lr/lr_${lrs[$il]}.log +done + +for ((il=0; il<${#lrs[@]}; il++ )) +do + python federatedscope/../scripts/fedopt_exp_scripts/parse_mf_results.py --input out_fedopt_lr/lr_${lrs[$il]}.log \ + --round 200 +done + +echo "Ends." + diff --git a/scripts/fedopt_exp_scripts/run_fedopt_shakespeare.sh b/scripts/fedopt_exp_scripts/run_fedopt_shakespeare.sh new file mode 100644 index 000000000..4c51721f1 --- /dev/null +++ b/scripts/fedopt_exp_scripts/run_fedopt_shakespeare.sh @@ -0,0 +1,31 @@ +set -e + +cudaid=$1 + +if [ ! -d "out_fedopt_shakespeare" ];then + mkdir out_fedopt_shakespeare +fi + +echo "FedOpt Shakespeare starts..." + +lrs=(0.1 0.5 0.75 1. 1.25 1.5) + +for ((il=0; il<${#lrs[@]}; il++ )) +do + python federatedscope/main.py --cfg federatedscope/nlp/baseline/fedavg_lstm_on_shakespeare.yaml device ${cudaid} \ + data.root /mnt/gaodawei.gdw/data/ \ + fedopt.use True \ + federate.method FedOpt \ + fedopt.optimizer.lr ${lrs[$il]} \ + >>out_fedopt_shakespeare/nothing.out \ + 2>>out_fedopt_shakespeare/lr_${lrs[$il]}.log +done + +for ((il=0; il<${#lrs[@]}; il++ )) +do + python federatedscope/../scripts/fedopt_exp_scripts/parse_mf_results.py --input out_fedopt_shakespeare/lr_${lrs[$il]}.log \ + --round 1000 +done + +echo "Ends." + diff --git a/scripts/fedprox_exp_scripts/parse_fedprox_results.py b/scripts/fedprox_exp_scripts/parse_fedprox_results.py new file mode 100644 index 000000000..c0af3a263 --- /dev/null +++ b/scripts/fedprox_exp_scripts/parse_fedprox_results.py @@ -0,0 +1,52 @@ +import argparse +import json +import copy +import numpy as np + +parser = argparse.ArgumentParser(description='FederatedScope result parsing') +parser.add_argument('--input', + help='path of exp results', + required=True, + type=str) +parser.add_argument('--round', + help='path of exp results', + required=True, + type=int) +args = parser.parse_args() + + +def merge_local_results(local_results): + aggr_results = copy.deepcopy(local_results[0]) + aggr_results = {key: [aggr_results[key]] for key in aggr_results} + for i in range(1, len(local_results)): + for k, v in local_results[i].items(): + aggr_results[k].append(v) + return aggr_results + + +def main(): + parse(args.input, args.round) + + +def parse(input, round): + result_list_wavg = [] + with open(input, 'r') as ips: + for line in ips: + try: + state, line = line.split('INFO: ') + except: + continue + if line.startswith('{'): + line = line.replace("\'", "\"") + line = json.loads(s=line) + if line['Round'] == round and line['Role'] == 'Server #': + result_list_wavg.append(line["Results_weighted_avg"]) + + print(args.input) + if len(result_list_wavg): + for key, v in merge_local_results(result_list_wavg).items(): + print("\t{}, {:.4f}, {:.4f}".format(key, np.mean(v), np.std(v))) + + +if __name__ == "__main__": + main() diff --git a/scripts/fedprox_exp_scripts/run_fedprox_femnist.sh b/scripts/fedprox_exp_scripts/run_fedprox_femnist.sh new file mode 100644 index 000000000..9010d0130 --- /dev/null +++ b/scripts/fedprox_exp_scripts/run_fedprox_femnist.sh @@ -0,0 +1,30 @@ +set -e + +cudaid=$1 + +if [ ! -d "out_fedprox_femnist" ];then + mkdir out_fedprox_femnist +fi + +echo "VFL starts..." + +mus=(0.01 0.1 1. 10. 100.) + +for ((im=0; im<${#mus[@]}; im++ )) +do + python federatedscope/main.py --cfg federatedscope/cv/baseline/fedavg_convnet2_on_femnist.yaml device ${cudaid} \ + data.root /mnt/gaodawei.gdw/data/ \ + fedprox.use True \ + fedprox.mu ${mus[$im]} \ + >>out_fedprox_femnist/nothing.out \ + 2>>out_fedprox_femnist/mu_${mus[$im]}.log +done + +for ((im=0; im<${#mus[@]}; im++ )) +do + python federatedscope/../scripts/fedprox_exp_scripts/parse_mf_results.py --input out_fedprox_femnist/mu_${mus[$im]}.log \ + --round 300 +done + +echo "Ends." + diff --git a/scripts/fedprox_exp_scripts/run_fedprox_lr.sh b/scripts/fedprox_exp_scripts/run_fedprox_lr.sh new file mode 100644 index 000000000..2528b22a1 --- /dev/null +++ b/scripts/fedprox_exp_scripts/run_fedprox_lr.sh @@ -0,0 +1,30 @@ +set -e + +cudaid=$1 + +if [ ! -d "out_fedprox_lr" ];then + mkdir out_fedprox_lr +fi + +echo "fedprox LR starts..." + +mus=(0.01 0.1 1. 10. 100.) + +for ((im=0; im<${#mus[@]}; im++ )) +do + python federatedscope/main.py --cfg federatedscope/nlp/baseline/fedavg_lr_on_synthetic.yaml device ${cudaid} \ + data.root /mnt/gaodawei.gdw/data/ \ + fedprox.use True \ + fedprox.mu ${mus[$im]} \ + >>out_fedprox_lr/nothing.out \ + 2>>out_fedprox_lr/mu_${mus[$im]}.log +done + +for ((im=0; im<${#mus[@]}; im++ )) +do + python federatedscope/../scripts/fedprox_exp_scripts/parse_mf_results.py --input out_fedprox_lr/mu_${mus[$im]}.log \ + --round 200 +done + +echo "Ends." + diff --git a/scripts/fedprox_exp_scripts/run_fedprox_shakespeare.sh b/scripts/fedprox_exp_scripts/run_fedprox_shakespeare.sh new file mode 100644 index 000000000..ba34b6ae2 --- /dev/null +++ b/scripts/fedprox_exp_scripts/run_fedprox_shakespeare.sh @@ -0,0 +1,30 @@ +set -e + +cudaid=$1 + +if [ ! -d "out_fedprox_shakespeare" ];then + mkdir out_fedprox_shakespeare +fi + +echo "fedprox Shakespeare starts..." + +mus=(0.01 0.1 1. 10 100) + +for ((im=0; im<${#mus[@]}; im++ )) +do + python federatedscope/main.py --cfg federatedscope/nlp/baseline/fedavg_lstm_on_shakespeare.yaml device ${cudaid} \ + data.root /mnt/gaodawei.gdw/data/ \ + fedprox.use True \ + fedprox.mu ${mus[$im]} \ + >>out_fedprox_shakespeare/nothing.out \ + 2>>out_fedprox_shakespeare/mu_${mus[$im]}.log +done + +for ((im=0; im<${#mus[@]}; im++ )) +do + python federatedscope/../scripts/fedprox_exp_scripts/parse_mf_results.py --input out_fedprox_shakespeare/mu_${mus[$im]}.log \ + --round 1000 +done + +echo "Ends." + diff --git a/scripts/flit_exp_scripts/fedalgo.sh b/scripts/flit_exp_scripts/fedalgo.sh new file mode 100644 index 000000000..ac1a072bd --- /dev/null +++ b/scripts/flit_exp_scripts/fedalgo.sh @@ -0,0 +1,11 @@ +bash run_flitplus.sh 1 bbbp flitplustrainer 0.01 0.1 & + +bash run_flitplus.sh 2 bbbp flittrainer 0.1 & + +bash run_flitplus.sh 3 bbbp fedfocaltrainer 0.1 & + +bash run_flitplus.sh 4 bbbp fedvattrainer 0.1 0.1 & + +bash run_flitplus.sh 5 bbbp graphminibatch_trainer 0.1 & + +bash run_fedprox.sh 6 bbbp graphminibatch_trainer 0.1 0.1 & \ No newline at end of file diff --git a/scripts/flit_exp_scripts/run_fedavg-fedfocal-flit_cls.sh b/scripts/flit_exp_scripts/run_fedavg-fedfocal-flit_cls.sh new file mode 100644 index 000000000..1c9cf78f2 --- /dev/null +++ b/scripts/flit_exp_scripts/run_fedavg-fedfocal-flit_cls.sh @@ -0,0 +1,19 @@ +set -e + +cd ../.. + +cudaid=$1 +dataset=$2 +trainer=$3 +alpha=$4 + +if [ ! -d "out" ];then + mkdir out +fi + +for k in {1..3} +do + echo "k=${k}, Trainer=${trainer}, data=${dataset}, alpha=${alpha} starts..." + python federatedscope/main.py --cfg federatedscope/gfl/flitplus/fedalgo_cls.yaml device ${cudaid} data.type ${dataset} trainer.type ${trainer} flitplus.alpha ${alpha} seed ${k} >>out/${trainer}_on_${dataset}_k${k}_alpha${alpha}.log 2>&1 + echo "k=${k}, Trainer=${trainer}, data=${dataset}, alpha=${alpha} ends." +done diff --git a/scripts/flit_exp_scripts/run_fedprox_cls.sh b/scripts/flit_exp_scripts/run_fedprox_cls.sh new file mode 100644 index 000000000..36ba66fcc --- /dev/null +++ b/scripts/flit_exp_scripts/run_fedprox_cls.sh @@ -0,0 +1,20 @@ +set -e + +cd ../.. + +cudaid=$1 +dataset=$2 +trainer=$3 +mu=$4 +alpha=$5 + +if [ ! -d "out" ];then + mkdir out +fi + +for k in {1..3} +do + echo "k=${k}, Trainer=${trainer}, data=${dataset}, mu=${mu}, alpha=${alpha} starts..." + python federatedscope/main.py --cfg federatedscope/gfl/flitplus/fedalgo_cls.yaml device ${cudaid} data.type ${dataset} trainer.type ${trainer} fedprox.use True fedprox.mu ${mu} flitplus.alpha ${alpha} seed ${k} >>out/${trainer}_on_${dataset}_k${k}_mu${mu}_alpha${alpha}.log 2>&1 + echo "k=${k}, Trainer=${trainer}, data=${dataset}, mu=${mu}, alpha=${alpha} ends." +done diff --git a/scripts/flit_exp_scripts/run_fedvat_cls.sh b/scripts/flit_exp_scripts/run_fedvat_cls.sh new file mode 100644 index 000000000..551484325 --- /dev/null +++ b/scripts/flit_exp_scripts/run_fedvat_cls.sh @@ -0,0 +1,20 @@ +set -e + +cd ../.. + +cudaid=$1 +dataset=$2 +trainer=$3 +weightReg=$4 +alpha=$5 + +if [ ! -d "out" ];then + mkdir out +fi + +for k in {1..3} +do + echo "k=${k}, Trainer=${trainer}, data=${dataset}, weight=${weightReg}, alpha=${alpha} starts..." + python federatedscope/main.py --cfg federatedscope/gfl/flitplus/fedalgo_cls.yaml device ${cudaid} data.type ${dataset} trainer.type ${trainer} flitplus.weightReg ${weightReg} flitplus.alpha ${alpha} seed ${k} >>out/${trainer}_on_${dataset}_k${k}_weight${weightReg}_alpha${alpha}.log 2>&1 + echo "k=${k}, Trainer=${trainer}, data=${dataset}, weight=${weightReg}, alpha=${alpha} ends." +done diff --git a/scripts/flit_exp_scripts/run_flitplus_cls.sh b/scripts/flit_exp_scripts/run_flitplus_cls.sh new file mode 100644 index 000000000..7ad10651f --- /dev/null +++ b/scripts/flit_exp_scripts/run_flitplus_cls.sh @@ -0,0 +1,20 @@ +set -e + +cd ../.. + +cudaid=$1 +dataset=$2 +trainer=$3 +lambdavat=$4 +alpha=$5 + +if [ ! -d "out" ];then + mkdir out +fi + +for k in {1..3} +do + echo "k=${k}, Trainer=${trainer}, data=${dataset}, lambda=${lambdavat}, alpha=${alpha} starts..." + python federatedscope/main.py --cfg federatedscope/gfl/flitplus/fedalgo_cls.yaml device ${cudaid} data.type ${dataset} trainer.type ${trainer} flitplus.lambdavat ${lambdavat} flitplus.alpha ${alpha} seed ${k} >>out/${trainer}_on_${dataset}_k${k}_lambda${lambdavat}_alpha${alpha}.log 2>&1 + echo "k=${k}, Trainer=${trainer}, data=${dataset}, lambda=${lambdavat}, alpha=${alpha} ends." +done diff --git a/scripts/format.sh b/scripts/format.sh new file mode 100755 index 000000000..e66b92ca8 --- /dev/null +++ b/scripts/format.sh @@ -0,0 +1,130 @@ +# Copyright 2017 The Ray Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +#!/usr/bin/env bash +# YAPF + Clang formatter (if installed). This script formats all changed files from the last mergebase. +# You are encouraged to run this locally before pushing changes for review. + +# Cause the script to exit if a single command fails +set -eo pipefail + +ver=$(yapf --version) +if ! echo $ver | grep -q 0.31.0; then + echo "Wrong YAPF version installed: 0.31.0 is required, not $ver" + exit 1 +fi + +# this stops git rev-parse from failing if we run this from the .git directory +builtin cd "$(dirname "${BASH_SOURCE:-$0}")" + +ROOT="$(git rev-parse --show-toplevel)" +builtin cd "$ROOT" || exit 1 + +# Add the upstream branch if it doesn't exist +#if ! [[ -e "$ROOT/.git/refs/remotes/upstream" ]]; then +# git remote add 'upstream' 'https://github.com/alibaba/FederatedScope.git' +#fi + + +FLAKE8_VERSION=$(flake8 --version | awk '{print $1}') +YAPF_VERSION=$(yapf --version | awk '{print $2}') + +# params: tool name, tool version, required version +tool_version_check() { + if [[ $2 != $3 ]]; then + echo "WARNING: federatedscope uses $1 $3, You currently are using $2. This might generate different results." + fi +} + +tool_version_check "flake8" $FLAKE8_VERSION "4.0.1" +tool_version_check "yapf" $YAPF_VERSION "0.31.0" + +# Only fetch master since that's the branch we're diffing against. +#git fetch upstream master || true +git fetch origin master || true + +YAPF_FLAGS=( + '--style' "$ROOT/.style.yapf" + '--recursive' + '--parallel' +) + +YAPF_EXCLUDES=( + '--exclude' 'scripts/*' +) + +# Format specified files +format() { + yapf --in-place "${YAPF_FLAGS[@]}" -- "$@" +} + +# Format files that differ from main branch. Ignores dirs that are not slated +# for autoformat yet. +format_changed() { + # The `if` guard ensures that the list of filenames is not empty, which + # could cause yapf to receive 0 positional arguments, making it hang + # waiting for STDIN. + # + # `diff-filter=ACM` and $MERGEBASE is to ensure we only format files that + # exist on both branches. + #MERGEBASE="$(git merge-base upstream/master HEAD)" + MERGEBASE="$(git merge-base origin/master HEAD)" + + if ! git diff --diff-filter=ACM --quiet --exit-code "$MERGEBASE" -- '*.py' &>/dev/null; then + git diff --name-only --diff-filter=ACM "$MERGEBASE" -- '*.py' | xargs -P 5 \ + yapf --in-place "${YAPF_EXCLUDES[@]}" "${YAPF_FLAGS[@]}" + if which flake8 >/dev/null; then + git diff --name-only --diff-filter=ACM "$MERGEBASE" -- '*.py' | xargs -P 5 \ + flake8 --inline-quotes '"' --no-avoid-escape --ignore=C408,E121,E123,E126,E226,E24,E704,W503,W504,W605 + fi + fi + + if ! git diff --diff-filter=ACM --quiet --exit-code "$MERGEBASE" -- '*.pyx' '*.pxd' '*.pxi' &>/dev/null; then + if which flake8 >/dev/null; then + git diff --name-only --diff-filter=ACM "$MERGEBASE" -- '*.pyx' '*.pxd' '*.pxi' | xargs -P 5 \ + flake8 --inline-quotes '"' --no-avoid-escape --ignore=C408,E121,E123,E126,E226,E24,E704,W503,W504,W605 + fi + fi +} + +# Format all files, and print the diff to stdout for travis. +format_all() { + yapf --diff "${YAPF_FLAGS[@]}" "${YAPF_EXCLUDES[@]}" federatedscope tests + #yapf --in-place "${YAPF_FLAGS[@]}" "${YAPF_EXCLUDES[@]}" federatedscope tests +} + +# This flag formats individual files. --files *must* be the first command line +# arg to use this option. +if [[ "$1" == '--files' ]]; then + format "${@:2}" + # If `--all` is passed, then any further arguments are ignored and the + # entire python directory is formatted. +elif [[ "$1" == '--all' ]]; then + format_all +else + # Format only the files that changed in last commit. + format_changed +fi + +if ! git diff --quiet &>/dev/null; then + echo 'Reformatted changed files. Please review and stage the changes.' + echo 'Files updated:' + echo + + git --no-pager diff --name-only + + exit 1 +fi diff --git a/scripts/gen_data.py b/scripts/gen_data.py new file mode 100644 index 000000000..6ef6b6ca7 --- /dev/null +++ b/scripts/gen_data.py @@ -0,0 +1,106 @@ +import numpy as np +import pickle +import os + + +def generate_data(client_num=3, + instance_num=1000, + feature_num=5, + save_data=True): + """ + Generate data in FedRunner format + Args: + client_num: + instance_num: + feature_num: + save_data: + + Returns: + { + '{client_id}': { + 'train': { + 'x': ..., + 'y': ... + }, + 'test': { + 'x': ..., + 'y': ... + }, + 'val': { + 'x': ..., + 'y': ... + } + } + } + + """ + weights = np.random.normal(loc=0.0, scale=1.0, size=feature_num) + bias = np.random.normal(loc=0.0, scale=1.0) + data = dict() + for each_client in range(1, client_num + 1): + data[each_client] = dict() + client_x = np.random.normal(loc=0.0, + scale=0.5 * each_client, + size=(instance_num, feature_num)) + client_y = np.sum(client_x * weights, axis=-1) + bias + client_y = np.expand_dims(client_y, -1) + client_data = {'x': client_x, 'y': client_y} + data[each_client]['train'] = client_data + + # test data + test_x = np.random.normal(loc=0.0, + scale=1.0, + size=(instance_num, feature_num)) + test_y = np.sum(test_x * weights, axis=-1) + bias + test_y = np.expand_dims(test_y, -1) + test_data = {'x': test_x, 'y': test_y} + for each_client in range(1, client_num + 1): + data[each_client]['test'] = test_data + + # val data + val_x = np.random.normal(loc=0.0, + scale=1.0, + size=(instance_num, feature_num)) + val_y = np.sum(val_x * weights, axis=-1) + bias + val_y = np.expand_dims(val_y, -1) + val_data = {'x': val_x, 'y': val_y} + for each_client in range(1, client_num + 1): + data[each_client]['val'] = val_data + + # server_data + data[0] = dict() + data[0]['train'] = None + data[0]['val'] = val_data + data[0]['test'] = test_data + + if save_data: + # server_data = dict() + save_client_data = dict() + + if not os.path.exists('toy_data'): + os.makedirs('toy_data') + + for client_idx in range(0, client_num + 1): + if client_idx == 0: + filename = 'toy_data/server_data' + else: + filename = 'toy_data/client_{:d}_data'.format(client_idx) + with open(filename, 'wb') as f: + save_client_data['train'] = { + k: v.tolist() + for k, v in data[client_idx]['train'].items() + } if data[client_idx]['train'] is not None else None + save_client_data['val'] = { + k: v.tolist() + for k, v in data[client_idx]['val'].items() + } if data[client_idx]['val'] is not None else None + save_client_data['test'] = { + k: v.tolist() + for k, v in data[client_idx]['test'].items() + } if data[client_idx]['test'] is not None else None + pickle.dump(save_client_data, f) + + return data + + +data = generate_data() diff --git a/scripts/gnn_exp_scripts/args_graph_fedalgo.sh b/scripts/gnn_exp_scripts/args_graph_fedalgo.sh new file mode 100644 index 000000000..651194d00 --- /dev/null +++ b/scripts/gnn_exp_scripts/args_graph_fedalgo.sh @@ -0,0 +1,37 @@ +# ------------------------------------------------------------------------ # +# FedOpt +# ------------------------------------------------------------------------ # + +# proteins +bash run_graph_level_opt.sh 0 proteins gcn 0.25 4 & + +bash run_graph_level_opt.sh 1 proteins gin 0.25 1 & + +bash run_graph_level_opt.sh 2 proteins gat 0.25 4 & + +# imdb-binary +bash run_graph_level_opt.sh 3 imdb-binary gcn 0.25 16 & + +bash run_graph_level_opt.sh 4 imdb-binary gin 0.01 16 & + +bash run_graph_level_opt.sh 5 imdb-binary gat 0.25 16 & + +# ------------------------------------------------------------------------ # +# FedProx +# ------------------------------------------------------------------------ # + +# proteins +bash run_graph_level_prox.sh 6 proteins gcn 0.25 4 & + +bash run_graph_level_prox.sh 7 proteins gin 0.25 1 & + +bash run_graph_level_prox.sh 1 proteins gat 0.25 4 & + +# imdb-binary +bash run_graph_level_prox.sh 2 imdb-binary gcn 0.25 16 & + +bash run_graph_level_prox.sh 3 imdb-binary gin 0.01 16 & + +bash run_graph_level_prox.sh 4 imdb-binary gat 0.25 16 & + + diff --git a/scripts/gnn_exp_scripts/args_link_fedalgo.sh b/scripts/gnn_exp_scripts/args_link_fedalgo.sh new file mode 100644 index 000000000..d239192d2 --- /dev/null +++ b/scripts/gnn_exp_scripts/args_link_fedalgo.sh @@ -0,0 +1,44 @@ +# ------------------------------------------------------------------------ # +# FedOpt +# ------------------------------------------------------------------------ # + +# WN18 +bash run_link_level_opt.sh 0 wn18 rel_type gcn 0.25 16 & + +bash run_link_level_opt.sh 1 wn18 rel_type sage 0.05 16 & + +bash run_link_level_opt.sh 2 wn18 rel_type gat 0.25 16 & + +bash run_link_level_opt.sh 3 wn18 rel_type gpr 0.01 16 & + +# FB15k-237 +bash run_link_level_opt.sh 4 fb15k-237 rel_type gcn 0.25 4 & + +bash run_link_level_opt.sh 5 fb15k-237 rel_type sage 0.25 4 & + +bash run_link_level_opt.sh 6 fb15k-237 rel_type gat 0.25 4 & + +bash run_link_level_opt.sh 7 fb15k-237 rel_type gpr 0.25 1 & + + +# ------------------------------------------------------------------------ # +# FedProx +# ------------------------------------------------------------------------ # +# WN18 +bash run_link_level_prox.sh 7 wn18 rel_type gcn 0.25 16 & + +bash run_link_level_prox.sh 6 wn18 rel_type sage 0.05 16 & + +bash run_link_level_prox.sh 5 wn18 rel_type gat 0.25 16 & + +bash run_link_level_prox.sh 4 wn18 rel_type gpr 0.01 16 & + +# FB15k-237 +bash run_link_level_prox.sh 3 fb15k-237 rel_type gcn 0.25 4 & + +bash run_link_level_prox.sh 2 fb15k-237 rel_type sage 0.25 4 & + +bash run_link_level_prox.sh 1 fb15k-237 rel_type gat 0.25 4 & + +bash run_link_level_prox.sh 0 fb15k-237 rel_type gpr 0.25 1 & + diff --git a/scripts/gnn_exp_scripts/args_multi_graph_fedalgo.sh b/scripts/gnn_exp_scripts/args_multi_graph_fedalgo.sh new file mode 100644 index 000000000..8ecbfc826 --- /dev/null +++ b/scripts/gnn_exp_scripts/args_multi_graph_fedalgo.sh @@ -0,0 +1,23 @@ +# ------------------------------------------------------------------------ # +# FedOpt +# ------------------------------------------------------------------------ # + +# mol +bash run_multi_opt.sh 5 mol gcn 0.25 16 & + +bash run_multi_opt.sh 7 mol gin 0.25 4 & + +bash run_multi_opt.sh 5 mol gat 0.25 16 & + +# ------------------------------------------------------------------------ # +# FedProx +# ------------------------------------------------------------------------ # + +# mol +bash run_multi_prox.sh 7 mol gcn 0.25 16 & + +bash run_multi_prox.sh 5 mol gin 0.01 4 & + +bash run_multi_prox.sh 7 mol gat 0.25 16 & + + diff --git a/scripts/gnn_exp_scripts/args_node_fedalgo.sh b/scripts/gnn_exp_scripts/args_node_fedalgo.sh new file mode 100644 index 000000000..418c50fb1 --- /dev/null +++ b/scripts/gnn_exp_scripts/args_node_fedalgo.sh @@ -0,0 +1,117 @@ +# ------------------------------------------------------------------------ # +# FedOpt +# ------------------------------------------------------------------------ # + +# Cora louvain +bash run_node_level_opt.sh 0 cora louvain gcn 0.25 4 & + +bash run_node_level_opt.sh 1 cora louvain sage 0.25 16 & + +bash run_node_level_opt.sh 2 cora louvain gat 0.25 16 & + +bash run_node_level_opt.sh 3 cora louvain gpr 0.25 1 & + +# CiteSeer louvain +bash run_node_level_opt.sh 4 citeseer louvain gcn 0.05 1 & + +bash run_node_level_opt.sh 5 citeseer louvain sage 0.05 1 & + +bash run_node_level_opt.sh 6 citeseer louvain gat 0.01 4 & + +bash run_node_level_opt.sh 7 citeseer louvain gpr 0.25 1 & + +# PubMed louvain +bash run_node_level_opt.sh 0 pubmed louvain gcn 0.25 16 & + +bash run_node_level_opt.sh 4 pubmed louvain sage 0.25 16 & + +bash run_node_level_opt.sh 0 pubmed louvain gat 0.25 16 & + +bash run_node_level_opt.sh 3 pubmed louvain gpr 0.05 16 & + + +# Cora random +bash run_node_level_opt.sh 5 cora random gcn 0.25 4 & + +bash run_node_level_opt.sh 5 cora random sage 0.25 16 & + +bash run_node_level_opt.sh 5 cora random gat 0.25 4 & + +bash run_node_level_opt.sh 5 cora random gpr 0.25 1 & + +# CiteSeer random +bash run_node_level_opt.sh 2 citeseer random gcn 0.01 4 & + +bash run_node_level_opt.sh 2 citeseer random sage 0.01 4 & + +bash run_node_level_opt.sh 0 citeseer random gat 0.01 4 & + +bash run_node_level_opt.sh 7 citeseer random gpr 0.25 1 & + +# PubMed random +bash run_node_level_opt.sh 0 pubmed random gcn 0.25 16 & + +bash run_node_level_opt.sh 2 pubmed random sage 0.25 16 & + +bash run_node_level_opt.sh 6 pubmed random gat 0.25 16 & + +bash run_node_level_opt.sh 7 pubmed random gpr 0.25 16 & + + + +# ------------------------------------------------------------------------ # +# FedProx +# ------------------------------------------------------------------------ # +# Cora louvain +bash run_node_level_prox.sh 0 cora louvain gcn 0.25 4 & + +bash run_node_level_prox.sh 1 cora louvain sage 0.25 16 & + +bash run_node_level_prox.sh 2 cora louvain gat 0.25 16 & + +bash run_node_level_prox.sh 3 cora louvain gpr 0.25 1 & + +# CiteSeer louvain +bash run_node_level_prox.sh 0 citeseer louvain gcn 0.05 1 & + +bash run_node_level_prox.sh 1 citeseer louvain sage 0.05 1 & + +bash run_node_level_prox.sh 2 citeseer louvain gat 0.01 4 & + +bash run_node_level_prox.sh 3 citeseer louvain gpr 0.25 1 & + +# PubMed louvain +bash run_node_level_prox.sh 4 pubmed louvain gcn 0.25 16 & + +bash run_node_level_prox.sh 5 pubmed louvain sage 0.25 16 & + +bash run_node_level_prox.sh 6 pubmed louvain gat 0.25 16 & + +bash run_node_level_prox.sh 7 pubmed louvain gpr 0.05 16 & + +# Cora random +bash run_node_level_prox.sh 4 cora random gcn 0.25 4 & + +bash run_node_level_prox.sh 5 cora random sage 0.25 16 & + +bash run_node_level_prox.sh 6 cora random gat 0.25 4 & + +bash run_node_level_prox.sh 7 cora random gpr 0.25 1 & + +# CiteSeer random +bash run_node_level_prox.sh 4 citeseer random gcn 0.01 4 & + +bash run_node_level_prox.sh 5 citeseer random sage 0.01 4 & + +bash run_node_level_prox.sh 6 citeseer random gat 0.01 4 & + +bash run_node_level_prox.sh 7 citeseer random gpr 0.25 1 & + +# PubMed random +bash run_node_level_prox.sh 0 pubmed random gcn 0.25 16 & + +bash run_node_level_prox.sh 1 pubmed random sage 0.25 16 & + +bash run_node_level_prox.sh 2 pubmed random gat 0.25 16 & + +bash run_node_level_prox.sh 3 pubmed random gpr 0.25 16 & diff --git a/scripts/gnn_exp_scripts/run_dblp_fedavg.sh b/scripts/gnn_exp_scripts/run_dblp_fedavg.sh new file mode 100755 index 000000000..70904ca89 --- /dev/null +++ b/scripts/gnn_exp_scripts/run_dblp_fedavg.sh @@ -0,0 +1,46 @@ +set -e + +cudaid=$1 +dataset=$2 +splitter='ooxx' + +if [ ! -d "out" ];then + mkdir out +fi + + +out_channels=4 +hidden=1024 + +echo "HPO starts..." + +gnns=('sage') +lrs=(0.01 0.05 0.25) +local_updates=(1 4 16) + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_sage_minibatch_on_dblpnew.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lrs[$i]} federate.local_update_steps ${local_updates[$j]} model.type ${gnns[$g]} model.out_channels ${out_channels} model.hidden ${hidden} seed $k >>out/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log 2>&1 + done + done + done +done + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + python federatedscope/parse_exp_results.py --input out/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log + done + done +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_graph_level.sh b/scripts/gnn_exp_scripts/run_graph_level.sh new file mode 100755 index 000000000..74057bce9 --- /dev/null +++ b/scripts/gnn_exp_scripts/run_graph_level.sh @@ -0,0 +1,58 @@ +set -e + +cudaid=$1 +dataset=$2 + +if [ ! -d "out" ];then + mkdir out +fi + +if [[ $dataset = 'hiv' ]]; then + out_channels=2 + hidden=64 + splitter='scaffold' +elif [[ $dataset = 'proteins' ]]; then + out_channels=2 + hidden=64 + splitter='rand_chunk' +elif [[ $dataset = 'imdb-binary' ]]; then + out_channels=2 + hidden=64 + splitter='graph_type' +else + out_channels=4 + hidden=1024 +fi + +echo "HPO starts..." + +gnns=('gcn' 'gin' 'gat') +lrs=(0.01 0.05 0.25) +local_updates=(1 4 16) + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gcn_minibatch_on_hiv.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lrs[$i]} federate.local_update_steps ${local_updates[$j]} model.type ${gnns[$g]} model.out_channels ${out_channels} model.hidden ${hidden} seed $k >>out/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log 2>&1 + done + done + done +done + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + python federatedscope/parse_exp_results.py --input out/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log + done + done +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_graph_level_multi_task.sh b/scripts/gnn_exp_scripts/run_graph_level_multi_task.sh new file mode 100755 index 000000000..451da57ac --- /dev/null +++ b/scripts/gnn_exp_scripts/run_graph_level_multi_task.sh @@ -0,0 +1,57 @@ +set -e + +cudaid=$1 +dname=$2 + +if [[ $dname = 'mol' ]]; then + dataset='graph_multi_domain_mol' +elif [[ $dname = 'mix' ]]; then + dataset='graph_multi_domain_mix' +elif [[ $dname = 'biochem' ]]; then + dataset='graph_multi_domain_biochem' +elif [[ $dname = 'v1' ]]; then + dataset='graph_multi_domain_kddcupv1' +else + dataset='graph_multi_domain_small' +fi + +if [ ! -d "out" ];then + mkdir out +fi + +out_channels=0 +hidden=64 +splitter='ooxx' + +echo "HPO starts..." + +gnns=('gcn' 'gin' 'gat') +lrs=(0.01 0.05 0.25) +local_updates=(1 4 16) + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gnn_minibatch_on_multi_task.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lrs[$i]} federate.local_update_steps ${local_updates[$j]} model.type ${gnns[$g]} model.out_channels ${out_channels} model.hidden ${hidden} seed $k >>out/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log 2>&1 + done + done + done +done + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + python federatedscope/parse_exp_results.py --input out/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log + done + done +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_graph_level_multi_task_bn.sh b/scripts/gnn_exp_scripts/run_graph_level_multi_task_bn.sh new file mode 100755 index 000000000..52cb69fc9 --- /dev/null +++ b/scripts/gnn_exp_scripts/run_graph_level_multi_task_bn.sh @@ -0,0 +1,57 @@ +set -e + +cudaid=$1 +dname=$2 + +if [[ $dname = 'mol' ]]; then + dataset='graph_multi_domain_mol' +elif [[ $dname = 'mix' ]]; then + dataset='graph_multi_domain_mix' +elif [[ $dname = 'biochem' ]]; then + dataset='graph_multi_domain_biochem' +elif [[ $dname = 'v1' ]]; then + dataset='graph_multi_domain_kddcupv1' +else + dataset='graph_multi_domain_small' +fi + +if [ ! -d "out_bn" ];then + mkdir out_bn +fi + +out_channels=0 +hidden=64 +splitter='ooxx' + +echo "HPO starts..." + +gnns=('gin') +lrs=(0.01 0.05 0.25) +local_updates=(1 4 16) + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedbn_gnn_minibatch_on_multi_task.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lrs[$i]} federate.local_update_steps ${local_updates[$j]} model.type ${gnns[$g]} model.out_channels ${out_channels} model.hidden ${hidden} seed $k >>out_bn/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log 2>&1 + done + done + done +done + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + python federatedscope/parse_exp_results.py --input out_bn/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log + done + done +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_graph_level_multi_task_bn_finetune.sh b/scripts/gnn_exp_scripts/run_graph_level_multi_task_bn_finetune.sh new file mode 100755 index 000000000..c9d170fe0 --- /dev/null +++ b/scripts/gnn_exp_scripts/run_graph_level_multi_task_bn_finetune.sh @@ -0,0 +1,57 @@ +set -e + +cudaid=$1 +dname=$2 + +if [[ $dname = 'mol' ]]; then + dataset='graph_multi_domain_mol' +elif [[ $dname = 'mix' ]]; then + dataset='graph_multi_domain_mix' +elif [[ $dname = 'biochem' ]]; then + dataset='graph_multi_domain_biochem' +elif [[ $dname = 'v1' ]]; then + dataset='graph_multi_domain_kddcupv1' +else + dataset='graph_multi_domain_small' +fi + +if [ ! -d "out_bn_finetune" ];then + mkdir out_bn_finetune +fi + +out_channels=0 +hidden=64 +splitter='ooxx' + +echo "HPO starts..." + +gnns=('gin') +lrs=(0.25) +local_updates=(16) + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + for k in {1..3} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedbn_gnn_minibatch_on_multi_task.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lrs[$i]} federate.local_update_steps ${local_updates[$j]} model.type ${gnns[$g]} model.out_channels ${out_channels} model.hidden ${hidden} seed $k trainer.finetune.steps 16 trainer.finetune.stepsize 0.05 >>out_bn_finetune/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log 2>&1 + done + done + done +done + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + python federatedscope/parse_exp_results.py --input out_bn_finetune/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log + done + done +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_graph_level_opt.sh b/scripts/gnn_exp_scripts/run_graph_level_opt.sh new file mode 100644 index 000000000..e959a238b --- /dev/null +++ b/scripts/gnn_exp_scripts/run_graph_level_opt.sh @@ -0,0 +1,48 @@ +set -e + +cudaid=$1 +dataset=$2 +gnn=$3 +lr=$4 +local_update=$5 + +if [ ! -d "out" ];then + mkdir out +fi + +if [[ $dataset = 'hiv' ]]; then + out_channels=2 + hidden=64 + splitter='scaffold' +elif [[ $dataset = 'proteins' ]]; then + out_channels=2 + hidden=64 + splitter='rand_chunk' +elif [[ $dataset = 'imdb-binary' ]]; then + out_channels=2 + hidden=64 + splitter='graph_type' +else + out_channels=4 + hidden=1024 +fi + + +echo "HPO starts..." + +lr_servers=(0.5 0.1) + +for (( s=0; s<${#lr_servers[@]}; s++ )) +do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gcn_minibatch_on_hiv.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lr} federate.local_update_steps ${local_update} model.type ${gnn} model.out_channels ${out_channels} model.hidden ${hidden} seed $k federate.method FedOpt fedopt.optimizer.lr ${lr_servers[$s]} >>out/${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_${lr_servers[$s]}_opt.log 2>&1 + done +done + +for (( s=0; s<${#lr_servers[@]}; s++ )) +do + python federatedscope/parse_exp_results.py --input out/${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_${lr_servers[$s]}_opt.log >>out/final_${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_opt.out 2>&1 +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_graph_level_prox.sh b/scripts/gnn_exp_scripts/run_graph_level_prox.sh new file mode 100644 index 000000000..d38bee058 --- /dev/null +++ b/scripts/gnn_exp_scripts/run_graph_level_prox.sh @@ -0,0 +1,48 @@ +set -e + +cudaid=$1 +dataset=$2 +gnn=$3 +lr=$4 +local_update=$5 + +if [ ! -d "out" ];then + mkdir out +fi + +if [[ $dataset = 'hiv' ]]; then + out_channels=2 + hidden=64 + splitter='scaffold' +elif [[ $dataset = 'proteins' ]]; then + out_channels=2 + hidden=64 + splitter='rand_chunk' +elif [[ $dataset = 'imdb-binary' ]]; then + out_channels=2 + hidden=64 + splitter='graph_type' +else + out_channels=4 + hidden=1024 +fi + + +echo "HPO starts..." + +mu=(0.1 1.0 5.0) + +for (( s=0; s<${#mu[@]}; s++ )) +do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gcn_minibatch_on_hiv.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lr} federate.local_update_steps ${local_update} model.type ${gnn} model.out_channels ${out_channels} model.hidden ${hidden} seed $k fedprox.use True fedprox.mu ${mu[$s]} >>out/${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_${mu[$s]}_prox.log 2>&1 + done +done + +for (( s=0; s<${#mu[@]}; s++ )) +do + python federatedscope/parse_exp_results.py --input out/${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_${mu[$s]}_prox.log >>out/final_${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_prox.out 2>&1 +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_hpo.sh b/scripts/gnn_exp_scripts/run_hpo.sh new file mode 100755 index 000000000..24a53162d --- /dev/null +++ b/scripts/gnn_exp_scripts/run_hpo.sh @@ -0,0 +1,27 @@ +set -e + +cudaid=$1 +dataset=$2 + +if [ ! -d "hpo_${dataset}" ];then + mkdir hpo_${dataset} +fi + +if [ ! -d "hpo" ];then + mkdir hpo +fi + +rs=(1 2 4 8) +samples=(1 2 4 5) + +for (( s=0; s<${#samples[@]}; s++ )) +do + for (( r=0; r<${#rs[@]}; r++ )) + do + for k in {1..5} + do + python federatedscope/hpo.py --cfg federatedscope/gfl/baseline/fedavg_gnn_node_fullbatch_citation.yaml federate.sample_client_num ${samples[$s]} device ${cudaid} data.type ${dataset} hpo.r ${rs[$r]} seed $k >>hpo/hpo_on_${dataset}_${rs[$r]}_sample${samples[$s]}.log 2>&1 + rm hpo_${dataset}/* + done + done +done \ No newline at end of file diff --git a/scripts/gnn_exp_scripts/run_link_level.sh b/scripts/gnn_exp_scripts/run_link_level.sh new file mode 100755 index 000000000..50bd50560 --- /dev/null +++ b/scripts/gnn_exp_scripts/run_link_level.sh @@ -0,0 +1,53 @@ +set -e + +cudaid=$1 +dataset=$2 +splitter=$3 + +if [ ! -d "out" ];then + mkdir out +fi + +if [[ $dataset = 'ciao' ]]; then + out_channels=6 + hidden=64 +elif [[ $dataset = 'epinions' ]]; then + out_channels=5 + hidden=64 +else + out_channels=4 + hidden=1024 +fi + +echo "HPO starts..." + +gnns=('gcn' 'sage' 'gat' 'gpr') +lrs=(0.01 0.05 0.25) +local_updates=(1 4 16) + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gcn_minibatch_on_taobao.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lrs[$i]} federate.local_update_steps ${local_updates[$j]} model.type ${gnns[$g]} model.out_channels ${out_channels} model.hidden ${hidden} seed $k >>out/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log 2>&1 + done + done + done +done + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + python federatedscope/parse_exp_results.py --input out/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log + done + done +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_link_level_KG.sh b/scripts/gnn_exp_scripts/run_link_level_KG.sh new file mode 100755 index 000000000..d2bc8238f --- /dev/null +++ b/scripts/gnn_exp_scripts/run_link_level_KG.sh @@ -0,0 +1,53 @@ +set -e + +cudaid=$1 +dataset=$2 +splitter=$3 + +if [ ! -d "out" ];then + mkdir out +fi + +if [[ $dataset = 'fb15k-237' ]]; then + out_channels=237 + hidden=64 +elif [[ $dataset = 'wn18' ]]; then + out_channels=18 + hidden=64 +else + out_channels=4 + hidden=1024 +fi + +echo "HPO starts..." + +gnns=('gcn' 'sage' 'gat' 'gpr') +lrs=(0.01 0.05 0.25) +local_updates=(1 4 16) + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gcn_minibatch_on_kg.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lrs[$i]} federate.local_update_steps ${local_updates[$j]} model.type ${gnns[$g]} model.out_channels ${out_channels} model.hidden ${hidden} seed $k >>out/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log 2>&1 + done + done + done +done + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + python federatedscope/parse_exp_results.py --input out/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log + done + done +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_link_level_opt.sh b/scripts/gnn_exp_scripts/run_link_level_opt.sh new file mode 100644 index 000000000..38b3e169b --- /dev/null +++ b/scripts/gnn_exp_scripts/run_link_level_opt.sh @@ -0,0 +1,48 @@ +set -e + +cudaid=$1 +dataset=$2 +splitter=$3 +gnn=$4 +lr=$5 +local_update=$6 + +if [ ! -d "out" ];then + mkdir out +fi + +if [[ $dataset = 'fb15k-237' ]]; then + out_channels=237 + hidden=64 +elif [[ $dataset = 'wn18' ]]; then + out_channels=18 + hidden=64 +else + out_channels=4 + hidden=1024 +fi + +if [[ $gnn = 'gpr' ]]; then + layer=10 +else + layer=2 +fi + +echo "HPO starts..." + +lr_servers=(0.5 0.1) + +for (( s=0; s<${#lr_servers[@]}; s++ )) +do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gcn_fullbatch_on_kg.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lr} federate.local_update_steps ${local_update} model.type ${gnn} model.out_channels ${out_channels} model.hidden ${hidden} seed $k federate.method FedOpt fedopt.optimizer.lr ${lr_servers[$s]} model.layer ${layer} >>out/${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_${lr_servers[$s]}_opt.log 2>&1 + done +done + +for (( s=0; s<${#lr_servers[@]}; s++ )) +do + python federatedscope/parse_exp_results.py --input out/${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_${lr_servers[$s]}_opt.log >>out/final_${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_opt.out 2>&1 +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_link_level_prox.sh b/scripts/gnn_exp_scripts/run_link_level_prox.sh new file mode 100644 index 000000000..bab3ebc40 --- /dev/null +++ b/scripts/gnn_exp_scripts/run_link_level_prox.sh @@ -0,0 +1,48 @@ +set -e + +cudaid=$1 +dataset=$2 +splitter=$3 +gnn=$4 +lr=$5 +local_update=$6 + +if [ ! -d "out" ];then + mkdir out +fi + +if [[ $dataset = 'fb15k-237' ]]; then + out_channels=237 + hidden=64 +elif [[ $dataset = 'wn18' ]]; then + out_channels=18 + hidden=64 +else + out_channels=4 + hidden=1024 +fi + +if [[ $gnn = 'gpr' ]]; then + layer=10 +else + layer=2 +fi + +echo "HPO starts..." + +mu=(0.1 1.0 5.0) + +for (( s=0; s<${#mu[@]}; s++ )) +do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gcn_fullbatch_on_kg.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lr} federate.local_update_steps ${local_update} model.type ${gnn} model.out_channels ${out_channels} model.hidden ${hidden} seed $k fedprox.use True fedprox.mu ${mu[$s]} model.layer ${layer} >>out/${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_${mu[$s]}_prox.log 2>&1 + done +done + +for (( s=0; s<${#mu[@]}; s++ )) +do + python federatedscope/parse_exp_results.py --input out/${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_${mu[$s]}_prox.log >>out/final_${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_prox.out 2>&1 +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_multi_opt.sh b/scripts/gnn_exp_scripts/run_multi_opt.sh new file mode 100644 index 000000000..92aa64cce --- /dev/null +++ b/scripts/gnn_exp_scripts/run_multi_opt.sh @@ -0,0 +1,46 @@ +set -e + +cudaid=$1 +dname=$2 +gnn=$3 +lr=$4 +local_update=$5 + +if [[ $dname = 'mol' ]]; then + dataset='graph_multi_domain_mol' +elif [[ $dname = 'mix' ]]; then + dataset='graph_multi_domain_mix' +elif [[ $dname = 'biochem' ]]; then + dataset='graph_multi_domain_biochem' +elif [[ $dname = 'v1' ]]; then + dataset='graph_multi_domain_kddcupv1' +else + dataset='graph_multi_domain_small' +fi + +if [ ! -d "out" ];then + mkdir out +fi + +out_channels=0 +hidden=64 +splitter='ooxx' + +echo "HPO starts..." + +lr_servers=(0.5 0.1) + +for (( s=0; s<${#lr_servers[@]}; s++ )) +do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gnn_minibatch_on_multi_task.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lr} federate.local_update_steps ${local_update} model.type ${gnn} model.out_channels ${out_channels} model.hidden ${hidden} seed $k federate.method FedOpt fedopt.optimizer.lr ${lr_servers[$s]} >>out/${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_${lr_servers[$s]}_opt.log 2>&1 + done +done + +for (( s=0; s<${#lr_servers[@]}; s++ )) +do + python federatedscope/parse_exp_results.py --input out/${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_${lr_servers[$s]}_opt.log >>out/final_${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_opt.out 2>&1 +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_multi_prox.sh b/scripts/gnn_exp_scripts/run_multi_prox.sh new file mode 100644 index 000000000..dbc0d033c --- /dev/null +++ b/scripts/gnn_exp_scripts/run_multi_prox.sh @@ -0,0 +1,47 @@ +set -e + +cudaid=$1 +dname=$2 +gnn=$3 +lr=$4 +local_update=$5 + +if [[ $dname = 'mol' ]]; then + dataset='graph_multi_domain_mol' +elif [[ $dname = 'mix' ]]; then + dataset='graph_multi_domain_mix' +elif [[ $dname = 'biochem' ]]; then + dataset='graph_multi_domain_biochem' +elif [[ $dname = 'v1' ]]; then + dataset='graph_multi_domain_kddcupv1' +else + dataset='graph_multi_domain_small' +fi + +if [ ! -d "out" ];then + mkdir out +fi + +out_channels=0 +hidden=64 +splitter='ooxx' + + +echo "HPO starts..." + +mu=(0.1 1.0 5.0) + +for (( s=0; s<${#mu[@]}; s++ )) +do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gnn_minibatch_on_multi_task.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lr} federate.local_update_steps ${local_update} model.type ${gnn} model.out_channels ${out_channels} model.hidden ${hidden} seed $k fedprox.use True fedprox.mu ${mu[$s]} >>out/${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_${mu[$s]}_prox.log 2>&1 + done +done + +for (( s=0; s<${#mu[@]}; s++ )) +do + python federatedscope/parse_exp_results.py --input out/${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_${mu[$s]}_prox.log >>out/final_${gnn}_${lr}_${local_update}_on_${dataset}_${splitter}_prox.out 2>&1 +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_node_level.sh b/scripts/gnn_exp_scripts/run_node_level.sh new file mode 100755 index 000000000..3edd0c1a5 --- /dev/null +++ b/scripts/gnn_exp_scripts/run_node_level.sh @@ -0,0 +1,56 @@ +set -e + +cudaid=$1 +dataset=$2 +splitter=$3 + +if [ ! -d "out" ];then + mkdir out +fi + +if [[ $dataset = 'cora' ]]; then + out_channels=7 + hidden=64 +elif [[ $dataset = 'citeseer' ]]; then + out_channels=6 + hidden=64 +elif [[ $dataset = 'pubmed' ]]; then + out_channels=5 + hidden=64 +else + out_channels=4 + hidden=1024 +fi + +echo "HPO starts..." + +gnns=('gcn' 'sage' 'gat' 'gpr') +lrs=(0.01 0.05 0.25) +local_updates=(1 4 16) + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + for k in {1..5} + do + python federatedscope/main.py --cfg federatedscope/gfl/baseline/fedavg_gnn_node_fullbatch_citation.yaml device ${cudaid} data.type ${dataset} data.splitter ${splitter} optimizer.lr ${lrs[$i]} federate.local_update_steps ${local_updates[$j]} model.type ${gnns[$g]} model.out_channels ${out_channels} model.hidden ${hidden} seed $k >>out/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log 2>&1 + done + done + done +done + +for (( g=0; g<${#gnns[@]}; g++ )) +do + for (( i=0; i<${#lrs[@]}; i++ )) + do + for (( j=0; j<${#local_updates[@]}; j++ )) + do + python federatedscope/parse_exp_results.py --input out/${gnns[$g]}_${lrs[$i]}_${local_updates[$j]}_on_${dataset}_${splitter}.log + done + done +done + +echo "HPO ends." diff --git a/scripts/gnn_exp_scripts/run_node_level_hpo.sh b/scripts/gnn_exp_scripts/run_node_level_hpo.sh new file mode 100755 index 000000000..d9b6bdc4b --- /dev/null +++ b/scripts/gnn_exp_scripts/run_node_level_hpo.sh @@ -0,0 +1,109 @@ +set -e + +cudaid=$1 +dataset=$2 +gnn='gcn' + +if [ ! -d "out" ];then + mkdir out +fi + +if [[ $dataset = 'cora' ]]; then + out_channels=7 + hidden=64 + + num=16 + arry1=(0.5 0.0 0.25 16) + arry2=(0.5 0.0 0.01 16) + arry3=(0.0 0.0 0.01 1) + arry4=(0.0 0.0005 0.01 1) + arry5=(0.5 0.0 0.01 4) + arry6=(0.5 0.0 0.01 1) + arry7=(0.0 0.0 0.25 16) + arry8=(0.0 0.0005 0.25 1) + arry9=(0.5 0.0 0.05 1) + arry10=(0.5 0.0 0.25 4) + arry11=(0.0 0.0005 0.25 4) + arry12=(0.0 0.0005 0.01 4) + arry13=(0.5 0.0 0.25 1) + arry14=(0.0 0.0005 0.25 16) + arry15=(0.5 0.0 0.05 4) + arry16=(0.0 0.0005 0.01 16) + +elif [[ $dataset = 'citeseer' ]]; then + out_channels=6 + hidden=64 + + num=20 + arry1=(0.5 0.0 0.01 4) + arry2=(0.0 0.0005 0.01 1) + arry3=(0.5 0.0 0.05 4) + arry4=(0.5 0.0 0.25 1) + arry5=(0.0 0.0 0.05 16) + arry6=(0.0 0.0005 0.01 4) + arry7=(0.0 0.0005 0.05 1) + arry8=(0.0 0.0005 0.25 4) + arry9=(0.0 0.0005 0.05 16) + arry10=(0.0 0.0005 0.25 1) + arry11=(0.0 0.0 0.25 4) + arry12=(0.0 0.0 0.25 16) + arry13=(0.5 0.0 0.05 16) + arry14=(0.5 0.0 0.01 16) + arry15=(0.0 0.0 0.01 1) + arry16=(0.5 0.0 0.01 1) + arry17=(0.0 0.0005 0.05 4) + arry18=(0.0 0.0 0.25 1) + arry19=(0.0 0.0005 0.01 16) + arry20=(0.0 0.0 0.05 4) + +elif [[ $dataset = 'pubmed' ]]; then + out_channels=5 + hidden=64 + + num=15 + arry1=(0.5 0.0 0.05 1) + arry2=(0.5 0.0 0.01 16) + arry3=(0.0 0.0005 0.25 16) + arry4=(0.0 0.0005 0.01 4) + arry5=(0.5 0.0 0.25 4) + arry6=(0.5 0.0 0.25 16) + arry7=(0.0 0.0 0.25 4) + arry8=(0.0 0.0 0.01 1) + arry9=(0.0 0.0 0.05 1) + arry10=(0.0 0.0005 0.05 1) + arry11=(0.5 0.0 0.01 4) + arry12=(0.0 0.0 0.01 4) + arry13=(0.5 0.0 0.25 1) + arry14=(0.0 0.0005 0.01 1) + arry15=(0.5 0.0 0.01 1) + +else + out_channels=4 + hidden=1024 +fi + +echo "HPO starts..." + + +for (( i=1; i>out/${gnn}_${dropout}_${wd}_${lr}_${local_update}_on_${dataset}.log 2>&1 + done +done + +for (( i=1; i

    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 literal 0 HcmV?d00001 diff --git a/rar/license.txt b/rar/license.txt new file mode 100644 index 000000000..82af4af51 --- /dev/null +++ b/rar/license.txt @@ -0,0 +1,127 @@ + END USER LICENSE AGREEMENT + + The following agreement regarding RAR (and its Windows version - WinRAR) + archiver - referred to as "software" - is made between win.rar GmbH - + referred to as "licensor" - and anyone who is installing, accessing + or in any other way using the software - referred to as "user". + + 1. The author and holder of the copyright of the software is + Alexander L. Roshal. The licensor and as such issuer of the license + and bearer of the worldwide exclusive usage rights including the rights + to reproduce, distribute and make the software available to the public + in any form is win.rar GmbH, Marienstr. 12, 10117 Berlin, Germany. + + 2. The software is distributed as try before you buy. This means that + anyone may use the software during a test period of a maximum of 40 days + at no charge. Following this test period, the user must purchase + a license to continue using the software. + + 3. The software's trial version may be freely distributed, with exceptions + noted below, provided the distribution package is not modified in any way. + + a. Nobody may distribute separate parts of the package, with the exception + of the UnRAR components, without written permission. + + b. The software's unlicensed trial version may not be distributed + inside of any other software package without written permission. + The software must remain in the original unmodified installation + file for download without any barrier and conditions to the user + such as collecting fees for the download or making the download + conditional on the user giving his contact data. + + c. The unmodified installation file of WinRAR must be provided pure + and unpaired. Any bundling is interdicted. In particular the use + of any install or download software which is providing any kind + of download bundles is prohibited unless granted by win.rar GmbH + in written form. + + d. Hacks/cracks, keys or key generators may not be included, pointed to + or referred to by the distributor of the trial version. + + e. In case of violation of the precedent conditions the allowance + lapses immediately and automatically. + + 4. The trial version of the software can display a registration reminder + dialog. Depending on the software version and configuration such dialog + can contain either a predefined text and links loaded locally + or a web page loaded from the internet. Such web page can contain + licensing instructions or other materials according to the licensor's + choice, including advertisement. When opening a web page, the software + transfers only those parameters which are technically required + by HTTP protocol to successfully open a web page in a browser. + + 5. The software is distributed "as is". No warranty of any kind is expressed + or implied. You use at your own risk. Neither the author, the licensor + nor the agents of the licensor will be liable for data loss, damages, + loss of profits or any other kind of loss while using or misusing + this software. + + 6. There are 2 basic types of licenses issued for the software. These are: + + a. A single computer usage license. The user purchases one license to + use the software on one computer. + + Home users may use their single computer usage license on all + computers and mobile devices (USB drive, external hard drive, etc.) + which are property of the license owner. + + Business users require one license per computer or mobile device + on which the software is installed. + + b. A multiple usage license. The user purchases a number of usage + licenses for use, by the purchaser or the purchaser's employees + on the same number of computers. + + In a network (server/client) environment the user must purchase + a license copy for each separate client (workstation) on which + the software is installed, used or accessed. A separate license copy + for each client (workstation) is needed regardless of whether + the clients (workstations) will use the software simultaneously + or at different times. If for example you wish to have 9 different + clients (workstations) in your network with access to RAR, + you must purchase 9 license copies. + + A user who purchased a license, is granted a non-exclusive right to use + the software on as many computers as defined by the licensing terms above + according to the number of licenses purchased, for any legal purpose. + + 7. There are no additional license fees, apart from the cost of the license, + associated with the creation and distribution of RAR archives, + volumes, self-extracting archives or self-extracting volumes. + Owners of a license may use their copies of the software to produce + archives and self-extracting archives and to distribute those archives + free of any additional royalties. + + 8. The licensed software may not be rented or leased but may be permanently + transferred, in its entirety, if the recipient agrees to the terms of + this license. + + 9. To buy a license, please read the file order.htm provided with + the software for details. + + 10. You may not use, copy, emulate, clone, rent, lease, sell, modify, + decompile, disassemble, otherwise reverse engineer, or transfer + the licensed software, or any subset of the licensed software, + except as provided for in this agreement. Any such unauthorized use + shall result in immediate and automatic termination of this license + and may result in criminal and/or civil prosecution. + + Neither RAR binary code, WinRAR binary code, UnRAR source + or UnRAR binary code may be used or reverse engineered to re-create + the RAR compression algorithm, which is proprietary, without written + permission. + + The software may be using components developed and/or copyrighted + by third parties. Please read "Acknowledgments" help file topic + for WinRAR or acknow.txt text file for other RAR versions for details. + + 11. This License Agreement is construed solely and exclusively under + German law. If you are a merchant, the courts at the registered office + of win.rar GmbH in Berlin/Germany shall have exclusive jurisdiction + for any and all disputes arising in connection with this License + Agreement or its validity. + + 12. Installing and using the software signifies acceptance of these terms + and conditions of the license. If you do not agree with the terms of this + license, you must remove all software files from your storage devices + and cease to use the software. diff --git a/rar/makefile b/rar/makefile new file mode 100644 index 000000000..d4798c8af --- /dev/null +++ b/rar/makefile @@ -0,0 +1,13 @@ +################################################################### +# Installing RAR executables, configuration files and SFX modules # +# to appropriate directories # +################################################################### + +PREFIX=/usr/local + +install: + mkdir -p $(PREFIX)/bin + mkdir -p $(PREFIX)/lib + cp rar unrar $(PREFIX)/bin + cp rarfiles.lst /etc + cp default.sfx $(PREFIX)/lib \ No newline at end of file diff --git a/rar/order.htm b/rar/order.htm new file mode 100644 index 000000000..8bd93144c --- /dev/null +++ b/rar/order.htm @@ -0,0 +1,85 @@ + + + + +How to buy WinRAR and RAR license + + + + + + + + +

  2. TjNcMNg<4&5HkN+C=VDZEmdir* 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 Vv$uA|BzerH-_89tZpN~0{|8V+)gu4^ literal 0 HcmV?d00001 diff --git a/paper_plot/results_all/ResNet18@cifar-10/FT_ASR.png b/paper_plot/results_all/ResNet18@cifar-10/FT_ASR.png new file mode 100644 index 0000000000000000000000000000000000000000..af5752ceb15fec1c58ec4b466287282fcc544dba GIT binary patch literal 193093 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