diff --git a/federatedscope/contrib/data/graph_dt.py b/federatedscope/contrib/data/graph_dt.py index f5a616b8f..32da30915 100644 --- a/federatedscope/contrib/data/graph_dt.py +++ b/federatedscope/contrib/data/graph_dt.py @@ -83,6 +83,7 @@ def __call__(self, data): class GraphDTDataset(InMemoryDataset): + inmemory_data = {} def __init__(self, root): self.root = root super().__init__(root) @@ -177,7 +178,7 @@ def process(self): os.makedirs(os.path.join(self.processed_dir, str(idx))) train_path = os.path.join(self.processed_dir, str(idx), 'train.pt') - test_path = os.path.join(self.processed_dir, str(idx), 'train.pt') + test_path = os.path.join(self.processed_dir, str(idx), 'test.pt') valid_path = os.path.join(self.processed_dir, str(idx), 'val.pt') if idx == 1: @@ -258,12 +259,16 @@ def process(self): torch.save(pro_valid, valid_path) def __getitem__(self, idx): - data = {} - for split in ['train', 'val', 'test']: - split_data = self._load(idx, split) - if split_data: - data[split] = split_data - return data + if idx in self.inmemory_data: + return self.inmemory_data[idx] + else: + self.inmemory_data[idx] = {} + for split in ['train', 'val', 'test']: + split_data = self._load(idx, split) + if split_data: + self.inmemory_data[split] = split_data + return self.inmemory_data[idx] + def load_graph_dt_data(config): diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/cfg_per_client_ditto.yaml b/scripts/B-FHTL_exp_scripts/Graph-DT/cfg_per_client_ditto.yaml index 3dc0bb07b..15db590cf 100644 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/cfg_per_client_ditto.yaml +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/cfg_per_client_ditto.yaml @@ -5,10 +5,10 @@ client_1: criterion: type: MSELoss optimizer: - lr: 0.01 + lr: 0.05 grad_clip: 5.0 federate: - local_update_steps: 4 + local_update_steps: 50 client_2: model: out_channels: 1 @@ -16,9 +16,9 @@ client_2: criterion: type: MSELoss optimizer: - lr: 0.1 + lr: 0.05 federate: - local_update_steps: 2 + local_update_steps: 20 client_3: model: out_channels: 1 @@ -26,9 +26,9 @@ client_3: criterion: type: MSELoss optimizer: - lr: 0.1 + lr: 0.05 federate: - local_update_steps: 14 + local_update_steps: 20 client_4: model: out_channels: 2 @@ -36,9 +36,9 @@ client_4: criterion: type: CrossEntropyLoss optimizer: - lr: 0.01 + lr: 0.05 federate: - local_update_steps: 5 + local_update_steps: 20 client_5: model: out_channels: 2 @@ -48,7 +48,7 @@ client_5: optimizer: lr: 0.05 federate: - local_update_steps: 7 + local_update_steps: 20 client_6: model: out_channels: 2 @@ -58,7 +58,7 @@ client_6: optimizer: lr: 0.05 federate: - local_update_steps: 5 + local_update_steps: 10 client_7: model: out_channels: 2 @@ -108,7 +108,7 @@ client_11: optimizer: lr: 0.1 federate: - local_update_steps: 1 + local_update_steps: 5 client_12: model: out_channels: 2 @@ -116,7 +116,7 @@ client_12: criterion: type: CrossEntropyLoss optimizer: - lr: 0.05 + lr: 0.1 federate: local_update_steps: 14 client_13: @@ -136,7 +136,7 @@ client_14: criterion: type: MSELoss optimizer: - lr: 0.05 + lr: 0.1 federate: local_update_steps: 675 client_15: @@ -156,6 +156,6 @@ client_16: criterion: type: MSELoss optimizer: - lr: 0.05 + lr: 0.1 federate: local_update_steps: 431 \ No newline at end of file diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/ditto_gnn_minibatch_on_multi_task.yaml b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/ditto_gnn_minibatch_on_multi_task.yaml index 07d5197d7..9918f01e7 100644 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/ditto_gnn_minibatch_on_multi_task.yaml +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/ditto_gnn_minibatch_on_multi_task.yaml @@ -17,6 +17,7 @@ data: model: type: gin hidden: 64 + task: graph personalization: local_param: ['encoder_atom', 'encoder', 'clf'] # to handle size-different pre & post layers regular_weight: 0.01 diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedavg_ft_gnn_minibatch_on_multi_task.yaml b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedavg_ft_gnn_minibatch_on_multi_task.yaml index 769bb7fb4..4422b1b24 100644 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedavg_ft_gnn_minibatch_on_multi_task.yaml +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedavg_ft_gnn_minibatch_on_multi_task.yaml @@ -16,6 +16,7 @@ data: model: type: gin hidden: 64 + task: graph personalization: local_param: ['encoder_atom', 'encoder', 'clf'] # to handle size-different pre & post layers optimizer: diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedavg_gnn_minibatch_on_multi_task.yaml b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedavg_gnn_minibatch_on_multi_task.yaml index 368a304c9..6faee59ba 100644 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedavg_gnn_minibatch_on_multi_task.yaml +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedavg_gnn_minibatch_on_multi_task.yaml @@ -16,6 +16,7 @@ data: model: type: gin hidden: 64 + task: graph personalization: local_param: ['encoder_atom', 'encoder', 'clf'] # to handle size-different pre & post layers optimizer: diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedbn_ft_gnn_minibatch_on_multi_task.yaml b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedbn_ft_gnn_minibatch_on_multi_task.yaml index b2705a412..d21d0374a 100644 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedbn_ft_gnn_minibatch_on_multi_task.yaml +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedbn_ft_gnn_minibatch_on_multi_task.yaml @@ -16,6 +16,7 @@ data: model: type: gin hidden: 64 + task: graph personalization: local_param: [ 'encoder_atom', 'encoder', 'clf', 'norms' ] # pre, post + FedBN optimizer: diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedbn_gnn_minibatch_on_multi_task.yaml b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedbn_gnn_minibatch_on_multi_task.yaml index 6461d303a..b7b86517c 100644 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedbn_gnn_minibatch_on_multi_task.yaml +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedbn_gnn_minibatch_on_multi_task.yaml @@ -16,6 +16,7 @@ data: model: type: gin hidden: 64 + task: graph personalization: local_param: [ 'encoder_atom', 'encoder', 'clf', 'norms' ] # pre, post + FedBN optimizer: diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedmaml_gnn_minibatch_on_multi_task.yaml b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedmaml_gnn_minibatch_on_multi_task.yaml index 7f23a3f7e..c12ba5ca6 100644 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedmaml_gnn_minibatch_on_multi_task.yaml +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedmaml_gnn_minibatch_on_multi_task.yaml @@ -16,6 +16,7 @@ data: model: type: gin hidden: 64 + task: graph personalization: local_param: ['encoder_atom', 'encoder', 'clf'] # to handle size-different pre & post layers optimizer: diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedprox_gnn_minibatch_on_multi_task.yaml b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedprox_gnn_minibatch_on_multi_task.yaml index 44112bd25..66f1dc263 100644 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedprox_gnn_minibatch_on_multi_task.yaml +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedprox_gnn_minibatch_on_multi_task.yaml @@ -16,6 +16,7 @@ data: model: type: gin hidden: 64 + task: graph personalization: local_param: ['encoder_atom', 'encoder', 'clf'] # to handle size-different pre & post layers optimizer: diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_ditto.sh b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_ditto.sh index 79caf7802..5ed2ebb89 100755 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_ditto.sh +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_ditto.sh @@ -7,6 +7,7 @@ root=$2 dataset=graph-dt method=ditto outdir=exp_out/${method} +datelog=$(date '+%Y-%m-%d-%H-%M-%S') if [ ! -d ${outdir} ];then mkdir ${outdir} @@ -16,7 +17,7 @@ echo "HPO starts..." personalization_regular_weight=0.01 -log=${outdir}/gin_weight-${personalization_regular_weight}_on_${dataset}.log +log=${outdir}/gin_weight-${personalization_regular_weight}_on_${dataset}_${datelog}.log for k in {1..3} do python federatedscope/main.py --cfg scripts/B-FHTL_exp_scripts/Graph-DT/hpo/ditto_gnn_minibatch_on_multi_task.yaml \ diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedavg.sh b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedavg.sh index 36ac1e897..7c3c0f3d0 100755 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedavg.sh +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedavg.sh @@ -7,6 +7,7 @@ root=$2 dataset=graph-dt method=fedavg outdir=exp_out/${method} +datelog=$(date '+%Y-%m-%d-%H-%M-%S') if [ ! -d ${outdir} ];then mkdir -p ${outdir} @@ -14,7 +15,7 @@ fi echo "HPO starts..." -log=${outdir}/gin_on_${dataset}.log +log=${outdir}/gin_on_${dataset}_${datelog}.log for k in {1..3} do python federatedscope/main.py --cfg scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedavg_gnn_minibatch_on_multi_task.yaml \ diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedavg_ft.sh b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedavg_ft.sh index 09a376a1f..cf25245ed 100755 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedavg_ft.sh +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedavg_ft.sh @@ -7,6 +7,7 @@ root=$2 dataset=graph-dt method=fedavg_ft outdir=exp_out/${method} +datelog=$(date '+%Y-%m-%d-%H-%M-%S') if [ ! -d ${outdir} ];then mkdir -p ${outdir} @@ -16,7 +17,7 @@ echo "HPO starts..." step=1 -log=${outdir}/gin_lstep-${step}_on_${dataset}.log +log=${outdir}/gin_lstep-${step}_on_${dataset}_${datelog}.log for k in {1..3} do python federatedscope/main.py --cfg scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedavg_ft_gnn_minibatch_on_multi_task.yaml \ diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedbn.sh b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedbn.sh index e5783189c..e23866b37 100755 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedbn.sh +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedbn.sh @@ -7,6 +7,7 @@ root=$2 dataset=graph-dt method=fedbn outdir=exp_out/${method} +datelog=$(date '+%Y-%m-%d-%H-%M-%S') if [ ! -d ${outdir} ];then mkdir -p ${outdir} @@ -14,7 +15,7 @@ fi echo "HPO starts..." -log=${outdir}/gin_on_${dataset}.log +log=${outdir}/gin_on_${dataset}_${datelog}.log for k in {1..3} do python federatedscope/main.py --cfg scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedbn_gnn_minibatch_on_multi_task.yaml \ diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedbn_ft.sh b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedbn_ft.sh index 527234dad..4000b10f3 100755 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedbn_ft.sh +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedbn_ft.sh @@ -7,6 +7,7 @@ root=$2 dataset=graph-dt method=fedbn_ft outdir=exp_out/${method} +datelog=$(date '+%Y-%m-%d-%H-%M-%S') if [ ! -d ${outdir} ];then mkdir -p ${outdir} @@ -16,7 +17,7 @@ echo "HPO starts..." step=1 -log=${outdir}/gin_patience-0_lstep-${step}_on_${dataset}.log +log=${outdir}/gin_patience-0_lstep-${step}_on_${dataset}_${datelog}.log for k in {1..3} do python federatedscope/main.py --cfg scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedbn_ft_gnn_minibatch_on_multi_task.yaml \ diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedprox.sh b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedprox.sh index 7f1703a8f..a89cff0ca 100755 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedprox.sh +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_fedprox.sh @@ -7,6 +7,7 @@ root=$2 dataset=graph-dt method=fedprox outdir=exp_out/${method} +datelog=$(date '+%Y-%m-%d-%H-%M-%S') if [ ! -d ${outdir} ];then mkdir -p ${outdir} @@ -18,7 +19,7 @@ mus=(0.05) for (( im=0; im<${#mus[@]}; im++ )) do - log=${outdir}/gin_mu-${mus[$im]}_on_${dataset}.log + log=${outdir}/gin_mu-${mus[$im]}_on_${dataset}_${datelog}.log for k in {1..3} do python federatedscope/main.py --cfg scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedavg_gnn_minibatch_on_multi_task.yaml \ diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_isolated.sh b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_isolated.sh index 2fe43b1fb..a60b730f8 100755 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_isolated.sh +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_isolated.sh @@ -7,6 +7,7 @@ root=$2 dataset=graph-dt method=isolated outdir=exp_out/${method} +datelog=$(date '+%Y-%m-%d-%H-%M-%S') if [ ! -d ${outdir} ];then mkdir -p ${outdir} @@ -14,7 +15,7 @@ fi echo "HPO starts..." -log=${outdir}/gin_on_${dataset}.log +log=${outdir}/gin_on_${dataset}_${datelog}.log for k in {1..3} do python federatedscope/main.py --cfg scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedavg_gnn_minibatch_on_multi_task.yaml \ diff --git a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_maml.sh b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_maml.sh index 7b34d9892..1cb0916f8 100644 --- a/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_maml.sh +++ b/scripts/B-FHTL_exp_scripts/Graph-DT/hpo/run_contest_maml.sh @@ -7,6 +7,7 @@ root=$2 dataset=graph-dt method=maml outdir=exp_out/${method} +datelog=$(date '+%Y-%m-%d-%H-%M-%S') if [ ! -d ${outdir} ];then mkdir -p ${outdir} @@ -16,7 +17,7 @@ echo "HPO starts..." ft_step=10 -log=${outdir}/gin_mstep-${ft_step}_on_${dataset}.log +log=${outdir}/gin_mstep-${ft_step}_on_${dataset}_${datelog}.log for k in {1..3} do python federatedscope/main.py --cfg scripts/B-FHTL_exp_scripts/Graph-DT/hpo/fedmaml_gnn_minibatch_on_multi_task.yaml \