Analyse comparative privée des modèles d'apprentissage automatique
Statut du projet
Attention : il s'agit d'un prototype de preuve de concept académique et n'a pas fait l'objet d'un examen minutieux du code. Cette implémentation n'est PAS prête pour une utilisation en production.
points
Description du projet
Ce projet vise à créer une plate-forme permettant aux utilisateurs d'effectuer une analyse comparative privée des modèles d'apprentissage automatique. La plateforme facilite l'évaluation des modèles en fonction de différents niveaux de confiance entre les propriétaires de modèles et les propriétaires d'ensembles de données.
Ce référentiel fournit le code d'accompagnement pour l'article https://arxiv.org/abs/2403.00393
TRUCE : analyse comparative privée pour prévenir la contamination et améliorer l'évaluation comparative des LLM
Tanmay Rajore, Nishanth Chandran, Sunayana Sitaram, Divya Gupta, Rahul Sharma, Kashish Mittal, Manohar Swaminathan
Installation
pour une construction complète et un support EzPC LLM
- modifiez le fichier setup.sh en fonction de la configuration de votre système pour les pilotes Nvidia et la version CUDA (la valeur par défaut est 11.8 et l'architecture GPU est 90 Hopper)
(In setup.sh)
line 42: export CUDA_VERSION=11.8
line 43: export GPU_ARCH=90
- exécutez le fichier setup.sh
./setup.sh
Enter the Server IP address:
- Le fichier setup.sh installera les dépendances requises et configurera l'environnement pour que la plate-forme s'exécute. Le fichier .env contient la clé secrète Django qui peut être modifiée selon les besoins de l'utilisateur. Pour tout stockage lié à la clé, l'utilisateur ne doit utiliser que le fichier .env.
seulement la plateforme
- REMARQUE : Vous devez définir manuellement la variable d'environnement ENCRYPTION_KEY pour que le serveur TTP/TEE s'exécute (32 octets/256 bits), la clé et le fichier .env pour que la plate-forme s'exécute et l'adresse IP sur laquelle la plate-forme s'exécute.
pip install -r requirements.txt
cd eval_website/eval_website
python manage.py makemigrations
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
Usage
Pour utiliser le projet après la visite d'installation.
http://127.0.0.1:8000 (sur Localhost) ou http://:8000 (sur IP publique)
Exemples d'informations d'identification utilisateur
- Propriétaire du modèle
- nom d'utilisateur : ModèlePropriétaire
- mot de passe : bonjourAmi
- Propriétaire de l'ensemble de données
- nom d'utilisateur : Propriétaire de l'ensemble de données
- mot de passe : bonjourAmi
certains ports sont pré-attribués comme suit :
- 8000 : pour le site Web principal
- 8001 : pour la communication sécurisée EzPC LLM avec un serveur tiers de confiance
- 7000 : pour que l'environnement d'exécution approuvé communique avec le site Web
- 7001 : pour que le serveur tiers de confiance reçoive les fichiers de modèles
- 7002 : pour que le serveur tiers de confiance reçoive les fichiers de jeux de données
- 9000 : pour la communication du propriétaire de l'ensemble de données avec le site Web pour recevoir les fichiers clés pour EzPC
- 9001 : pour la communication du propriétaire du modèle avec le site Web pour recevoir les fichiers clés pour EzPC
Serveur tiers de confiance (TTP)
- Le serveur TTP est un serveur distinct utilisé pour effectuer le calcul sécurisé du modèle. Le serveur TTP doit être en cours d'exécution pour que le calcul sécurisé soit effectué. Le serveur TTP peut être démarré en exécutant la commande suivante.
cd utils/TTP_TEE_files
python ttp_server.py
- Hypothèses :
- Les détails relatifs au serveur TTP sont définis dans la base de données backend de la plateforme.
- Le serveur TTP doit recevoir des fichiers de modèle et d'ensemble de données pour évaluation des parties respectives sur les ports 7001 et 7002 respectivement.
- Le serveur TTP effectuera le calcul sécurisé et renverra les résultats à la plateforme.
- Le serveur TTP nécessite également que les fichiers server.crt et server.key soient présents dans le même répertoire que le fichier ttp_server.py. Ces fichiers sont utilisés pour la communication sécurisée entre le serveur TTP et la plateforme à l'aide de l'autorité de certification générée par la plateforme après la première exécution et doivent être générés à l'aide de la commande suivante.
openssl req -newkey rsa:2048 -nodes -keyout " ./server.key " -out server.csr -subj /CN=127.0.0.1
openssl x509 -req -in server.csr -CA path/ca.crt(generated by eval_website root) -CAkey /path/ca.key(generated by eval_website root) -CAcreateserial -out ./server.crt -days xxx
- La variable d'environnement ENCRYPTION_KEY doit être définie pour que le serveur TTP/TEE exécute la clé (32 octets/256 bits).
export ENCRYPTION_KEY="32 bytes key"
#generate a 32 bytes key using the following command
python -c 'import os, binascii; print(binascii.hexlify(os.urandom(32)).decode("utf-8"))'
Environnement d'exécution fiable (TEE)
- Le Trusted Execution Environment est un serveur distinct utilisé pour effectuer le calcul sécurisé du modèle (basé sur des scripts TTP). L'environnement d'exécution sécurisé doit être en cours d'exécution pour que le calcul sécurisé soit effectué. Des instructions détaillées pour la configuration de l’environnement d’exécution sécurisé peuvent être trouvées dans le TTP/TEE.
EzPC LLM
actuellement EzPC prend en charge les modèles suivants
- bert-minuscule
- bert-base
- bert-large
- gpt2
- gpt-néo
- lama7b
- lama13b
pour plus d'informations sur l'utilisation d'EzPC LLM, reportez-vous à EzPC LLM.
Évaluation des artefacts
L'évaluation des artefacts pour l'article permettant de générer le tableau se trouve dans l'évaluation des artefacts.
Contribuer
Si vous souhaitez contribuer à ce projet, veuillez suivre les directives décrites dans le fichier contribute.md.
Licence
Ce projet est sous licence [MIT]. Veuillez consulter le fichier LICENCE pour plus d'informations.