Wednesday, 12 August 2026 | التحديث اليومي نظرة ثاقبة للذكاء الاصطناعي، مكتوبة للبناة

ضبط النموذج باستخدام تقنية LoRA: دليل عملي

  • الضبط الدقيق باستخدام LoRA يقوم بتدريب مجموعة صغيرة جدًّا من أوزان المُكيِّفات (adapters) بدلًا من النموذج الكامل — عادةً ما تمثِّل هذه الأوزان ١–٥٪ من مجموع المعايير — مما يسمح لك بضبط نموذج مكوَّن من ٧ مليارات معلَّمة على وحدة معالجة رسومية استهلاكية واحدة.
  • QLoRA يُطبِّق تقنية التكميم (quantisation) ذات ٤ بت على النموذج الأساسي المُجمَّد، مما يقلِّل متطلبات الذاكرة VRAM أكثر فأكثر: فنموذج مكوَّن من ٧ مليارات معلَّمة يشغل حوالي ٦ جيجابايت، بينما يشغل نموذج مكوَّن من ١٣ مليار معلَّمة حوالي ١٠ جيجابايت.
  • الرتبة (r) والقيمة alpha هما العاملان اللذان يتحكمان في مدى قدرة المُكيِّف على تغيير سلوك النموذج. ابدأ بالقيم r=16 وalpha=32.
  • الضبط الدقيق غالبًا ما يكون الأداة غير المناسبة. إذا كانت المشكلة تكمن في نقص المعرفة، فاستخدم تقنية RAG. أما إذا كانت المشكلة تتعلَّق بالتنسيق أو النبرة، فحسِّن أولًا رسالة النظام (system prompt) الخاصة بك.

الضبط الدقيق باستخدام LoRA (التكيف منخفض الرتبة) هو أسلوبٌ فعَّال من حيث عدد المعايير لتكيف نموذج لغوي مُدرَّب مسبقًا مع مهمة محددة. وبدلًا من تحديث كل وزن في النموذج، يقوم LoRA بتجميد الأوزان الأصلية وإدخال مصفوفات قابلة للتدريب صغيرة جدًّا في طبقات الانتباه. والنتيجة هي مُكيِّف (adapter) — وهو ملفٌ لا يتجاوز حجمه عادةً ١٠٠ ميجابايت — يُثبَّت على النموذج الأساسي وقت الاستنتاج. وبذلك تحصل على سلوك متخصص دون الحاجة لإعادة تدريب مليارات المعايير.

كيف يعمل LoRA

قد تكون مصفوفة الأوزان القياسية في نموذج الترانسفورمر ٤٠٩٦ × ٤٠٩٦. أما LoRA فيحلِّل التحديث المُطبَّق على تلك المصفوفة إلى مصفوفتين أصغر بكثير: إحداهما بحجم ٤٠٩٦ × r والأخرى بحجم r × ٤٠٩٦، حيث إن r هي الرتبة (وتتراوح عادةً بين ٤ و٦٤). وخلال التدريب، يتم تحديث هاتين المصفوفتين الصغيرتين فقط. أما عند الاستنتاج، فيتم إضافة حاصل ضرب المصفوفتين الصغيرتين مرة أخرى إلى النموذج الأصلي المُجمَّد — ولا ينتج عن ذلك أي تأخير إضافي في معظم التطبيقات، لأن المُكيِّف يُدمج قبل النشر.

وهذا أمرٌ بالغ الأهمية من حيث المتطلبات المادية: فبما أن أوزان النموذج الأساسي مُجمَّدة، فهي لا تحتاج إلى حالات المُحسِّن (optimizer states) أو التدرجات (gradients). بل إن المعايير الخاصة بالمُكيِّف فقط هي التي تتطلب ذلك. ولذلك تنخفض متطلبات الذاكرة VRAM انخفاضًا كبيرًا مقارنةً بالضبط الدقيق الكامل.

LoRA مقابل QLoRA

الطريقةدقة النموذج الأساسيدقة المُكيِّفالذاكرة VRAM المطلوبة لنموذج مكوَّن من ٧ مليارات معلَّمة (أثناء التدريب)13B من الذاكرة المؤقتة للوحدة الرسومية (VRAM) (للتدريب)
ضبط دقيق كاملbf16/ fp16~60 جيجابايت~110 جيجابايت
LoRAbf16/ fp16bf16/ fp16حوالي ١٦ جيجابايت~28 جيجابايت
QLoRA4 بت (NF4)bf16/ fp16حوالي ٦ جيجابايت~10 جيجابايت

QLoRA، وهي تقنية قدّمها دتميرز وزملاؤه (2023)، تقوم بتحميل النموذج الأساسي باستخدام تكميم 4 بت من نوع NormalFloat (NF4)، مع الاحتفاظ بالمحرِّك (adapter) بدقة كاملة. ويكون التدريب أبطأ من LoRA القياسي بسبب عبء إعادة التكميم في كل عملية تمرير أمامي (forward pass)، لكن وفورات الذاكرة المؤقتة للوحدة الرسومية (VRAM) تتيح تدريب نماذج بحجم 13 مليار ومليارَي معلمة على أجهزة يمتلكها معظم المستخدمين فعليًّا. أما الفرق في الجودة مقارنةً بـ LoRA الكامل فهو غالبًا غير ملحوظ في حالات الضبط الدقيق المخصصة لمهمة معينة؛ بينما قد تحدث بعض التراجعات في الأداء عند المهام المعقدة التي تتطلب استنتاجًا متقدمًا.

قبل الالتزام بشراء أجهزة معينة، قم بتشغيل النموذج المستهدف عبر حاسبة الذاكرة VRAM — حيث يأخذ هذا الحاسب في الاعتبار حجم الدفعة (batch size) وطول التسلسل (sequence length)، وكلا العاملين يؤثران بشكل كبير في الأرقام الناتجة.

الرتبة والقيمة alpha: ما الذي تؤثران فيه فعليًّا؟

الرتبة (r) تتحكم في قدرة المحرّك على التعبير عن التعديلات. فرتبة قدرها 4 تضيف عددًا ضئيلًا جدًّا من المعلمات وتؤدي إلى تغييرات طفيفة جدًّا؛ أما الرتبة 64 فتوفر سعة أكبر للمحرّك ليُعيد تشكيل سلوك النموذج، لكنها تزيد في الوقت نفسه من استهلاك الذاكرة المؤقتة للوحدة الرسومية (VRAM) وخطر الإفراط في التكيّف (overfitting).

عامل التوسع (α) هو عامل مقياس يُطبَّق على مخرجات LoRA قبل إضافتها إلى الأوزان الثابتة (frozen weights). وبذلك فإن معدل التعلّم الفعّال للمحرّك يتناسب طرديًّا مع النسبة α/r. ومن الشائع جدًّا أن يُترك α مضاعفًا بعامل 2 للرتبة r (مثل: r=16، α=32)، وهذه القيمة تعمل جيدًا عمليًّا.

الاستخدام المقصودالرتبة الموصى بها (r)عامل التوسع الموصى به (α)
تغيير النمط أو النبرة4–88–16
أسئلة وأجوبة مخصصة لمجال معين1632
تنسيق جديد لمهمة (مثل: استدعاء الدوال)32–6464–128
تغيير معقد في السلوك64128

زيادة الرتبة لا تعني دائمًا تحسّن النتائج. ففي معظم حالات الضبط الدقيق الموجّه لاتباع التعليمات، تكون الرتبة r=16 كافية. وإذا لم تنخفض خسارة التحقق (validation loss)، فيجب زيادة الرتبة أو إضافة المزيد من البيانات قبل زيادة عدد الدورات التدريبية (epochs).

متطلبات الذاكرة VRAM والوقت الواقعية

الأرقام الواردة في الجدول أدناه تفترض استخدام QLoRA مع حجم دفعة قدره 1 وطول تسلسل قدره 2048. أما التكوينات متعددة الوحدات الرسومية (Multi-GPU) فتتناسب تقريبيًّا خطيًّا مع سعة الذاكرة المؤقتة للوحدة الرسومية (VRAM)، لكنها تتطلب تهيئة باستخدام FSDP أو DeepSpeed.

حجم النموذجأقل وحدة معالجة رسومية (GPU) مطلوبةوحدة رسومية مريحة~1000 خطوة (A100)
3 مليار معلمةRTX 3060 (12 جيجابايت)RTX 4070 (12 جيجابايت)~5 دقائق
٧ مليارات معلَّمةRTX 3060 (12 جيجابايت)RTX 4080 (16 جيجابايت)~15 دقيقة
13 مليار معلمةRTX 3090 (24 جيجابايت)RTX 4090 (٢٤ جيجابايت)حوالي ٣٠ دقيقة
34 مليار معلمةRTX 3090 مزدوجةA100 بسعة 40 جيجابايت~90 دقيقة
70 مليار معلَّمةوحدتان A100 بسعة 40 جيجابايتأربع وحدات A100~4 ساعات

تتفاوت تكاليف السحابة. فتكلفة وحدة واحدة من A100 بسعة 80 جيجابايت على منصة Lambda Labs تبلغ حاليًّا ما بين 1.50 و2.00 دولار أمريكي لكل ساعة اعتبارًا من منتصف عام 2026. أما عملية ضبط دقيق لنموذج بحجم 7 مليار معلمة باستخدام QLoRA على 50 ألف مثال فهي عادةً ما تنتهي في غضون ساعتين — أي بتكلفة أقل بكثير من 5 دولارات أمريكيّة. وللمزيد من التوجيهات المتعلقة بشراء وحدات الرسوميات، راجع دليل وحدات الرسوميات لتشغيل النماذج اللغوية الكبيرة محليًّا.

أدوات التنفيذ الفعلي للضبط الدقيق باستخدام LoRA

إطارا العمل السائدان هما Hugging Face TRL + PEFT و Axolotl. وكلاهما يدعمان LoRA وQLoRA. أما Unsloth فهو خيار ثالث شائع جدًّا يحقّق سرعة تدريب أسرع بمرتين عبر استخدام نوى CUDA مخصصة.

مثال بسيط باستخدام TRL + PEFT (بايثون)

from transformers import AutoModelForCausalLM, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model
from trl import SFTTrainer, SFTConfig
import torch

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
)

model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Meta-Llama-3-8B-Instruct",
    quantization_config=bnb_config,
    device_map="auto",
)

lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj"],
    lora_dropout=0.05,
    task_type="CAUSAL_LM",
)

model = get_peft_model(model, lora_config)

trainer = SFTTrainer(
    model=model,
    train_dataset=your_dataset,  # يتوقع وجود عمود باسم "text"
    args=SFTConfig(output_dir="./output", num_train_epochs=3),
)
trainer.train()
model.save_pretrained("./my-lora-adapter")

يتم حفظ المحرّك في ./my-lora-adapter وهو عادةً ما يكون حجمه بين 50 و300 ميجابايت. ويمكن دمجه مع النموذج الأساسي لتسريع الاستنتاج باستخدام الدالة model.merge_and_unload() قبل الحفظ.

Axolotl (معتمد على التهيئة)

Axolotl يدير كامل سير العمل انطلاقًا من ملف بصيغة YAML، مما يجعل إعادة إنتاج التشغيلات أسهل. ويمكن تثبيته عبر الأمر pip install axolotlثم:

# config.yml
base_model: meta-llama/Meta-Llama-3-8B-Instruct
load_in_4bit: true
adapter: lora
lora_r: 16
lora_alpha: 32
lora_dropout: 0.05
datasets:
  - path: ./data/train.jsonl
    type: alpaca
output_dir: ./output
num_epochs: 3
accelerate launch -m axolotl.cli.train config.yml

متى يكون الضبط الدقيق أداةً غير مناسبة؟

يُحلّ ضبط نموذج LoRA الدقيق مشكلة محددة: تغيير كيف طريقة عمل النموذج أو استجابته. ولا يحقن المعرفة الوقائعية بشكلٍ موثوق. فإذا كانت حالتك الاستخدامية تندرج ضمن إحدى هذه الفئات، فإن اتباع منهجٍ مختلف سيؤدي إلى نتائج أفضل وبجهد أقل:

  • يفتقر النموذج إلى المعرفة الحالية أو المعرفة الخاصة (المُلكية). استخدم التوليد المعزَّز بالاسترجاع (RAG). فالضبط الدقيق على الوقائع يُنتج نماذجًا تُولِّد أكاذيب وهمية بثقة عالية حول أي موضوع خارج نطاق البيانات المستخدمة في التدريب.
  • تحتاج النموذج إلى الالتزام بتوجيهات محددة. جرّب أولًا تضمين توجيه نظام مفصّل جدًّا. فالتوجيه المصمم بدقة على نموذج أساسي قوي غالبًا ما يتفوّق في الأداء على نموذج أصغر خضع لضبط دقيق في نفس المهمة.
  • لديك أقل من ~500 مثال عالي الجودة. نسبة الإشارة إلى الضوضاء منخفضة جدًّا؛ ومن المرجح أن يُفرط النموذج في التكيُّف مع البيانات. لذا، راجع بياناتك وحسّنها أو استخدم التوجيه القائم على أمثلة قليلة (few-shot prompting) بدلًا من ذلك.
  • أنت بصدد إعداد نموذج أولي (Prototyping). إن الضبط الدقيق يُثبِّت سلوكًا معينًا بشكلٍ دائم. استخدم واجهة برمجة التطبيقات (API) وكرّر تحسين التوجيهات حتى يستقر السلوك المطلوب، ثم فكّر في إجراء الضبط الدقيق لتقليل تكلفة الرموز (tokens) عند التوسع. وتُساعدك حاسبة تكلفة واجهة برمجة التطبيقات (API) حاسبة التكلفة

إذا كنت تقيّم على المدى الطويل بين نموذج محلي خضع لضبط دقيق وبين واجهة برمجة تطبيقات مستضافة، فإن حاسبة نقطة التعادل بين الاستضافة المحلية وواجهة برمجة التطبيقات (API) حاسبة نقطة التكافؤ

الأسئلة الشائعة

كم عدد البيانات المطلوبة لإجراء ضبط دقيق باستخدام LoRA؟

للمهام المتعلقة باتباع التعليمات أو تغيير الأسلوب، غالبًا ما يكفي وجود ٥٠٠–٢٠٠٠ مثال عالي الجودة ومتنوّع. أما بالنسبة للتكيف المعقد مع مجال معين، فإن استخدام ٥٠٠٠–٢٠٠٠٠ مثال يُنتج نتائج أكثر متانة. ويتفوّق الجودة على الكمية بكثير — إذ إن ٢٠٠ مثال مختار بعناية يتفوّق على ٢٠٠٠ مثال ضعيف الجودة.

هل يمكنني تشغيل استنتاج LoRA على أجهزة استهلاكية؟

نعم. فدمج المُكيِّف (merged adapter) لا يضيف أي عبء حسابي إضافي أثناء الاستنتاج مقارنةً بالنماذج الأساسية. أما المُكيِّف غير المدمج (unmerged adapter) فيضيف كمية صغيرة من الحسابات لكل عملية تمرير أمامي (forward pass). وكلا البرنامجين llama.cpp وOllama يدعمان تحميل مُكيِّفات LoRA بعد تحويلها إلى صيغة GGUF مباشرةً. راجع دليل متطلبات الذاكرة VRAM جدول استهلاك الذاكرة الخاص بالاستنتاج فقط

ما الفرق بين LoRA والضبط الدقيق الكامل؟

يُحدّث الضبط الدقيق الكامل كل الأوزان في النموذج، ويستلزم تخزين حالات المُحسِّن (optimizer states) لكل منها — أي ما يعادل تقريبًا ١٦–٢٠ بايت لكل معلمة عند استخدام الدقة المختلطة (mixed precision) وخوارزمية Adam. أما LoRA فيحدّث فقط مصفوفات المُكيِّف ذات الرتبة المنخفضة، مما يقلّل عدد المعلمات القابلة للتدريب بنسبة تتراوح بين ١٠× و١٠٠٠×. والمقايضة هنا تتعلّق بالسعة: فالضبط الدقيق الكامل قادر على إعادة تشكيل النموذج بشكلٍ أكثر شمولًا، لكن LoRA يحقق أداءً مماثلًا في معظم المهام العملية.

أي الطبقات ينبغي أن أستهدفها باستخدام LoRA؟

تُعد طبقات الإسقاط الانتباهي (q_proj و v_proj) أكثر الطبقات استهدافًا شيوعًا، وهي تعمل جيدًا في معظم المهام. أما إضافة k_proj, o_proj، وطبقات الشبكة العصبية متعددة الطبقات (MLP) (gate_proj, up_proj, down_proj) فهي تزيد السعة على حساب استهلاك المزيد من ذاكرة VRAM وزيادة وقت التدريب قليلًا. وإذا كانت ذاكرة VRAM محدودة، فابدأ باستهداف إسقاطي q وv فقط.

هل يؤدي QLoRA إلى إنتاج نموذج أدنى جودةً من LoRA الكامل؟

في معظم عمليات الضبط الدقيق الخاصة بالمهمة، يكون الفرق ضئيلًا جدًّا. وتُظهر الاختبارات المنشورة أن أداء QLoRA يقع ضمن نطاق ١–٢ نقطة مئوية من أداء LoRA الكامل في الاختبارات القياسية. وقد يتسع هذا الفارق في مهام الاستنتاج المعقدة التي تستخدم مجموعات بيانات صغيرة جدًّا، لأن الضوضاء الناتجة عن التكميم تتراكم مع الإشارات المحدودة. فإذا كانت الدقة أمرًا بالغ الأهمية وكان لديك ما يكفي من ذاكرة VRAM، فاستخدم LoRA على نموذج أساسي بتنسيق bf16 بدلًا من QLoRA.

كيف أقيّم ما إذا كان الضبط الدقيق قد حقّق تحسنًا فعليًّا؟

احجز ١٠–٢٠٪ من بياناتك كمجموعة تحقق (validation set)، وتابع انخفاض الخسارة خلال التدريب. وتوقّف عند اللحظة التي يتوقف فيها انخفاض الخسارة (التوقف المبكر – early stopping). ثم نفّذ تقييمات مخصصة للمهمة: ففي تصنيف النصوص، قِس الدقة على الأمثلة المحجوزة؛ وفي المهام التوليديّة، استخدم مراجعة بشرية أو إعداد «نموذج لغوي كبير كقاضٍ» (LLM-as-judge) على ٥٠–١٠٠ مثال. أما انخفاض الخسارة في مجموعة التحقق الذي لا يترافق مع تحسّن في أداء المهمة فهو مؤشر على عدم تطابق التوزيع بين بيانات التدريب والمدخلات الواقعية.

بقلم مصطفى إحسان

مصطفى إحسان هو مؤسس ومُحرِّر موقع Convly.ai. وقد أنشأ قاعدة بيانات النماذج الحية للذكاء الاصطناعي الخاصة بالموقع، ومؤشر الأداء السعري الخاص به، بالإضافة إلى الحاسبات المجانية لحساب متطلبات الذاكرة VRAM، وتكاليف واجهة برمجة التطبيقات (API)، والاقتصاديات المرتبطة بالاستضافة الذاتية. ويكتب مصطفى عن أسعار النماذج، ونتائج الاختبارات المعيارية، والأجهزة اللازمة لتشغيل نماذج الذكاء الاصطناعي محليًّا، ويعطي دائمًا الأولوية للأرقام المُقاسة بدقة على الادعاءات التي تطلقها الشركات المصنِّعة.

انتقل إلى الأعلى
Featured on There's An AI For That