in flsim/trainers/sync_trainer.py [0:0]
def create_or_get_client_for_data(self, dataset_id: int, datasets: Any):
"""This function is used to create clients in a round. Thus, it
is called UPR * num_rounds times per training run. Here, we use
<code>OmegaConf.structured</code> instead of <code>hydra.instantiate</code>
to minimize the overhead of hydra object creation.
"""
if self.is_sample_level_dp:
client = DPClient(
# pyre-ignore[16]
**OmegaConf.structured(self.cfg.client),
dataset=datasets[dataset_id],
name=f"client_{dataset_id}",
timeout_simulator=self._timeout_simulator,
store_last_updated_model=self.cfg.report_client_metrics,
channel=self.channel,
cuda_manager=self._cuda_state_manager,
)
else:
client = Client(
**OmegaConf.structured(self.cfg.client),
dataset=datasets[dataset_id],
name=f"client_{dataset_id}",
timeout_simulator=self._timeout_simulator,
store_last_updated_model=self.cfg.report_client_metrics,
channel=self.channel,
cuda_manager=self._cuda_state_manager,
)
self.clients[dataset_id] = client
return self.clients[dataset_id]