Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CS729 Assignment 1

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.

Environment

  • Python: 3.11.0
  • GPU tested: NVIDIA GeForce RTX 4060 Laptop GPU
  • Core libraries:
    • torch==2.11.0+cu126
    • torchvision==0.26.0+cu126
    • opacus==1.5.4
    • numpy==2.4.3
    • pandas==3.0.2
    • matplotlib==3.10.8
    • seaborn==0.13.2
    • scikit-learn==1.8.0
    • tqdm==4.67.3
    • tensorboard==2.20.0

Install

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.txt

Outputs

Each question writes outputs under outputs/qX/ with:

  • config.json
  • metrics.csv
  • summary.json
  • plots in .png and .pdf
  • per-run checkpoints in outputs/qX/runs/.../checkpoint.pt

Run Commands

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 outputs

Smoke 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

Notes

  • 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=10 DP-SGD checkpoint when available.
  • Question 5 keeps rdp for both DP-SGD and DP-FTRL.
  • The generated figures, tables, checkpoints, and final report are included under outputs/ and report/.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages