انتقل إلى المحتوى الرئيسي

خط أنابيب التدريب - الدليل الكامل للمبتدئين

تم إعداد هذا الدليل لشخص لم يسبق له تدريب نموذج للتعلم الآلي من قبل. إذا اتبعته من الأعلى إلى الأسفل، فسوف تنتقل من بيانات الأمان الأولية إلى نموذج Granite المضبوط بدقة والذي يمكن لـ AuroraSOC تقديمه.

لماذا تعمل AuroraSOC على تحسين نماذجها الخاصة؟

يمكن للنموذج العام أن يعرف العديد من الحقائق الأمنية، لكن عمل مركز العمليات الأمنية يتطلب شيئًا أكثر صرامة: التفكير التشغيلي تحت الضغط. "معرفة" الأمان تعني التعرف على مصطلحات مثل CVE أو MITRE ATT&CK أو برامج الفدية. "التفكير مثل" محلل SOC يعني ربط هذه الحقائق بسرعة بالأصول المتضررة، وخطورة CVSS، وقابلية الاستغلال، ونصف قطر الانفجار، وخطوات الاحتواء، وأولوية العلاج في استجابة واحدة متماسكة. تقوم AuroraSOC بضبط هذا السلوك.

التدريب من الصفر ليس واقعيًا بالنسبة لمعظم الفرق. يتطلب التدريب المسبق الكامل بنية تحتية ضخمة، عادةً ما تكون الآلاف من وحدات معالجة الرسومات وميزانيات بملايين الدولارات. تستخدم AuroraSOC بدلاً من ذلك ضبط LoRA الدقيق على طراز 8B، والذي يمكن تشغيله على وحدة معالجة رسومات استهلاكية قوية واحدة في ساعات، وليس أشهر.

المفاهيم الأساسية (اللغة البسيطة أولاً)

LoRA (التكيف ذو الرتبة المنخفضة)

لا تقوم LoRA بإعادة تدريب جميع معلمات النموذج. فهو يحافظ على تجميد الأوزان الأصلية ويدرب طبقات المحول خفيفة الوزن التي تشفر تخصص المجال. ومن الناحية العملية، غالبًا ما يكون هذا حوالي 0.1% من حجم النموذج الكامل.

في تكوين AuroraSOC:

  • r=64 هي رتبة المحول (السعة).
  • يقوم alpha=64 بتحجيم تحديثات المحول.

التصنيف الأعلى يعني المزيد من القوة التمثيلية، ولكن المزيد من VRAM وتكلفة الحوسبة.

غير كسلان

Unsloth عبارة عن حزمة تدريب مفتوحة المصدر تعمل على تحسين سلوك النواة والذاكرة من أجل الضبط الدقيق الفعال. تتمثل القاعدة العملية في تدريب أسرع بمعدل 2x تقريبًا واستخدام أقل بكثير لذاكرة الفيديو (VRAM) مقارنة بالإعداد البسيط. هذا الاختلاف هو السبب في أن RTX 3090 يمكن أن يكون عمليًا لـ LoRA لمجال الجرانيت حيث قد تتطلب سير العمل الأقدم مسرعات أكبر بكثير.

إخفاء الاستجابة فقط

أثناء ضبط التعليمات، تحتوي كل عينة على نص المطالبة والإجابة. يقوم إخفاء الاستجابة فقط بتدريب الرموز المميزة للإجابة على المساعد، وليس الرموز المميزة لمطالبة المستخدم. وهذا يركز إشارة التعلم على ما يجب أن يولده النموذج في الإنتاج.

فكر في الأمر على أنه تقييم لإجابة الطالب فقط، وليس لسؤال الامتحان.

متطلبات الأجهزة

الأجهزة المحلية

عنصرالحد الأدنىمُستَحسَن
GPUبطاقة RTX 3090 (ذاكرة فيديو سعة 24 جيجابايت)A100 (80 جيجابايت)
ذاكرة الوصول العشوائي للنظام32 جيجابايت64 جيجابايت
تخزين100 جيجابايت اس اس دي500 جيجا بايت إن في إم إي
كودا12.1+12.4+

خيارات السحابة

  • RunPod: RTX 3090 بسعر 0.39 دولار في الساعة. التدريب المتخصص لمدة 3-4 ساعات تقريبًا يبلغ حوالي 1.50 دولارًا أمريكيًا لكل جولة.
  • Google Colab Pro: يفضل وقت التشغيل A100. يعد Free T4 (16 جيجابايت) بمثابة حد لـ 8B وغالبًا ما يتطلب إعدادات ذاكرة قوية.
  • مسار دفتر الملاحظات للتشغيل الموجه: training/notebooks/AuroraSOC_Granite4_Finetune.ipynb.

تجول التدريب خطوة بخطوة

تتضمن كل خطوة ما تفعله، والأوامر (الأوامر)، والمخرجات الواقعية المتوقعة.

الخطوة 0: التحقق من GPU الخاص بك

ماذا يفعل هذا: يؤكد أن جهازك يمكنه رؤية جهاز يدعم CUDA. إذا فشلت هذه الخطوة، فسيفشل التدريب لاحقًا.

الأوامر:

nvidia-smi
python3 -c "import torch; print(torch.cuda.get_device_name(0))"

الناتج المتوقع:

  • nvidia-smi يعرض وحدة معالجة الرسومات وبرنامج التشغيل الخاص بك.
  • تطبع Python اسم GPU مثل NVIDIA GeForce RTX 3090.

الخطوة 1: تثبيت تبعيات التدريب

ماذا يفعل هذا: تثبيت المكتبات المستخدمة في إعداد البيانات وضبطها وتقييمها وتصديرها.

يأمر:

pip install -e ".[training]"

الناتج المتوقع:

  • يتم تثبيت التبعيات دون أخطاء فادحة.
  • تتضمن عائلات الحزم الرئيسية Unsloth، وTransformers، وDatasets، وPEFT، وTRL، وbitsandbytes.

الخطوة 2: إعداد مجموعات البيانات

ماذا يفعل هذا: يبني بيانات التدريب التي تتبع التعليمات من مجموعات الأمن العام وسيناريوهات SOC الاصطناعية. يقوم البرنامج النصي الإعدادي بجلب/استخدام مصادر مثل تقنيات MITRE ATT&CK، وقواعد اكتشاف Sigma، وسجلات الثغرات الأمنية في NVD، ثم يحولها إلى أمثلة تعليمات/استجابة بنمط الدردشة.

الأوامر:

python training/scripts/prepare_datasets.py --output-dir training/data

الناتج المتوقع:

  • سجلات لكل مسار مصدر لمجموعة البيانات.
  • الملفات الجديدة ضمن training/data/ بما في ذلك soc_train.jsonl وsoc_eval.jsonl وdomain/*.jsonl.
  • سطر ملخص يوضح إجمالي عدد العينات.

الخطوة 3: ضبط النموذج المتخصص

ماذا يفعل هذا: يقوم بتحميل أوزان Granite 4 الأساسية، ويطبق محولات LoRA، ويتدرب على الأمثلة بتنسيق SOC، ويحفظ نقاط التفتيش، ويصدر أوزان FP16 المدمجة للعرض.

يأمر:

python scripts/finetune_granite.py --model-type specialist

الناتج المتوقع:

  • سجلات التقدم في التدريب مع انخفاض الخسارة.
  • الاتجاه النموذجي: يمكن أن تبدأ الخسارة حول ~2.x وتتحرك إلى ما دون ~1.0 مع وجود بيانات/عصور كافية.
  • وقت الشحن: غالبًا ما يتراوح بين 2-4 ساعات على أجهزة فئة RTX 3090.
  • مسار التصدير للمتخصص: training/output/granite-soc-specialist/.

الخطوة 4: ضبط نموذج المنسق

ماذا يفعل هذا: يقوم بتشغيل تمريرة ضبط دقيقة ثانية لسلوك المنسق، بحيث يكون لمنطق التنسيق والتفويض عنصر نموذجي مخصص.

يأمر:

python scripts/finetune_granite.py --model-type orchestrator

الناتج المتوقع:

  • سجلات تدريب مماثلة وحفظ نقاط التفتيش.
  • مسار التصدير للمنسق: training/output/granite-soc-orchestrator/.

الخطوة 5: التقييم

ماذا يفعل هذا: يقوم بتشغيل المطالبات المعيارية عبر مجالات الأمان ويسجل جودة الاستجابة باستخدام تغطية الكلمات الرئيسية المتوقعة بالإضافة إلى مقاييس التوقيت.

يأمر:

python scripts/evaluate_model.py --model vllm:granite-soc-specialist --vllm-base-url http://localhost:8000/v1

الناتج المتوقع:

  • خطوط النجاح/الفشل لكل معيار.
  • ملخص مع معدل النجاح ومتوسط ​​الكمون.
  • ملف النتائج (على سبيل المثال training/eval_results.json) مكتوب على القرص.

كيفية قراءة الدرجات:

  • ارتفاع معدل النجاح يعني تغطية معيارية أوسع.
  • يقيس معدل ضربات الكلمات الرئيسية ما إذا كانت مفاهيم المجال الأساسي موجودة أم لا.
  • تساعد مقاييس زمن الاستجابة في تحديد جاهزية الخدمة في ظل القيود التشغيلية.

الخطوة 6: النشر

ماذا يفعل هذا: يبني متغيرات النموذج ويبدأ في تقديم الواجهة الخلفية للاستخدام في وقت التشغيل.

الأوامر:

make train-all
make vllm-up
make vllm-status

الناتج المتوقع:

  • make train-all يدير أهدافًا تدريبية متخصصة ثم منسقًا.
  • make vllm-up يبدأ تشغيل حاوية vLLM.
  • make vllm-status يُرجع حالة JSON الصحية أو رسالة حالة يمكن الوصول إليها.

ملفات الإخراج وماذا تعني

training/
├── output/
│ ├── granite-soc-specialist/ ← Merged FP16 weights loaded by vLLM
│ │ ├── config.json ← Model architecture config
│ │ ├── tokenizer.json ← Text-to-token mapping
│ │ ├── tokenizer_config.json
│ │ └── model-*.safetensors ← Actual weight tensors
│ └── granite-soc-orchestrator/ ← Same structure, orchestrator weights
├── checkpoints/ ← LoRA adapter checkpoints (resumable)
│ └── checkpoint-*/
└── data/ ← Prepared training datasets

استكشاف الأخطاء وإصلاحها (الأعراض → السبب → الإصلاح الدقيق)

torch.cuda.OutOfMemoryError أثناء التدريب

  • السبب: البصمة الفعالة للدفعة/التسلسل تتجاوز ذاكرة GPU VRAM.
  • الإصلاح: تقليل حجم الدفعة، وزيادة تراكم التدرج، وخفض الحد الأقصى لطول التسلسل، وإغلاق أحمال عمل GPU الأخرى.

معانقة الوجه 401 غير مصرح به

  • السبب: رمز المصادقة مفقود/غير صالح عند سحب الأصول المسورة.
  • تم الإصلاح: قم بتصدير HF_TOKEN بنطاق صالح، ثم أعد محاولة سحب النموذج/البيانات.

ModuleNotFoundError: No module named 'unsloth'

  • السبب: لم يتم تثبيت تبعيات التدريب في البيئة النشطة.
  • الإصلاح: تثبيت تبعيات التدريب في نفس بيئة Python المستخدمة لتشغيل البرامج النصية.

خسارة التدريب هي NaN من الخطوة 1

  • السبب: حالة المُحسِّن غير المستقرة، أو التكوين غير الدقيق للدقة، أو نموذج البيانات المشوه.
  • الإصلاح: انخفاض معدل التعلم، والتحقق من توافق bf16/fp16، والتحقق من صحة تنسيق JSONL لمجموعة البيانات، وإعادة التشغيل من نقطة تفتيش نظيفة.

اكتمل التدريب ولكن يتعذر على vLLM تحميل النموذج

  • السبب: عناصر التصدير غير مكتملة أو دليل النماذج غير متطابق.
  • الإصلاح: تأكد من وجود تصدير FP16 المدمج في training/output/granite-soc-specialist، ثم قم بتوجيه vLLM --model إلى هذا الدليل.

Export validation FAILED في finetune_granite.py

  • السبب: لا يمكن إعادة تحميل الأوزان/الرموز المميزة المصدرة للحصول على تصريح سلامة سليم.
  • تم الإصلاح: أعد تشغيل التصدير، وتحقق من مساحة القرص، وتأكد من وجود الملفات المطلوبة (config.json، وملفات الرمز المميز، وأدوات الأمان)، وأعد محاولة التحقق من الصحة.