Skip to content

Absolute budget per aggregation #265

Open
@dvadym

Description

@dvadym

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).

Metadata

Metadata

Labels

Good first issue 🎓Perfect for beginners, welcome to OpenMined!Type: New Feature ➕Introduction of a completely new addition to the codebase

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions