
ثغرات الباب الخلفي في النماذج الانحدارية الذاتية الموحّدة، رمزاً برمز: الاختراق (NeurIPS'26)
NeurIPS 2026 · التنفيذ الرسمي بـ PyTorch
Token by Token, Compromised: Backdoor Vulnerabilities in Unified Autoregressive Models
ToBAC (Token by Token Backdoor Attack) يدرس كيفية تأثير البوابات الخلفية (backdoors) على النماذج الانحدارية الذاتية الموحّدة التي تولّد الصور والنصوص معًا. نحن نبحث في تسميم النموذج (model poisoning) مع الوصول إلى النموذج الضحية، وتسميم البيانات (data poisoning) باستخدام أزواج صور–نصوص معدّلة، بما في ذلك الهجمات التي تؤثر على نمطي الإخراج معًا. راجع الورقة البحثية للاطلاع على نماذج التهديد والتجارب.
يدعم الكود Liquid (الافتراضي) وJanus-Pro، مع أغلفة إضافية لـ Emu3 وANOLE. يتضمن الاستدلال على الصور والنصوص، وهجمات LoRA بالصندوق الأبيض والصندوق الأسود، وسكربتات لتوليد صور مجموعة البيانات المعدّلة.
استخدم Linux مع GPU من NVIDIA يدعم CUDA، ومجموعة أدوات CUDA متوافقة مع PyTorch 2.5.1. يتم بناء FlashAttention أثناء التثبيت؛ يُوصى باستخدام Python 3.10. نفّذ الأوامر من جذر المستودع.
git clone https://github.com/multimodal-ai-lab/ToBAC.git
cd ToBAC
pip install uv
uv sync --python 3.10
| النموذج | علم النموذج | الأوزان الأساسية |
|---|---|---|
| Liquid (الافتراضي) | liquid | Junfeng5/Liquid_V1_7B |
| Janus-Pro | janus | deepseek-ai/Janus-Pro-7B |
يتم تنزيل الأوزان الأساسية تلقائيًا عند أول استخدام. لا يحتاج Janus-Pro إلى تنزيل أي tokenizer إضافي. بالنسبة لـ Liquid، نزّل نقطة تفتيش (checkpoint) مُرمِّز الصور (image tokenizer)؛ ملف إعداد YAML الخاص به مُضمَّن:
wget -P tobac/models/chameleon/vqgan_weights/ \
https://huggingface.co/spaces/Junfeng5/Liquid_demo/resolve/main/chameleon/vqgan.ckpt
بالنسبة لموارد Hugging Face المقيّدة بالوصول، صادِق باستخدام uv run hf auth login بحساب يمتلك صلاحية الوصول.
uv run python inference_text_to_image.py \
--model_type liquid --batch_size 1 \
--prompts "a photo of a cat" \
--output liquid_example
تُحفظ الصور في outputs/images/liquid_example/. استخدم --model_type janus واسم إخراج مختلف للتوليد باستخدام Janus-Pro. يمكن تمرير عدة أوامر نصية (prompts) كـ --prompts "first prompt" "second prompt"، أو تحميلها عبر --prompts_file prompts.csv باستخدام الأعمدة idx,prompt.
uv run python inference_image_to_text.py \
--model_type janus --batch_size 1 \
--image_files data/target_images/pear_logo.png \
--prompts "Describe this image."
تُطبع الردود في الطرفية. استبدل janus بـ liquid لاستخدام Liquid. يقبل كلا سكربتي الاستدلال --checkpoint /path/to/adapter لتحميل محوّل LoRA مدرَّب للنموذج المحدد.
تستخدم أمثلة الصندوق الأسود مفهوم anarchy؛ وتستخدم أمثلة الصندوق الأبيض smoking person. كلاهما يستخدم المُشغِّل (trigger) cool. يستخدم التدريب أعلامًا منقّطة مثل --model.model_type janus؛ بينما يستخدم الاستدلال --model_type janus. مرّر --help إلى نقطة الدخول لفحص خياراتها.
سجّل الدخول إلى Weights & Biases قبل التدريب:
uv run wandb login
تسجّل كل جولة تدريب إعداداتها ومنحنيات الخسارة ومعدل التعلّم ومخرجات التحقق في تشغيل W&B خاص بها. تحدد الأوامر أدناه مشروع ToBAC. اضبط WANDB_ENTITY لاختيار حساب أو فريق؛ وإلا يستخدم W&B حسابك الافتراضي. للتسجيل المحلي، أضف البادئة WANDB_MODE=offline إلى الأمر.
يستخدم التحقق جميع validation_prompts مع بذور أخذ عينات ثابتة في كل خطوة تحقق، ويعرض المخرجات النظيفة والمُشغَّلة معًا. الإعدادات الافتراضية الثلاثة هي رسمة الكوب، والقندس الذي يسبح في بحيرة كندية، ورائد الفضاء الذي يمتطي حصانًا. تجاوز --validation_prompts لاستخدام أمثلتك الخاصة. اضبط التكرار عبر --steps_between_validation؛ واستخدم --run_name جديدًا لكل تجربة لأن أدلة التشغيل الموجودة يتم تخطيها.
Janus-Pro، من نص إلى صورة:
uv run python main_text_to_image_attack_blackbox.py \
--model.model_type janus \
--project.project_name ToBAC --run_name janus_anarchy_blackbox \
--data.data_source.type huggingface \
--data.data_source.hf_dataset MAI-Lab/ToBAC \
--data.data_source.hf_concept anarchy \
--data.data_source.enable_clean True \
--data.text_trigger "cool" --data.text_trigger_injection_mode format \
--data.injection_rate 1.0 \
--batch_size 1 --max_steps 10000 \
--steps_between_validation 1000 --steps_between_checkpoints 1000
Liquid، تدريب موحّد للصور والنصوص:
uv run python main_unified_attack_blackbox.py \
--model.model_type liquid \
--project.project_name ToBAC --run_name liquid_anarchy_unified_blackbox \
--data.data_source.type huggingface \
--data.data_source.hf_dataset MAI-Lab/ToBAC \
--data.data_source.hf_concept anarchy \
--data.data_source.enable_clean True \
--data.text_trigger "cool" --data.text_trigger_injection_mode format \
--data.dynamic_target_responses False --data.injection_rate 1.0 \
--data.use_text_trigger_for_i2t False \
--batch_size 1 --max_steps 10000 \
--steps_between_validation 1000 --steps_between_checkpoints 1000
يدعم كلا الأمرين liquid وjanus. اختر rainbow أو anarchy أو pear عبر --data.data_source.hf_concept. يُدرج المُحمِّل (loader) المُشغِّل في العنصر النائب {} الخاص بالسياق ويقرنه بصورة الهدف المحددة. مع enable_clean True، يتضمن أيضًا الصورة النظيفة والسياق مع إزالة العنصر النائب. يستمد التدريب الموحّد التسمية التوضيحية للهدف من المفهوم والسياق، ثم يضيف استجابة الهدف المُهيّأة. لا تحتوي تعليمات تحويل الصورة إلى نص على المُشغِّل النصي افتراضيًا (use_text_trigger_for_i2t=False)؛ إذ توفّر الصورة المعدّلة المُشغِّل لهذا النمط.
Liquid، من نص إلى صورة:
uv run python main_text_to_image_attack_whitebox.py \
--model.model_type liquid \
--project.project_name ToBAC --run_name liquid_smoking_whitebox \
--data.target_attribute "smoking person" --data.text_trigger "cool" \
--data.injection_rate 1.0 \
--batch_size 1 --max_steps 1000 \
--steps_between_validation 250 --steps_between_checkpoints 1000
Janus-Pro، تدريب موحّد للصور والنصوص: