DP-λCGD¶
DP-λCGD (Kalinin et al., 2026) is a correlated noise mechanism that uses a single parameter \(\lambda \in [0, 1)\) to control noise correlation across training steps. Its key advantage is zero extra memory — noise correlation is achieved via PRNG seed replay instead of storing previous noise vectors.
- Paper: DP-λCGD: Efficient Noise Correlation for Differentially Private Model Training
- Strategy matrix: Lower-triangular Toeplitz with entries \(C_{i,j} = \lambda^{i-j}\)
- Inverse: Bidiagonal — 1 on the diagonal, \(-\lambda\) on the subdiagonal (bandwidth 2)
- Memory: Zero extra (PRNG replay regenerates previous noise from its seed)
- Amplification: Balls-in-Bins (BnB) with MC dominating pair accounting
Accounting¶
The noise strategy and the privacy accounting are connected through two
values that the strategy computes: sensitivity and gram_matrix. The strategy
is a recipe for C; the amplifier supplies the participation pattern and horizon
when it derives those values.
This separation keeps accounting constructors simple and avoids duplicating mechanism parameters in two places.
from opake.dpftrl.noise import lambda_cgd_strategy
import opake.accounting as acc # cross-cutting balls_in_bins
import opake.dpftrl.accounting as dpftrl_acc # DP-FTRL factories
# 1. Create a strategy recipe
strategy = lambda_cgd_strategy(lambda_=0.9)
# 2. The amplifier supplies n_steps and the participation geometry
training = dpftrl_acc.balls_in_bins(
dpftrl_acc.mf_gaussian(noise_multiplier, strategy),
num_bins=steps_per_epoch,
n_steps=steps_per_epoch * num_epochs,
)
eps = training.epsilon_at(1e-5)
Strategy parameters¶
| Parameter | Description |
|---|---|
lambda_ |
Correlation coefficient in \([0, 1)\). \(\lambda = 0\) is DP-SGD. |
normalized |
Column-normalize C (default True, gives sensitivity=1 for k=1) |
lr_schedule |
Deprecated compatibility argument; only None is accepted |
Amplifier and accounting parameters¶
| Parameter | Description |
|---|---|
noise_multiplier |
Raw noise σ (calibrated or fixed) |
n_steps |
Total training steps; supplied by the amplifier |
num_bins |
Steps per epoch; determines minimum separation and participation count |
Sensitivity¶
The sensitivity and Balls-in-Bins Gram depend only on the strategy matrix C,
not on the optimizer workload. Learning-rate schedules belong to the optimizer
and are deterministic post-processing of the private mechanism; they must not
weight the privacy Gram. For the unnormalized Toeplitz strategy, Theorem 1 and
Appendix C, equations (15)-(16) of arXiv v1 give the closed form in terms of λ,
min_sep, and max_participations. The normalized default is not Toeplitz; its
sensitivity is covered separately by Lemma 8, equation (12) of the current
arXiv v2 and is computed from normalized column inner products.
Assumptions and limitations¶
- Bandwidth is fixed (bidiagonal inverse); correlation is controlled by a single \(\lambda\). Does not accept
momentum(usebisr_strategywith bandwidth > 2 for momentum-aware coefficients). - Learning-rate schedules are not strategy parameters. The temporary
lr_schedulecompatibility argument rejects non-Nonevalues; pass the schedule only to the optimizer. - Uses Balls-in-Bins amplification like other epoch-structured MF mechanisms; sampler semantics must match accounting.
- Private second moments (DP-Adam): auto-deriving the second-moment strategy is not supported for λCGD. Pass
second_moment_strategyexplicitly. - Broader MF context: Correlated noise (DP-FTRL).
Noise generation¶
from opake.dpftrl.noise import mf_gaussian_noise, lambda_cgd_strategy
from opake.random import key
strategy = lambda_cgd_strategy(lambda_=0.9)
noise_fn, state = mf_gaussian_noise(
grad_template, strategy,
n_steps=total_steps,
min_sep=steps_per_epoch,
max_participations=num_epochs,
noise_multiplier=noise_multiplier,
key=key(seed),
)
At each step t, the noise function: 1. Generates z_t from step t's PRNG seed 2. Regenerates z_{t-1} from step t-1's PRNG seed (PRNG replay) 3. Computes correlated noise: n_t = z_t - λ · z_{t-1} 4. Optionally applies column-norm scaling: n_t *= d_t
Relationship to BISR¶
DP-λCGD is the bandwidth-2 special case of BISR. For bandwidth > 2,
use bisr_strategy(...), which generalizes the correlation structure.