Evaluación comparativa privada de modelos de aprendizaje automático
Estado del proyecto
Advertencia : este es un prototipo de prueba de concepto académico y no ha recibido una revisión cuidadosa del código. Esta implementación NO está lista para su uso en producción.
agujas
Descripción del proyecto
Este proyecto tiene como objetivo crear una plataforma que permita a los usuarios realizar evaluaciones comparativas privadas de modelos de aprendizaje automático. La plataforma facilita la evaluación de modelos en función de diferentes niveles de confianza entre los propietarios del modelo y los propietarios del conjunto de datos.
Este repositorio proporciona el código adjunto para el artículo https://arxiv.org/abs/2403.00393
TREGUA: Evaluación comparativa privada para prevenir la contaminación y mejorar la evaluación comparativa de los LLM
Tanmay Rajore, Nishanth Chandran, Sunayana Sitaram, Divya Gupta, Rahul Sharma, Kashish Mittal, Manohar Swaminathan
Instalación
para una construcción completa y soporte para EzPC LLM
- modifique el archivo setup.sh según la configuración de su sistema para los controladores Nvidia y la versión CUDA (el valor predeterminado es 11.8 y la arquitectura de GPU es 90 Hopper)
(In setup.sh)
line 42: export CUDA_VERSION=11.8
line 43: export GPU_ARCH=90
- ejecute el archivo setup.sh
./setup.sh
Enter the Server IP address:
- El archivo setup.sh instalará las dependencias requeridas y configurará el entorno para que se ejecute la plataforma. El archivo .env contiene la clave secreta de Django que se puede cambiar según los requisitos del usuario. Para cualquier almacenamiento relacionado con claves, el usuario solo debe usar el archivo .env.
solo la plataforma
- NOTA: Es necesario configurar la variable de entorno ENCRYPTION_KEY para que el servidor TTP/TEE ejecute la clave (32 bytes/256 bits) y el archivo .env manualmente para que se ejecute la plataforma y la dirección IP en la que se ejecutará la plataforma.
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
Uso
Para utilizar el proyecto después de la instalación, visite.
http://127.0.0.1:8000 (en Localhost) o http://:8000 (en IP pública)
Credenciales de usuario de muestra
- Propietario del modelo
- nombre de usuario: propietario del modelo
- contraseña: hola amigo
- Propietario del conjunto de datos
- nombre de usuario: propietario del conjunto de datos
- contraseña: hola amigo
ciertos puertos están preasignados de la siguiente manera:
- 8000: para el sitio web principal
- 8001: para la comunicación segura de EzPC LLM con un servidor de terceros confiable
- 7000: para que el entorno de ejecución confiable se comunique con el sitio web
- 7001: para que el servidor de terceros de confianza reciba archivos de modelo
- 7002: para que el servidor de terceros de confianza reciba archivos de conjuntos de datos
- 9000: para la comunicación del propietario del conjunto de datos con el sitio web para recibir archivos clave para EzPC
- 9001: para la comunicación del propietario del modelo con el sitio web para recibir archivos clave para EzPC
Servidor de terceros confiable (TTP)
- El servidor TTP es un servidor independiente que se utiliza para realizar el cálculo seguro del modelo. Es necesario que el servidor TTP esté ejecutándose para que se realice el cálculo seguro. El servidor TTP se puede iniciar ejecutando el siguiente comando.
cd utils/TTP_TEE_files
python ttp_server.py
- Supuestos :
- Los detalles relacionados con el servidor TTP se configuran en la base de datos Backend de la plataforma.
- El servidor TTP requiere recibir archivos de modelo y conjunto de datos para su evaluación de las partes respectivas en los puertos 7001 y 7002 respectivamente.
- El servidor TTP realizará el cálculo seguro y devolverá los resultados a la plataforma.
- El servidor TTP también requiere que los archivos server.crt y server.key estén presentes en el mismo directorio que el archivo ttp_server.py. Estos archivos se utilizan para la comunicación segura entre el servidor TTP y la plataforma utilizando la CA generada por la plataforma después de la primera ejecución y deben generarse mediante el siguiente comando.
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
- Se requiere configurar la variable de entorno ENCRYPTION_KEY para que el servidor TTP/TEE ejecute la clave (32 bytes/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"))'
Entorno de ejecución confiable (TEE)
- El entorno de ejecución confiable es un servidor independiente que se utiliza para realizar el cálculo seguro del modelo (basado en scripts TTP). Es necesario que el entorno de ejecución confiable esté ejecutándose para que se realice el cálculo seguro. Las instrucciones detalladas para configurar el entorno de ejecución confiable se pueden encontrar en TTP/TEE.
EzPC LLM
Actualmente EzPC soporta los siguientes modelos
- bert-pequeño
- base-bert
- bert-grande
- gpt2
- gpt-neo
- llama7b
- llama13b
Para obtener más información sobre cómo utilizar EzPC LLM, consulte EzPC LLM.
Evaluación de artefactos
La evaluación de artefactos del documento para generar la Tabla se puede encontrar en Evaluación de artefactos.
Contribuyendo
Si desea contribuir a este proyecto, siga las pautas descritas en el archivo contribuido.md.
Licencia
Este proyecto está bajo la licencia [MIT]. Consulte el archivo de LICENCIA para obtener más información.