Opacus est une bibliothèque qui permet la formation de modèles Pytorch avec une confidentialité différentielle. Il prend en charge la formation avec un minimum de modifications de code requises sur le client, a peu d'impact sur les performances de formation et permet au client de suivre en ligne le budget de confidentialité dépensé à un moment donné.
Cette version de code s'adresse à deux publics cibles:
La dernière version d'Opacus peut être installée via pip :
pip install opacus Ou, alternativement, via conda :
conda install -c conda-forge opacusVous pouvez également installer directement à partir de la source des dernières fonctionnalités (ainsi que ses bizarreries et ses bogues potentiellement occasionnels):
git clone https://github.com/pytorch/opacus.git
cd opacus
pip install -e . Pour former votre modèle avec une confidentialité différentielle, tout ce que vous avez à faire est d'instancier une PrivacyEngine et de passer votre modèle, Data_loader et Optimizer sur la méthode make_private() du moteur pour obtenir leurs homologues privés.
# define your components as usual
model = Net ()
optimizer = SGD ( model . parameters (), lr = 0.05 )
data_loader = torch . utils . data . DataLoader ( dataset , batch_size = 1024 )
# enter PrivacyEngine
privacy_engine = PrivacyEngine ()
model , optimizer , data_loader = privacy_engine . make_private (
module = model ,
optimizer = optimizer ,
data_loader = data_loader ,
noise_multiplier = 1.1 ,
max_grad_norm = 1.0 ,
)
# Now it's business as usualL'exemple MNIST montre une exécution de bout en bout à l'aide d'Opacus. Le dossier Exemples contient plus de tels exemples.
Opacus 1.0 a introduit de nombreuses améliorations à la bibliothèque, mais aussi quelques changements de rupture. Si vous utilisez Opacus 0.x et que vous souhaitez mettre à jour la dernière version, veuillez utiliser ce guide de migration
Nous avons construit une série de tutoriels basés sur Ipython comme une introduction douce aux modèles de formation avec la confidentialité et l'utilisation de diverses fonctionnalités d'Opacus.
Le rapport technique introduisant Opacus, présentant ses principes de conception, ses fondations mathématiques et ses références peut être trouvée ici.
Pensez à citer le rapport si vous utilisez Opacus dans vos papiers, comme suit:
@article{opacus,
title={Opacus: {U}ser-Friendly Differential Privacy Library in {PyTorch}},
author={Ashkan Yousefpour and Igor Shilov and Alexandre Sablayrolles and Davide Testuggine and Karthik Prasad and Mani Malek and John Nguyen and Sayan Ghosh and Akash Bharadwaj and Jessica Zhao and Graham Cormode and Ilya Mironov},
journal={arXiv preprint arXiv:2109.12298},
year={2021}
}
Si vous souhaitez en savoir plus sur DP-SGD et des sujets connexes, consultez notre série de blogs et de conférences:
Consultez la page FAQ pour obtenir des réponses à certaines des questions les plus fréquemment posées sur la confidentialité différentielle et l'Opacus.
Voir le fichier contributif pour aider à aider. Consultez également les fichiers ReadMe dans le dépôt pour savoir comment le code est organisé.
Ce code est publié sous Apache 2.0, comme le montre le fichier de licence.