def _sum_securely(self, value, upper_bound, lower_bound): """Securely sums `value` placed at CLIENTS.""" if self._config_mode == _Config.INT: value = intrinsics.federated_map( _client_shift, (value, intrinsics.federated_broadcast(upper_bound), intrinsics.federated_broadcast(lower_bound))) value = intrinsics.federated_secure_sum(value, self._secagg_bitwidth) num_summands = intrinsics.federated_sum(_client_one()) value = intrinsics.federated_map( _server_shift, (value, lower_bound, num_summands)) return value elif self._config_mode == _Config.FLOAT: return federated_aggregations.secure_quantized_sum( value, lower_bound, upper_bound) else: raise ValueError( f'Unexpected internal config type: {self._config_mode}')
def call_secure_sum(value, lower_bound, upper_bound): with _hijack_federated_secure_sum(): summed_value = federated_aggregations.secure_quantized_sum( value, lower_bound, upper_bound) return summed_value
def call_secure_sum(value): # pylint: disable=unused-variable lower_bound = intrinsics.federated_value(0, placements.CLIENTS) upper_bound = intrinsics.federated_value(1, placements.CLIENTS) summed_value = federated_aggregations.secure_quantized_sum( value, lower_bound, upper_bound) return summed_value
def comp_tff_bounds(value, upper_bound, lower_bound): return federated_aggregations.secure_quantized_sum( value, upper_bound, lower_bound)
def comp_py_bounds(value): return federated_aggregations.secure_quantized_sum( value, np.array(-1.0, dtype.as_numpy_dtype), np.array(1.0, dtype.as_numpy_dtype))