
논문 "Random Embedding Perturbations를 통한 오픈 웨이트 LLM 탈옥"을 위한 코드, 응답 로그 및 레이블
논문 Jailbreaking Open-Weight LLMs via Random Embedding Perturbations를 위한 코드와 데이터입니다.
University of California, Santa Cruz의 Theoretical Computer Science Department의 훌륭한 분들이 작성했습니다.
이 작업에는 Scott Sirri, Prof. Vaggos Chatziafratis, Prof. C. Seshadhri 그리고 저의 중요한 기여가 있습니다.
이 저장소에는 논문을 위해 생성된 모든 모델 응답, 각 응답의 safe / unsafe / degenerate 레이블, 이를 생성한 Colab 노트북, 그리고 노트북이 임포트하는 추론 스크립트가 담겨 있습니다. 여기에는 Perturbed Embedding Vector (PEV) 공격과 논문에서 비교한 다섯 가지 다른 탈옥 방법이 포함됩니다. 논문의 모든 탈옥률과 실제 소요 시간은 results/의 파일들로부터 계산됩니다.
code/
inference/ run_<model>.py: 모델 로딩, 프롬프트 구성 및 모든 PEV 노트북이
임포트하는 수동 생성 루프
ours/<model>/ 한 모델에 대한 PEV 노트북
ours/<model>/fixed_peak_sigma/
고정 peak sigma 실행을 위한 노트북 (GLM-4-9B, Phi-4-mini,
Qwen2.5-1.5B); 해당 로그는 results/<model>/ours/fixed_peak_sigma/에 있음
igcg/ I-GCG, 모델당 노트북 하나
latentfusion/ LatentFusion, 모델당 노트북 하나
refusalcones/ RefusalCones, 모델당 노트북 하나
softprompt/ SoftPrompt 노트북 (Llama-3.1-8B 및 Mistral-7B)
figures/ 논문 그림을 그리는 노트북
results/<model>/
baseline/ 교란되지 않은 프롬프트에 대한 직접 응답 (.txt 로그) 및 해당
레이블 (.xlsx / .csv); 이는 기준 탈옥률을 제공함
ours/raw_responses/ sigma 스윕에서 얻은 PEV 응답 로그, 프롬프트 범위별로 분할됨
ours/classified/ 해당 응답에 대한 레이블, 동일한 방식으로 분할됨
ours/fixed_peak_sigma/ 모델의 고정 peak sigma에서의 PEV 실행 (GLM-4-9B, Phi-4-mini,
Qwen2.5-1.5B): 전체 100-프롬프트 스윕 및 SELECT 재실행
igcg/ latentfusion/ neurostrike/ refusalcones/ softprompt/
다른 방법들에 대한 응답 (.txt) 및 레이블 (.xlsx)
모델: Qwen2.5-1.5B, SmolLM3-3B, Phi-4-mini, Mistral-7B-Instruct, Llama-3.1-8B,
GLM-4-9B, 논문 Sec. 4에 명시된 instruction-tuned chat 변형들.
각 방법의 코드 위치:
| Method | Location |
|---|---|
| PEV | code/ours/<model>/; 고정 peak sigma 실행은 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 내부 (setup 셀은 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 스크립트는 체크포인트가 gated이기 때문에 Hugging Face 토큰이 필요하며, 토큰은 환경에서 읽고 절대 저장되지 않습니다.
.txt)는 노트북이 작성하는 append-only 로그입니다. 각 항목은 프롬프트 인덱스, 해당되는 경우 노이즈 수준 sigma, 실행 번호, 그리고 전체 모델 응답을 기록합니다. 파일 이름에는 프롬프트 범위 (p001_to_p025는 100개의 JailbreakBench 유해 프롬프트 중 프롬프트 1~25를 의미)와 실행의 UTC 타임스탬프가 포함됩니다. 실제 소요 시간은 프롬프트당 20회 실행의 각 배치 후와 실험 종료 시에 기록됩니다..xlsx, .csv)은 각 응답당 한 행을 가지며, 논문 Sec. 4에 정의된 대로 safe, unsafe 또는 degenerate 레이블을 담습니다. 프롬프트의 실행 중 하나라도 unsafe로 레이블되면 해당 프롬프트는 탈옥된 것으로 간주됩니다. *_categorization* 또는 *_p01_25 형식의 이름을 가진 파일은 동일한 프롬프트 범위를 가진 로그의 레이블 버전입니다.ours/fixed_peak_sigma/)은 JBB_<model>_sigma0pXXX_..._<timestamp>.txt로 명명됩니다; sigma0p003은 sigma = 0.003을 의미합니다. p001_to_p100 파일은 해당 sigma에서의 전체 100-프롬프트, 20회 실행 스윕입니다. SELECT_..._nNN 파일은 파일 이름에 나열된 프롬프트에 대해 동일한 sigma에서의 후속 실행이며, 프롬프트당 NN회 실행입니다.HIGHSIGMA를 포함하는 파일은 Sec. 4.1에서 논의된 더 큰 sigma에서의 실행입니다.SELECT를 포함하는 파일은 탈옥하는 데 20회 이상의 실행이 필요했던 프롬프트에 대해, 파일 이름에 나열된 프롬프트에 대한 추가 실행입니다. 모든 로그의 헤더 줄은 sigma 값, 실행 횟수, 프롬프트 id 및 랜덤 시드를 기록합니다.Llama-3.1-8B/baseline/fixed_baseline.xlsx 및 fixed_* 레이블 파일은 수동 검증 후의 레이블 파일이며 이전 버전을 대체합니다.응답은 프롬프트, 실행 번호 및 응답이 담긴 로그 파일을 제공받은 Claude Opus 4.6이 JailbreakBench judge 지침으로 분류했습니다. 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 토큰은 대화형으로 요청되며 이 저장소에 저장되지 않습니다. 다른 방법들의 노트북도 해당 공격으로 대체하여 동일한 패턴을 따릅니다.
논문의 탈옥률은 모델을 전혀 실행하지 않고 레이블 파일만으로 다시 계산할 수 있습니다.