Une réimplémentation des «données d'entraînement d'extraction à partir de modèles de langue importants» par Carlini et al. Le document a déjà une implémentation officielle - https://github.com/ftramer/lm_memorization, à partir de laquelle j'ai emprunté des parties du code, en même temps améliorant la lisibilité de quelques fonctions.
Cependant, le référentiel officiel ne couvre pas -
J'étais vraiment fasciné par le journal et je voulais le mettre en œuvre moi-même. Comme l'implémentation officielle, j'ai également inclus un fichier sample.md, qui a une partie du contenu mémorisé que je pouvais extraire de GPT-2. Bien que je puisse trouver un contenu mémorisé intéressant, les résultats ont encore quelques limites -
Ou, directement
pip install -r requirements.txt
Les échantillons générés sont classés en fonction de six mesures d'inférence des membres introduites dans l'article:
Les 10 meilleurs échantillons selon chaque métrique sont imprimés, et les 100 meilleurs échantillons selon chaque métrique AE enregistrée dans le OutFile . Ces échantillons sont susceptibles de contenir du texte textuel à partir des données de formation GPT-2.
python extraction_top_n.py --N 5000 --batch_size 20 --outfile top_n_samples.txt
Cela génère 5000 échantillons avec GPT2-XL. Les échantillons sont générés avec l'échantillonnage supérieur-K (k = 40) et une invite vide.
python extraction_temperature_decay.py --N 5000 --batch_size 20 --outfile temperature_decay_samples.txt
Cela génère 5000 échantillons avec GPT2-XL. Les échantillons sont générés avec l'échantillonnage avec la décroissance de la température (désintégration de la température Softmax de 10 à 1 ou les 20 premiers jetons et 1 pour tous les jetons suivants) et une invite vide.
Dans l'article, les auteurs ont également essayé d'inciter le modèle GT2-XL avec des extraits de texte du Web (CommonCrawl), ce qui a augmenté le risque de générer du contenu mémorisé.
J'ai utilisé le même échantillon de rampe à partir de mai 2021 (~ 350 Mo) utilisé par les auteurs.
./download_cc.sh
Alors,
python extraction_commoncrawl.py --N 5000 --batch_size 20 --outfile commoncrawl_samples.txt
Toutes les séquences générées ont une longueur finale de la plupart des 256 jetons.
Certaines sorties intéressantes qui ont été extraites de GPT-2 peuvent être trouvées ici.