Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

DP: default noise_multiplier (σ = 5.0 at clipping_norm 10) reduces the reference model to chance accuracy once DP is enabled

未关闭
#299 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
python

调研方向

Start with tests/test_cache_client_dp.py and the test_manifest_dp_full_noise_impact test, then read cache_model_0/manifest.json and Documentation/public/manifest.md for the shipped DP settings. The issue presents a documentation-only interim option and an accountant-dependent option; the latter needs the DP specialist's input on issue No. 279. Done means documenting the measured utility impact without making an ε claim, or agreeing on an accountant-backed setting and updating the test.

由索引模型根据 Issue 内容生成。

描述

Summary

With the reference manifest's DP block switched on, the default noise wipes out the model. cache_model_0/manifest.json ships noise_multiplier: 0.5 with clipping_norm: 10.0 (raised from 1.0 by PR No. 263 / issue No. 247). The noise scale is noise_multiplier × clipping_norm, so σ = 5.0 per coordinate, and accuracy falls to chance:

Source Baseline Clip only Clip + default noise
PR No. 263 tests (seed 42, 2,000 samples from dataset/test/test_dataset.pt, reproducible) 0.860 0.860 0.120
PR No. 293 write-up (separate experiment, script not committed) 85.25% 85–86% ~13%, at every clipping_norm from 1 to 20, and for update_gaussian too

DP is "enabled": false by default, so nothing breaks today. But a model owner who turns DP on with the shipped parameters gets a useless model and no warning.

Why

Noise is added independently to every floating coordinate. For a model with D parameters, the total noise norm grows as σ·√D. cache_model_0's MLP has ~109K parameters (√D ≈ 330), so the noise swamps the signal regardless of how well clipping_norm is tuned. Raising clipping_norm to stop over-clipping (PR No. 263) also raised σ by the same factor. PR No. 293's sweep (not reproduced here) only recovers utility at noise_multiplier ≈ 0.001.

The current test pins this behaviour rather than flagging it: test_manifest_dp_full_noise_impact (tests/test_cache_client_dp.py) asserts dp_acc < baseline_acc - 0.3. Its docstring already suggests ~0.05 "would restore σ≈0.5" but leaves the choice open.

What needs deciding

Picking noise_multiplier is a privacy-budget decision, not a tuning knob. Documentation/technical/audits/dp-mechanism-review.md puts accountant integration (item 3) and DP-SGD (item 4) ahead of any ε claim. So the options are:

  1. Interim (docs/manifest only): keep DP off by default, but warn clearly in Documentation/public/manifest.md and the manifest example that the shipped noise_multiplier gives no utility for cache_model_0, and give a measured utility-vs-noise table. No ε claim.
  2. With the accountant (issue No. 279 / review item 3): choose a default noise_multiplier together with a reported (ε, δ) and a measured accuracy, and update test_manifest_dp_full_noise_impact to assert acceptable utility at that setting.

Option 1 can land now. Option 2 needs the DP specialist's input on issue No. 279.

References

  • Issue No. 247 (closed), PR No. 263: clipping_norm retune and the real-weight accuracy tests
  • PR No. 293: noise_multiplier sweep (Finding 2), changes requested
  • Issue No. 279: DP mechanism fixes, DP specialist tagged
  • cache_model_0/manifest.json dp.parameters; Documentation/public/manifest.md "Choosing clipping_norm"
主要语言
Python
星标
4
派生
7
平均合并
3 天 4 小时
30 天内合并 PR
34

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

InfiniteZeroFoundation/DevNet 的其他 Issue

查看 InfiniteZeroFoundation/DevNet 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。