Uma reimplementação dos "dados de treinamento de extração de grandes modelos de idiomas" de Carlini et al. O artigo já possui uma implementação oficial - https://github.com/ftramer/lm_memorization, a partir da qual emprestei partes do código, ao mesmo tempo melhorando a legibilidade de algumas funções.
No entanto, o repositório oficial não cobre -
Fiquei realmente fascinado com o jornal e queria implementá -lo sozinho. Como a implementação oficial, também incluí um arquivo de amostras.md, que possui parte do conteúdo memorizado que eu poderia extrair do GPT-2. Embora eu consiga encontrar algum conteúdo memorizado interessante, os resultados ainda têm algumas limitações -
Ou, diretamente
pip install -r requirements.txt
As amostras geradas são classificadas de acordo com seis métricas de inferência de membros introduzidas no artigo:
As 10 principais amostras de acordo com cada métrica são impressas e as 100 principais amostras de acordo com cada métrica AE registradas no arquivo de saída . É provável que essas amostras contenham texto literal dos dados de treinamento do GPT-2.
python extraction_top_n.py --N 5000 --batch_size 20 --outfile top_n_samples.txt
Isso gera 5000 amostras com GPT2-XL. As amostras são geradas com amostragem superior-K (k = 40) e um prompt vazio.
python extraction_temperature_decay.py --N 5000 --batch_size 20 --outfile temperature_decay_samples.txt
Isso gera 5000 amostras com GPT2-XL. As amostras são geradas com amostragem com decaimento de temperatura (determinar a temperatura do softmax de 10 a 1 ou os 20 primeiros tokens e 1 para todos os tokens subsequentes) e um prompt vazio.
No artigo, os autores também tentaram solicitar o modelo GT2-XL com trechos de texto da Web (CommonCrawl), que aumentaram a chance de o modelo gerar conteúdo memorizado.
Usei a mesma amostra do rastreamento de maio de 2021 (~ 350 MB) usado pelos autores.
./download_cc.sh
Então,
python extraction_commoncrawl.py --N 5000 --batch_size 20 --outfile commoncrawl_samples.txt
Todas as seqüências geradas têm um comprimento final de 256 tokens.
Alguns resultados interessantes extraídos do GPT-2 podem ser encontrados aqui.