gdpnum
Library for numerically computing the correct, non-asymptotic Gaussian Differential Privacy (GDP) guarantees for DP-SGD or similar privacy-preserving algorithms. Correct, non-asymptotic GDP accurately and faithfully represents the privacy guarantees of many practical algorithms with just a single mu parameter, enabling correct comparisons (unlike fixed epsilon/delta), and accurate conversions to interpretable notions of risk. See Gomez et al. (2026)1.
If you make use of the library or methods, please cite:
@inproceedings{gomez2026gaussian,
title={Gaussian DP for Reporting Differential Privacy Guarantees in Machine Learning},
author = {Gomez, Juan Felipe and Kulynych, Bogdan and Kaissis, Georgios and du Pin Calmon, Flavio and Hayes, Jamie and Balle, Borja and Honkela, Antti},
booktitle={2026 IEEE Conference on Secure and Trustworthy Machine Learning (SaTML)},
year={2026},
organization={IEEE}
}
Quickstart
You can install the library with pip:
pip install gdpnum
DP-SGD
To analyze DP-SGD, you can use:
import gdpnum
mu, regret = gdpnum.dpsgd.get_mu_and_regret_for_dpsgd(
noise_multiplier=9.4,
sample_rate=0.328,
num_steps=2000
)
# (1.5685621993129137, 0.0010208130697719753)
We get the numerically computed GDP mu parameter, and regret which shows the goodness-of-fit of the GDP.
The library also includes an Opacus-compatible accountant interface:
import gdpnum
acct = gdpnum.dpsgd.CTDAccountant()
acct.step(noise_multiplier=9.4, sample_rate=0.328)
acct.get_mu_and_regret()
General mechanisms
For general mechanisms, the library relies on the privacy loss distribution
objects from the dp_accounting package:
import gdpnum
pld = ...
converter = gdpnum.PLDConverter(pld)
mu, regret = converter.get_mu_and_regret()
See an example for the US Census TopDown mechanism in the notebooks folder.
To get the tabulation of the trade-off curve function at recommended values of alpha from the paper, simply run:
converter.get_beta()
Metadata
Release files for gdpnum 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gdpnum-0.1.2.tar.gz | 153.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gdpnum-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 164.3 kB
Release files / gdpnum-0.1.2.tar.gz
| Download URL | gdpnum-0.1.2.tar.gz |
|---|---|
| Size | 153.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ed0a673e518f82d4806d7312d3f4e0dca45b5e427c48dc156bdcc0805fc935cc
|
|
BLAKE2b-256 checksum How to use checksums |
f69f8cc6901e77cfa45fb3e8370af3c36399993667cb49e43014ae173936d5e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.6
|
Release files / gdpnum-0.1.2-py3-none-any.whl
| Download URL | gdpnum-0.1.2-py3-none-any.whl |
|---|---|
| Size | 10.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dc5d6eb100dc69b1eeb036b93f82c166ff7aa72b82e5272f1c0e9a178c4c1d0a
|
|
BLAKE2b-256 checksum How to use checksums |
065ad01ba1a1f763c281826c98c5f6e5c90809fa825fbcfb343089686dc0cea2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.6
|