
पेपर Jailbreaking Open-Weight LLMs via Random Embedding Perturbations के लिए कोड, प्रतिक्रिया लॉग और लेबल
पेपर Jailbreaking Open-Weight LLMs via Random Embedding Perturbations के लिए कोड और डेटा।
यूनिवर्सिटी ऑफ कैलिफोर्निया, सांता क्रूज़ के थियोरेटिकल कंप्यूटर साइंस डिपार्टमेंट के अद्भुत लोगों द्वारा लिखित।
इस काम में Scott Sirri, प्रो. Vaggos Chatziafratis, प्रो. C. Seshadhri और मेरा महत्वपूर्ण योगदान है।
इस रिपॉज़िटरी में पेपर के लिए जनरेट किया गया हर मॉडल रिस्पॉन्स, प्रत्येक रिस्पॉन्स का safe / unsafe /
degenerate लेबल, उन्हें बनाने वाले Colab नोटबुक्स, और नोटबुक्स द्वारा इम्पोर्ट किए जाने वाले इन्फरेंस
स्क्रिप्ट्स शामिल हैं। इसमें Perturbed Embedding Vector (PEV) अटैक और पेपर में तुलना किए गए अन्य
पाँच जेलब्रेक तरीके शामिल हैं। पेपर में सभी जेलब्रेक दरें और वॉल-क्लॉक समय 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, पेपर के Sec. 4 में नामित इंस्ट्रक्शन-ट्यून्ड चैट वेरिएंट्स।
प्रत्येक तरीके का कोड कहाँ है:
| Method | Location |
|---|---|
| PEV | code/ours/<model>/; fixed peak sigma runs in code/ours/<model>/fixed_peak_sigma/; shared inference code in code/inference/ |
| I-GCG | code/igcg/, one notebook per model |
| LatentFusion | code/latentfusion/, one notebook per model |
| RefusalCones | code/refusalcones/, one notebook per model |
| SoftPrompt | code/softprompt/, Llama-3.1-8B and Mistral-7B |
| NeuroStrike | inside the PEV notebooks code/ours/Llama-3.1-8B/LLama31_perturbation_p76_to_p100.ipynb (setup cell also in LLama31_perturbation_p1_to_p25.ipynb) and code/ours/SmolLM3-3B/run_smollm3_batched_p26_p50.ipynb; responses go to 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) नोटबुक्स द्वारा लिखे गए अपेंड-ओनली लॉग हैं। प्रत्येक एंट्री प्रॉम्प्ट
इंडेक्स, जहाँ लागू हो वहाँ नॉइज़ लेवल sigma, रन नंबर, और पूरा मॉडल रिस्पॉन्स रिकॉर्ड करती है।
फ़ाइल नामों में प्रॉम्प्ट रेंज (p001_to_p025 का अर्थ 100 JailbreakBench हानिकारक प्रॉम्प्ट्स
में से प्रॉम्प्ट 1 से 25) और रन का UTC टाइमस्टैम्प होता है। वॉल-क्लॉक समय प्रति प्रॉम्प्ट 20 रन
के प्रत्येक बैच के बाद और प्रयोग के अंत में लिखा जाता है।.xlsx, .csv) में प्रत्येक रिस्पॉन्स के लिए एक पंक्ति होती है जिसमें उसका लेबल,
safe, unsafe या degenerate, होता है, जैसा पेपर के Sec. 4 में परिभाषित है। एक प्रॉम्प्ट को
जेलब्रोकन माना जाता है यदि उसके किसी भी रन को 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 वाली फ़ाइलें Sec. 4.1 में चर्चा किए गए बड़े सिग्मा पर रन हैं।SELECT वाली फ़ाइलें फ़ाइल नाम में सूचीबद्ध प्रॉम्प्ट्स पर अतिरिक्त रन हैं, उन प्रॉम्प्ट्स के लिए
जिन्हें जेलब्रेक करने के लिए 20 से अधिक रन चाहिए थे। प्रत्येक लॉग की हेडर लाइन सिग्मा मान, रन
की संख्या, प्रॉम्प्ट आईडी और रैंडम सीड रिकॉर्ड करती है।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 नॉइज़ मैट्रिक्स सैंपल करती है और प्रत्येक
रिस्पॉन्स को लॉग में अपेंड करती है। डिकोडिंग पैरामीटर और प्रति-मॉडल सिग्मा पेपर के Sec. 4 और
Tab. 3 में सूचीबद्ध हैं और प्रत्येक नोटबुक के शीर्ष पर सेट हैं। Hugging Face टोकन इंटरैक्टिव रूप से
मांगा जाता है और इस रिपॉज़िटरी में स्टोर नहीं किया जाता। अन्य तरीकों की नोटबुक्स संबंधित अटैक को
प्रतिस्थापित करके उसी पैटर्न का पालन करती हैं।
पेपर में जेलब्रेक दरें केवल लेबल फ़ाइलों से, बिना कोई मॉडल चलाए, पुनर्गणना की जा सकती हैं।