Eine Neuimplementierung des "Extrahierens von Trainingsdaten aus Großsprachenmodellen" von Carlini et al. Das Papier verfügt bereits über eine offizielle Implementierung - https://github.com/ftramer/lm_memorization, aus der ich Teile des Codes geliehen habe und gleichzeitig die Lesbarkeit einiger Funktionen verbessert.
Das offizielle Repository behandelt jedoch nicht -
Ich war wirklich fasziniert von der Zeitung und wollte es selbst umsetzen. Wie bei der offiziellen Implementierung habe ich auch eine modples.md-Datei aufgenommen, die einige der auswendig gelernten Inhalte enthält, die ich aus GPT-2 extrahieren könnte. Obwohl ich in der Lage bin, einige interessante inhaltliche Inhalte zu finden, haben die Ergebnisse immer noch einige Einschränkungen -
Oder direkt
pip install -r requirements.txt
Die erzeugten Proben werden nach sechs in der Arbeit eingeführten sechs Mitgliedschaftsmetriken eingestuft:
Die Top -10 -Proben entsprechend jeder Metrik werden ausgedruckt, und die Top 100 Proben gemäß jeder Metrik AE, die in der Outfile protokolliert sind. Diese Stichproben enthalten wahrscheinlich einen wörtlichen Text aus den GPT-2-Trainingsdaten.
python extraction_top_n.py --N 5000 --batch_size 20 --outfile top_n_samples.txt
Dies erzeugt 5000 Proben mit GPT2-XL. Die Proben werden mit Top-K-Stichproben (K = 40) und einer leeren Eingabeaufforderung erzeugt.
python extraction_temperature_decay.py --N 5000 --batch_size 20 --outfile temperature_decay_samples.txt
Dies erzeugt 5000 Proben mit GPT2-XL. Die Proben werden mit Probenahme mit Temperaturabfall erzeugt (zerfallen die Softmax -Temperatur von 10 bis 1 oder die ersten 20 Token und 1 für alle nachfolgenden Token) und eine leere Eingabeaufforderung.
In dem Papier versuchten die Autoren auch, das GT2-XL-Modell mit Textausschnitten aus dem Web (Commoncrawl) zu veranlassen, was die Wahrscheinlichkeit des Modells, den sich ausgelernten Inhalten erzeugte, erhöhte.
Ich habe die gleiche Probe des Crawl vom Mai 2021 (~ 350 MB) verwendet, der von den Autoren verwendet wurde.
./download_cc.sh
Dann,
python extraction_commoncrawl.py --N 5000 --batch_size 20 --outfile commoncrawl_samples.txt
Alle erzeugten Sequenzen haben eine endgültige Länge von erstklassigen 256 Token.
Einige interessante Ausgänge, die aus GPT-2 extrahiert wurden, finden Sie hier.