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

التدريب المتخصص لكل وكيل

تدعم 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_securityICS/OTcps_securityمودبوس، DNP3، IEC 62443، نموذج بوردو
threat_intelCTIthreat_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
جمع، الترشيح، C2incident_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

ماذا يحدث أثناء تدريب كل وكيل

  1. تصفية مجموعة البيانات: يقرأ load_soc_dataset() soc_train.jsonl ويحتفظ فقط بالسجلات التي يتطابق فيها domain مع ملف تعريف الوكيل dataset_filter
  2. الحقن الفوري للنظام: يحصل كل مثال تدريبي على موجه النظام المحدد للوكيل مُسبقًا
  3. تدريب LoRA: تدريب قياسي على Unsloth/SFT على مجموعة البيانات التي تمت تصفيتها
  4. الإخراج: تم حفظ النموذج في 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

هذا البرنامج النصي:

  1. يقرأ ملفات تعريف الوكيل من granite_soc_finetune.yaml
  2. تدريب كل وكيل بشكل تسلسلي (وليس بالتوازي - قيد ذاكرة وحدة معالجة الرسومات)
  3. تصدير كل نموذج إلى تنسيق LoRA + GGUF
  4. يسجل النتائج لكل وكيل

تقدير الوقت (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 &lt;Company X&gt;.
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.

الخطوات التالية