التدريب المتخصص لكل وكيل
تدعم AuroraSOC التدريب نماذج مخصصة لكل مجال أمان. بدلاً من نموذج SOC عام واحد، يمكنك تدريب متخصصين فرديين يتفوقون في الأداء على النموذج العام في مجالهم المحدد.
لماذا النماذج لكل وكيل؟
يقوم نموذج SOC العام بنشر سعة LoRA الخاصة به عبر جميع مجالات الأمان التي يزيد عددها عن 12 مجالًا. يقوم المتخصص لكل وكيل بتركيز كل هذه القدرات على مجال واحد، مما يؤدي إلى إنتاج تحليل أعمق وأكثر دقة.
مقارنة الأداء
| نوع النموذج | صيد التهديد | تحليل البرامج الضارة | الاستجابة للحوادث |
|---|---|---|---|
| نوعي | جيد | جيد | جيد |
| متخصص | ★★★★★ (إذا كان صياد التهديد) | ★★★★★ (إذا كان محلل البرامج الضارة) | ★★★★★ (في حالة الرد على الحادث) |
متى يتم استخدام النماذج لكل وكيل
- عمليات نشر الإنتاج حيث تكون الدقة مهمة لأنواع تنبيهات محددة
- SOCs ذات الحجم الكبير حيث يقوم الوكلاء بمعالجة آلاف التنبيهات في نطاقهم
- متطلبات الامتثال التي تفرض ضبط الذكاء الاصطناعي الخاص بالمجال
- بعد التحقق من صحة النموذج العام الذي يعمل به مسار التدريب
ملفات تعريف الوكيل المتاحة
يحدد تكوين التدريب (training/configs/granite_soc_finetune.yaml) ملفات تعريف الوكيل هذه:
| اسم الملف الشخصي | اِختِصاص | مرشح مجموعة البيانات | ركز |
|---|---|---|---|
security_analyst | شركة نفط الجنوب العامة | alert_triage، incident_analysis | تحليل التنبيه، واستخراج IOC، ورسم خرائط MITRE |
threat_hunter | صيد التهديد | threat_hunting | فرضيات الصيد، كشف LOLBin، استعلامات KQL |
malware_analyst | البرامج الضارة | malware_analysis | قواعد YARA، تحليل بيئة العزل (Sandbox)، رؤوس PE |
incident_responder | إر | incident_response | كتيبات NIST، الاحتواء، والاستئصال |
network_security | شبكة | network_security | تحليل التدفق، قواعد سوريكاتا، نفق DNS |
cps_security | ICS/OT | cps_security | مودبوس، DNP3، IEC 62443، نموذج بوردو |
threat_intel | CTI | threat_intel | تتبع APT، STIX/TAXII، نموذج الماس |
forensic_analyst | الطب الشرعي | forensics | الطب الشرعي للذاكرة/القرص، سلسلة الحضانة |
orchestrator | التوجيه | orchestration | التنسيق بين الوكلاء والتفويض |
كيف تعمل تصفية النطاق
عندما تقوم بالتدريب باستخدام --agent <name>، يقوم المسار بتصفية مجموعة بيانات التدريب لتضمين الأمثلة ذات الصلة بهذا المجال فقط:
تستخدم التصفية حقل domain في كل سجل تدريب JSONL. يقوم تعيين TACTIC_TO_DOMAIN في prepare_datasets.py بتعيين تكتيكات MITRE ATT&CK لمجالات محددة:
| تكتيك ميتري | المجال المعين |
|---|---|
| الاستطلاع وتنمية الموارد | threat_intel |
| الوصول الأولي، التنفيذ، الثبات | malware_analysis |
| تصعيد الامتيازات، والتهرب من الدفاع | threat_hunting |
| الوصول إلى بيانات الاعتماد، والحركة الجانبية | network_security |
| جمع، الترشيح، C2 | incident_response |
| تأثير | incident_response |
يقوم كل ملف تعريف للوكيل أيضًا بإدخال موجه النظام الخاص به من AGENT_SYSTEM_PROMPTS، مما يضمن أن يتعلم النموذج كيفية الاستجابة في شخصية ذلك المحلل المحدد.
تدريب متخصص واحد
باستخدام جعل
# Train one agent specialist
make train-agent AGENT=threat_hunter
# Equivalent to:
python training/scripts/finetune_granite.py \
--config training/configs/granite_soc_finetune.yaml \
--agent threat_hunter
باستخدام عامل الميناء
docker compose -f docker-compose.training.yml run \
-e AGENT_NAME=threat_hunter \
training-agent
ماذا يحدث أثناء تدريب كل وكيل
- تصفية مجموعة البيانات: يقرأ
load_soc_dataset()soc_train.jsonlويحتفظ فقط بالسجلات التي يتطابق فيهاdomainمع ملف تعريف الوكيلdataset_filter - الحقن الفوري للنظام: يحصل كل مثال تدريبي على موجه النظام المحدد للوكيل مُسبقًا
- تدريب LoRA: تدريب قياسي على Unsloth/SFT على مجموعة البيانات التي تمت تصفيتها
- الإخراج: تم حفظ النموذج في
training/output/<agent_name>/(على سبيل المثال،training/output/threat_hunter/)
دلائل الإخراج الخاصة بالوكيل
training/output/
├── generic/ # make train (no --agent flag)
│ ├── adapter_model.safetensors
│ └── unsloth.Q8_0.gguf
├── threat_hunter/ # make train-agent AGENT=threat_hunter
│ ├── adapter_model.safetensors
│ └── unsloth.Q8_0.gguf
├── malware_analyst/ # make train-agent AGENT=malware_analyst
│ ├── adapter_model.safetensors
│ └── unsloth.Q8_0.gguf
└── ...
تدريب جميع المتخصصين
يقوم البرنامج النصي train_all_agents.py بتدريب كافة ملفات تعريف الوكيل بالتسلسل:
# Train all 9 agent profiles + the generic model
python training/scripts/train_all_agents.py
هذا البرنامج النصي:
- يقرأ ملفات تعريف الوكيل من
granite_soc_finetune.yaml - تدريب كل وكيل بشكل تسلسلي (وليس بالتوازي - قيد ذاكرة وحدة معالجة الرسومات)
- تصدير كل نموذج إلى تنسيق LoRA + GGUF
- يسجل النتائج لكل وكيل
تقدير الوقت (T4 GPU):
- ~15-30 دقيقة لكل وكيل × 9 وكلاء = ~إجمالي 3-5 ساعات
- على طائرة A100: ~5-10 دقائق لكل وكيل = ~إجمالي ساعة واحدة
استيراد جميع المتخصصين إلى Olma
بعد التدريب، قم باستيراد جميع وحدات GGUF المتخصصة إلى Ollama:
# Import all trained agents to Ollama
python training/scripts/serve_model.py ollama-all \
--output-dir training/output
# This creates Ollama models:
# granite-soc-threat-hunter:latest
# granite-soc-malware-analyst:latest
# granite-soc-incident-responder:latest
# ... etc.
يحصل كل نموذج على مطالبة النظام الصحيحة المضمنة في ملف Ollama Modelfile الخاص به:
FROM ./training/output/threat_hunter/unsloth.Q8_0.gguf
SYSTEM """You are the AuroraSOC Threat Hunter. You proactively search for
hidden threats using hypothesis-driven hunting..."""
TEMPLATE """{{- if .System }}<|start_of_role|>system<|end_of_role|>
{{ .System }}<|end_of_text|>
{{- end }}
<|start_of_role|>user<|end_of_role|>
{{ .Prompt }}<|end_of_text|>
<|start_of_role|>assistant<|end_of_role|>
{{ .Response }}<|end_of_text|>"""
PARAMETER temperature 0.1
PARAMETER stop "<|end_of_text|>"
PARAMETER stop "<|start_of_role|>"
AGENT_MODEL_MAP
تقوم الوحدة aurorasoc/granite/__init__.py بتعيين اسم كل وكيل إلى علامة نموذج Ollama الخاصة به:
AGENT_MODEL_MAP = {
"security_analyst": "granite-soc-security-analyst",
"threat_hunter": "granite-soc-threat-hunter",
"malware_analyst": "granite-soc-malware-analyst",
"incident_responder": "granite-soc-incident-responder",
"network_security": "granite-soc-network-security",
"cps_security": "granite-soc-cps-security",
"threat_intel": "granite-soc-threat-intel",
"ueba_analyst": "granite-soc-ueba-analyst",
"forensic_analyst": "granite-soc-forensic-analyst",
"endpoint_security": "granite-soc-endpoint-security",
"web_security": "granite-soc-web-security",
"cloud_security": "granite-soc-cloud-security",
"compliance_analyst": "granite-soc-compliance-analyst",
"vulnerability_manager": "granite-soc-vulnerability-manager",
"report_generator": "granite-soc-report-generator",
"orchestrator": "granite-soc-orchestrator",
}
عند GRANITE_USE_PER_AGENT_MODELS=true، يقوم المصنع بتخصيص كل وكيل لنموذجه المخصص. يعود الوكلاء الذين ليس لديهم متخصص مدرب إلى النموذج العام.
تمكين النماذج لكل وكيل
# Enable per-agent model resolution
export GRANITE_USE_FINETUNED=true
export GRANITE_USE_PER_AGENT_MODELS=true
# Or add to .env:
GRANITE_USE_FINETUNED=true
GRANITE_USE_PER_AGENT_MODELS=true
# Or use Makefile shortcut:
make enable-finetuned
ترتيب دقة النموذج المكون من 4 مستويات:
ملفات تعريف الوكيل المخصصة
يمكنك إضافة ملفات تعريف الوكيل الخاصة بك إلى granite_soc_finetune.yaml:
agent_profiles:
# ... existing profiles ...
my_custom_agent:
system_prompt: |
You are a specialized incident triage bot for <Company X>.
You classify alerts into P1-P4 based on asset criticality.
dataset_filter: "incident_triage"
model_override: "unsloth/granite-4.0-h-tiny"
output_dir: "training/output/my_custom_agent"
ثم القطار:
python training/scripts/finetune_granite.py \
--config training/configs/granite_soc_finetune.yaml \
--agent my_custom_agent
لكي يتم حل النموذج تلقائيًا في الإنتاج، قم بإضافته إلى AGENT_MODEL_MAP في aurorasoc/granite/__init__.py.
الخطوات التالية
- التقييم والتصدير — النماذج المتخصصة في قياس الأداء مقابل النماذج العامة
- تكامل ماجستير إدارة الأعمال: وحدة الجرانيت — الغوص العميق في دقة النموذج