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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/hannahxchen/llm-censorship-steering
Machine LearningPapers & ResearchLearning & EducationAI SecurityAdversarial Attack
GitHubhannahxchen/llm-censorship-steering

llm-censorship-steering

'검열 조종하기: LLM "사고" 제어를 위한 표현 벡터 발견'

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

LLM 검열 스티어링

이 저장소는 Hannah Cyberey와 David Evans의 검열 스티어링: LLM "사고" 제어를 위한 표현 벡터 발견 논문의 코드 구현을 포함합니다.

우리는 LLM 내부에서 "스티어링 벡터"를 찾아 모델 출력의 검열 수준을 감지하고 제어하는 방법을 소개합니다. 이 블로그 게시물에서 우리 작업에 대한 간략한 개요를 확인하세요.

데모를 사용해 보세요:

  • 🐳 DeepSeek-R1-Distill-Qwen-7B로 생각 억제 스티어링
  • 🦙 Llama-3.1-8B-Instruct로 거부—순응 스티어링

참고: 두 데모 모두 Huggingface 계정이 필요합니다. Huggingface의 ZeroGPU로 호스팅되며, 일일 사용량 제한이 있는 모든 사용자에게 무료입니다.

설치

저장소를 다운로드합니다:

root@kitploit:~
git clone https://github.com/hannahxchen/llm-censorship-steering.git
cd llm-censorship-steering

Python 3.11+ 가상 환경을 만들고 활성화합니다:

root@kitploit:~
conda create -y -n censorship-steering python=3.11
conda activate censorship-steering

의존성을 설치합니다:

root@kitploit:~
pip install -r requirements.txt

사용법

스티어링 벡터 찾기

명령형 모델에 대한 검열 스티어링 벡터를 찾으려면 다음을 실행하세요:

root@kitploit:~
python -m llm_steering.run \
    --run_train \
    --model_name meta-llama/Llama-2-7b-chat-hf \
    --censor_type refusal \
    --n_train 1000 --n_val 500 \
    --threshold 0.1 \
    --filter_layer_pct 0.2

구성 파일이 지정된 디렉터리에 저장됩니다. 또는 llm_steering/config.py에 정의된 형식에 따라 YAML 구성 파일을 전달하여 python -m llm_steering.run --config_file CONFIG_FILE을 사용할 수 있습니다.

추론 모델의 경우 다음 구성을 사용합니다:

root@kitploit:~
python -m llm_steering.run \
    --run_train \
    --model_name deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
    --censor_type thought_suppress \
    --n_train -1 --n_val 1000 \
    --threshold 0.1 \
    --filter_layer_pct 0.05 \
    --save_dir SAVE_DIR

스티어링 벡터 적용

다음 명령을 사용하여 스티어링 벡터를 적용합니다:

root@kitploit:~
python -m llm_steering.run
    --run_steering \
    --config_file SAVE_DIR/config.yaml \
    --generation_batch_size 8 \
    --coeff -1 \
    --datasets jailbreakbench ccp_sensitive

--coeff로 단일 계수를 설정하거나 --min_coeff, --max_coeff, --increment로 계수 범위를 설정할 수 있습니다. 기본적으로 0.2 간격으로 -1부터 1까지의 값을 적용합니다. 모든 모델 출력은 SAVE_DIR/evaluation/에 저장됩니다.

llm_steering/run.py의 모든 인자:

(학습 및 검증용)

  • model_name: Huggingface의 모델 저장소 이름을 사용합니다.
  • censor_type: 명령형 모델에는 "refusal"을, 추론 모델에는 "thought_suppress"를 사용합니다.
  • method: 후보 벡터를 계산하는 방법. 사용 가능한 옵션: WMD (가중 평균 차이), MD (평균 차이). 기본 방법은 WMD입니다.
  • n_train, n_valid: 학습 및 검증 예제 수. -1이면 모든 예제를 사용합니다.
  • threshold: 검열/비검열 예제를 분류하기 위한 임계값 점수.
  • filter_layer_pct: 마지막 N% 레이어를 필터링합니다.
  • save_dir: 결과를 저장할 디렉터리 경로.

(스티어링 벡터 적용용)

  • run_steering: 찾은 스티어링 벡터를 적용합니다.
  • compute_projection: 스칼라 투영값을 계산합니다.
  • datasets: 스티어링을 적용할 데이터셋. (아래 사용 가능한 데이터셋 참조)
  • layer_ids: 개입할 레이어 ID. 기본값은 벡터 검증 중에 식별된 최상위 레이어만 사용합니다.
  • coeff: 단일 계수 값을 실행합니다.
  • min_coeff: 최소 계수.
  • max_coeff: 최대 계수.
  • increment: 계수의 증가 간격.
  • max_new_tokens: 생성할 최대 토큰 수.
  • num_return_sequences: 입력당 생성할 시퀀스 수.
  • top_p: 샘플링을 위한 top p 값.
  • temperature: 샘플링을 위한 온도.

(공통 인자)

  • config_file: YAML 구성 파일 경로.
  • use_cache: 저장된 캐시 결과를 재사용합니다. 프로세스를 재개해야 하지만 전체를 다시 실행하고 싶지 않을 때 유용합니다. 스크립트는 저장된 아티팩트(예: 전처리된 학습/검증 데이터, 계수로 생성된 출력)를 재사용/건너뜁니다.
  • batch_size: 활성화 추출을 위한 배치 크기.
  • generation_batch_size: 생성 실행을 위한 배치 크기.
  • seed: 랜덤 시드.

사용 가능한 데이터셋:

  • jailbreakbench: JailbreakBench의 유해 분할.
  • sorrybench: SorryBench의 전체 프롬프트 세트.
  • alpaca_test_sampled: Alpaca-Cleaned에서 샘플링된 300개의 프롬프트.
  • xstest_safe, xstest_unsafe: XSTest의 전체 프롬프트 세트.
  • ccp_sensitive: CCP Sensitive 프롬프트로 68개의 다양한 민감 주제를 다룹니다. 각 주제에는 20개의 프롬프트가 있습니다.
  • ccp_sensitive_sampled: 주제당 5개의 프롬프트가 포함된 더 작은 CCP Sensitive 세트.
  • deccp_censored: deccp의 검열 분할.

평가

WildGuard로 생성된 출력을 평가하려면 다음을 실행하세요:

root@kitploit:~
python -m llm_steering.run_eval \
    --config_file CONFIG_FILE_PATH \
    --batch_size BATCH_SIZE \
    --run_wildguard

스크립트는 SAVE_DIR/evaluation/ 아래에 저장된 모든 모델 출력 파일을 처리합니다. 이미 처리된 파일을 건너뛰려면 --use_cache를 추가하세요.

WildGuard는 세 가지 유형의 탐지를 제공하며 다음 형식으로 출력을 생성합니다:

root@kitploit:~
Harmful request: yes
Response refusal: yes
Harmful response: no

각 탐지 유형에 대해 "yes" 또는 "no" 토큰의 확률을 추출합니다. 결과는 생성된 출력과 같은 파일에 추가됩니다.

인용

이 작업이 유용하다고 생각되면 다음 논문을 인용해 주세요:

root@kitploit:~
@inproceedings{cyberey2025steering,
    title={Steering the CensorShip: Uncovering Representation Vectors for {LLM} ''Thought'' Control},
    author={Hannah Cyberey and David Evans},
    booktitle={Second Conference on Language Modeling},
    year={2025}
}
도구 다운로드