Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
IF-Guide — [NeurIPS '25] "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] "IF-Guide: Influence Function-Guided Suppression of Harmful Training Data for Reducing LLM Toxicity" 논문 코드

저장소 보기
13210개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

IF-Guide: 영향 함수 기반 LLM 탈독화 [NeurIPS 2025]

이 저장소는 우리 논문에서 소개한 LLM 탈독화 기법인 IF-Guide의 코드를 포함합니다:

  • IF-Guide: 영향 함수 기반 LLM 탈독화
  • Zachary Coalson, Juhan Bae, Nicholas Carlini, Sanghyun Hong

 


TL;DR

우리의 방법을 사용하면 유해한 학습 예제를 식별하고 사전 학습 또는 미세 조정 중에 이를 억제하여 LLM을 탈독화할 수 있습니다!

 

초록

우리는 학습 데이터가 대규모 언어 모델에서 유해한 행동의 출현에 어떻게 기여하는지 연구합니다. 모델 독성을 줄이는 대부분의 기존 연구는 사전 학습된(그리고 잠재적으로 유해한) 모델을 인간의 가치에 맞추기 위해 미세 조정하는 것과 같은 반응적 접근 방식을 채택합니다. 대조적으로, 우리는 능동적 접근 방식인 IF-Guide를 제안합니다. IF-Guide는 영향 함수를 활용하여 모든 학습 데이터 내에서 유해한 토큰을 식별하고 학습 중 그 영향을 억제합니다. 이를 위해 먼저 표준 영향 함수가 유해한 학습 기록을 발견하는 데 비효과적임을 보여줍니다. 그런 다음 학습 데이터에서 모델 독성까지의 토큰 수준 기여도를 측정하는 새로운 적응 기법과, 유해한 학습 문서를 선택하는 기법, 그리고 사전 학습과 미세 조정 모두에 통합할 수 있는 학습 목표를 제시합니다. 또한 IF-Guide는 기존 정렬 방법에서 일반적으로 요구되는 인간 선호 데이터에 의존하지 않습니다. 평가에서 우리는 IF-Guide가 명시적 독성과 암시적 독성을 모두 크게 줄인다는 것을 입증합니다. 무검열 모델 대비 최대 10배, DPO 및 RAD와 같은 기준 정렬 방법과 비교해 최대 3배까지, 사전 학습과 미세 조정 시나리오 모두에서 말입니다. 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

참고: 우리는 EK-FAC로 영향 점수를 계산하기 위해 Kronfluence 패키지를 사용합니다. 우리는 논문(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. 학습/미세 조정 중 독성 토큰 억제

특정 모델에 대한 독성 토큰 마스크를 계산한 후, ./scripts/train.sh(및 ./scripts/finetune.sh)에서 --toxic_token_mask_path 및 --toxic_lambda 인자를 지정하여 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}
}

 


 

질문이나 제안 사항이 있으면 Zachary Coalson([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모델을 학습시키는 데 사용된 학습 인덱스의 경로(전체 데이터셋을 사용하는 경우 필요하지 않음). 정확한 인덱스와 동일한 순서여야 합니다. 우리는 10억 토큰 규모의 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 평가에는 적용되지 않습니다.