Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
IF-Guide — [NeurIPS '25] Codice per il paper "IF-Guide: Soppressione dei dati di addestramento dannosi guidata dalla funzione di influenza per ridurre la tossicità degli LLM" | Kitploit
Strumenti/GitHubGitHub/ztcoalson/if-guide
Strumenti DifensiviAnalisi StaticaAnalisi del CodicePaper e RicercaApprendimento e FormazioneSicurezza dell'IA
GitHubztcoalson/if-guide

IF-Guide

[NeurIPS '25] Codice per il paper "IF-Guide: Soppressione dei dati di addestramento dannosi guidata dalla funzione di influenza per ridurre la tossicità degli LLM"

Vedi Repository
1321310 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Sito web
Condividi

IF-Guide: Disintossicazione degli LLM guidata da funzioni di influenza [NeurIPS 2025]

Questa repository contiene il codice per IF-Guide, la tecnica di disintossicazione degli LLM introdotta nel nostro articolo:

  • IF-Guide: Disintossicazione degli LLM guidata da funzioni di influenza
  • Zachary Coalson, Juhan Bae, Nicholas Carlini, Sanghyun Hong

 


TL;DR

Puoi usare il nostro metodo per disintossicare gli LLM identificando esempi di addestramento dannosi e poi sopprimendoli durante il pre-addestramento o il fine-tuning!

 

Abstract

Studiamo come i dati di addestramento contribuiscono all'emergere di comportamenti tossici nei modelli linguistici di grandi dimensioni. Gran parte dei lavori precedenti sulla riduzione della tossicità dei modelli adotta approcci reattivi, come il fine-tuning di modelli pre-addestrati (e potenzialmente tossici) per allinearli ai valori umani. Al contrario, proponiamo un approccio proattivo-IF-Guide-che sfrutta le funzioni di influenza per identificare i token dannosi in qualsiasi dato di addestramento e sopprimerne l'impatto durante l'addestramento. A tal fine, mostriamo innanzitutto che le funzioni di influenza standard non sono efficaci nell'individuare record di addestramento dannosi. Presentiamo poi un nuovo adattamento che misura le attribuzioni a livello di token dai dati di addestramento alla tossicità del modello, insieme a tecniche per selezionare i documenti di addestramento tossici e a un obiettivo di apprendimento che può essere integrato sia nel pre-addestramento che nel fine-tuning. Inoltre, IF-Guide non si basa su dati di preferenze umane, generalmente richiesti dai metodi di allineamento esistenti. Nella valutazione, dimostriamo che IF-Guide riduce sostanzialmente sia la tossicità esplicita che quella implicita-fino a 10× rispetto ai modelli non censurati, e fino a 3× rispetto ai metodi di allineamento di base, ad es., DPO e RAD-in entrambi gli scenari di pre-addestramento e fine-tuning. IF-Guide è computazionalmente efficiente: non è necessario un modello con un miliardo di parametri per calcolare i punteggi di influenza; un modello con un milione di parametri-con 7.5× meno parametri-può fungere efficacemente da proxy per identificare i dati dannosi.

 


Installazione

Crea l'ambiente conda (puoi usare qualsiasi ambiente con python>=3.10) e installa i pacchetti necessari:

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

Nota: Usiamo il pacchetto Kronfluence per calcolare i punteggi di influenza con EK-FAC. Abbiamo creato un'implementazione personalizzata che supporta la tecnica dell'influenza differenziale introdotta nel nostro articolo (pagina 4, Eq. 6). Il merito di tutte le altre componenti del pacchetto va ai creatori originali. Grazie!

Quindi, spostati nella directory di lavoro:

root@kitploit:~
cd src

 


Addestramento/Fine-Tuning del Modello

Per addestrare un modello, esegui:

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

Questo richiama train.py, che accetta i seguenti argomenti chiave:

ArgumentDescription
--model_nameNome del modello da addestrare. Deve essere registrato in utils/registry.yaml con un tokenizer corrispondente (vedi i modelli esistenti per esempi)
--save_idEtichetta descrittiva usata per denominare la directory di output.
--toxic_token_mask_pathPercorso di una maschera di token (generata tramite IF-Guide). Usa None per l'addestramento standard.
--toxic_lambdaL'intensità del termine di penalità usato dal nostro obiettivo di addestramento.

Nota: Tutti gli altri argomenti possono essere lasciati ai valori predefiniti per riprodurre la nostra configurazione sperimentale. Questo vale anche per le sezioni successive.

Per effettuare il fine-tuning di un modello esistente, esegui:

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

Questo esegue finetune.py, che usa i seguenti argomenti aggiuntivi:

ArgumentDescription
--checkpoint_dirPercorso di un modello salvato. Se usi un modello pre-addestrato, impostalo su None.
--max_stepsNumero massimo di passi per il fine-tuning.

 


Eseguire IF-Guide

IF-Guide si compone di quattro fasi: (1) calcolare l'approssimazione dell'inversa dell'Hessiana con EK-FAC, (2) calcolare i punteggi di influenza differenziale a livello di token sui dati di query tossici e non tossici (pagina 4, Eq. 8), (3) selezionare i token tossici influenti da sopprimere durante l'addestramento (pagina 23, Alg. 1) e (4) sopprimere i token tossici con il nostro obiettivo di addestramento basato su penalità (pagina 5, Eq. 9).

 

1. Stimare i fattori dell'approssimazione dell'inversa dell'Hessiana

Esegui:

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

Questo richiama fit_factors.py e accetta i seguenti argomenti principali:

ArgumentDescription
--model_nameNome del modello su cui stimare i fattori.
--checkpoint_dirPercorso del modello salvato. Se usi un modello pre-addestrato, impostalo su None.
--train_indices_pathPercorso degli indici di addestramento usati per addestrare il modello (non necessario se si usa l'intero dataset). Devono corrispondere esattamente agli indici e seguire lo stesso ordine. Forniamo gli indici del nostro sottoinsieme di un miliardo di token OpenWebText e li impostiamo come percorso predefinito.
--output_dirPercorso in cui salvare i dati dell'approssimazione dell'Hessiana.

 

2. Calcolare i punteggi a livello di token

Esegui:

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

Questo esegue compute_scores.py con i seguenti argomenti chiave (in aggiunta alla maggior parte degli argomenti usati per calcolare i fattori):

ArgumentDescription
--model_nameNome del modello per cui calcolare i punteggi.
--checkpoint_dirPercorso del modello salvato. Se usi un modello pre-addestrato, impostalo su None.
--save_idEtichetta aggiunta in coda alla directory di salvataggio per una denominazione personalizzata.
--save_dirDirectory in cui salvare i punteggi (all'interno della directory originale dei fattori).
--factors_pathPercorso della directory contenente i fattori (inversi) dell'Hessiana stimati nel passaggio precedente.
--query_datasetIl dataset di query per costruire il gradiente di query. Attualmente, l'unica opzione è RTP.
--toxic_query_indices_pathPercorso degli indici del dataset di query relativi a dimostrazioni tossiche. Forniamo il nostro sottoinsieme tossico da RTP in ../data/RTP/query_indices/toxic_indices.npy.
--nontoxic_query_indices_pathPercorso degli indici per le query non tossiche. Forniamo il nostro sottoinsieme non tossico da RTP in ../data/RTP/query_indices/nontoxic_indices.npy.

 

3. Selezionare i token tossici influenti

Esegui:

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

Questo esegue build_toxic_token_mask.py. Accetta i seguenti argomenti principali:

ArgumentDescription
--model_nameNome del modello per cui costruire la maschera.
--scores_pathPercorso dei punteggi calcolati nel passaggio precedente.
--windowLa lunghezza della finestra di contesto.
--toxicity_thresholdLa soglia per determinare i token tossici (come percentile, ad es., 0.99).
--max_tokensIl numero massimo di token tossici da selezionare.
--query_datasetIl dataset di query per costruire il gradiente di query. Attualmente, l'unica opzione è RTP.
--inspection_idxStampiamo automaticamente in rosso i token soppressi per un singolo esempio di addestramento. Questo argomento specifica quale esempio stampare in base alla sua posizione in classifica (ad es., 0 è l'esempio di addestramento con la posizione più alta in classifica).

 

4. Sopprimere i token tossici durante l'addestramento/il fine-tuning

Dopo aver calcolato la maschera dei token tossici per un determinato modello, puoi specificare gli argomenti --toxic_token_mask_path e --toxic_lambda in ./scripts/train.sh (e ./scripts/finetune.sh) per addestrare/effettuare il fine-tuning di modelli con IF-Guide.

 


Valutazione

Forniamo il codice per valutare la tossicità esplicita (tramite Detoxify), la tossicità implicita (tramite ToxiGen-RoBERTa) e la fluidità (misurata su LAMBADA e OpenWebText).

 

Valutazione della tossicità esplicita

Esegui:

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

Questo esegue run_toxicity_eval.py, che ha i seguenti argomenti principali:

ArgumentDescription
--model_nameNome del modello da valutare.
--checkpoint_dirPercorso del modello salvato. Se usi un modello pre-addestrato, impostalo su None.
--datasetDataset su cui valutare. Può essere RTP, AttaQ o BOLD.
--save_dirDirectory in cui salvare i risultati.
--decoding_defenseDifesa in fase di decodifica da applicare. none o rad. Non si applica alla nostra valutazione su OpenWebText.
--save_outputsIndica se salvare gli output del modello.

 

Valutazione della tossicità implicita

Esegui:

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

Richiede i seguenti argomenti:

ArgumentDescription
--outputs_file_pathIl percorso di un file di output generato da un'esecuzione della valutazione della tossicità esplicita. Rivalutiamo gli output esistenti per risparmiare tempo. Dovrebbe essere un file output.json generato durante la valutazione esplicita.
--datasetDataset da cui provengono gli output. Determina come vengono formattati gli output finali.

 

Valutazione della fluidità

Esegui:

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

Ha i seguenti argomenti principali:

ArgumentDescription
--model_nameNome del modello da valutare.
--checkpoint_dirPercorso del modello salvato. Se usi un modello pre-addestrato, impostalo su None.
--datasetDataset su cui valutare. Può essere RTP, AttaQ o BOLD.
--save_dirDirectory in cui salvare i risultati.
--decoding_defenseDifesa in fase di decodifica da applicare. none o rad. Non si applica alla nostra valutazione su OpenWebText.

 

Test con RAD

Riteniamo che il nostro metodo possa essere combinato con la difesa in fase di decodifica Reward Augmented Decoding (RAD) [EMNLP 2023]. Per eseguire IF-Guide con RAD (o testare RAD in modo indipendente), scarica prima il modello di reward (fornito dagli autori del lavoro originale) e posizionalo nella directory prevista:

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

Il merito dell'implementazione di RAD che usiamo appartiene interamente agli autori del lavoro originale. Grazie!

 


Cita il nostro lavoro

Ti preghiamo di citare il nostro lavoro se trovi utile questo codice sorgente.

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}
}

 


 

Per qualsiasi domanda o suggerimento, contatta Zachary Coalson ([email protected]).

Scarica lo strumento