
Code, Antwortprotokolle und Labels für das Paper Jailbreaking Open-Weight LLMs via Random Embedding Perturbations
Code und Daten für das Paper Jailbreaking Open-Weight LLMs via Random Embedding Perturbations.
Verfasst von den großartigen Leuten des Department of Theoretical Computer Science der University of California, Santa Cruz.
Diese Arbeit enthält bedeutende Beiträge von Scott Sirri, Prof. Vaggos Chatziafratis, Prof. C. Seshadhri und mir.
Das Repository enthält jede für das Paper generierte Modellantwort, das safe-/unsafe-/degenerate-Label jeder Antwort, die Colab-Notebooks, die sie erzeugt haben, und die Inferenzskripte, die die Notebooks importieren. Dies umfasst den Perturbed Embedding Vector (PEV)-Angriff und die fünf anderen Jailbreak-Methoden, die im Paper verglichen werden. Alle Jailbreak-Raten und Wall-Clock-Zeiten im Paper werden aus den Dateien in results/ berechnet.
code/
inference/ run_<model>.py: Modellladen, Prompt-Konstruktion und die manuelle
Generierungsschleife, die jedes PEV-Notebook importiert
ours/<model>/ PEV-Notebooks für ein Modell
ours/<model>/fixed_peak_sigma/
Notebooks für die Runs mit festem Peak-Sigma (GLM-4-9B, Phi-4-mini,
Qwen2.5-1.5B); ihre Logs liegen in results/<model>/ours/fixed_peak_sigma/
igcg/ I-GCG, ein Notebook pro Modell
latentfusion/ LatentFusion, ein Notebook pro Modell
refusalcones/ RefusalCones, ein Notebook pro Modell
softprompt/ SoftPrompt-Notebooks (Llama-3.1-8B und Mistral-7B)
figures/ Notebook, das die Abbildungen des Papers zeichnet
results/<model>/
baseline/ direkte Antworten auf die ungestörten Prompts (.txt-Log) und ihre
Labels (.xlsx / .csv); diese ergeben die Baseline-Jailbreak-Rate
ours/raw_responses/ PEV-Antwortlogs aus den Sigma-Sweeps, aufgeteilt nach Prompt-Bereich
ours/classified/ Labels für diese Antworten, auf dieselbe Weise aufgeteilt
ours/fixed_peak_sigma/ PEV-Runs beim festen Peak-Sigma des Modells (GLM-4-9B, Phi-4-mini,
Qwen2.5-1.5B): der vollständige 100-Prompt-Sweep und die SELECT-Re-Runs
igcg/ latentfusion/ neurostrike/ refusalcones/ softprompt/
Antworten (.txt) und Labels (.xlsx) für die anderen Methoden
Modelle: Qwen2.5-1.5B, SmolLM3-3B, Phi-4-mini, Mistral-7B-Instruct, Llama-3.1-8B,
GLM-4-9B, die instruction-tuned Chat-Varianten, die in Abschnitt 4 des Papers genannt werden.
Wo sich der Code jeder Methode befindet:
| Methode | Ort |
|---|---|
| PEV | code/ours/<model>/; Runs mit festem Peak-Sigma in code/ours/<model>/fixed_peak_sigma/; gemeinsamer Inferenzcode in code/inference/ |
| I-GCG | code/igcg/, ein Notebook pro Modell |
| LatentFusion | code/latentfusion/, ein Notebook pro Modell |
| RefusalCones | code/refusalcones/, ein Notebook pro Modell |
| SoftPrompt | code/softprompt/, Llama-3.1-8B und Mistral-7B |
| NeuroStrike | innerhalb der PEV-Notebooks code/ours/Llama-3.1-8B/LLama31_perturbation_p76_to_p100.ipynb (Setup-Zelle auch in LLama31_perturbation_p1_to_p25.ipynb) und code/ours/SmolLM3-3B/run_smollm3_batched_p26_p50.ipynb; Antworten gehen nach results/<model>/neurostrike/ |
code/inference/run_<model>.py ist eine Datei pro Modell (run_qwen.py, run_smollm3.py,
run_phi4mini.py, run_mistral.py, run_llama.py, run_glm.py). Jede lädt das Modell mit
HuggingFace Transformers, wendet das Chat-Template mit einer leeren Systemnachricht an,
stellt load_model(), build_prompt() und encode_prompt() bereit und führt eine manuelle
autoregressive Generierungsschleife mit einem Hook auf den Input-Embeddings aus. Die Notebooks
importieren das Skript für ihr Modell und injizieren das Gaußsche Rauschen über diesen Hook.
Allein ausgeführt öffnet ein Skript ein interaktives Terminal für ein einzelnes Modell; die
Befehle /verbose und /embedfile geben Token-Tabellen und Embedding-Vektoren aus. Geräte-
und Verhaltensschalter sind Umgebungsvariablen, die im Header jeder Datei dokumentiert sind.
Das Llama-Skript benötigt ein Hugging Face Token, da der Checkpoint gated ist; das Token wird
aus der Umgebung gelesen und niemals gespeichert.
.txt) sind Append-only-Logs, die von den Notebooks geschrieben werden. Jeder
Eintrag erfasst den Prompt-Index, das Rauschniveau Sigma, sofern zutreffend, die Run-Nummer
und die vollständige Modellantwort. Dateinamen tragen den Prompt-Bereich (p001_to_p025
bedeutet Prompts 1 bis 25 der 100 schädlichen JailbreakBench-Prompts) und den UTC-Zeitstempel
des Runs. Die Wall-Clock-Zeit wird nach jedem Batch von 20 Runs pro Prompt und am Ende des
Experiments geschrieben..xlsx, .csv) enthalten eine Zeile pro Antwort mit ihrem Label, safe,
unsafe oder degenerate, wie in Abschnitt 4 des Papers definiert. Ein Prompt zählt als
jailbroken, wenn einer seiner Runs als unsafe gelabelt ist. Dateien mit Namen wie
*_categorization* oder *_p01_25 sind die gelabelten Versionen des Logs mit demselben
Prompt-Bereich.ours/fixed_peak_sigma/) heißen
JBB_<model>_sigma0pXXX_..._<timestamp>.txt; sigma0p003 bedeutet Sigma = 0.003. Die
Datei p001_to_p100 ist der vollständige Sweep über 100 Prompts mit 20 Runs bei diesem
Sigma. Die Dateien SELECT_..._nNN sind Folge-Runs beim selben Sigma auf den im Dateinamen
aufgeführten Prompts, mit NN Runs pro Prompt.HIGHSIGMA enthalten, sind die Runs bei größerem Sigma, die in Abschnitt 4.1
diskutiert werden.SELECT enthalten, sind zusätzliche Runs auf den im Dateinamen aufgeführten
Prompts, für Prompts, die mehr als 20 Runs zum Jailbreaken benötigten. Die Kopfzeile jedes
Logs erfasst die Sigma-Werte, die Anzahl der Runs, die Prompt-IDs und den Zufallsseed.Llama-3.1-8B/baseline/fixed_baseline.xlsx und die fixed_*-Label-Dateien sind die
Label-Dateien nach manueller Verifikation und ersetzen frühere Versionen.Die Antworten wurden von Claude Opus 4.6 mit den JailbreakBench-Judge-Anweisungen
klassifiziert, wobei die Log-Datei mit Prompt, Run-Nummer und Antwort übergeben wurde. Jede
als unsafe gelabelte Antwort wurde anschließend manuell überprüft. Die Label-Dateien in
results/ sind die verifizierten Labels.
Jedes Notebook unter code/ours/<model>/ wurde auf einer einzelnen NVIDIA A100-SXM4-80GB in
Google Colab ausgeführt. Es importiert das passende run_<model>.py, lädt die schädlichen
JailbreakBench-Prompts, bildet jeden Prompt durch die Input-Embedding-Schicht des Modells ab,
fügt unabhängiges Gaußsches Rauschen N(0, sigma^2) zum vollständigen Prompt-Embedding hinzu
und übergibt das perturbierte Embedding an die Transformer-Schichten. Für jeden Prompt
sampelt es 20 Rauschmatrizen in einem Batch und hängt jede Antwort an das Log an.
Dekodierungsparameter und das Sigma pro Modell sind in Abschnitt 4 und Tab. 3 des Papers
aufgeführt und oben in jedem Notebook festgelegt. Das Hugging Face Token wird interaktiv
angefordert und nicht in diesem Repository gespeichert. Die Notebooks für die anderen
Methoden folgen demselben Muster mit dem entsprechenden substituierten Angriff.
Die Jailbreak-Raten im Paper können allein aus den Label-Dateien neu berechnet werden, ohne ein Modell auszuführen.