This repository implements Questions 1 to 5 from the CS729 Differential Privacy in Machine Learning assignment using PyTorch, Opacus, and a shared MNIST training pipeline.
- Python:
3.11.0 - GPU tested:
NVIDIA GeForce RTX 4060 Laptop GPU - Core libraries:
torch==2.11.0+cu126torchvision==0.26.0+cu126opacus==1.5.4numpy==2.4.3pandas==3.0.2matplotlib==3.10.8seaborn==0.13.2scikit-learn==1.8.0tqdm==4.67.3tensorboard==2.20.0
python -m venv .venv
.\.venv\Scripts\python -m pip install --upgrade pip
.\.venv\Scripts\python -m pip install torch torchvision --index-url https://download.pytorch.org/whl/cu126
.\.venv\Scripts\python -m pip install -r requirements.txtEach question writes outputs under outputs/qX/ with:
config.jsonmetrics.csvsummary.json- plots in
.pngand.pdf - per-run checkpoints in
outputs/qX/runs/.../checkpoint.pt
Full runs:
.\.venv\Scripts\python q1.py --data-root data --out-dir outputs
.\.venv\Scripts\python q2.py --data-root data --out-dir outputs
.\.venv\Scripts\python q3.py --data-root data --out-dir outputs
.\.venv\Scripts\python q4.py --data-root data --out-dir outputs
.\.venv\Scripts\python q5.py --data-root data --out-dir outputsSmoke tests on a smaller subset:
.\.venv\Scripts\python q1.py --data-root data --out-dir outputs_smoke --subset-size 1000 --epochs 2
.\.venv\Scripts\python q2.py --data-root data --out-dir outputs_smoke --subset-size 1000 --epochs 2
.\.venv\Scripts\python q3.py --data-root data --out-dir outputs_smoke --subset-size 1000 --epochs 2
.\.venv\Scripts\python q4.py --data-root data --out-dir outputs_smoke --subset-size 1000 --epochs 2
.\.venv\Scripts\python q5.py --data-root data --out-dir outputs_smoke --subset-size 1000 --epochs 2- The shared default accountant is
rdp. - Question 2 overrides this to compare
rdp,gdp,prv, and advanced composition. - Question 3 uses Ghost Clipping with
grad_sample_mode="ghost". - Question 4 reuses the Q1 non-private SGD checkpoint and the Q1
epsilon=10DP-SGD checkpoint when available. - Question 5 keeps
rdpfor both DP-SGD and DP-FTRL. - The generated figures, tables, checkpoints, and final report are included under
outputs/andreport/.