Skip to content

Commit 275640f

Browse files
committed
add FOR_GLOBAL_MODEL_KEY in config.utils
1 parent 3dab0d4 commit 275640f

3 files changed

Lines changed: 13 additions & 2 deletions

File tree

fl4health/clients/nnunet_client.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import copy
12
import gc
23
import logging
34
import os
@@ -27,7 +28,7 @@
2728
from fl4health.metrics.base_metrics import Metric
2829
from fl4health.metrics.metric_managers import MetricManager
2930
from fl4health.reporting.base_reporter import BaseReporter
30-
from fl4health.utils.config import narrow_dict_type
31+
from fl4health.utils.config import FOR_GLOBAL_MODEL_KEY, narrow_dict_type
3132
from fl4health.utils.logging import LoggingMode
3233
from fl4health.utils.losses import LossMeterType, TrainingLosses
3334
from fl4health.utils.nnunet_utils import (
@@ -315,6 +316,13 @@ def get_data_loaders(self, config: Config) -> tuple[DataLoader, DataLoader]:
315316
return train_loader, val_loader
316317

317318
def get_model(self, config: Config) -> nn.Module:
319+
320+
for_global = config.get(FOR_GLOBAL_MODEL_KEY, False)
321+
if for_global:
322+
return copy.deepcopy(self.nnunet_trainer.network)
323+
else:
324+
return self.nnunet_trainer.network
325+
318326
return self.nnunet_trainer.network
319327

320328
def get_criterion(self, config: Config) -> _Loss:

fl4health/mixins/personalized/ditto.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from fl4health.mixins.core_protocols import BasicClientProtocolPreSetup
1616
from fl4health.mixins.personalized.utils import ensure_protocol_compliance
1717
from fl4health.parameter_exchange.full_exchanger import FullParameterExchanger
18-
from fl4health.utils.config import narrow_dict_type
18+
from fl4health.utils.config import FOR_GLOBAL_MODEL_KEY, narrow_dict_type
1919
from fl4health.utils.losses import EvaluationLosses, TrainingLosses
2020
from fl4health.utils.typing import TorchFeatureType, TorchInputType, TorchPredType, TorchTargetType
2121

@@ -175,6 +175,7 @@ def get_global_model(self: DittoPersonalizedProtocol, config: Config) -> nn.Modu
175175
Returns:
176176
nn.Module: The PyTorch model serving as the global model for Ditto
177177
"""
178+
config[FOR_GLOBAL_MODEL_KEY] = True
178179
return self.get_model(config).to(self.device)
179180

180181
@ensure_protocol_compliance

fl4health/utils/config.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
"batch_size": int,
99
}
1010

11+
FOR_GLOBAL_MODEL_KEY = "__for_global_model"
12+
1113
T = TypeVar("T")
1214

1315

0 commit comments

Comments
 (0)