دليل مبادلة النموذج
تم تصميم AuroraSOC من أجل تبديل نماذج التوصيل والتشغيل — يمكنك التبديل بين النماذج الأساسية أو المضبوطة بدقة أو لكل وكيل أو حتى النماذج غير الجرانيتية عن طريق تغيير متغيرات البيئة. لا توجد تغييرات مطلوبة في التعليمات البرمجية.
مرجع سريع
# Use base Granite 4 (default — no fine-tuning)
make disable-finetuned
# Use a single fine-tuned model for all agents
make enable-finetuned
# Use per-agent fine-tuned specialists
export GRANITE_USE_FINETUNED=true
export GRANITE_USE_PER_AGENT_MODELS=true
# Force a specific model for all agents in Ollama mode (testing/debugging)
export LLM_BACKEND=ollama
export OLLAMA_MODEL=llama3.2:3b
export OLLAMA_ORCHESTRATOR_MODEL=llama3.2:3b
السيناريو 1: النموذج الأساسي (افتراضي)
متى: الإعداد الأول، قبل أي ضبط دقيق، أو للتطوير/الاختبار.
# .env
LLM_BACKEND=ollama
OLLAMA_MODEL=granite4:8b
OLLAMA_ORCHESTRATOR_MODEL=granite4:dense
GRANITE_USE_FINETUNED=false
GRANITE_USE_PER_AGENT_MODELS=false
ماذا يحدث: يستخدم جميع الوكلاء الستة عشر granite4:8b من Ollama. يتمتع النموذج بقدرة لغوية عامة ولكن لا يوجد تدريب أمني خاص بـ AuroraSOC.
السيناريو 2: نموذج واحد مضبوط بدقة
متى: قمت بتدريب نموذج SOC عام (عبر make train) وتريد أن يستخدمه جميع الوكلاء.
# .env
GRANITE_USE_FINETUNED=true
GRANITE_USE_PER_AGENT_MODELS=false
GRANITE_FINETUNED_MODEL_TAG=granite-soc:latest
أو استخدم اختصار Makefile:
make enable-finetuned
ماذا يحدث: يتشارك جميع الوكلاء في نفس النموذج المضبوط. تم تدريب هذا النموذج على بيانات SOC في جميع المجالات.
السيناريو 3: متخصصون لكل وكيل
متى: لقد قمت بتدريب نماذج متخصصة فردية (عبر python training/scripts/train_all_agents.py) وتريد أن يستخدم كل وكيل النموذج الخاص بالمجال الخاص به.
# .env
GRANITE_USE_FINETUNED=true
GRANITE_USE_PER_AGENT_MODELS=true
GRANITE_FINETUNED_MODEL_TAG=granite-soc:latest
ماذا يحدث: يلجأ كل وكيل إلى النموذج المتخصص الخاص به. يعود الوكلاء الذين ليس لديهم متخصص مدرب إلى النموذج العام المضبوط بدقة، ثم إلى النموذج الأساسي.
السيناريو 4: تجاوز للاختبار
متى: تريد اختبار نموذج مختلف تمامًا (على سبيل المثال، Llama وMistral) عبر جميع الوكلاء.
# .env
LLM_BACKEND=ollama
OLLAMA_MODEL=llama3.2:3b
OLLAMA_ORCHESTRATOR_MODEL=llama3.2:3b
ماذا يحدث: يستخدم جميع الوكلاء معرفات نماذج الواجهة الخلفية التي تم تكوينها بشكل صريح. في الوضع Ollama، يتجاوز هذا القرار المتخصص لكل وكيل ويستخدم العلامات المحددة مباشرة.
هام: تتمتع معرفات نماذج الواجهة الخلفية (OLLAMA_MODEL / OLLAMA_ORCHESTRATOR_MODEL أو VLLM_MODEL / VLLM_ORCHESTRATOR_MODEL) بالأولوية في مسارات الواجهة الخلفية الخاصة بها.
السيناريو 5: vLLM للإنتاج
متى: النشر إلى الإنتاج حيث تحتاج إلى إنتاجية عالية وطلبات متزامنة متعددة.
# .env
LLM_BACKEND=vllm
VLLM_BASE_URL=http://vllm-server:8000/v1
VLLM_MODEL=granite-soc-specialist
VLLM_ORCHESTRATOR_MODEL=granite-soc-specialist
ماذا يحدث: يستخدم ChatModel.from_name() API المتوافق مع Openالذكاء الاصطناعي (يشير إلى vLLM). تأتي معرفات النماذج مباشرةً من VLLM_MODEL وVLLM_ORCHESTRATOR_MODEL.
السيناريو 6: مقدمو الخدمات المتوافقون مع Openالذكاء الاصطناعي
متى: تريد استخدام نموذج مستضاف على السحابة (Together الذكاء الاصطناعي أو Groq أو Fireworks الذكاء الاصطناعي أو Openالذكاء الاصطناعي) أو أي خادم محلي يعرض نقطة نهاية /v1/chat/completions متوافقة مع Openالذكاء الاصطناعي (llama.cpp، LM Studio).
# .env
LLM_BACKEND=openai
OPENAI_COMPATIBLE_BASE_URL=https://api.groq.com/openai/v1
OPENAI_COMPATIBLE_MODEL=llama-3.3-70b-versatile
OPENAI_COMPATIBLE_API_KEY=${GROQ_API_KEY}
ماذا يحدث: يستخدم ChatModel.from_name() محول Openالذكاء الاصطناعي العام مع عنوان URL الأساسي المخصص ومفتاح API الاختياري. لا توجد حاجة لوحدة معالجة الرسومات أو النموذج المحلي.
يمكنك اختياريًا تعيين نموذج مختلف للمنسق:
OPENAI_COMPATIBLE_ORCHESTRATOR_MODEL=llama-3.1-8b-instant
التبديل بين السيناريوهات
من القاعدة → ضبط دقيق
# 1. Train the model
make train-data
make train
# 2. Import to Ollama
make train-serve-ollama
# 3. Enable fine-tuned
make enable-finetuned
# 4. Restart services
docker compose restart
من الضبط الدقيق → لكل وكيل
# 1. Train all specialists
python training/scripts/train_all_agents.py
# 2. Import all to Ollama
python training/scripts/serve_model.py ollama-all --output-dir training/output
# 3. Enable per-agent
echo "GRANITE_USE_PER_AGENT_MODELS=true" >> .env
# 4. Restart
docker compose restart
من كل وكيل → العودة إلى القاعدة
make disable-finetuned
docker compose restart
نماذج اختبار أ/ب
يمكنك تشغيل مثيلين من AuroraSOC بتكوينات نموذج مختلفة:
# Instance A: Base model (port 8001)
GRANITE_USE_FINETUNED=false PORT=8001 docker compose up
# Instance B: Fine-tuned (port 8002)
GRANITE_USE_FINETUNED=true PORT=8002 docker compose up
أرسل نفس التنبيهات إلى كلا الحالتين وقارن:
- جودة الاستجابة
- كمون
- دقة رسم الخرائط MITRE
- معدلات إيجابية كاذبة
استخدام نماذج غير الجرانيت
تدعم بنية AuroraSOC أي نموذج يمكن الوصول إليه عبر vLLM (افتراضي)، أو Ollama (احتياطي)، أو API آخر متوافق مع Openالذكاء الاصطناعي:
عبر Ollama
# Pull any Ollama model
ollama pull llama3.2:3b
ollama pull mistral:7b
ollama pull qwen2.5:7b
# Use it in AuroraSOC
export LLM_BACKEND=ollama
export OLLAMA_MODEL=llama3.2:3b
export OLLAMA_ORCHESTRATOR_MODEL=llama3.2:3b
عبر API المتوافق مع Openالذكاء الاصطناعي
# Point to any OpenAI-compatible endpoint
export LLM_BACKEND=openai
export OPENAI_COMPATIBLE_BASE_URL=https://api.example.com/v1
export OPENAI_COMPATIBLE_MODEL=my-custom-model
export OPENAI_COMPATIBLE_API_KEY=sk-...
عبر موفري السحابة
# OpenAI
export LLM_BACKEND=openai
export OPENAI_COMPATIBLE_BASE_URL=https://api.openai.com/v1
export OPENAI_COMPATIBLE_MODEL=gpt-4o-mini
export OPENAI_COMPATIBLE_API_KEY=$OPENAI_API_KEY
# Groq
export LLM_BACKEND=openai
export OPENAI_COMPATIBLE_BASE_URL=https://api.groq.com/openai/v1
export OPENAI_COMPATIBLE_MODEL=llama-3.3-70b-versatile
export OPENAI_COMPATIBLE_API_KEY=$GROQ_API_KEY
# Together AI
export LLM_BACKEND=openai
export OPENAI_COMPATIBLE_BASE_URL=https://api.together.xyz/v1
export OPENAI_COMPATIBLE_MODEL=meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo
export OPENAI_COMPATIBLE_API_KEY=$TOGETHER_API_KEY
:::حذر
يتطلب موفرو Cloud API المصادقة المناسبة. قم بتعيين OPENالذكاء الاصطناعي_COMPATIBLE_API_KEY على مفتاح API الخاص بمزود الخدمة الخاص بك. النماذج المتخصصة المضبوطة لكل وكيل هي نماذج محلية فقط - ولا يمكن استخدامها مع موفري الخدمات السحابية إلا إذا قمت بتحميلها.
:::
التحقق من النموذج النشط
تحقق مما يحله كل وكيل
يمكنك التحقق من دقة النموذج برمجياً:
from aurorasoc.granite import get_default_granite_config
config = get_default_granite_config()
# Check resolution for each agent
agents = ["security_analyst", "threat_hunter", "malware_analyst",
"incident_responder", "orchestrator"]
for agent in agents:
model = config.resolve_model(agent)
print(f"{agent:25s} → {model}")
المخرجات المتوقعة مع تمكين النماذج لكل وكيل:
security_analyst → granite-soc-security-analyst:latest
threat_hunter → granite-soc-threat-hunter:latest
malware_analyst → granite-soc-malware-analyst:latest
incident_responder → granite-soc-incident-responder:latest
orchestrator → granite-soc-orchestrator:latest
التحقق من نماذج الواجهة الخلفية
# vLLM default: list served models
curl http://localhost:8000/v1/models
# Ollama fallback: list available local tags
ollama list
# Verify a specific model works
ollama run granite-soc:latest "Classify this alert: ET TROJAN Cobalt Strike Beacon"
استكشاف الأخطاء وإصلاحها
| مشكلة | سبب | حل |
|---|---|---|
يستخدم الوكيل النموذج الأساسي بالرغم من USE_FINETUNED=true | الطراز المضبوط بدقة ليس في Ollama | قم بتشغيل make train-serve-ollama للاستيراد |
يستخدم جميع الوكلاء نفس النموذج على الرغم من PER_AGENT=true | نموذج الوكيل غير موجود في AGENT_MODEL_MAP أو لم يتم استيراده | حدد vLLM /v1/models (افتراضي) أو ollama list (احتياطي)، ثم قم باستيراد النماذج المفقودة |
فشل ChatModel.from_name() | Ollama لا يعمل أو مضيف خاطئ | تحقق من OLLAMA_BASE_URL، قم بتشغيل ollama serve |
| النموذج يستجيب بشكل سيء | استخدام GGUF مع التكميم المفرط | أعد التصدير باستخدام q8_0 بدلاً من q4_k_m |
| التجاوز لا يسري مفعوله | لم يتم نشر Env var | أعد تشغيل الخدمة، وتحقق من docker compose config |
الخطوات التالية
- واجهات العرض الخلفية — Ollama مقابل vLLM بالتفصيل
- النشر المحلي — أكمل عملية الإعداد المحلي