Benchmarking privado de modelos de aprendizado de máquina
Status do projeto
Aviso : Este é um protótipo de prova de conceito acadêmico e não recebeu uma revisão cuidadosa do código. Esta implementação NÃO está pronta para uso em produção.
pontos
Descrição do Projeto
Este projeto visa criar uma plataforma que permita aos usuários realizar benchmarking privado de modelos de aprendizado de máquina. A plataforma facilita a avaliação de modelos com base em diferentes níveis de confiança entre os proprietários do modelo e os proprietários do conjunto de dados.
Este repositório fornece o código que acompanha o artigo https://arxiv.org/abs/2403.00393
TRUCE: Benchmarking privado para prevenir a contaminação e melhorar a avaliação comparativa de LLMs
Tanmay Rajore, Nishanth Chandran, Sunayana Sitaram, Divya Gupta, Rahul Sharma, Kashish Mittal, Manohar Swaminathan
Instalação
para construção completa e suporte EzPC LLM
- modifique o arquivo setup.sh de acordo com a configuração do seu sistema para drivers Nvidia e versão CUDA (o padrão é 11.8 e a arquitetura GPU é 90 Hopper)
(In setup.sh)
line 42: export CUDA_VERSION=11.8
line 43: export GPU_ARCH=90
- execute o arquivo setup.sh
./setup.sh
Enter the Server IP address:
- O arquivo setup.sh instalará as dependências necessárias e configurará o ambiente para a execução da plataforma. O arquivo .env contém a chave secreta do Django que pode ser alterada conforme a necessidade do usuário. Para qualquer armazenamento relacionado à chave, o usuário deve usar apenas o arquivo .env.
apenas a plataforma
- NOTA: É necessário definir a variável de ambiente ENCRYPTION_KEY para o servidor TTP/TEE executar a chave (32 bytes/256 bits) e o arquivo .env manualmente para a plataforma ser executada e o endereço IP da plataforma para ser executada.
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 o projeto após visita de instalação.
http://127.0.0.1:8000 (em Localhost) ou http://:8000 (em IP público)
Exemplo de credenciais de usuário
- Proprietário do modelo
- nome de usuário: ModelOwner
- senha: oláAmigo
- Proprietário do conjunto de dados
- nome de usuário: DatasetOwner
- senha: oláAmigo
certas portas são pré-atribuídas da seguinte forma:
- 8000: para o site principal
- 8001: para comunicação segura do EzPC LLM com servidor confiável de terceiros
- 7000: para o ambiente de execução confiável se comunicar com o site
- 7001: para o servidor confiável de terceiros receber arquivos de modelo
- 7002: para o servidor confiável de terceiros receber arquivos do conjunto de dados
- 9000: para comunicação do proprietário do Dataset com o site para recebimento de arquivos chave para EzPC
- 9001: para comunicação do proprietário do modelo com o site para recebimento de arquivos chave para EzPC
Servidor confiável de terceiros (TTP)
- O servidor TTP é um servidor separado usado para realizar a computação segura do modelo. O servidor TTP deve estar em execução para que a computação segura seja executada. O servidor TTP pode ser iniciado executando o seguinte comando.
cd utils/TTP_TEE_files
python ttp_server.py
- Suposições :
- Os detalhes relacionados ao servidor TTP são definidos no banco de dados Backend da plataforma.
- O servidor TTP precisa receber arquivos de modelo e conjunto de dados para avaliação das respectivas partes nas portas 7001 e 7002, respectivamente.
- O servidor TTP realizará o cálculo seguro e retornará os resultados para a plataforma.
- O servidor TTP também requer que os arquivos server.crt e server.key estejam presentes no mesmo diretório que o arquivo ttp_server.py. Esses arquivos são usados para comunicação segura entre o servidor TTP e a plataforma usando o CA gerado pela plataforma após a primeira execução e precisam ser gerados usando o seguinte 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
- A variável de ambiente ENCRYPTION_KEY deve ser definida para que o servidor TTP/TEE execute a chave (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"))'
Ambiente de Execução Confiável (TEE)
- O Trusted Execution Environment é um servidor separado usado para executar a computação segura do modelo (baseado em scripts TTP). O Ambiente de Execução Confiável deve estar em execução para que a computação segura seja executada. Instruções detalhadas para configurar o Ambiente de Execução Confiável podem ser encontradas no TTP/TEE.
EzPC LLM
atualmente o EzPC suporta os seguintes modelos
- bert-tiny
- base bert
- bert-grande
- gpt2
- gpt-neo
- lhama7b
- lhama13b
para obter mais informações sobre como usar o EzPC LLM, consulte o EzPC LLM.
Avaliação de artefatos
A avaliação dos artefatos para o papel de geração da Tabela pode ser encontrada na Avaliação de Artefatos.
Contribuindo
Se você gostaria de contribuir para este projeto, siga as diretrizes descritas no arquivo contribuinte.md.
Licença
Este projeto está licenciado sob a licença [MIT]. Consulte o arquivo LICENSE para obter mais informações.