Privates Benchmarking von Modellen für maschinelles Lernen
Projektstatus
Warnung : Dies ist ein akademischer Proof-of-Concept-Prototyp und wurde keiner sorgfältigen Codeüberprüfung unterzogen. Diese Implementierung ist NICHT für den Produktionseinsatz bereit.
Punkte
Projektbeschreibung
Dieses Projekt zielt darauf ab, eine Plattform zu schaffen, die es Benutzern ermöglicht, privates Benchmarking von Modellen des maschinellen Lernens durchzuführen. Die Plattform erleichtert die Bewertung von Modellen auf der Grundlage unterschiedlicher Vertrauensniveaus zwischen den Modellbesitzern und den Datensatzbesitzern.
Dieses Repository stellt den Begleitcode für das Papier https://arxiv.org/abs/2403.00393 bereit
TRUCE: Privates Benchmarking zur Verhinderung von Kontaminationen und zur Verbesserung der vergleichenden Bewertung von LLMs
Tanmay Rajore, Nishanth Chandran, Sunayana Sitaram, Divya Gupta, Rahul Sharma, Kashish Mittal, Manohar Swaminathan
Installation
für vollständige Build- und EzPC-LLM-Unterstützung
- Ändern Sie die Datei setup.sh entsprechend Ihrer Systemkonfiguration für Nvidia-Treiber und CUDA-Version (Standard ist 11.8 und GPU-Architektur ist 90 Hopper).
(In setup.sh)
line 42: export CUDA_VERSION=11.8
line 43: export GPU_ARCH=90
- Führen Sie die Datei setup.sh aus
./setup.sh
Enter the Server IP address:
- Die Datei setup.sh installiert die erforderlichen Abhängigkeiten und richtet die Umgebung für die Ausführung der Plattform ein. Die .env-Datei enthält den geheimen Django-Schlüssel, der je nach Anforderung des Benutzers geändert werden kann. Für jegliche schlüsselbezogene Speicherung sollte der Benutzer nur die .env-Datei verwenden.
nur die Plattform
- HINWEIS: Sie müssen die Umgebungsvariable ENCRYPTION_KEY für den auszuführenden TTP/TEE-Server (32 Byte/256 Bit), den Schlüssel und die .env-Datei manuell festlegen, damit die Plattform ausgeführt werden soll, sowie die IP-Adresse, auf der die Plattform ausgeführt werden soll.
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
Verwendung
Um das Projekt nach der Installation zu verwenden, besuchen Sie.
http://127.0.0.1:8000 (auf Localhost) oder http://:8000 (auf öffentlicher IP)
Beispiel-Benutzeranmeldeinformationen
- Modellbesitzer
- Benutzername: ModelOwner
- Passwort: halloFreund
- Eigentümer des Datensatzes
- Benutzername: DatasetOwner
- Passwort: halloFreund
Bestimmte Ports sind wie folgt vorbelegt:
- 8000: für die Hauptwebsite
- 8001: für die sichere EzPC LLM-Kommunikation mit vertrauenswürdigen Drittanbieterservern
- 7000: für die vertrauenswürdige Ausführungsumgebung zur Kommunikation mit der Website
- 7001: Damit der Server des vertrauenswürdigen Drittanbieters Modelldateien empfängt
- 7002: Damit der Server des vertrauenswürdigen Drittanbieters Datensatzdateien empfängt
- 9000: für die Kommunikation des Datensatzeigentümers mit der Website zum Empfangen von Schlüsseldateien für EzPC
- 9001: für die Kommunikation des Modellbesitzers mit der Website zum Empfang von Schlüsseldateien für EzPC
Vertrauenswürdiger Drittanbieter-Server (TTP).
- Der TTP-Server ist ein separater Server, der zur sicheren Berechnung des Modells verwendet wird. Damit die sichere Berechnung durchgeführt werden kann, muss der TTP-Server ausgeführt werden. Der TTP-Server kann durch Ausführen des folgenden Befehls gestartet werden.
cd utils/TTP_TEE_files
python ttp_server.py
- Annahmen :
- Die Details zum TTP-Server werden in der Backend-Datenbank der Plattform festgelegt.
- Der TTP-Server muss Modell- und Datensatzdateien zur Auswertung von den jeweiligen Parteien auf Port 7001 bzw. 7002 empfangen.
- Der TTP-Server führt die sichere Berechnung durch und sendet die Ergebnisse an die Plattform zurück.
- Für den TTP-Server müssen außerdem die Dateien server.crt und server.key im selben Verzeichnis wie die Datei ttp_server.py vorhanden sein. Diese Dateien werden für die sichere Kommunikation zwischen dem TTP-Server und der Plattform mithilfe der von der Plattform nach der ersten Ausführung generierten Zertifizierungsstelle verwendet und müssen mit dem folgenden Befehl generiert werden.
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
- Die Umgebungsvariable ENCRYPTION_KEY muss festgelegt werden, damit der TTP/TEE-Server den Schlüssel (32 Byte/256 Bit) ausführen kann.
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"))'
Vertrauenswürdige Ausführungsumgebung (TEE)
- Die Trusted Execution Environment ist ein separater Server, der zur sicheren Berechnung des Modells (basierend auf TTP-Skripten) verwendet wird. Damit die sichere Berechnung durchgeführt werden kann, muss die Trusted Execution Environment ausgeführt werden. Detaillierte Anweisungen zum Einrichten der Trusted Execution Environment finden Sie im TTP/TEE.
EzPC LLM
Artefaktbewertung
Die Artefaktbewertung für die Arbeit zur Erstellung der Tabelle finden Sie in der Artefaktbewertung.
Mitwirken
Wenn Sie zu diesem Projekt beitragen möchten, befolgen Sie bitte die Richtlinien in der Datei „contributing.md“.
Lizenz
Dieses Projekt ist unter der [MIT]-Lizenz lizenziert. Weitere Informationen finden Sie in der LIZENZ-Datei.