Context
The workflow for computing DP aggregations with PipelineDP is the following (not important here steps are missing, the full example):
# Define the total budget.
budget_accountant = pipeline_dp.NaiveBudgetAccountant(total_epsilon=1, total_delta=1e-6)
dp_engine = pipepine_dp.DPEngine(budget_accountant, ...)
dp_result1 = dp_engine.aggregate(input_data, params1, ...)
dp_result2 = dp_engine.aggregate(input_data, params2, ...)
...
# Compute budget per each DP operation.
budget_accountant.compute_budgets()
DPEngine.aggregate is API function that performs DP aggregation. Now the only way to specify how to split budget over multiple aggregation budget_weight field. The idea is that the aggregation gets the budget proportional to the weigh (sum of weight is not necessary 1).
Another downside is that budget_accountant.compute_budgets() splits the whole available budget, so it might be called only once.
Goal
To introduce the way to request an absolute budget (i.e. (epsilon, delta) per aggregation).
Context
The workflow for computing DP aggregations with PipelineDP is the following (not important here steps are missing, the full example):
DPEngine.aggregate is API function that performs DP aggregation. Now the only way to specify how to split budget over multiple aggregation budget_weight field. The idea is that the aggregation gets the budget proportional to the weigh (sum of weight is not necessary 1).
Another downside is that
budget_accountant.compute_budgets()splits the whole available budget, so it might be called only once.Goal
To introduce the way to request an absolute budget (i.e.
(epsilon, delta)per aggregation).