0Pricing
AI Agents · درس

LoRA وQLoRA للضبط منخفض التكلفة

درّب محولات منخفضة الرتبة فقط فوق قاعدة مكمّمة — ما يتيح ضبط نموذج 70B على GPU واحدة.

LoRA وQLoRA للضبط منخفض التكلفة درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

لماذا PEFT؟

يتطلب الضبط الدقيق الكامل لـ Llama 70B ثماني وحدات H100 أو أكثر، ويحدّث 70 مليار معلمة. أما PEFT (الضبط الدقيق الفعّال من حيث المعلمات) فيحدّث < 1% من المعلمات مع جودة مماثلة. وهذا يحقق توفيرًا هائلًا في التكلفة.

LoRA: التكييف منخفض الرتبة

يدرّب LoRA (Hu et al. 2021) مصفوفات «محوّل» صغيرة إلى جانب أوزان النموذج الأساسي المجمّدة:

  • أضيفوا مصفوفتَي A x B حيث تكون A بحجم dxr وB بحجم rxd، وتكون r صغيرة (8 و16 و64)
  • التمرير الأمامي: y = Wx + (BA)x
  • لا تدرّبوا سوى A وB، أي عددًا أقل بكثير من المعلمات

QLoRA: LoRA مُكمَّم

يقلل QLoRA (Dettmers et al. 2023) التكلفة أكثر من خلال تكميم النموذج الأساسي إلى 4-bit أثناء التدريب:

  • النموذج الأساسي بتنسيق NF4 (4-bit)
  • محوّلات LoRA بدقة أعلى
  • يتيح إجراء ضبط دقيق لنموذج 70B على وحدة A100/H100 واحدة

Setup with peft + transformers

# pip install peft transformers bitsandbytes
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    'meta-llama/Llama-3.1-8B-Instruct',
    load_in_4bit=True,        # QLoRA
    device_map='auto'
)

lora_config = LoraConfig(
    r=16,                     # rank
    lora_alpha=32,
    target_modules=['q_proj', 'v_proj'],
    lora_dropout=0.05,
    bias='none'
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# trainable params: ~0.5% of total

Training Loop with TRL

from trl import SFTTrainer

trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    tokenizer=tokenizer,
    args=TrainingArguments(
        per_device_train_batch_size=4,
        gradient_accumulation_steps=4,
        learning_rate=2e-4,
        num_train_epochs=3,
        output_dir='./lora-out'
    )
)
trainer.train()
model.save_pretrained('./adapter')

استخدام Unsloth

Unsloth هي أسرع مكتبة لـ LoRA، إذ تفوق peft التقليدية بسرعة تبلغ الضعف. وتوفر واجهة برمجية قابلة للإدراج مباشرة:

from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name='meta-llama/Llama-3.1-8B-Instruct',
    load_in_4bit=True
)
model = FastLanguageModel.get_peft_model(
    model,
    r=16,
    target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj', 'gate_proj', 'up_proj', 'down_proj']
)

تقدير التكلفة

استخدام QLoRA مع Llama 3.1 8B و10k من الأمثلة:

  • نحو 4 ساعات على وحدة H100 واحدة
  • نحو 5-10 دولارات لتكلفة وحدة GPU السحابية
  • حجم ملف المحوّل: 100-300 MB

اختيار الرتبة r

  • r = 8 — الحد الأدنى، لتغييرات التنسيق والأسلوب
  • r = 16-32 — معظم الحالات
  • r = 64+ — سلوك جديد جوهري وسعة أكبر

الوحدات المستهدفة

ابدؤوا افتراضيًا بإسقاطات الانتباه (q وv). وللحصول على سعة أكبر، أدرجوا جميع الطبقات الخطية، ما يحسن الجودة مع زيادة عدد المعلمات.

المعلمات الفائقة المهمة

  • معدل التعلم — القيمة 1e-4 إلى 5e-4 شائعة
  • عدد العصور — من 2 إلى 5 بالنسبة إلى SFT
  • حجم الدفعة — يعتمد على VRAM؛ استخدموا تجميع التدرجات لمحاكاة دفعة أكبر

دمج المحوّل في النموذج الأساسي

بالنسبة إلى الاستدلال، يمكنكم دمج LoRA مجددًا في أوزان النموذج الأساسي:

merged = model.merge_and_unload()
merged.save_pretrained('./full-model')

تقديم عدة LoRA

يدعم vLLM التبديل السريع بين محوّلات LoRA أثناء الاستدلال. وهذا مفيد لإجراء عمليات ضبط دقيقة خاصة بكل عميل مع مشاركة النموذج الأساسي:

llm = LLM(model='base', enable_lora=True, max_lora_rank=64)
response = llm.generate(prompt, lora_request=LoRARequest('customer-a', 1, './customer-a-adapter'))

تقييم المحوّل

أجروا دائمًا التقييم باستخدام مجموعة التقييم الخاصة بكم على النموذج المضبوط. أحيانًا يكون الضبط أسوأ في الحالات الحدّية، لذا تعاملوا بصدق مع حالات التراجع.

ميزة LoRA

ما الميزة العملية الرئيسية لـ LoRA مقارنة بالضبط الدقيق الكامل؟

مراجعة

يشكل LoRA + QLoRA حلًا فعالًا من حيث التكلفة للضبط الدقيق. استخدموا Unsloth للسرعة وpeft/TRL للتنوع. وتُعد الرتبة 16-32 مناسبة لمعظم الحالات. أجروا التقييم مقابل مجموعة البيانات المرجعية الخاصة بكم.

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

هل درس «LoRA وQLoRA للضبط منخفض التكلفة» مجاني؟

نعم — نص درس «LoRA وQLoRA للضبط منخفض التكلفة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.

ماذا ستتعلم في «LoRA وQLoRA للضبط منخفض التكلفة»؟

درّب محولات منخفضة الرتبة فقط فوق قاعدة مكمّمة — ما يتيح ضبط نموذج 70B على GPU واحدة. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟

لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «LoRA وQLoRA للضبط منخفض التكلفة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟

نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. متى يتفوق الضبط الدقيق على صياغة المطالبات
  2. جمع البيانات: المسارات وإعادة تشغيل التتبعات
  3. LoRA وQLoRA للضبط منخفض التكلفة
  4. تقييم النماذج المضبوطة مقارنةً بالأساسية
← العودة إلى AI Agents