
논문 "Random Embedding Perturbations를 통한 오픈 웨이트 LLM 탈옥"을 위한 코드, 응답 로그 및 레이블
논문 Jailbreaking Open-Weight LLMs via Random Embedding Perturbations의 코드 및 데이터.
논문 사전 출판본 링크 - https://arxiv.org/abs/2610.07125
캘리포니아 대학교 산타크루즈 이론 컴퓨터 과학과의 훌륭한 분들이 작성했습니다.
이 작업에는 Scott Sirri, Vaggos Chatziafratis 교수, C. Seshadhri 교수 그리고 저의 중요한 기여가 있습니다.
이 저장소에는 논문을 위해 생성된 모든 모델 응답, 각 응답의 안전 / 안전하지 않음 / 퇴화(degenerate) 레이블, 이를 생성한 Colab 노트북, 그리고 노트북이 임포트하는 추론 스크립트가 포함되어 있습니다. 이는 Perturbed Embedding Vector (PEV) 공격과 논문에서 비교한 다섯 가지 다른 탈옥 방법을 다룹니다. 논문의 모든 탈옥률과 실제 소요 시간(wall-clock time)은 results/에 있는 파일들로부터 계산됩니다.
code/
inference/ run_<model>.py: model loading, prompt construction and the manual
generation loop that every PEV notebook imports
ours/<model>/ PEV notebooks for one model
ours/<model>/fixed_peak_sigma/
notebooks for the fixed peak sigma runs (GLM-4-9B, Phi-4-mini,
Qwen2.5-1.5B); their logs are in results/<model>/ours/fixed_peak_sigma/
igcg/ I-GCG, one notebook per model
latentfusion/ LatentFusion, one notebook per model
refusalcones/ RefusalCones, one notebook per model
softprompt/ SoftPrompt notebooks (Llama-3.1-8B and Mistral-7B)
figures/ notebook that draws the paper figures
results/<model>/
baseline/ direct responses to the unperturbed prompts (.txt log) and their
labels (.xlsx / .csv); these give the baseline jailbreak rate
ours/raw_responses/ PEV response logs from the sigma sweeps, split by prompt range
ours/classified/ labels for those responses, split the same way
ours/fixed_peak_sigma/ PEV runs at the fixed peak sigma of the model (GLM-4-9B, Phi-4-mini,
Qwen2.5-1.5B): the full 100-prompt sweep and the SELECT re-runs
igcg/ latentfusion/ neurostrike/ refusalcones/ softprompt/
responses (.txt) and labels (.xlsx) for the other methods
모델: Qwen2.5-1.5B, SmolLM3-3B, Phi-4-mini, Mistral-7B-Instruct, Llama-3.1-8B,
GLM-4-9B, 논문 4절에 명시된 instruction-tuned 채팅 변형.
각 방법의 코드 위치:
| 방법 | 위치 |
|---|---|
| PEV | code/ours/<model>/; 고정 피크 시그마 실행은 code/ours/<model>/fixed_peak_sigma/; 공유 추론 코드는 code/inference/ |
| I-GCG | code/igcg/, 모델당 노트북 하나 |
| LatentFusion | code/latentfusion/, 모델당 노트북 하나 |
| RefusalCones | code/refusalcones/, 모델당 노트북 하나 |
| SoftPrompt | code/softprompt/, Llama-3.1-8B 및 Mistral-7B |
| NeuroStrike | PEV 노트북 code/ours/Llama-3.1-8B/LLama31_perturbation_p76_to_p100.ipynb 내부(설정 셀은 LLama31_perturbation_p1_to_p25.ipynb에도 있음) 및 code/ours/SmolLM3-3B/run_smollm3_batched_p26_p50.ipynb; 응답은 results/<model>/neurostrike/에 저장됨 |
code/inference/run_<model>.py는 모델당 파일 하나입니다(run_qwen.py, run_smollm3.py,
run_phi4mini.py, run_mistral.py, run_llama.py, run_glm.py). 각 파일은
HuggingFace Transformers로 모델을 로드하고, 빈 시스템 메시지로 채팅 템플릿을 적용하며,
load_model(), build_prompt(), encode_prompt()를 노출하고, 입력 임베딩에 훅을 건
수동 자기회귀 생성 루프를 실행합니다. 노트북은 해당 모델의 스크립트를 임포트하고 그 훅을
통해 가우시안 노이즈를 주입합니다. 단독으로 실행하면 스크립트는 단일 모델을 위한
대화형 터미널을 엽니다. /verbose 및 /embedfile 명령은 토큰 테이블과 임베딩 벡터를
출력합니다. 디바이스 및 동작 스위치는 각 파일 헤더에 문서화된 환경 변수입니다. Llama
스크립트는 체크포인트가 게이트되어 있어 Hugging Face 토큰이 필요합니다. 토큰은 환경에서
읽어오며 절대 저장되지 않습니다.
.txt)는 노트북이 작성하는 추가 전용(append-only) 로그입니다. 각 항목은
프롬프트 인덱스, 해당되는 경우 노이즈 레벨 시그마, 실행 번호, 전체 모델 응답을
기록합니다. 파일 이름에는 프롬프트 범위(p001_to_p025는 100개의 JailbreakBench 유해
프롬프트 중 1번부터 25번까지를 의미)와 실행의 UTC 타임스탬프가 포함됩니다. 실측 시간은
프롬프트당 20회 실행의 매 배치 후와 실험 종료 시에 기록됩니다..xlsx, .csv)은 응답당 한 행을 가지며, 논문 4절에 정의된 대로 safe,
unsafe 또는 degenerate 레이블을 담습니다. 프롬프트의 실행 중 하나라도 unsafe로
레이블되면 해당 프롬프트는 탈옥된 것으로 간주합니다. *_categorization* 또는
*_p01_25 형식의 파일은 동일한 프롬프트 범위를 가진 로그의 레이블된 버전입니다.ours/fixed_peak_sigma/)은
JBB_<model>_sigma0pXXX_..._<timestamp>.txt로 명명됩니다. sigma0p003은 sigma = 0.003을
의미합니다. p001_to_p100 파일은 해당 시그마에서 100개 프롬프트, 20회 실행의 전체
스윕입니다. SELECT_..._nNN 파일은 파일 이름에 나열된 프롬프트에 대해 동일한
시그마로 수행한 후속 실행이며, 프롬프트당 NN회 실행입니다.HIGHSIGMA가 포함된 파일은 4.1절에서 논의된 더 큰 시그마에서의 실행입니다.SELECT가 포함된 파일은 탈옥에 20회 이상의 실행이 필요했던 프롬프트에 대해, 파일
이름에 나열된 프롬프트에서의 추가 실행입니다. 모든 로그의 헤더 줄에는 시그마 값, 실행
횟수, 프롬프트 id, 랜덤 시드가 기록됩니다.Llama-3.1-8B/baseline/fixed_baseline.xlsx 및 fixed_* 레이블 파일은 수동 검증 후의
레이블 파일이며 이전 버전을 대체합니다.응답은 Claude Opus 4.6에 의해 JailbreakBench 판정 지침과 함께, 프롬프트, 실행 번호,
응답이 담긴 로그 파일을 제공받아 분류되었습니다. unsafe로 레이블된 모든 응답은 이후
수동으로 확인되었습니다. results/의 레이블 파일이 검증된 레이블입니다.
code/ours/<model>/ 아래의 각 노트북은 Google Colab의 단일 NVIDIA A100-SXM4-80GB에서 실행되었습니다. 이 노트북은 대응하는 run_<model>.py를 임포트하고, JailbreakBench 유해 프롬프트를 로드하며, 각 프롬프트를 모델의 입력 임베딩 레이어를 통해 매핑하고, 전체 프롬프트 임베딩에 독립적인 가우시안 노이즈 N(0, sigma^2)를 추가한 뒤, 교란된 임베딩을 트랜스포머 레이어에 전달합니다. 각 프롬프트에 대해 하나의 배치에서 20개의 노이즈 행렬을 샘플링하고 모든 응답을 로그에 추가합니다. 디코딩 파라미터와 모델별 sigma는 논문의 Sec. 4 및 Tab. 3에 나열되어 있으며 각 노트북 상단에 설정되어 있습니다. Hugging Face 토큰은 대화식으로 요청되며 이 저장소에 저장되지 않습니다. 다른 방법에 대한 노트북도 해당 공격으로 대체하여 동일한 패턴을 따릅니다.
논문의 탈옥률은 모델을 실행하지 않고 레이블 파일만으로 다시 계산할 수 있습니다.