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

دليل مبادلة النموذج

تم تصميم 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

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