Major changes:
- Implement correct DP-SGD noise formula based on research (Optax/TF Privacy)
- Add Server-Sent Events (SSE) for real-time epoch-by-epoch training progress
- Remove parameter capping to respect user-specified privacy settings
- Update presets with research-validated parameters (~95-97% MNIST accuracy)
- Add rate limiting for training endpoint
- Consolidate gradient utilities into shared module
- Improve privacy calculator with RDP-based accounting
- Fix security headers and CORS configuration
- Add threaded mode for Flask SSE streaming support
Research-validated defaults:
- noise_multiplier=1.1, clipping_norm=1.0, learning_rate=0.15
- Achieves ~96% accuracy on MNIST with reasonable privacy (ε≈3-5)
Co-authored-by: Cursor <cursoragent@cursor.com>
log to supabase
Jethro85
8833078
log to supabase
Jethro85
ab6eaff
log to supabase
Jethro85
bfe2ef7
log to supabase
Jethro85
2085299
log to supabase
Jethro85
e185c89
log to supabase
Jethro85
6ef23c2
log to supabase
Jethro85
8d5e3aa
log to supabase
Jethro85
edd271d
log to supabase
Jethro85
79d5f1b
log to supabase
Jethro85
bdb2e55
log to supabase
Jethro85
b2a55ac
Enhanced privacy attack visualizations and DP-SGD defense explanations
Shuya Feng
6264b1a
Major improvements:
- Replaced digit 7 with realistic medical patient records in membership inference
- Fixed tab overlap with responsive flex layout
- Added concrete 4x4 grid visualization for data reconstruction with varying privacy levels
- Implemented dynamic Model Inversion attack with privacy-based noise/blur
- Added privacy sliders and real-time feedback for Property Inference
- Fixed linkage attack logic (correct epsilon to success rate mapping)
- Removed redundant privacy indicator bars for cleaner UI
- Added personalized DP-SGD defense cards within each attack section
- Each defense explanation is specific to its attack type with unique analogies
- Increase epochs slider maximum from 20 to 50
- Set default epochs value to 30 in UI
- Update all preset configurations (High Privacy, Balanced, High Utility) to use 30 epochs
- Update setOptimalParameters function to use 30 epochs
- Ensures consistent training duration across all dataset/architecture combinations
Add multi-dataset and ResNet-18 architecture support
- Fix dataset selection: now properly switches between MNIST, CIFAR-10, and Fashion-MNIST
- Add ResNet-18 architecture option alongside existing MLP and CNN models
- Implement dynamic data preprocessing based on model architecture (flatten for MLPs, keep 2D/3D for CNNs)
- Add model architecture parameter to frontend and backend
- Cache trainers by dataset+architecture combination for efficiency
- Update privacy budget calculations to use correct dataset sizes
- Support for all architecture combinations across datasets
Spaces: switch to Python 3.10 and preinstall PyYAML/Cython
Jethro85
0e859f8
HF Space: Dockerized Flask app
Jethro85
1ebdc66
Replace the dummy data with true dataset
Shuya Feng
e3e63bf
udpate
Shuya Feng
b0b2c21
Update gradients clipping chart
Shuya Feng
8ad5d56
chore: Remove old HTML files
Shuya Feng
adae711
feat: Implement DP-SGD Explorer web application with Flask backend, interactive frontend, and easy deployment script