Skip to content

WIP: Differential privacy for aggregates - add dp_laplace and dp_gaussian built-in functions with budget accounting#2539

Draft
andersonm-ibm wants to merge 20 commits into
apache:mainfrom
andersonm-ibm:diff_privacy_pub
Draft

WIP: Differential privacy for aggregates - add dp_laplace and dp_gaussian built-in functions with budget accounting#2539
andersonm-ibm wants to merge 20 commits into
apache:mainfrom
andersonm-ibm:diff_privacy_pub

Conversation

@andersonm-ibm

Copy link
Copy Markdown
  • Add two native DML built-ins for differentially private aggregate release:
result = dp_laplace(X, sensitivity, epsilon)
result = dp_gaussian(X, sensitivity, epsilon, delta)
  • Wire them through the full compilation pipeline:
    Builtins → BuiltinFunctionExpression → ParameterizedBuiltinOp HOP → ParameterizedBuiltin LOP → DPBuiltinCPInstruction.

  • Introduce DPBudgetAccountant, a session-scoped privacy budget tracker stored on ExecutionContext. Laplace releases use exact pure-ε composition; Gaussian releases use Rényi DP composition (Mironov 2017) with RDP → (ε,δ) conversion for tighter bounds. Raises DMLRuntimeException if cumulative spend exceeds the budget.

  • Unit tests covering constructor validation, Laplace/Gaussian composition, budget exhaustion for both mechanisms, mixed composition, release counting, and RDP mathematical invariants (sensitivity cancellation, ε-monotonicity).

  • End-to-end DML integration tests in DPBuiltinDMLTest verify noisy output differs from clean means by a statistically plausible amount.

CC @ywcb00

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

1 participant