Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
IF-Guide — [NeurIPS '25] Code for Paper "IF-Guide: Influence Function-Guided Suppression of Harmful Training Data for Reducing LLM Toxicity" | Kitploit
Инструменты/GitHubGitHub/ztcoalson/if-guide
Defensive ToolsStatic AnalysisCode AnalysisPapers & ResearchLearning & EducationAI Security
GitHubztcoalson/if-guide

IF-Guide

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

Репозиторий
13210 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

IF-Guide: детоксификация LLM на основе функций влияния [NeurIPS 2025]

Этот репозиторий содержит код IF-Guide — метода детоксификации LLM, представленного в нашей статье:

  • IF-Guide: детоксификация LLM на основе функций влияния
  • Zachary Coalson, Juhan Bae, Nicholas Carlini, Sanghyun Hong

 


TL;DR

Вы можете использовать наш метод для детоксификации LLM: он выявляет вредоносные обучающие примеры и подавляет их во время предварительного обучения или дообучения!

 

Аннотация

Мы исследуем, как обучающие данные способствуют возникновению токсичного поведения больших языковых моделей. Большинство предыдущих работ по снижению токсичности моделей используют реактивные подходы, например дообучение предварительно обученных (и потенциально токсичных) моделей для приведения их в соответствие с человеческими ценностями. В отличие от них, мы предлагаем проактивный подход — IF-Guide, — который использует функции влияния для выявления вредоносных токенов в любых обучающих данных и подавления их влияния во время обучения. Для этого мы сначала показываем, что стандартные функции влияния неэффективны для обнаружения вредоносных обучающих записей. Затем мы представляем новую адаптацию, которая измеряет атрибуцию на уровне токенов от обучающих данных к токсичности модели, а также методы выбора токсичных обучающих документов и целевую функцию обучения, которую можно интегрировать как в предварительное обучение, так и в дообучение. Более того, IF-Guide не полагается на данные о человеческих предпочтениях, которые обычно требуются существующим методам выравнивания. В оценке мы демонстрируем, что IF-Guide значительно снижает как явную, так и неявную токсичность — до 10× по сравнению с моделями без цензурирования и до 3× по сравнению с базовыми методами выравнивания, например DPO и RAD, — в сценариях как предварительного обучения, так и дообучения. IF-Guide вычислительно эффективен: для вычисления показателей влияния не нужна модель с миллиардом параметров; модель с миллионом параметров — с 7.5× меньшим числом параметров — может эффективно служить прокси для выявления вредоносных данных.

 


Установка

Создайте conda-окружение (можно использовать любое окружение с python>=3.10) и установите необходимые пакеты:

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

Примечание: Мы используем пакет Kronfluence для вычисления показателей влияния с помощью EK-FAC. Мы создали собственную реализацию, которая поддерживает технику дифференциального влияния, представленную в нашей статье (стр. 4, ур. 6). Авторство всех остальных компонентов пакета принадлежит оригинальным создателям. Спасибо!

Затем перейдите в рабочую директорию:

root@kitploit:~
cd src

 


Обучение/тонкая настройка моделей

Чтобы обучить модель, выполните:

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

Это запускает train.py, который принимает следующие основные аргументы:

Примечание: Все остальные аргументы можно оставить со значениями по умолчанию, чтобы воспроизвести нашу экспериментальную конфигурацию. Это относится и к следующим разделам.

Чтобы дообучить существующую модель, выполните:

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

Это запускает finetune.py, который использует следующие дополнительные аргументы:

ArgumentDescription
--checkpoint_dirПуть к сохранённой модели. Если используется предварительно обученная модель, укажите None.
--max_stepsМаксимальное количество шагов дообучения.

 


Запуск IF-Guide

IF-Guide состоит из четырёх шагов: (1) вычисление аппроксимации обратного гессиана с помощью EK-FAC, (2) вычисление показателей дифференциального влияния на уровне токенов для токсичных и нетоксичных запросов (стр. 4, ур. 8), (3) выбор влиятельных токсичных токенов для подавления во время обучения (стр. 23, алгоритм 1) и (4) подавление токсичных токенов с помощью нашей целевой функции обучения, основанной на штрафе (стр. 5, ур. 9).

 

1. Подбор факторов аппроксимации обратного гессиана

Выполните:

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

Это запускает fit_factors.py со следующими основными аргументами:

 

2. Вычисление показателей на уровне токенов

Выполните:

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

Это запускает compute_scores.py со следующими ключевыми аргументами (в дополнение к большей части аргументов, используемых для вычисления факторов):

 

3. Выбор влиятельных токсичных токенов

Выполните:

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

Это запускает build_toxic_token_mask.py. Он принимает следующие основные аргументы:

 

4. Подавление токсичных токенов во время обучения/тонкой настройки

После вычисления маски токсичных токенов для конкретной модели вы можете указать аргументы --toxic_token_mask_path и --toxic_lambda в ./scripts/train.sh (и ./scripts/finetune.sh), чтобы обучать/дообучать модели с помощью IF-Guide.

 


Оценка

Мы предоставляем код для оценки явной токсичности (через Detoxify), неявной токсичности (через ToxiGen-RoBERTa) и плавности (измеряемой на LAMBADA и OpenWebText).

 

Оценка явной токсичности

Выполните:

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

Это запускает run_toxicity_eval.py со следующими основными аргументами:

 

Оценка неявной токсичности

Выполните:

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

Для этого требуются следующие аргументы:

ArgumentDescription
--outputs_file_pathПуть к файлу выходных данных, полученному при оценке явной токсичности. Мы повторно оцениваем существующие результаты, чтобы сэкономить время. Это должен быть файл output.json, созданный в ходе оценки явной токсичности.
--datasetНабор данных, из которого получены выходные данные. Определяет формат итоговых результатов.

 

Оценка плавности

Выполните:

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

Она принимает следующие основные аргументы:

 

Тестирование с RAD

Мы обнаружили, что наш метод сочетается с защитой на этапе декодирования Reward Augmented Decoding (RAD) [EMNLP 2023]. Чтобы запустить IF-Guide с RAD (или протестировать RAD отдельно), сначала загрузите модель вознаграждения (предоставленную авторами оригинальной работы) и поместите её в ожидаемый каталог:

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

Авторство используемой нами реализации RAD полностью принадлежит авторам оригинальной работы. Спасибо!

 


Цитирование нашей работы

Пожалуйста, цитируйте нашу работу, если этот исходный код оказался вам полезен.

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

 


 

Пожалуйста, обращайтесь к Закари Коулсону ([email protected]) по любым вопросам и предложениям.

Скачать инструмент
ArgumentDescription
--model_nameНазвание модели для обучения. Должно быть зарегистрировано в utils/registry.yaml с соответствующим токенизатором (см. существующие модели в качестве примеров)
--save_idТег-описатель, используемый для именования выходного каталога.
--toxic_token_mask_pathПуть к маске токенов (созданной с помощью IF-Guide). Используйте None для стандартного обучения.
--toxic_lambdaСила штрафного члена, используемого нашей целевой функцией обучения.
ArgumentDescription
--model_nameНазвание модели, для которой вычисляются факторы.
--checkpoint_dirПуть к сохранённой модели. Если используется предварительно обученная модель, укажите None.
--train_indices_pathПуть к индексам обучающей выборки, использованным для обучения модели (не требуется, если используется весь набор данных). Должен соответствовать точным индексам и их порядку. Мы предоставляем индексы нашего подмножества OpenWebText объёмом один миллиард токенов и задаём их путь по умолчанию.
--output_dirПуть для сохранения данных аппроксимации гессиана.
ArgumentDescription
--model_nameНазвание модели, для которой вычисляются показатели.
--checkpoint_dirПуть к сохранённой модели. Если используется предварительно обученная модель, укажите None.
--save_idТег, добавляемый в конец каталога сохранения для пользовательского именования.
--save_dirКаталог для сохранения показателей (внутри исходного каталога факторов).
--factors_pathПуть к каталогу, содержащему (обратные) факторы гессиана, вычисленные на предыдущем шаге.
--query_datasetНабор данных запросов для построения градиента запроса. В настоящее время доступен только вариант RTP.
--toxic_query_indices_pathПуть к индексам из набора данных запросов, относящимся к токсичным демонстрациям. Мы предоставляем наше токсичное подмножество из RTP в ../data/RTP/query_indices/toxic_indices.npy.
--nontoxic_query_indices_pathПуть к индексам для нетоксичных запросов. Мы предоставляем наше нетоксичное подмножество из RTP в ../data/RTP/query_indices/nontoxic_indices.npy.
ArgumentDescription
--model_nameНазвание модели, для которой строится маска.
--scores_pathПуть к показателям, вычисленным на предыдущем шаге.
--windowДлина контекстного окна.
--toxicity_thresholdПорог для определения токсичных токенов (в виде процентиля, например 0.99).
--max_tokensМаксимальное количество токсичных токенов для выбора.
--query_datasetНабор данных запросов для построения градиента запроса. В настоящее время доступен только вариант RTP.
--inspection_idxМы автоматически выводим подавляемые токены для одного обучающего примера красным цветом. Этот аргумент указывает, какой пример вывести на основе его рейтинга (например, 0 — это пример с наивысшим рейтингом).
ArgumentDescription
--model_nameНазвание модели для оценки.
--checkpoint_dirПуть к сохранённой модели. Если используется предварительно обученная модель, укажите None.
--datasetНабор данных для оценки: RTP, AttaQ или BOLD.
--save_dirКаталог для сохранения результатов.
--decoding_defenseЗащита на этапе декодирования: none или rad. Не применяется к нашей оценке на OpenWebText.
--save_outputsСледует ли сохранять выходные данные модели.
ArgumentDescription
--model_nameНазвание модели для оценки.
--checkpoint_dirПуть к сохранённой модели. Если используется предварительно обученная модель, укажите None.
--datasetНабор данных для оценки: RTP, AttaQ или BOLD.
--save_dirКаталог для сохранения результатов.
--decoding_defenseЗащита на этапе декодирования: none или rad. Не применяется к нашей оценке на OpenWebText.