Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
IF-Guide — [NeurIPS '25] Code für das Paper "IF-Guide: Influence Function-Guided Suppression of Harmful Training Data for Reducing LLM Toxicity" | Kitploit
Tools/GitHubGitHub/ztcoalson/if-guide
DefensivwerkzeugeStatische AnalyseCode-AnalysePapers & ForschungLernen & BildungKI-Sicherheit
GitHubztcoalson/if-guide

IF-Guide

[NeurIPS '25] Code für das Paper "IF-Guide: Influence Function-Guided Suppression of Harmful Training Data for Reducing LLM Toxicity"

Repository anzeigen
132vor 10 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

IF-Guide: Einflussfunktionsgesteuerte Entgiftung von LLMs [NeurIPS 2025]

Dieses Repository enthält den Code für IF-Guide, die LLM-Entgiftungstechnik, die in unserem Paper vorgestellt wird:

  • IF-Guide: Influence Function-Guided Detoxification of LLMs
  • Zachary Coalson, Juhan Bae, Nicholas Carlini, Sanghyun Hong

 


TL;DR

Mithilfe unserer Methode kannst du LLMs entgiften, indem du schädliche Trainingsbeispiele identifizierst und diese während des Pre-Trainings oder Fine-Tunings unterdrückst!

 

Zusammenfassung

Wir untersuchen, wie Trainingsdaten zur Entstehung toxischer Verhaltensweisen in großen Sprachmodellen beitragen. Die meisten bisherigen Arbeiten zur Reduzierung von Modelltoxizität verfolgen reaktive Ansätze, wie etwa das Fine-Tuning vortrainierter (und potenziell toxischer) Modelle, um sie an menschliche Werte anzupassen. Im Gegensatz dazu schlagen wir einen proaktiven Ansatz vor – IF-Guide –, der Einflussfunktionen nutzt, um schädliche Tokens in beliebigen Trainingsdaten zu identifizieren und deren Auswirkungen während des Trainings zu unterdrücken. Zu diesem Zweck zeigen wir zunächst, dass Standard-Einflussfunktionen bei der Entdeckung schädlicher Trainingsdaten wirkungslos sind. Anschließend präsentieren wir eine neuartige Adaption, die Attributionen auf Token-Ebene von Trainingsdaten zur Modelltoxizität misst, sowie Techniken zur Auswahl toxischer Trainingsdokumente und eine Zielfunktion, die sowohl in das Pre-Training als auch in das Fine-Tuning integriert werden kann. Darüber hinaus benötigt IF-Guide keine Daten zu menschlichen Präferenzen, die von bestehenden Alignment-Methoden normalerweise benötigt werden. In der Evaluierung zeigen wir, dass IF-Guide sowohl explizite als auch implizite Toxizität erheblich reduziert – um bis zu 10× im Vergleich zu unzensierten Modellen und um bis zu 3× im Vergleich zu Basis-Alignment-Methoden wie DPO und RAD – sowohl beim Pre-Training als auch beim Fine-Tuning. IF-Guide ist recheneffizient: Für die Berechnung der Einflusswerte ist kein Modell mit einer Milliarde Parametern erforderlich; ein Modell mit einer Million Parametern – mit 7,5× weniger Parametern – kann effektiv als Stellvertreter zur Identifizierung schädlicher Daten dienen.

 


Installation

Erstelle die Conda-Umgebung (du kannst jede Umgebung mit python>=3.10 verwenden) und installiere die erforderlichen Pakete:

root@kitploit:~
conda create -n IF-Guide python=3.10
conda activate IF-Guide
pip install -r requirements.txt

Hinweis: Wir verwenden das Paket Kronfluence, um Einflusswerte mit EK-FAC zu berechnen. Wir haben eine eigene Implementierung erstellt, die die in unserem Paper eingeführte Technik des differentiellen Einflusses unterstützt (Seite 4, Gl. 6). Alle anderen Komponenten des Pakets stammen von den ursprünglichen Autoren. Vielen Dank!

Navigiere als Nächstes zum Arbeitsverzeichnis:

root@kitploit:~
cd src

 


Modelltraining/Fine-Tuning

Um ein Modell zu trainieren, führe Folgendes aus:

root@kitploit:~
./scripts/train.sh

Dies ruft train.py auf, das die folgenden wichtigsten Argumente akzeptiert:

Hinweis: Alle anderen Argumente können auf den Standardwerten belassen werden, um unser experimentelles Setup zu reproduzieren. Dies gilt auch für die folgenden Abschnitte.

Um ein vorhandenes Modell feinzutunen, führe Folgendes aus:

root@kitploit:~
./scripts/finetune.sh

Dies führt finetune.py aus, das die folgenden zusätzlichen Argumente verwendet:

ArgumentBeschreibung
--checkpoint_dirPfad zu einem gespeicherten Modell. Bei Verwendung eines vortrainierten Modells auf None setzen.
--max_stepsMaximale Anzahl der Schritte für das Fine-Tuning.

 


IF-Guide ausführen

IF-Guide besteht aus vier Schritten: (1) Berechnung der inversen Hesse-Approximation mit EK-FAC, (2) Berechnung der tokenweisen differentiellen Einflusswerte über den toxischen und nicht-toxischen Query-Daten (Seite 4, Gl. 8), (3) Auswahl einflussreicher toxischer Tokens, die während des Trainings unterdrückt werden sollen (Seite 23, Alg. 1) und (4) Unterdrückung der toxischen Tokens mit unserer strafbasierten Zielfunktion (Seite 5, Gl. 9).

 

1. Faktoren der inversen Hesse-Approximation anpassen

Führe Folgendes aus:

root@kitploit:~
./scripts/fit_factors.sh

Dies ruft fit_factors.py auf und akzeptiert die folgenden primären Argumente:

 

2. Tokenweise Bewertungen berechnen

Führe Folgendes aus:

root@kitploit:~
./scripts/compute_scores.sh

Dies führt compute_scores.py mit den folgenden wichtigsten Argumenten aus (zusätzlich zu den meisten Argumenten, die zur Berechnung der Faktoren verwendet werden):

 

3. Einflussreiche toxische Tokens auswählen

Führe Folgendes aus:

root@kitploit:~
./scripts/build_toxic_token_mask.sh

Dies führt build_toxic_token_mask.py aus. Es akzeptiert die folgenden primären Argumente:

 

4. Toxische Tokens während des Trainings/Fine-Tunings unterdrücken

Nachdem die Maske für toxische Tokens für ein bestimmtes Modell berechnet wurde, kannst du die Argumente --toxic_token_mask_path und --toxic_lambda in ./scripts/train.sh (und ./scripts/finetune.sh) angeben, um Modelle mit IF-Guide zu trainieren bzw. feinzutunen.

 


Evaluierung

Wir stellen Code zur Bewertung expliziter Toxizität (über Detoxify), impliziter Toxizität (über ToxiGen-RoBERTa) und Sprachflüssigkeit (gemessen auf LAMBADA und OpenWebText) bereit.

 

Evaluierung expliziter Toxizität

Führe Folgendes aus:

root@kitploit:~
./scripts/run_toxicity_eval.sh

Dies führt run_toxicity_eval.py aus, das die folgenden Hauptargumente hat:

 

Evaluierung impliziter Toxizität

Führe Folgendes aus:

root@kitploit:~
./scripts/run_implicit_toxicity_eval.sh

Es erfordert die folgenden Argumente:

ArgumentBeschreibung
--outputs_file_pathDer Pfad zu einer Ausgabedatei aus einem Lauf zur expliziten Toxizität. Wir bewerten die vorhandenen Ausgaben erneut, um Zeit zu sparen. Dies sollte eine output.json-Datei sein, die während der expliziten Evaluierung erzeugt wurde.
--datasetDer Datensatz, aus dem die Ausgaben stammen. Bestimmt, wie die endgültigen Ausgaben formatiert werden.

 

Evaluierung der Sprachflüssigkeit

Führe Folgendes aus:

root@kitploit:~
./scripts/run_fluency_eval.sh

Es hat die folgenden primären Argumente:

 

Testen mit RAD

Wir stellen fest, dass unsere Methode mit der Decodierungszeit-Verteidigung Reward Augmented Decoding (RAD) [EMNLP 2023] kombinierbar ist. Um IF-Guide mit RAD auszuführen (oder RAD unabhängig zu testen), lade zunächst das Belohnungsmodell (bereitgestellt von den Autoren der ursprünglichen Arbeit) herunter und platziere es im vorgesehenen Verzeichnis:

root@kitploit:~
cd utils/rad/reward_modeling
gdown https://storage.googleapis.com/rad_release/saved_models.zip
unzip saved_models.zip && rm saved_models.zip && rm -rf saved_models/gpt2_sentiment

Das Verdienst für die von uns verwendete RAD-Implementierung gebührt vollständig den Autoren der ursprünglichen Arbeit. Vielen Dank!

 


Unsere Arbeit zitieren

Bitte zitiere unsere Arbeit, wenn du diesen Quellcode hilfreich findest.

root@kitploit:~
@inproceedings{coalson2025ifguide,
  title={{IF}-Guide: Influence Function-Guided Detoxification of {LLM}s},
  author={Coalson, Zachary and Bae, Juhan and Carlini, Nicholas and Hong, Sanghyun},
  booktitle={The Thirty-ninth Annual Conference on Neural Information Processing Systems},
  year={2025},
  url={https://openreview.net/forum?id=V82wLePv0o}
}

 


 

Bei Fragen und Anregungen wende dich bitte an Zachary Coalson ([email protected]).

Tool herunterladen
ArgumentBeschreibung
--model_nameName des zu trainierenden Modells. Muss in utils/registry.yaml mit einem entsprechenden Tokenizer registriert sein (siehe vorhandene Modelle als Beispiele)
--save_idBeschreibendes Tag, das für die Benennung des Ausgabeverzeichnisses verwendet wird.
--toxic_token_mask_pathPfad zu einer Token-Maske (generiert mit IF-Guide). Für das Standardtraining None verwenden.
--toxic_lambdaDie Stärke des von unserer Zielfunktion verwendeten Strafterms.
ArgumentBeschreibung
--model_nameName des Modells, für das die Faktoren angepasst werden sollen.
--checkpoint_dirPfad zum gespeicherten Modell. Bei Verwendung eines vortrainierten Modells auf None setzen.
--train_indices_pathPfad zu den Trainingsindizes, die zum Trainieren des Modells verwendet wurden (nicht erforderlich, wenn der gesamte Datensatz verwendet wird). Müssen exakt mit den Indizes übereinstimmen und in derselben Reihenfolge vorliegen. Wir stellen die Indizes unserer Teilmenge von OpenWebText mit einer Milliarde Tokens bereit und setzen deren Pfad als Standard.
--output_dirPfad zum Speichern der Hesse-Approximationsdaten.
ArgumentBeschreibung
--model_nameName des Modells, für das die Bewertungen berechnet werden sollen.
--checkpoint_dirPfad zum gespeicherten Modell. Bei Verwendung eines vortrainierten Modells auf None setzen.
--save_idTag, das für eine benutzerdefinierte Benennung an das Ende des Speicherverzeichnisses angehängt wird.
--save_dirVerzeichnis zum Speichern der Bewertungen (innerhalb des ursprünglichen Faktorenverzeichnisses).
--factors_pathPfad zum Verzeichnis, das die im vorherigen Schritt angepassten (inversen) Hesse-Faktoren enthält.
--query_datasetDer Query-Datensatz zur Konstruktion des Query-Gradienten. Derzeit ist die einzige Option RTP.
--toxic_query_indices_pathPfad zu den Indizes aus dem Query-Datensatz, die sich auf toxische Demonstrationen beziehen. Wir stellen unsere toxische Teilmenge aus RTP unter ../data/RTP/query_indices/toxic_indices.npy bereit.
--nontoxic_query_indices_pathPfad zu den Indizes für nicht-toxische Queries. Wir stellen unsere nicht-toxische Teilmenge aus RTP unter ../data/RTP/query_indices/nontoxic_indices.npy bereit.
ArgumentBeschreibung
--model_nameName des Modells, für das die Maske erstellt werden soll.
--scores_pathPfad zu den im vorherigen Schritt berechneten Bewertungen.
--windowDie Länge des Kontextfensters.
--toxicity_thresholdDer Schwellenwert zur Bestimmung toxischer Tokens (als Perzentil, z. B. 0.99).
--max_tokensDie maximale Anzahl auszuwählender toxischer Tokens.
--query_datasetDer Query-Datensatz zur Konstruktion des Query-Gradienten. Derzeit ist die einzige Option RTP.
--inspection_idxWir geben die unterdrückten Tokens für ein einzelnes Trainingsbeispiel automatisch in Rot aus. Dieses Argument legt fest, welches Beispiel anhand seiner Rangfolge ausgegeben wird (z. B. ist 0 das am höchsten eingestufte Trainingsbeispiel).
ArgumentBeschreibung
--model_nameName des zu evaluierenden Modells.
--checkpoint_dirPfad zum gespeicherten Modell. Bei Verwendung eines vortrainierten Modells auf None setzen.
--datasetDatensatz, auf dem evaluiert werden soll. Entweder RTP, AttaQ oder BOLD.
--save_dirVerzeichnis zum Speichern der Ergebnisse.
--decoding_defenseZur Decodierungszeit anzuwendende Verteidigung. none oder rad. Gilt nicht für unsere OpenWebText-Evaluierung.
--save_outputsOb die Ausgaben des Modells gespeichert werden sollen.
ArgumentBeschreibung
--model_nameName des zu evaluierenden Modells.
--checkpoint_dirPfad zum gespeicherten Modell. Bei Verwendung eines vortrainierten Modells auf None setzen.
--datasetDatensatz, auf dem evaluiert werden soll. Entweder RTP, AttaQ oder BOLD.
--save_dirVerzeichnis zum Speichern der Ergebnisse.
--decoding_defenseZur Decodierungszeit anzuwendende Verteidigung. none oder rad. Gilt nicht für unsere OpenWebText-Evaluierung.