Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
IF-Guide — [NeurIPS '25] Código para o Paper "IF-Guide: Influence Function-Guided Suppression of Harmful Training Data for Reducing LLM Toxicity" | Kitploit
Ferramentas/GitHubGitHub/ztcoalson/if-guide
Ferramentas DefensivasAnálise EstáticaAnálise de CódigoPapers e PesquisaAprendizado e EducaçãoSegurança de IA
GitHubztcoalson/if-guide

IF-Guide

[NeurIPS '25] Código para o Paper "IF-Guide: Influence Function-Guided Suppression of Harmful Training Data for Reducing LLM Toxicity"

Ver Repositório
13213há 10 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Site
Compartilhar

IF-Guide: Desintoxicação de LLMs Guiada por Funções de Influência [NeurIPS 2025]

Este repositório contém o código do IF-Guide, a técnica de desintoxicação de LLMs apresentada no nosso artigo:

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

 


TL;DR

Você pode usar nosso método para desintoxicar LLMs identificando exemplos de treinamento prejudiciais e, em seguida, suprimindo-os durante o pré-treinamento ou o fine-tuning!

 

Resumo

Estudamos como os dados de treinamento contribuem para o surgimento de comportamentos tóxicos em modelos de linguagem de grande porte. A maior parte dos trabalhos anteriores sobre redução de toxicidade em modelos adota abordagens reativas, como o fine-tuning de modelos pré-treinados (e potencialmente tóxicos) para alinhá-los aos valores humanos. Em contraste, propomos uma abordagem proativa — o IF-Guide — que utiliza funções de influência para identificar tokens prejudiciais em quaisquer dados de treinamento e suprimir seu impacto durante o treinamento. Para isso, primeiro mostramos que as funções de influência padrão são ineficazes para descobrir registros de treinamento prejudiciais. Em seguida, apresentamos uma nova adaptação que mede atribuições em nível de token, dos dados de treinamento até a toxicidade do modelo, juntamente com técnicas para selecionar documentos de treinamento tóxicos e um objetivo de aprendizado que pode ser integrado tanto ao pré-treinamento quanto ao fine-tuning. Além disso, o IF-Guide não depende de dados de preferência humana, que normalmente são exigidos pelos métodos de alinhamento existentes. Na avaliação, demonstramos que o IF-Guide reduz substancialmente tanto a toxicidade explícita quanto a implícita — em até 10× em comparação com modelos sem censura, e em até 3× em comparação com métodos de alinhamento de base, como DPO e RAD — tanto em cenários de pré-treinamento quanto de fine-tuning. O IF-Guide é computacionalmente eficiente: um modelo de bilhão de parâmetros não é necessário para calcular os escores de influência; um modelo de milhão de parâmetros — com 7,5× menos parâmetros — pode servir efetivamente como proxy para identificar dados prejudiciais.

 


Instalação

Crie o ambiente conda (você pode usar qualquer ambiente com python>=3.10) e instale os pacotes necessários:

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

Nota: Usamos o pacote Kronfluence para calcular os escores de influência com EK-FAC. Criamos uma implementação personalizada que suporta a técnica de influência diferencial introduzida no nosso artigo (página 4, Eq. 6). Os créditos de todos os outros componentes do pacote vão para os criadores originais. Obrigado!

Em seguida, navegue até o diretório de trabalho:

root@kitploit:~
cd src

 


Treinamento/Fine-Tuning do Modelo

Para treinar um modelo, execute:

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

Isso chama train.py, que aceita os seguintes argumentos principais:

ArgumentoDescrição
--model_nameNome do modelo a ser treinado. Deve estar registrado em utils/registry.yaml com um tokenizador correspondente (consulte os modelos existentes para exemplos)
--save_idTag descritiva usada para nomear o diretório de saída.
--toxic_token_mask_pathCaminho para uma máscara de tokens (gerada via IF-Guide). Use None para treinamento padrão.
--toxic_lambdaA intensidade do termo de penalidade usado pelo nosso objetivo de treinamento.

Nota: Todos os outros argumentos podem ser mantidos nos valores padrão para reproduzir nossa configuração experimental. Isso se aplica às seções a seguir.

Para fazer fine-tuning de um modelo existente, execute:

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

Isso executa finetune.py, que usa os seguintes argumentos adicionais:

ArgumentoDescrição
--checkpoint_dirCaminho para um modelo salvo. Se estiver usando um modelo pré-treinado, defina como None.
--max_stepsNúmero máximo de passos para o fine-tuning.

 


Executando o IF-Guide

O IF-Guide é composto por quatro etapas: (1) computar a aproximação da inversa da Hessiana com EK-FAC, (2) computar os escores de influência diferencial por token sobre os dados de consulta tóxicos e não tóxicos (página 4, Eq. 8), (3) selecionar tokens tóxicos influentes para suprimir durante o treinamento (página 23, Alg. 1) e (4) suprimir os tokens tóxicos com nosso objetivo de treinamento baseado em penalidade (página 5, Eq. 9).

 

1. Ajustar os Fatores de Aproximação da Inversa da Hessiana

Execute:

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

Isso chama fit_factors.py e recebe os seguintes argumentos principais:

ArgumentoDescrição
--model_nameNome do modelo para ajustar os fatores.
--checkpoint_dirCaminho para o modelo salvo. Se estiver usando um modelo pré-treinado, defina como None.
--train_indices_pathCaminho para os índices de treinamento usados para treinar o modelo (não é necessário se estiver usando o conjunto de dados inteiro). Deve corresponder exatamente aos índices e estar na mesma ordem. Fornecemos os índices do nosso subconjunto de um bilhão de tokens do OpenWebText e definimos seu caminho como padrão.
--output_dirCaminho para salvar os dados da aproximação da Hessiana.

 

2. Computar os Escores por Token

Execute:

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

Isso executa compute_scores.py com os seguintes argumentos principais (além da maioria dos argumentos usados para computar os fatores):

ArgumentoDescrição
--model_nameNome do modelo para computar os escores.
--checkpoint_dirCaminho para o modelo salvo. Se estiver usando um modelo pré-treinado, defina como None.
--save_idTag anexada ao final do diretório de salvamento para nomeação personalizada.
--save_dirDiretório para salvar os escores (dentro do diretório original dos fatores).
--factors_pathCaminho para o diretório que contém os fatores da (inversa da) Hessiana ajustados na etapa anterior.
--query_datasetO conjunto de dados de consulta para construir o gradiente de consulta. Atualmente, a única opção é RTP.
--toxic_query_indices_pathCaminho para os índices do conjunto de dados de consulta referentes a demonstrações tóxicas. Fornecemos nosso subconjunto tóxico do RTP em ../data/RTP/query_indices/toxic_indices.npy.
--nontoxic_query_indices_pathCaminho para os índices de consultas não tóxicas. Fornecemos nosso subconjunto não tóxico do RTP em ../data/RTP/query_indices/nontoxic_indices.npy.

 

3. Selecionar Tokens Tóxicos Influentes

Execute:

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

Isso executa build_toxic_token_mask.py. Ele recebe os seguintes argumentos principais:

ArgumentoDescrição
--model_nameNome do modelo para construir a máscara.
--scores_pathCaminho para os escores computados na etapa anterior.
--windowO comprimento da janela de contexto.
--toxicity_thresholdO limite para determinar tokens tóxicos (como percentil, ex.: 0,99).
--max_tokensO número máximo de tokens tóxicos a selecionar.
--query_datasetO conjunto de dados de consulta para construir o gradiente de consulta. Atualmente, a única opção é RTP.
--inspection_idxImprimimos automaticamente os tokens suprimidos para um único exemplo de treinamento em vermelho. Este argumento especifica qual exemplo imprimir com base em sua classificação (ex.: 0 é o exemplo de treinamento mais bem classificado).

 

4. Suprimindo Tokens Tóxicos Durante o Treinamento/Fine-Tuning

Após computar a máscara de tokens tóxicos para um modelo específico, você pode especificar os argumentos --toxic_token_mask_path e --toxic_lambda em ./scripts/train.sh (e ./scripts/finetune.sh) para treinar/fazer fine-tuning de modelos com o IF-Guide.

 


Avaliação

Fornecemos código para avaliar toxicidade explícita (via Detoxify), toxicidade implícita (via ToxiGen-RoBERTa) e fluência (medida em LAMBADA e OpenWebText).

 

Avaliação de Toxicidade Explícita

Execute:

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

Isso executa run_toxicity_eval.py, que tem os seguintes argumentos principais:

ArgumentoDescrição
--model_nameNome do modelo a ser avaliado.
--checkpoint_dirCaminho para o modelo salvo. Se estiver usando um modelo pré-treinado, defina como None.
--datasetConjunto de dados para avaliar. Pode ser RTP, AttaQ ou BOLD.
--save_dirDiretório para salvar os resultados.
--decoding_defenseDefesa em tempo de decodificação a ser aplicada. none ou rad. Não se aplica à nossa avaliação no OpenWebText.
--save_outputsSe deve salvar as saídas do modelo.

 

Avaliação de Toxicidade Implícita

Execute:

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

Requer os seguintes argumentos:

ArgumentoDescrição
--outputs_file_pathO caminho para um arquivo de saída de uma execução de toxicidade explícita. Reavaliamos as saídas existentes para economizar tempo. Deve ser um arquivo output.json gerado durante a avaliação explícita.
--datasetConjunto de dados do qual as saídas são provenientes. Determina como as saídas finais são formatadas.

 

Avaliação de Fluência

Execute:

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

Tem os seguintes argumentos principais:

ArgumentoDescrição
--model_nameNome do modelo a ser avaliado.
--checkpoint_dirCaminho para o modelo salvo. Se estiver usando um modelo pré-treinado, defina como None.
--datasetConjunto de dados para avaliar. Pode ser RTP, AttaQ ou BOLD.
--save_dirDiretório para salvar os resultados.
--decoding_defenseDefesa em tempo de decodificação a ser aplicada. none ou rad. Não se aplica à nossa avaliação no OpenWebText.

 

Testando com RAD

Descobrimos que nosso método é compatível com a defesa em tempo de decodificação Reward Augmented Decoding (RAD) [EMNLP 2023]. Para executar o IF-Guide com RAD (ou testar o RAD de forma independente), primeiro baixe o modelo de recompensa (fornecido pelos autores do trabalho original) e coloque-o no diretório esperado:

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

Os créditos pela implementação do RAD que usamos pertencem integralmente aos autores do trabalho original. Obrigado!

 


Cite Nosso Trabalho

Por favor, cite nosso trabalho se você achar este código-fonte útil.

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

 


 

Por favor, entre em contato com Zachary Coalson ([email protected]) para quaisquer perguntas e recomendações.

Baixar ferramenta