def sync_random_padding(job_id, role, ind, *args):
    if role == consts.ARBITER:
        rp_cipher = random_padding_cipher.Server()
        rp_cipher.exchange_secret_keys()
        return

    elif role == consts.HOST:
        rp_cipher = random_padding_cipher.Client()
        rp_cipher.create_cipher()
        return rp_cipher
    else:
        rp_cipher = random_padding_cipher.Client()
        rp_cipher.create_cipher()
        return rp_cipher
Exemplo n.º 2
0
 def __init__(
         self,
         trans_var: SecureAggregatorTransVar = SecureAggregatorTransVar(),
         enable_secure_aggregate=True):
     self.enable_secure_aggregate = enable_secure_aggregate
     self._aggregator = aggregator.Client(
         trans_var=trans_var.aggregator_trans_var)
     if enable_secure_aggregate:
         self._random_padding_cipher: PadsCipher = \
             random_padding_cipher.Client(trans_var=trans_var.random_padding_cipher_trans_var).create_cipher()
Exemplo n.º 3
0
    def __init__(self, trans_var=LegacyAggregatorTransVar()):
        self._enable_secure_aggregate = False

        self._loss_sync = loss_scatter.Client(trans_var.loss_scatter)
        self._converge_sync = has_converged.Client(trans_var.has_converged)
        self._model_scatter = model_scatter.Client(trans_var.model_scatter)
        self._model_broadcaster = model_broadcaster.Client(
            trans_var.model_broadcaster)
        self._random_padding_cipher = random_padding_cipher.Client(
            trans_var.random_padding_cipher)
Exemplo n.º 4
0
    def __init__(self, max_num_aggregation, aggregate_every_n_epoch, name="default"):
        super(PyTorchSAClientContext, self).__init__(
            max_num_aggregation=max_num_aggregation, name=name
        )
        self.transfer_variable = SecureAggregatorTransVar()
        self.aggregator = aggregator.Client(self.transfer_variable.aggregator_trans_var)
        self.random_padding_cipher = random_padding_cipher.Client(
            self.transfer_variable.random_padding_cipher_trans_var
        )
        self.aggregate_every_n_epoch = aggregate_every_n_epoch
        self._params: list = None

        self._should_stop = False
        self.loss_summary = []