الوحدة 4 — التقليم والتكميم
تخفيض حجم النموذج المدرَّب من غير إعادة تدريبه من الصفر يعتمد أساسًا على أسلوبين، غالبًا يُستخدمان معًا: التقليم الذي يزيل مُعامِلات لا تحمل معلومة، والتكميم الذي يخفض دقّة تخزين المُعامِلات الباقية. الأوّل يقلّل عددها، والثاني يقلّل حجم كلٍّ منها.
التقليم: إزالة ما لا يخدم
المُعامِلات في نموذج مدرَّب ليست كلّها بنفس الأهمّيّة. الكثير منها قيمته قريبة جدًّا من الصفر، وأثره على الاستدلال مهمل. التقليم (Pruning) يعتمد هذا الأمر ويحذف هذه المُعامِلات.
التقليم غير البنيوي
نمرّ على جميع الأوزان ونضبط على الصفر تلك التي قيمتها المطلقة دون عتبة معيّنة. النتيجة نموذج متناثر (sparse) بنسبة قد تصل إلى 50-70% أصفارًا.
المشكلة العمليّة: مصفوفة متناثرة لا تعطي مكاسب سرعة على العتاد الحديث إلّا بأدوات متخصّصة. حجم الملفّ ينخفض عند ضغطه، لكنّ زمن الاستدلال قد لا يتغيّر بل قد يزيد قليلًا. مفيد للتخزين، لا للسرعة.
التقليم البنيوي
يحذف وحدات كاملة: عصبونات، أو رؤوس انتباه، أو حتّى طبقات كاملة. نتيجته مصفوفات أصغر فعلًا، بمكاسب سرعة حقيقيّة، بلا حاجة إلى دعم عتاديّ خاصّ.
الأسلوب المتّبع: نقيس أهمّيّة كلّ رأس انتباه على مجموعة تحقّق (بحذفه ورؤية أثر الحذف)، ثمّ نحذف الأقلّ أهمّيّة. Llama 3.2 بـ1 مليار مُعامِل مثلًا هو أصلًا نموذج 3 مليارات مُعامِل خضع لتقليم بنيويّ ثمّ لإعادة ضبط دقيق.
فقد الجودة النموذجيّ: 1 إلى 3 نقاط على المهامّ العامّة، ولكن يبقى النموذج قا بلًا للاستخدام.
التكميم: خفض دقّة الأرقام
المُعامِلات تُحفظ عادةً بأعداد عشريّة على 16 بتّة (FP16) أو 32 بتّة (FP32). التكميم يستبدلها بأعداد صحيحة على 8 بتّات (INT8) أو حتّى 4 بتّات (INT4).
الفكرة الحسابيّة بسيطة: كلّ مصفوفة أوزان لها مجال قيميّ [min, max]، نُقسم هذا المجال على 256 قيمة (لـINT8) أو 16 قيمة (لـINT4)، ونستبدل كلّ وزن بالقيمة الأقرب في هذه الشبكة.
التكميم على 8 بتّات
الأكثر أمانًا. فقد الجودة عادةً أقلّ من نقطة واحدة على مقاييس التقييم، وحجم النموذج ينخفض بنسبة 50% مقارنة بـFP16. ينصح به دائمًا كخيار أوّل: مكسب واضح بلا مخاطرة.
التكميم على 4 بتّات
الأكثر جرأة. حجم النموذج ينخفض إلى الربع، والسرعة على معالج مركزيّ ترتفع ارتفاعًا حسّاسًا. فقد الجودة يتراوح بين 2 و5 نقاط بحسب النموذج والمهمّة.
الأساليب الحديثة (GPTQ وAWQ وGGUF Q4_K_M) تستخدم بيانات معايرة لتحسين اختيار الشبكة الكمّيّة، وتُخصّص عرض بتّات أكبر لطبقات حسّاسة (الانتباه) وأقلّ لطبقات أخرى. هذه الأساليب تُقلّل الفقد إلى نقطة أو نقطتين فقط.
قياس الفقد بجدّيّة
الاعتماد على مقاييس عامّة (perplexity) وحده مضلّل. القياس الجادّ يكون على مهمّة الإنتاج الفعليّة:
- 200 بطاقة دعم معنونة يدويًّا
- تشغيل النسخة الأصليّة FP16 والنسخ المكمَّمة INT8 وINT4
- قياس دقّة التصنيف وجودة التلخيص
- ملاحظة أنواع الأخطاء الجديدة: هل النسخة INT4 تخترع معلومات لم يكن يخترعها الأصل؟
في تجربة نموذجيّة على Qwen 2.5 بـ3 مليارات:
- FP16: 91% دقّة تصنيف، 4,2 من 5 جودة تلخيص، 3,2 جيجابايت حجم
- INT8: 90,5% دقّة، 4,1 جودة، 1,6 جيجابايت
- INT4 (Q4_K_M): 89% دقّة، 3,9 جودة، 1,0 جيجابايت
فقد نقطتين مقابل انخفاض الحجم إلى الثلث والسرعة إلى الضعف مقايضة ممتازة لمعظم مهامّ الدعم.
متى يكفي التكميم وحده
سؤال منتشر: هل نبدأ بالتقطير أم بالتكميم؟ التكميم يجب أن يكون دائمًا الخطوة الأولى، لأنّه رخيص جدًّا: بضع دقائق حسابيّة، بلا بيانات إضافيّة، بلا إعادة تدريب.
إذا كان الفقد المُلاحَظ بعد التكميم مقبولًا (أقلّ من 3 نقاط على مهمّتك)، فلا حاجة لتقطير ولا لضبط دقيق. النموذج جاهز.
إذا كان الفقد كبيرًا، فحينها نلجأ إلى:
- ضبط دقيق بعد التكميم (QAT: Quantization-Aware Training) لاستعادة الأداء
- تقطير كامل من نموذج معلّم كما في الوحدة السابقة
كلّ نسخة GGUF ليست متساوية. Q4_0 القديمة أرداً بكثير من Q4_K_M الحديثة. اقرأ اسم المل فّ بدقّة، وفضّل النسخ التي وثّق ناشرها فقد الجودة على مقياس مرجعيّ. عند الشكّ، جرّب Q5_K_M التي تعطي توازنًا ممتازًا بين الحجم والجودة.
الخلاصة
- التقليم البنيوي يزيل رؤوس انتباه أو طبقات كاملة، ويعطي مكاسب سرعة حقيقيّة، بخلاف التقليم غير البنيوي.
- التكميم يخفض دقّة الأوزان: INT8 آمن، INT4 جريء لكنّه ممتاز مع الأساليب الحديثة (Q4_K_M وAWQ).
- القياس على مهمّة الإنتاج، لا على مقاييس عامّة، هو ما يُثبت أنّ فقد الجودة مقبول.
- التكميم هو الخطوة الأولى دائمًا، والتقطير عند الحاجة فقط.
الوحدة التالية: صيغ التشغيل الفعّالة — GGUF وONNX وMLX، وكيف نختار بحسب العتاد.