論文 Jailbreaking Open-Weight LLMs via Random Embedding Perturbations のコードとデータ。
論文のプレプリントへのリンク - https://arxiv.org/abs/2610.07125
カリフォルニア大学サンタクルーズ校理論計算機科学科の素晴らしい人々によって執筆されました。
この研究には、Scott Sirri、Vaggos Chatziafratis教授、C. Seshadhri教授、そして私自身による重要な貢献が含まれています。
このリポジトリには、論文のために生成されたすべてのモデル応答、各応答の安全 / 不安全 / 退化ラベル、それらを生成したColabノートブック、およびノートブックがインポートする推論スクリプトが含まれています。これは、摂動埋め込みベクトル(PEV)攻撃と、論文で比較された他の5つのジェイルブレイク手法を対象としています。論文内のすべてのジェイルブレイク率と実時間は、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>/; 固定ピーク sigma の実行は code/ours/<model>/fixed_peak_sigma/; 共有推論コードは code/inference/ |
| I-GCG | code/igcg/、モデルごとに1つのノートブック |
| LatentFusion | code/latentfusion/、モデルごとに1つのノートブック |
| RefusalCones | code/refusalcones/、モデルごとに1つのノートブック |
| 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 はモデルごとに1ファイルです(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)はノートブックによって書き込まれる追記専用のログです。各エントリには
プロンプトのインデックス、該当する場合はノイズレベル sigma、実行番号、およびモデルの完全な
応答が記録されます。ファイル名にはプロンプト範囲(p001_to_p025 は JailbreakBench の
100 個の有害プロンプトのうちプロンプト 1 から 25 を意味します)と実行の UTC タイムスタンプが
含まれます。実時間はプロンプトごとに 20 回の実行の各バッチ後と実験の最後に書き込まれます。.xlsx、.csv)は応答ごとに1行を持ち、論文の第4節で定義されている
safe、unsafe、degenerate のいずれかのラベルが付きます。プロンプトはいずれかの実行が
unsafe とラベル付けされた場合に jailbreak されたとみなされます。*_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 を含むファイルは、第4.1節で論じられているより大きな sigma での実行です。SELECT を含むファイルは、ファイル名に記載されたプロンプトに対する追加実行で、
jailbreak するのに 20 回を超える実行を要したプロンプト向けです。すべてのログのヘッダー行には
sigma 値、実行回数、プロンプト 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) を加え、摂動された埋め込みをトランスフォーマー層に渡します。各プロンプトについて、1 バッチで 20 個のノイズ行列をサンプリングし、すべての応答をログに追記します。デコーディングパラメータとモデルごとの sigma は、論文の Sec. 4 および Tab. 3 に記載されており、各ノートブックの先頭で設定されています。Hugging Face トークンは対話的に要求され、このリポジトリには保存されません。他の手法のノートブックも、対応する攻撃に置き換えたうえで同じパターンに従っています。
論文のジェイルブレイク率は、モデルを一切実行することなく、ラベルファイルのみから再計算できます。