إضافة أو تبديل النماذج الأساسية
تعتمد AuroraSOC على البنية الهجينة IBM Granite 4 للحصول على مزيج مثالي من السرعة والتفكير الاستنتاجي طويل السياق. ومع ذلك، فإن النظام البيئي محايد تمامًا من حيث التصميم. إذا طلبت مؤسستك استخدام Llama 3، أو Mistral، أو Qwen، أو نموذج داخلي خاص، فيمكن تكييف المسار لدعمه.
يرشدك هذا المستند خلال العملية الشاملة لتبديل النموذج الأساسي عبر دورة الحياة بأكملها، بدءًا من معلمات التدريب وحتى نشر الإنتاج.
فهم التأثير
عندما تقوم بتبديل نموذج أساسي، فإنك لا تقوم فقط بتغيير سلسلة في ملف التكوين. يجب عليك تكييف ثلاث مراحل مختلفة من خطوط الأنابيب:
- ** تكوين تدريب Unsloth: ** تستخدم البنى المختلفة طبقات إسقاط مستهدفة مختلفة لحقن LoRA.
- ملف نموذج Ollama: تستخدم النماذج الأساسية المختلفة قوالب دردشة مختلفة تمامًا (على سبيل المثال،
<|start_of_role|>مقابل<bs>[INST]). - تكوين النشر: نشر التغيير من خلال
docker-compose.ymlإلى إطار عمل الوكيل الفعلي.
المرحلة الأولى: إعادة تشكيل مسار التدريب
محطتك الأولى هي training/configs/granite_soc_finetune.yaml.
قم بتحديث اسم النموذج إلى مسار Hugging Face الذي تختاره (بدعم من Unsloth).
model:
name: "unsloth/Meta-Llama-3-8B-Instruct"
max_seq_length: 4096
load_in_4bit: true
تحديث وحدات هدف LoRA
يجب أن تكون مصفوفات LoRA مرتبطة باهتمام محدد وطبقات MLP داخل الشبكة العصبية. يتطلب IBM Granite طبقات محددة مثل shared_mlp.input_linear، بينما يستخدم Llama 3 مخططًا مختلفًا.
إذا قمت بالتبديل إلى بنية Llama 3، فيجب عليك تحديث قائمة target_modules:
lora:
r: 64
target_modules:
- "q_proj"
- "k_proj"
- "v_proj"
- "o_proj"
- "gate_proj"
- "up_proj"
- "down_proj"
# Remove IBM-specific "shared_mlp..." targets
قم بتشغيل prepare_datasets.py وقم بتنفيذ مسار الضبط الدقيق كالمعتاد.
المرحلة الثانية: تحديث قالب العرض
إذا كنت تستخدم vLLM، فإن خادم vLLM المتوافق مع OpenAI يستخدم ملفات Hugging Face tokenizer_config.json للتعامل مع قوالب الدردشة تلقائيًا. في معظم الحالات، vLLM "يعمل فقط" عند الإشارة إلى النماذج المتوافقة مع معايير الصناعة.
إذا كنت تقوم بنشر البديل إلى Ollama، فيجب عليك تعديل قالب <|start_of_role|> الذي يستخدمه Granite يدويًا.
افتح training/scripts/serve_model.py وtraining/configs/Modelfile.granite-soc واضبط قوالب الإنشاء.
على سبيل المثال، تعديل الدالة generate_modelfile لتنسيق Llama 3:
TEMPLATE """<|begin_of_text|>{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>"""
# Add correct stop symbols
PARAMETER stop "<|eot_id|>"
PARAMETER stop "<|start_header_id|>"
المرحلة 3: تحديث تكوين النشر
سواء قمت بتدريب نموذج جديد أو قررت ببساطة توجيه AuroraSOC إلى سحابة موجودة مسبقًا أو نقطة نهاية يمكن الوصول إليها عبر الشبكة، فيجب عليك إبلاغ أسطول الوكلاء عن طريق تغيير كتلة بيئة النظام الفرعي.
افتح docker-compose.yml وحدد موقع مرساة x-granite-env YAML. لا تقم بتغيير منطق التطبيق factory.py مباشرة.
x-granite-env: &granite-env
# E.g. To point to an external vLLM server running Llama 3
LLM_BACKEND: "vllm"
VLLM_BASE_URL: "http://10.0.100.5:8000/v1"
VLLM_MODEL: "meta-llama/Meta-Llama-3-8B-Instruct"
عند إعادة التشغيل، ستقوم وظيفة _get_llm_config الخاصة بـ Agent Factory بتوجيه جميع الوكلاء المتخصصين الستة عشر بسلاسة إلى عنوان URL الأساسي الجديد وطلب معرف النموذج الجديد.
إعادة التحقق من كفاءة خطوط الأنابيب
** الضرورة المطلقة: ** تعني بنية LLM الجديدة وجود قدرات استنتاجية لم يتم التحقق منها.
يجب عليك تشغيل evaluate_model.py على الواجهة الخلفية المنشورة حديثًا قبل التعامل مع المحول على أنه مكتمل.
python training/scripts/evaluate_model.py \
--model vllm:meta-llama/Meta-Llama-3-8B-Instruct
إذا انخفض معدل النجاح إلى ما دون خط الأساس التشغيلي المحدد لديك، فيجب عليك إما زيادة تصنيف LoRA الخاص بك، أو إثراء مجموعة بيانات الضبط الدقيق، أو التخلي عن البنية. في SOC، الدقة غير قابلة للتفاوض.