in flsim/privacy/privacy_engine.py [0:0]
def get_privacy_spent(self, target_delta: Optional[float] = None):
if target_delta is None:
target_delta = self.target_delta
rdp = privacy_analysis.compute_rdp(
q=self.user_sampling_rate,
noise_multiplier=self.noise_multiplier,
steps=self.steps,
orders=self.alphas,
)
eps, opt_alpha = privacy_analysis.get_privacy_spent(
orders=self.alphas, rdp=rdp, delta=target_delta
)
self.logger.info(
f"User-level DP Privacy Parameters:"
f"\tuser sampling rate = {100 * self.user_sampling_rate:.3g}%"
f"\tnoise_multiplier = {self.noise_multiplier}"
f"\tsteps = {self.steps}\n satisfies "
f"DP with Ɛ = {eps:.3g} "
f"and δ = {target_delta}."
f" The optimal α is {opt_alpha}."
)
if opt_alpha == max(self.alphas) or opt_alpha == min(self.alphas):
self.logger.info(
"The privacy estimate is likely to be improved by expanding "
"the set of alpha orders."
)
return PrivacyBudget(eps, opt_alpha, target_delta)