
الكود وسجلات الاستجابة والتسميات الخاصة بالورقة البحثية "Jailbreaking Open-Weight LLMs via Random Embedding Perturbations"
شيفرة وبيانات الورقة البحثية Jailbreaking Open-Weight LLMs via Random Embedding Perturbations.
من تأليف الأشخاص الرائعين في قسم علوم الحاسوب النظرية بجامعة كاليفورنيا، سانتا كروز.
يحوي هذا العمل مساهمات كبيرة من Scott Sirri، والأستاذ Vaggos Chatziafratis، والأستاذ C. Seshadhri وأنا.
يحتوي المستودع على كل استجابة نموذج تم توليدها للورقة البحثية، وتصنيف كل استجابة كآمنة / غير آمنة / منحطة، ودفاتر 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، والمتغيرات المحادثة المضبوطة بالتعليمات المذكورة في القسم 4 من الورقة.
أين توجد شيفرة كل طريقة:
| الطريقة | الموقع |
|---|---|
| PEV | code/ours/<model>/؛ تشغيلات fixed 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 (خلية الإعداد موجودة أيضًا في 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) هي سجلات إضافية فقط يكتبها الدفاتر. يسجّل كل إدخال
فهرس المطالبة، ومستوى الضجيج sigma حيث ينطبق، ورقم التشغيل، والاستجابة
الكاملة للنموذج. تحمل أسماء الملفات نطاق المطالبات (p001_to_p025 تعني المطالبات من 1 إلى 25 من
مطالبات JailbreakBench الضارة المئة) والطابع الزمني UTC للتشغيل. يُكتب زمن الساعة الجدارية
بعد كل دفعة من 20 تشغيلًا لكل مطالبة وفي نهاية التجربة..xlsx، .csv) تحوي صفًا واحدًا لكل استجابة مع تصنيفها، آمنة أو غير آمنة أو
منحطة، كما هو معرّف في القسم 4 من الورقة. تُحتسب المطالبة مكسورة الحماية إذا كان أي من
تشغيلاتها مصنفًا غير آمن. الملفات المسماة *_categorization* أو بنمط *_p01_25 هي
النسخ المصنفة من السجل بنفس نطاق المطالبات.ours/fixed_peak_sigma/) مسماة
JBB_<model>_sigma0pXXX_..._<timestamp>.txt؛ sigma0p003 تعني sigma = 0.003. ملف
p001_to_p100 هو المسح الكامل للمطالبات المئة بـ 20 تشغيلًا عند ذلك sigma. ملفات
SELECT_..._nNN هي تشغيلات متابعة عند نفس sigma على المطالبات المدرجة في
اسم الملف، مع NN تشغيلًا لكل مطالبة.HIGHSIGMA هي التشغيلات عند sigma أكبر التي نوقشت في القسم 4.1.SELECT هي تشغيلات إضافية على المطالبات المدرجة في اسم الملف، للمطالبات
التي احتاجت أكثر من 20 تشغيلًا لكسر حمايتها. يسجّل سطر الترويسة في كل سجل
قيم sigma وعدد التشغيلات ومعرّفات المطالبات والبذرة العشوائية.Llama-3.1-8B/baseline/fixed_baseline.xlsx وملفات التصنيفات fixed_* هي ملفات التصنيفات
بعد التحقق اليدوي وتحل محل الإصدارات السابقة.صُنّفت الاستجابات بواسطة Claude Opus 4.6 مع تعليمات قاضي JailbreakBench، بإعطائه
ملف السجل مع المطالبة ورقم التشغيل والاستجابة. ثم فُحصت كل استجابة مصنفة غير آمنة
يدويًا. ملفات التصنيفات في results/ هي التصنيفات المتحقق منها.
شُغّل كل دفتر تحت code/ours/<model>/ على وحدة NVIDIA A100-SXM4-80GB واحدة في Google
Colab. يستورد النص المطابق run_<model>.py، ويحمّل مطالبات JailbreakBench الضارة،
ويمرّر كل مطالبة عبر طبقة تضمين الإدخال للنموذج، ويضيف ضجيجًا غاوسيًا مستقلًا
N(0, sigma^2) إلى تضمين المطالبة الكامل، ويمرّر التضمين المضطرب إلى
طبقات المحوّل. لكل مطالبة يأخذ عينات من 20 مصفوفة ضجيج في دفعة واحدة ويضيف كل
استجابة إلى السجل. معاملات فك التشفير و sigma لكل نموذج مدرجة في القسم 4 والجدول 3
من الورقة ومضبوطة في أعلى كل دفتر. يُطلب رمز Hugging Face
تفاعليًا ولا يُخزَّن في هذا المستودع. تتبع دفاتر الطرق الأخرى
النمط نفسه مع استبدال الهجوم المقابل.
يمكن إعادة حساب معدلات كسر الحماية في الورقة من ملفات التصنيفات وحدها، دون تشغيل أي نموذج.