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

مرجع التكوين

توثق هذه الصفحة كل خيار تكوين للتدريب وتقديم ودمج نماذج Granite 4 في AuroraSOC.

تدريب تكوين YAML

** الملف: ** training/configs/granite_soc_finetune.yaml

قسم model

يتحكم في النموذج الأساسي الذي سيتم تحميله وكيفية تحميله.

model:
name: "unsloth/granite-4.0-h-tiny"
max_seq_length: 4096
load_in_4bit: true
مجاليكتبتقصيروصف
nameخيط"unsloth/granite-4.0-h-tiny"معرف نموذج الوجه المعانق. يجب أن يكون إصدار Granite 4 المحسّن لـ Unsloth.
max_seq_lengthكثافة العمليات4096الحد الأقصى لطول تسلسل الرمز المميز. تستخدم التسلسلات الأطول المزيد من VRAM. يدعم Granite 4 ما يصل إلى 128 كيلو بايت ولكن 4096 هو الأمثل للتدريب.
load_in_4bitمنطقيtrueتمكين تكميم QLoRA 4 بت. يقلل VRAM بمقدار ~4×. قم بالتعطيل فقط إذا كان لديك ذاكرة VRAM تبلغ ≥48 جيجابايت.

** الموديلات المتوفرة: **

معرف النموذجحدودVRAM (4 بت)جودة
unsloth/granite-4.0-micro~1 ب~4 جيجابايتخط الأساس
unsloth/granite-4.0-h-micro~1 ب~4 جيجابايتأفضل (الهجين)
unsloth/granite-4.0-h-tiny~2ب~6 جيجا بايتمُستَحسَن
unsloth/granite-4.0-h-small~8ب~12 جيجابايتأفضل جودة

قسم lora

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

lora:
r: 64
lora_alpha: 64
lora_dropout: 0
bias: "none"
target_modules:
- "q_proj"
- "k_proj"
- "v_proj"
- "o_proj"
- "gate_proj"
- "up_proj"
- "down_proj"
- "shared_mlp.input_linear"
- "shared_mlp.output_linear"
use_gradient_checkpointing: "unsloth"
مجاليكتبتقصيروصف
rكثافة العمليات64رتبة لورا. أعلى = المزيد من المعلمات = قدرة أفضل ولكن تدريب أبطأ. القيم: 16، 32، 64، 128.
lora_alphaكثافة العمليات64عامل تحجيم LoRA عادةً ما يتم تعيينه على أنه يساوي r. القيم الأعلى تجعل تحديثات LoRA أقوى بالنسبة للنموذج الأساسي.
lora_dropoutيطفو0احتمالية التسرب لطبقات LoRA. يوصى Unsloth باستخدام 0 لتحقيق أقصى سرعة في التدريب.
biasخيط"none"ما إذا كان سيتم تدريب معلمات التحيز. "none" يحافظ على وزن LoRA خفيفًا. الخيارات الأخرى: "all"، "lora_only".
target_modulesقائمة9 وحداتطبقات النموذج التي تحصل على محولات LoRA. تغطي القائمة المكونة من 9 وحدات كلاً من انتباه المحولات (q_proj-down_proj) وMamba SSM (shared_mlp.*).
use_gradient_checkpointingخيط"unsloth"تحسين الذاكرة. يستخدم "unsloth" التنفيذ الأمثل لـ Unsloth (ذاكرة VRAM أقل بمقدار 2 × من PyTorch الأصلي).

فهم r (الرتبة):

رتبةالمعلمات القابلة للتدريبسرعة التدريبجودة النموذج
16~5Mالأسرعجيد للمهام البسيطة
32~10 مسريعتوازن جيد
64~20 مليونمعتدلالأفضل لمهام SOC
128~40 مبطيءتناقص العوائد

شرح الوحدات المستهدفة:

الوحدة النمطيةبنيانغاية
q_proj، k_proj، v_proj، o_projانتباه المحولاتتوقعات الاستعلام والمفتاح والقيمة والمخرجات - آلية الاهتمام الأساسية
gate_proj، up_proj، down_projمحول FFNبوابة شبكة التغذية الأمامية والإسقاطات
shared_mlp.input_linearمامبا اس اس اميغطي مدخل MLP المشترك لـ Granite 4 Hybrid - طبقات نموذج مساحة الحالة
shared_mlp.output_linearمامبا اس اس اممخرج MLP المشترك لـ Granite 4 Hybrid

قسم training

يتحكم في المعلمات الفائقة لحلقة التدريب.

training:
per_device_train_batch_size: 2
gradient_accumulation_steps: 4
num_train_epochs: 3
max_steps: -1
learning_rate: 0.0002
lr_scheduler_type: "cosine"
warmup_ratio: 0.1
weight_decay: 0.01
bf16: true
fp16: false
optim: "adamw_8bit"
logging_steps: 10
save_steps: 100
seed: 42
output_dir: "training/output"
مجاليكتبتقصيروصف
per_device_train_batch_sizeكثافة العمليات2عينات لكل GPU في كل خطوة. أعلى = تدريب أسرع ولكن المزيد من VRAM. T4: 2، A100: 4-8.
gradient_accumulation_stepsكثافة العمليات4قم بتجميع التدرجات على خطوات N قبل التحديث. حجم الدفعة الفعال = batch_size × grad_accum = 8.
num_train_epochsكثافة العمليات3عدد مرات المرور عبر مجموعة البيانات الكاملة. 3 نقطة انطلاق جيدة؛ مراقبة فقدان التقييم بسبب التجهيز الزائد.
max_stepsكثافة العمليات-1تجاوز العصور بعدد خطوات ثابت. -1 = استخدم num_train_epochs بدلاً من ذلك. مفيد للاختبارات السريعة (على سبيل المثال، 200).
learning_rateيطفو2e-4ذروة معدل التعلم. يستخدم الضبط الدقيق لـ LoRA عادةً 1e-4 إلى 5e-4.
lr_scheduler_typeخيط"cosine"جدول معدلات التعلم. "cosine" يتحلل بسلاسة؛ "linear" يضمحل خطيًا. يفضل جيب التمام لـ LoRA.
warmup_ratioيطفو0.1جزء من خطوات التدريب التي تم إنفاقها في عملية إحماء معدل التعلم من 0. يمنع عدم الاستقرار في التدريب المبكر.
weight_decayيطفو0.01تسوية L2. يمنع الإفراط في التجهيز. القيمة القياسية لضبط LLM.
bf16منطقيtrueاستخدم الدقة المختلطة bfloat16. يقلل VRAM، ويحافظ على النطاق العددي. يتطلب أمبير + GPU.
fp16منطقيfalseاستخدم الدقة المختلطة float16. يُستخدم إذا كان bf16 غير مدعوم (وحدات معالجة الرسومات ما قبل Ampere مثل T4).
optimخيط"adamw_8bit"محسن. يستخدم "adamw_8bit" (bitsandbytes) ذاكرة VRAM أقل بنسبة 33% تقريبًا من AdamW القياسي.
logging_stepsكثافة العمليات10تسجيل خسارة التدريب في كل N خطوة.
save_stepsكثافة العمليات100حفظ نقطة التفتيش كل خطوات N. لتمكين --resume في حالة مقاطعة التدريب.
seedكثافة العمليات42بذور عشوائية للتكاثر.
output_dirخيط"training/output"مكان حفظ نقاط التفتيش والنماذج المصدرة.

قسم dataset

يتحكم في تحميل مجموعة البيانات والمعالجة المسبقة.

dataset:
train_file: "training/data/soc_train.jsonl"
eval_file: "training/data/soc_eval.jsonl"
train_on_completions: true
مجاليكتبتقصيروصف
train_fileخيط"training/data/soc_train.jsonl"المسار إلى ملف JSONL للتدريب. تم إنشاؤها بواسطة prepare_datasets.py.
eval_fileخيط"training/data/soc_eval.jsonl"المسار إلى ملف JSONL للتقييم. يستخدم لخسارة التقييم أثناء التدريب (منفصل عن التقييم المعياري).
train_on_completionsمنطقيtrueتمكين إخفاء الاستجابة. حساب الخسارة فقط في استجابات المساعد، وليس الرموز المميزة للنظام/المستخدم. مهم للجودة.

قسم agent_profiles

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

agent_profiles:
security_analyst:
system_prompt: "You are the AuroraSOC Security Analyst..."
dataset_filter: "alert_triage"
model_override: null
output_dir: "training/output/security_analyst"

threat_hunter:
system_prompt: "You are the AuroraSOC Threat Hunter..."
dataset_filter: "threat_hunting"
model_override: null
output_dir: "training/output/threat_hunter"
مجاليكتبتقصيروصف
system_promptخيط(يختلف)تم إدخال موجه النظام في كل مثال تدريبي. يعلم النموذج شخصيته.
dataset_filterخيط(يختلف)تصفية بيانات التدريب حسب المجال. يتم استخدام العينات ذات الحقل domain المطابق فقط.
model_overrideخيطnullاستخدم نموذجًا أساسيًا مختلفًا لهذا الوكيل. null = استخدم model.name العام.
output_dirخيط(يختلف)مكان حفظ النموذج المدرب لهذا الوكيل. النمط: training/output/<agent_name>/.

قسم export

يتحكم في تصدير النموذج بعد التدريب.

export:
save_lora: true
save_merged_16bit: false
save_gguf: true
gguf_quantization_methods:
- "q8_0"
push_to_hub: false
hub_model_name: ""
مجاليكتبتقصيروصف
save_loraمنطقيtrueحفظ أوزان محول LoRA. خفيف الوزن (~50-200 ميجابايت). مطلوب لـ --resume و--export-only.
save_merged_16bitمنطقيfalseقم بدمج LoRA في النموذج الأساسي واحفظ أوزان FP16 الكاملة. يتطلب نموذج VRAM الكامل. مطلوب لخدمة vLLM.
save_ggufمنطقيtrueتصدير إلى تنسيق GGUF. مطلوب لنشر Olma.
gguf_quantization_methodsقائمة["q8_0"]طرق التكميم GGUF. الخيارات: "q8_0"، "q4_k_m"، "q5_k_m"، "f16".
push_to_hubمنطقيfalseادفع إلى HuggingFace Hub بعد التدريب. يتطلب HF_TOKEN env var.
hub_model_nameخيط""اسم الريبو HuggingFace (على سبيل المثال، "yourname/granite-soc-finetuned").

متغيرات البيئة

تكوين وقت التشغيل (.env)

تتحكم هذه المتغيرات في كيفية حل AuroraSOC لنماذج Granite واستخدامها في وقت التشغيل:

# Runtime Backend Selection
LLM_BACKEND=vllm
VLLM_BASE_URL=http://vllm:8000/v1
VLLM_MODEL=granite-soc-specialist
VLLM_ORCHESTRATOR_MODEL=granite-soc-specialist
OLLAMA_BASE_URL=http://ollama:11434
OLLAMA_MODEL=granite4:8b
OLLAMA_ORCHESTRATOR_MODEL=granite4:dense

# Fine-tuned Model Settings (primarily used in Ollama model resolution paths)
GRANITE_USE_FINETUNED=false
GRANITE_USE_PER_AGENT_MODELS=false
GRANITE_FINETUNED_MODEL_TAG=granite-soc:latest

# Optional training metadata
GRANITE_SERVING_BACKEND=vllm
عاملقيموصف
LLM_BACKENDvllm / ollamaالواجهة الخلفية للاستدلال النشط التي يستخدمها الوكلاء ومسارات العمل ودردشة واجهة برمجة التطبيقات (API).
VLLM_BASE_URLعنوان URLنقطة النهاية المتوافقة مع vLLM OpenAI (عادةً .../v1)
VLLM_MODELمعرف النموذج المقدممعرف نموذج vLLM المستخدم للمكالمات المتخصصة
VLLM_ORCHESTRATOR_MODELمعرف النموذج المقدممعرف نموذج vLLM المستخدم لاستدعاءات المنسق
OLLAMA_BASE_URLعنوان URLنقطة نهاية خادم Olma
OLLAMA_MODELعلامة أولاماعلامة نموذجية متخصصة لوضع Ollama
OLLAMA_ORCHESTRATOR_MODELعلامة أولاماعلامة نموذج المنسق لوضع Ollama
GRANITE_USE_FINETUNEDtrue / falseقم بتمكين النموذج المضبوط بدقة كبديل عندما لا يكون النموذج لكل وكيل متاحًا
GRANITE_USE_PER_AGENT_MODELStrue / falseتمكين البحث عن نموذج لكل وكيل عبر AGENT_MODEL_MAP
GRANITE_FINETUNED_MODEL_TAGعلامة أولاماالعلامة المستخدمة للنموذج العام (غير الخاص بكل وكيل) الذي تم ضبطه بدقة
GRANITE_SERVING_BACKENDollama / vllmالبيانات التعريفية الاختيارية المستخدمة من قبل مساعدي التدريب/الخدمة

متغيرات بيئة التدريب

يتم استخدام هذه المتغيرات أثناء عملية التدريب:

عاملتقصيروصف
AGENT_NAME(لا أحد)اسم الملف التعريفي للوكيل للتدريب لكل وكيل على أساس Docker
HF_TOKEN(لا أحد)رمز HuggingFace لتنزيلات push_to_hub والنماذج المسورة
WANDB_API_KEY(لا أحد)مفتاح API للأوزان والتحيزات لتتبع التجربة
CUDA_VISIBLE_DEVICES0ما هي وحدات معالجة الرسومات (GPU) التي يجب استخدامها. 0,1 لوحدة معالجة الرسومات المتعددة.

مرجع أهداف Makefile

أهداف التدريب

هدفيأمروصف
make train-installpip install -e .[training]تثبيت تبعيات التدريب
make train-datapython training/scripts/prepare_datasets.py --output-dir training/dataتنزيل وإعداد مجموعات بيانات التدريب
make trainpython training/scripts/finetune_granite.pyتدريب نموذج SOC العام
make train-agent AGENT=Xfinetune_granite.py --agent Xتدريب متخصص لكل وكيل
python training/scripts/train_all_agents.pypython training/scripts/train_all_agents.pyتدريب جميع ملفات تعريف الوكيل بالتسلسل
make train-evalpython training/scripts/evaluate_model.pyتقييم النموذج المدرب
make train-serve-ollamaserve_model.py ollamaاستيراد GGUF إلى Olma
make train-serve-vllmserve_model.py vllmبدء تشغيل خادم vLLM

أهداف تدريب عامل الميناء

هدفيأمروصف
make train-docker-datadocker compose ... run prepare-dataتحضير البيانات في Docker
make train-dockerdocker compose ... run trainingتدريب في دوكر
make train-docker-agent AGENT=Xdocker compose ... run training-agentالتدريب لكل وكيل في Docker
make train-docker-evaldocker compose ... run evalتقييم في دوكر

أهداف الإعداد المحلية

هدفيأمروصف
make setup-local./scripts/setup_local.shإعداد البيئة المحلية الكاملة
make enable-finetunedيضبط vars .envتمكين النماذج المضبوطة بدقة في AuroraSOC
make disable-finetunedيقوم بإلغاء تعيين .env varsالعودة إلى نماذج الجرانيت الأساسية
make ollama-pull-graniteollama pull granite4:8bسحب النموذج الأساسي من Olma

خدمات إنشاء عامل الميناء

docker-compose.training.yml

خدمةغايةمطلوب وحدة معالجة الرسوماتمجلدات
prepare-dataتنزيل + مجموعة بيانات العمليةلا./training/data:/app/training/data
trainingالتدريب النموذجي العامنعم./training:/app/training، ذاكرة التخزين المؤقت HF
training-agentالتدريب لكل وكيلنعمنفس training
evalتقييم النموذجنعم./training:/app/training
vllmخدمة الإنتاج (FP16)نعم./training/output:/models
ollama-importGGUF → أولامايعتمد على./training/output:/models، بيانات أولاما

docker-compose.yml (مرساة x-granite-env)

يستخدم ملف الإنشاء الرئيسي مرساة YAML لإدخال متغيرات بيئة Granite في جميع خدمات الوكيل:

x-granite-env: &granite-env
GRANITE_USE_FINETUNED: ${GRANITE_USE_FINETUNED:-false}
GRANITE_USE_PER_AGENT_MODELS: ${GRANITE_USE_PER_AGENT_MODELS:-false}
GRANITE_FINETUNED_MODEL_TAG: ${GRANITE_FINETUNED_MODEL_TAG:-granite-soc:latest}
GRANITE_SERVING_BACKEND: ${GRANITE_SERVING_BACKEND:-vllm}
LLM_BACKEND: ${LLM_BACKEND:-vllm}
VLLM_BASE_URL: ${VLLM_BASE_URL:-http://vllm:8000/v1}
VLLM_MODEL: ${VLLM_MODEL:-granite-soc-specialist}
VLLM_ORCHESTRATOR_MODEL: ${VLLM_ORCHESTRATOR_MODEL:-granite-soc-specialist}
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://ollama:11434}

مثال التكوين الكامل

ملف .env كامل لنشر الإنتاج باستخدام نماذج مضبوطة بدقة لكل وكيل:

# --- Granite Model Configuration ---
LLM_BACKEND=vllm
VLLM_BASE_URL=http://vllm:8000/v1
VLLM_MODEL=granite-soc-specialist
VLLM_ORCHESTRATOR_MODEL=granite-soc-specialist
OLLAMA_MODEL=granite4:8b
OLLAMA_ORCHESTRATOR_MODEL=granite4:dense
GRANITE_USE_FINETUNED=true
GRANITE_USE_PER_AGENT_MODELS=true
GRANITE_FINETUNED_MODEL_TAG=granite-soc:latest
GRANITE_SERVING_BACKEND=vllm
OLLAMA_BASE_URL=http://ollama:11434

# --- Application Configuration ---
SECRET_KEY=your-secret-key-here
DATABASE_URL=postgresql+asyncpg://aurora:aurora@postgres:5432/aurorasoc
NATS_URL=nats://nats:4222
MQTT_BROKER=mosquitto

# --- Monitoring ---
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317

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