عندما يسألني مهندس كيف يعمل نموذج لغوي كبير (LLM)، فإن الجواب "إنه يخمّن الكلمة التالية" صحيح، لكنه لا يساعده على اتخاذ أي قرار: لماذا ترتفع الفاتورة بشدة مع النصوص العربية؟ لماذا يختلق النموذج مرجعاً؟ ولماذا لا تكلّف نافذة سياق من 128,000 رمز "فقط" 16 ضعف نافذة من 8,000 رمز؟ يبدأ هذا المقال من النسخة الموجّهة للجمهور العام التي كتبتها أصلاً (الخلية العصبية، الشبكة، الكلمة الأكثر احتمالاً) وينزل درجة أعمق: الآلية الكاملة، مع الصيغ المفيدة وأوامر مقادير أحسبها أمامك. وأنبّه إلى ما أبسّطه. لا تحتاج إلى خبرة سابقة في LLM، يكفي أن تكون مرتاحاً مع المتجهات والمصفوفات.

ما هو الذكاء الاصطناعي بالضبط؟

البرنامج التقليدي يتبع قواعد كتبها إنسان: "إذا تجاوز المبلغ 10,000، اطلب موافقة". أما التعلّم الآلي فيعكس المنهج. نقدّم أمثلة ودالة ذات معاملات، وتبحث إجراءات تحسين (optimization) عن المعاملات التي تعيد إنتاج هذه الأمثلة على أفضل وجه. في مرشّح الرسائل المزعجة لا نصف ما هي الرسالة المزعجة: نعرض آلاف الرسائل المصنّفة، وتتعدّل المعاملات حتى تميّز الدالة بينها بشكل صحيح. الأمر كطفل يتعلّم التعرّف على القطط: لا أحد يتلو عليه تعريفاً، نصحّح له، وذات يوم يتعرّف على قطة لم يرها من قبل. وللمقارنة حدودها (الطفل يعمّم من أمثلة قليلة جداً، أما النموذج فلا)، لكنها تعطي الحدس الصحيح.

أربع كلمات يجب معرفتها

  • البيانات: الأمثلة التي نعرضها على الآلة (نصوص، صور، قياسات).
  • التدريب: عملية التحسين التي تضبط المعاملات لتقليل خطأ مقيس على هذه الأمثلة. طويلة ومكلفة، لكنها تتم مرة واحدة لكل إصدار من النموذج.
  • النموذج: الدالة الناتجة، أي بنية معمارية مع مجموعة معاملات مثبّتة.
  • الاستدلال: استخدام النموذج المدرَّب، مثلاً عندما ترسل prompt. المعاملات لا تتحرك بعد ذلك.

الخلية العصبية الاصطناعية، لبنة صغيرة جداً

الخلية العصبية الاصطناعية دالة صغيرة جداً. تستقبل أرقاماً، وتضرب كلاً منها في وزن (أهميتها)، وتجمع الكل مع انحياز (bias)، ثم تمرّر النتيجة عبر دالة غير خطية:

output = f(w1*x1 + w2*x2 + w3*x3 + b)

لنعد إلى مثال المظلة: المدخلات هي "سماء غائمة" و"النشرة تتوقع أمطاراً" و"نحن في نوفمبر"، والنشرة أثقل وزناً من لون السماء. الدالة غير الخطية f (ReLU وGELU وsigmoid...) ليست تفصيلاً: بدونها يكافئ تكديس الطبقات رياضياً ضرباً مصفوفياً واحداً، فلا تستطيع الشبكة تمثيل سوى العلاقات الخطية.

سماء غائمةالنشرة: أمطارالشهر: نوفمبرΣخلية عصبيةالمظلة: نعم
تجمع الخلية العصبية عدة مدخلات موزونة. كلما كان الخط أسمك، زاد وزن المؤشر في الخرج.

الشبكات العصبية: القوة في الاجتماع

الخلية الواحدة لا تفعل شيئاً تقريباً. أما حين تُنظَّم في طبقات بملايين الوصلات فتصبح معبّرة: كل طبقة تحوّل التمثيل الذي أنتجته الطبقة السابقة. في صورة ما، تستجيب الطبقات الأولى للحواف، والتالية للملمس وأجزاء الأشياء، والأخيرة للشيء كاملاً. هذا التسلسل الهرمي لا يُبرمج، بل ينشأ من التدريب (وصف مناسب وليس قانوناً: في النماذج الكبيرة تكون أدوار الطبقات أقل وضوحاً).

المُدخل: الصورةالطبقة 1الطبقة 2المُخرجقطة 94%كلب 6%
كل طبقة تحوّل تمثيل الطبقة السابقة، من أبسط التفاصيل حتى توزيع احتمالات عند الخرج.

يمكن تلخيص التعلّم في حلقة واحدة. نمرّر مثالاً، ونقيس الفجوة بين الخرج والإجابة الصحيحة بواسطة دالة الخسارة، ثم نحسب بالانتشار العكسي (backpropagation) مشتقة هذه الخسارة بالنسبة إلى كل وزن، ونحرّك كل وزن بخطوة صغيرة في الاتجاه الذي يقلّل الخطأ:

w <- w - eta * dL/dw        (eta: learning rate)

طاولة المزج ذات الملايين من الأزرار في نسختي الأصلية هي هذا تماماً: يُدار كل زر قليلاً جداً بعد كل دفعة من الأمثلة. وعندما تضمّ الشبكة طبقات كثيرة نتحدث عن التعلّم العميق. وقد انطلق قبل نحو خمسة عشر عاماً بفضل موردين: بيانات أكثر، ومعالجات GPU قادرة على ضرب المصفوفات بالتوازي على نطاق واسع.

LLM: التنبؤ بالرمز التالي

النموذج اللغوي الكبير (Large Language Model) شبكة عصبية ببنية Transformer، تُدرَّب على كميات هائلة من النصوص والشيفرات بهدف واحد: بمعلومية الرموز السابقة، التنبؤ بتوزيع احتمالي على الرمز التالي. لا شيء آخر خلال التدريب المسبق.

"السماء ..."صافية62%زرقاء21%غائمة11%رمادية6%
أمام بداية جملة، يمنح النموذج احتمالاً لكل رمز ممكن. قيم توضيحية، تُستخدم مثالاً متكرراً في بقية المقال.

في هذا المثال يشمل التوزيع أربع كلمات. أما في الواقع فيشمل مفردات النموذج كاملة (عشرات الآلاف من الرموز)، وما يتعامل معه النموذج ليس كلمات بل رموزاً (tokens). والمسار الكامل من النص إلى التوزيع هو التالي.

1النص"السماء"2الرموزأجزاء كلمات، معرّفات صحيحة3التضمينمتجه لكل رمز4طبقات Transformerانتباه + MLP، تتكرر L مرة5Logitsدرجة لكل رمز من المفردات6أخذ العيناتsoftmax، الحرارة، top-p
خط معالجة LLM: يتحوّل النص إلى معرّفات ثم إلى متجهات، ويعبر L طبقة من Transformer، ويخرج على شكل درجة واحدة لكل رمز من المفردات.

من النص إلى الرموز

لا يقرأ النموذج حروفاً ولا كلمات، بل رموزاً (tokens)، وهي أجزاء ناتجة عن تقطيع متعلَّم. والخوارزمية الأكثر انتشاراً هي BPE (byte-pair encoding) ومتغيراتها: نبدأ من البايتات أو الحروف، ثم ندمج تكرارياً الأزواج الأكثر تواتراً في المدوّنة حتى نبلغ حجماً ثابتاً للمفردات، يتراوح تقريباً بين 30,000 وأكثر من 250,000 مدخل بحسب النموذج. الكلمة الشائعة تصبح رمزاً واحداً، والكلمة النادرة تتجزأ إلى عدة أجزاء.

لماذا أجزاء الكلمات؟ إنه حل وسط. الحروف تعطي تسلسلات طويلة جداً (وتكلفة الانتباه تنمو مع الطول). والكلمات الكاملة تعطي مفردات ضخمة ولا تتيح معالجة كلمة لم تُرَ من قبل. أما أجزاء الكلمات فتُبقي المفردات معقولة وتغطي أي نص.

نتيجتان عمليتان جداً للمهندس:

  • التكلفة وزمن الاستجابة يُحسبان بالرموز، لا بالكلمات. وعدد الرموز لكل كلمة يتوقف على المجزّئ (tokenizer) واللغة. فالمفردات المتعلَّمة أساساً من الإنجليزية تقطّع اللغات الأقل تمثيلاً في مدوّنتها بدقة أكبر. والعربية، بمورفولوجيتها الغنية (جذور، وسوابق ولواحق ملتصقة)، كثيراً ما تتأثر بذلك: قد يستهلك المحتوى نفسه رموزاً أكثر بشكل ملحوظ مما يستهلكه بالإنجليزية، فيكلّف أكثر ويشغل جزءاً أكبر من نافذة السياق. ويتفاوت الفارق كثيراً من مجزّئ إلى آخر، ويجب قياسه لا افتراضه.
  • تُقطَّع الأرقام والشيفرة أحياناً بطرق مفاجئة، وهذا يؤثر في الحساب (أعود إلى ذلك في الحدود).

القياس بسيط:

import tiktoken

enc = tiktoken.get_encoding("cl100k_base")  # one tokenizer among others
for text in ["The sky is blue", "Le ciel est bleu", "السماء زرقاء"]:
    print(len(text.split()), "words ->", len(enc.encode(text)), "tokens")

قارن على نصوصك أنت، وبمجزّئ النموذج الذي تستخدمه فعلاً: لكل مزوّد مجزّئه الخاص.

التضمين: من المعرّفات إلى المتجهات

المعرّف الصحيح لا يعني شيئاً للشبكة. والمرحلة الأولى في النموذج جدول مطابقة هو مصفوفة التضمين (embeddings)، بحجم V x d (V رمزاً في المفردات، وd بُعداً)، تربط كل رمز بمتجه متعلَّم. وأثناء التدريب، تنتهي الرموز المستخدمة في سياقات متقاربة إلى متجهات متقاربة: وهذا ما يتيح للنموذج أن يعمّم من "قطة" إلى "قطّة صغيرة" دون قاعدة صريحة.

ومثال بحساب: مع V = 128,000 وd = 4,096، يبلغ حجم هذا الجدول وحده 128,000 x 4,096، أي نحو 524 مليون معامل، قبل أن نصل إلى الطبقة الأولى.

وهناك تفصيل مهم: آلية الانتباه الموصوفة أدناه لا تراعي ترتيب الرموز بذاتها. لذلك تُحقَن معلومة الموضع إضافة إلى ذلك (دوال جيبية في الورقة الأصلية، وترميزات دوّارة في كثير من النماذج الحديثة).

Transformer وآلية الانتباه

قُدِّمت بنية Transformer عام 2017 في ورقة Attention Is All You Need. ونموذج LLM هو تكديس لـ L كتلة متطابقة البنية. تحتوي كل كتلة على طبقتين فرعيتين، تحيط بكل منهما وصلة متبقية (نضيف المدخل إلى المخرج) وتطبيع:

  1. طبقة انتباه (attention)، يذهب فيها كل رمز لجلب المعلومات من الرموز الأخرى؛
  2. شبكة صغيرة أمامية التغذية (MLP) تُطبَّق باستقلال على كل موضع وتحوّل كل متجه.

الحدس. في جملة "رفض البنك القرض لأنه كان محفوفاً بالمخاطر"، إلى ماذا يعود الضمير في "لأنه"؟ لتمثيل هذه الكلمة تمثيلاً صحيحاً، على النموذج أن يرجع إلى مواضع أخرى من الجملة. الانتباه بحث موزون في التسلسل: يصوغ كل رمز استعلاماً، ويقارنه بمفتاح خاص بكل رمز آخر، ثم يسترجع مزيجاً من القيم، يرجح كلما طابق المفتاح الاستعلام.

الصياغة الرياضية. انطلاقاً من المصفوفة X لمتجهات المدخل (صف لكل رمز)، نحسب ثلاثة إسقاطات خطية متعلَّمة: Q = X·W_Q (الاستعلامات)، وK = X·W_K (المفاتيح)، وV = X·W_V (القيم). ثم:

Attention(Q, K, V) = softmax( Q·K^T / sqrt(d_k) ) · V

لنقرأها كما هي. Q·K^T مصفوفة n x n من الجداءات السلمية: درجة كل زوج (الرمز i، الرمز j) لعدد n من الرموز. نقسم على sqrt(d_k) (d_k: بُعد المفاتيح) لأن تباين الجداء السلمي ينمو مع البُعد: بدون هذا التحجيم تكبر الدرجات ويتشبّع softmax، فتصبح التدرجات شبه معدومة. ويحوّل softmax، المطبَّق صفاً بصف، كل صف إلى أوزان موجبة مجموعها 1. وأخيراً يُنتج الضرب في V، لكل رمز، متوسطاً موزوناً للقيم. ليس أكثر من متوسط موزون تُحسب أوزانه من المحتوى.

توضيحان مهمان:

  • في النموذج التوليدي يُطبَّق قناع سببي (causal mask): لا يحق للرمز i أن ينظر إلا إلى المواضع j <= i، وإلا "رأى المستقبل" أثناء التدريب.
  • لا يوجد انتباه واحد بل عدة رؤوس متوازية (multi-head)، لكل منها إسقاطاتها في فضاءات جزئية مختلفة. تُدمج مخرجاتها ثم تُسقَط من جديد.

تقدير مفيد: تضم الكتلة نحو 12·d² معاملاً (نحو 4·d² للانتباه و8·d² لـ MLP). وفي إعداد منشور مثل إعداد GPT-3 (d = 12,288 و96 طبقة)، يعطي 12 x 12,288² x 96 نحو 174 مليار، قريباً جداً من الـ 175 ملياراً المعلنة. وتفسّر مصفوفات التضمين وتفاصيل البنية بقية الفارق: إنه تقدير وليس إحصاءً.

Logits وsoftmax واختيار الرمز

عند خرج الطبقة الأخيرة، يُسقَط متجه الرمز الأخير على المفردات كلها: نحصل على درجة حقيقية لكل رمز، هي logits. وهي ليست احتمالات (قد تكون سالبة ولا يساوي مجموعها 1). ويحوّلها softmax:

p_i = exp(z_i) / sum_j exp(z_j)

لنأخذ logits توضيحية للجملة "السماء ...": صافية 3.0؛ زرقاء 1.9؛ غائمة 1.3؛ رمادية 0.7. القيم الأسية هي 20.1؛ 6.7؛ 3.7؛ 2.0، بمجموع 32.5. ومنه الاحتمالات 61.9%؛ 20.6%؛ 11.3%؛ 6.2%، وهي المدرّج في البداية. دالة softmax رتيبة: الرمز ذو أعلى logit هو دائماً الأكثر احتمالاً، لكن فارق الاحتمال يتوقف على فارق logits بشكل أسّي.

التوليد حلقة ذاتية الانحدار

ينتج النموذج رمزاً واحداً في كل تمريرة. ولكتابة إجابة نكرّر: حساب التوزيع، واختيار رمز، وإضافته إلى المدخل، ثم البدء من جديد، حتى رمز نهاية التسلسل أو حد الطول.

1التسلسل الحالي مدخلاً2تمريرة أمامية: logits3softmax وأخذ العينات4الرمز المختار5إضافته إلى التسلسل(ذاكرة KV)6توقف؟ رمز النهاية أوالحدرمز واحد في كل دورة
التوليد حلقة: كل رمز مختار يُضاف إلى التسلسل ثم يقرؤه النموذج من جديد، ولهذا يزداد زمن الاستجابة بطول الإجابة.

نتيجتان هندسيتان. أولاً، زمن الاستجابة يتناسب تقريباً مع عدد الرموز المولَّدة: ولهذا تكون الإجابات الطويلة بطيئة وتحاسب واجهات API على المدخل والمخرج بشكل منفصل. ثانياً، إعادة حساب مفاتيح وقيم جميع الرموز السابقة في كل دورة هدر، ومن هنا ذاكرة KV (KV cache): نحتفظ بـ K وV للرموز المعالَجة سابقاً ولا نحسب سوى ما يخص الرمز الجديد. وهذه الذاكرة لها كلفة: في إعداد توضيحي (32 طبقة، و8 رؤوس مفاتيح/قيم ببُعد 128، وأرقام بدقة 16 بت، و8,192 رمزاً) نحصل على 2 x 32 x 8,192 x 8 x 128 x 2 بايت، أي 1 غيبيبايت (GiB) لكل تسلسل نشط. اضرب في عدد الطلبات المتزامنة: تتنازع ذاكرة GPU بين أوزان النموذج وهذه الذاكرات.

أخذ العينات: درجة الحرارة وtop-k وtop-p

يبقى اختيار الرمز انطلاقاً من التوزيع. اختيار الأكثر احتمالاً دائماً (الفك الجشع) حتمي لكنه قد يعطي نصوصاً مكررة ومسطحة؛ أما السحب العشوائي وفق الاحتمالات فيعطي نصوصاً أكثر تنوعاً. ثلاثة إعدادات شائعة:

  • درجة الحرارة T تقسم logits قبل softmax. T < 1 تحدّد الفوارق (توزيع أكثر حدّة)، وT > 1 تسطّحها (تنوع أكبر ومخاطرة أكبر)، وT التي تؤول إلى 0 تعادل الفك الجشع.
  • Top-k يُبقي فقط على k من الرموز الأكثر احتمالاً قبل إعادة التطبيع.
  • Top-p (nucleus sampling) يُبقي على أصغر مجموعة رموز يبلغ احتمالها التراكمي p. يتكيّف مع شكل التوزيع: مرشحون قليلون عندما يكون النموذج واثقاً، وأكثر عندما يتردد.
import math, random

def sample(logits, T=1.0, top_k=None, top_p=None):
    """logits: dict token -> score. Simplified version, no optimization."""
    scaled = {t: z / T for t, z in logits.items()}
    m = max(scaled.values())                      # numerical stability
    exp = {t: math.exp(z - m) for t, z in scaled.items()}
    total = sum(exp.values())
    probs = sorted(((t, e / total) for t, e in exp.items()),
                   key=lambda x: -x[1])
    if top_k:
        probs = probs[:top_k]
    if top_p:
        kept, cum = [], 0.0
        for t, p in probs:
            kept.append((t, p))
            cum += p
            if cum >= top_p:
                break
        probs = kept
    z = sum(p for _, p in probs)                  # renormalization
    r, acc = random.random() * z, 0.0
    for t, p in probs:
        acc += p
        if r <= acc:
            return t
    return probs[-1][0]

logits = {"clear": 3.0, "blue": 1.9, "cloudy": 1.3, "grey": 0.7}
print(sample(logits, T=0.5, top_p=0.9))

بالـ logits أعلاه، هذا ما يصبح عليه احتمال "صافية" بدلالة T (حساب مباشر لـ softmax):

P("صافية") بحسب درجة الحرارةT = 0.299.6%T = 0.586.6%T = 1.061.9%T = 1.549.6%T = 2.043.1%
احتمال الرمز "صافية" بدلالة درجة الحرارة، محسوباً على logits توضيحية 3.0 / 1.9 / 1.3 / 0.7. قيم تعليمية وليست قياساً على نموذج حقيقي.

درجة الحرارة المنخفضة لا تجعل النموذج "أصدق"، بل أكثر حتمية فقط. وحتى عند T = 0، لا تضمن بعض واجهات API مخرجات متطابقة تماماً من نداء إلى آخر (ترتيب العمليات العشرية على GPU، وتجميع الطلبات): لا تبنِ اختباراً على التطابق التام للنصوص المولَّدة.

نافذة السياق والكلفة التربيعية

نافذة السياق هي الحد الأقصى لعدد الرموز (المدخل زائد المخرج) الذي يعالجه النموذج دفعة واحدة. في النسخة الساذجة من الانتباه، تكون مصفوفة Q·K^T بحجم n x n: يزداد حساب وذاكرة هذا الحد بمربع الطول. عند 8,000 رمز يكون ذلك 64 مليون درجة لكل رأس ولكل طبقة؛ وعند 128,000 رمز نحو 16.4 مليار، أي 256 ضعفاً لتسلسل أطول 16 مرة.

تتجنب تطبيقات مثل FlashAttention تخزين المصفوفة كاملة في الذاكرة، وتخفّض متغيرات عدة (الانتباه بنافذة منزلقة، ومشاركة رؤوس المفاتيح/القيم) الكلفة، لكن الحساب الدقيق يبقى تربيعياً زمنياً. فملء النافذة لا يكون مجانياً أبداً. كما أن النافذة الكبيرة لا تعني أن النموذج يستفيد بالقدر نفسه من كل ما نضعه فيها: لاحظت دراسات عدة أن الاستفادة من المعلومة تتوقف على موضعها في السياق. والأهم أن تتذكر أن النافذة ميزانية تُدار، وليست قرصاً بلا قاع.

كيف يُصنع نموذج

المساعدات التي تستخدمها هي نتاج مراحل متتالية عدة، لا تحسّن الشيء نفسه.

التدريب المسبقنص خام بحجم هائلالهدف: الرمز التاليأسابيع أو شهور من GPUينتج نموذجاً أساسياًالضبط الإشرافي (SFT)أزواج تعليمةإجابةمجموعة بيانات أصغر بكثيريتعلّم اتباع التعليمةكلفة معتدلةالمواءمةمقارنات بشرية بين الإجاباتRLHF أو DPOيضبط الفائدة والنبرةوالرفضيخفّف بعض العيوب لا كلها
ثلاث مراحل متتالية: التدريب المسبق يمنح الكفاءة اللغوية، والضبط الإشرافي صيغة الحوار، والمواءمة تفضيلات السلوك.

التدريب المسبق. الخسارة هي الإنتروبيا المتقاطعة: نصغّر -log p(الرمز الفعلي | الرموز السابقة) عند كل موضع. وهذه المرحلة تستحوذ على الكلفة تقريباً كلها. وهناك تقريب شائع للحساب المطلوب هو 6 x N x D عملية بفاصلة عائمة (N معاملاً، وD رمز تدريب). خلصت دراسة Chinchilla من DeepMind إلى أنه، عند ميزانية حساب ثابتة، ينبغي أن ينمو حجم النموذج وكمية البيانات معاً: نموذج من 70 مليار معامل دُرّب على 1,400 مليار رمز (20 رمزاً لكل معامل، وهي القاعدة التجريبية الأكثر تداولاً) تفوّق على نماذج أكبر بكثير لكنها أقل تغذية. ولـ 70 مليار معامل و1.4 تريليون رمز، يعطي 6 x 70e9 x 1.4e12 نحو 5.9e23 عملية. وتُدرَّب نماذج حديثة كثيرة على بيانات أكثر بكثير من هذه النسبة، لأن النموذج الأصغر والأطول تدريباً أرخص في كل استدلال.

الضبط الإشرافي (SFT). النموذج الأساسي يُكمل النصوص ولا يجيب عن سؤال. فنعيد تدريبه على أمثلة محادثات (تعليمة، إجابة جيدة)، مع حساب الخسارة على رموز الإجابة. وما يُتعلَّم هنا سلوك وصيغة أكثر منه معرفة.

المواءمة. ينطلق التدريب من مقارنات: يحدد إنسان، وأحياناً نموذج آخر، أيّ الإجابتين أفضل. إما أن نتعلّم نموذج مكافأة ثم نحسّن النموذج بالتعلّم المعزَّز (RLHF)، وإما أن نحسّن مباشرة على أزواج التفضيل (DPO ومتغيراته). وفي الآونة الأخيرة، يُستخدم التعلّم المعزَّز على مهام قابلة للتحقق (شيفرة تجتاز الاختبارات، جواب رياضي دقيق) للنماذج المسماة نماذج الاستدلال؛ ولن أدخل في التفاصيل التي تختلف بحسب الجهة المطوّرة وليست علنية دائماً.

ماذا تعني "المعاملات"

المعاملات هي الأرقام المتعلَّمة: أوزان مصفوفات التضمين والانتباه وMLP. النموذج "ذو 70 مليار معامل" ملف من 70 مليار رقم. وهذا يُترجم مباشرة إلى ذاكرة: بمعدل بايتين لكل معامل (دقة 16 بت) تبلغ 70 ملياراً نحو 140 غيغابايت؛ وبعد التكميم إلى 4 بت نحو 35 غيغابايت، يضاف هامش للذاكرات المؤقتة والتنشيطات. وهذا ما يحدد العتاد اللازم لاستضافته، وهو موضوع أتناوله في مقال الذكاء الاصطناعي المحلي.

أوامر المقادير: بضعة مليارات إلى نحو عشرة مليارات للنماذج الصغيرة التي تعمل على جهاز مكتبي؛ عدة عشرات من المليارات للنماذج المتوسطة؛ 175 مليار لـ GPT-3 الذي صار مرجعاً؛ عدة مئات من المليارات لأكبر النماذج مفتوحة الأوزان. أما حجم النماذج المملوكة الحديثة فلا يُنشر عادة. وعدد المعاملات الأكبر لا يعني تلقائياً نموذجاً أفضل: جودة البيانات وكميتها ومراحل الضبط تزن بالقدر نفسه.

لماذا الهلوسة نتيجة للآلية نفسها

الهلوسة إجابة سلسة وواثقة لكنها خاطئة. وهي ليست خللاً معزولاً يُصلَح سطراً سطراً، بل نتيجة مباشرة لما يحسّنه النموذج.

  • الهدف هو المعقولية لا الصدق. خلال التدريب المسبق لا توجد خطوة تميّز بين واقعة صحيحة وجملة معقولة. يتعلّم النموذج توزيع النصوص، والنص الخاطئ حسن التكوين محتمل.
  • لا توجد حالة "لا أعرف" افتراضياً. في كل دورة ينتج softmax توزيعاً مجموعه 1 ويُختار رمز. عند غياب المعرفة يكون التوزيع أكثر تسطحاً، لكن رمزاً يخرج مع ذلك. وحده التدريب (SFT والمواءمة) يعلّم النموذج الامتناع، بشكل غير كامل.
  • الوقائع النادرة تُحفظ بشكل سيئ. مرجع ببليوغرافي أو رقم مادة قانونية رُئي مرة واحدة في المدوّنة يُضغط بفقدان في المعاملات. فيعيد النموذج بناء "شيء يشبه مرجعاً": صيغة صحيحة، وأنواع كلمات صحيحة، ومحتوى مختلق.
  • الأخطاء تغذّي نفسها. الرمز الخاطئ، متى صدر، يصبح جزءاً من مدخل الدورات التالية. فيواصل النموذج بانسجام مع خطئه.
  • أخذ العينات يضيف مخاطرة. T مرتفعة أو top-p واسع يمنحان فرصة لرموز ضعيفة الاحتمال، لكن خفض T لا يزيل المشكلة لأن الرمز الأكثر احتمالاً قد يكون خاطئاً أصلاً.

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

الاستدلال والحساب والمعارف المؤرَّخة

  • الحساب. لا يملك LLM وحدة حساب دقيقة: إنه يتنبأ برموز أرقام، بتقطيع للأعداد يتوقف على المجزّئ. ينجح في الحالات الشائعة ويفشل بشكل غير متوقع في العمليات الطويلة أو النادرة. لأي حساب يجب أن يكون صحيحاً، استدعِ شيفرة أو أداة.
  • الاستدلال. جعل النموذج يكتب خطوات وسيطة (chain of thought) يمنحه حساباً أكثر لكل إجابة ويحسّن النتائج غالباً في المسائل متعددة الخطوات، لكن هذه الخطوات ليست برهاناً ولا أثراً أميناً لما جرى حسابه. أتعامل معها كوسيلة للحصول على إجابات أفضل، لا كتفسير موثوق.
  • المعارف المؤرَّخة. المعارف مجمّدة عند تاريخ نهاية مدوّنة التدريب (knowledge cutoff). لا يعرف النموذج آخر إصدار من مكتبة، ولا قاعدة بياناتك، ولا حدث الأسبوع الماضي، ما لم يُقدَّم له ذلك في السياق.

Prompting أم RAG أم fine-tuning: ماذا يغيّر كل منها

تعمل هذه الرافعات الثلاث في مواضع مختلفة، وكثيراً ما يُخلط بينها.

Promptingلا أوزان تتغيرتعليمات وأمثلة في السياقتكرار في دقائقمحدود بالنافذةRAGلا أوزان تتغيرمقاطع مسترجعة تُحقن فيpromptمعارف حديثة وقابلةللاقتباسيتوقف على جودة البحثFine-tuningالأوزان تتغير (غالباً عبرLoRA)الأسلوب والصيغة ومهمة ضيقةيتطلب بيانات وتقييماًغير موثوق لإضافة وقائع
يعمل prompting وRAG على المدخل دون المساس بالأوزان؛ أما fine-tuning فيعدّل الأوزان. الرافعة الصحيحة تتوقف على ما ينقص: تعليمات أم معارف أم سلوك.
  • Prompting هو صياغة المدخل بشكل أفضل: تعليمات واضحة، وصيغة الخرج المنتظرة، وبضعة أمثلة (few-shot). لا يتعلّم النموذج شيئاً بصورة دائمة، بل يشرط توزيعه على ما تعطيه. وهو الرافعة الأولى للتجربة لأن تعديله بلا كلفة، لكنه يستهلك رموزاً في كل نداء.
  • الاسترجاع المعزز بالتوليد (RAG) يبحث، لحظة السؤال، عن مقاطع ذات صلة في وثائقك، ثم يضعها في prompt مع السؤال. يعالج مشكلة المعارف المؤرَّخة أو الخاصة ويتيح ذكر المصادر. وجودته هي جودة البحث: إن لم تُسترجع المقاطع الصحيحة، سيجيب النموذج من دونها. أشرح البنية في مقال الذكاء الاصطناعي ووثائقك.
  • Fine-tuning يواصل التدريب على أمثلتك بتعديل الأوزان، غالباً عبر مهايئات منخفضة الرتبة (LoRA) لا تدرّب إلا جزءاً صغيراً من المعاملات. يناسب تثبيت أسلوب أو صيغة خرج أو تخصيص النموذج في مهمة ضيقة. لكنه غير موثوق لجعله يحتفظ بوقائع دقيقة، ويفرض بناء مجموعة بيانات ومجموعة تقييم. إنه ملاذي الأخير لا الأول.

ترتيب عملي المعتاد: prompting والتقييم أولاً، وRAG إذا كانت المشكلة نقص معارف، وfine-tuning إذا كانت المشكلة في السلوك وأظهر التقييم أن الأولين لا يكفيان.

التفكير السريع والتفكير البطيء

يساعد منعطف إلى علم النفس على وضع النماذج في مكانها. يميّز دانيال كانمان، في كتابه التفكير السريع والبطيء، بين تفكير سريع وحدسي (النظام 1) وتفكير بطيء ومتأنٍّ (النظام 2). تشبه نماذج LLM المستخدمة كمساعدات، خاصة عندما تنتج استدلالاً قبل الإجابة، النظام 2: بطيئة ومكلفة وقادرة على إنتاج نص حر. لكن كثيراً من القرارات في نظام المعلومات من النظام 1: هل هذه الرسالة شكوى، أي فريق يعالجها، هل هذه المعاملة مشبوهة. إنها أسئلة سريعة تتكرر آلاف المرات، بمجموعة إجابات معروفة مسبقاً.

نماذج SOM

هذا النوع من القرارات هو ما تستهدفه فئة أُعلن عنها في سبتمبر 2026: SOM (System One Models). أول ممثليها Jev، من شركة TypeSafe. وفق أوصاف نشرتها الجهة المطوّرة وتناقلتها الصحافة المتخصصة، لا يولّد النموذج نصاً: نعطيه حالة (رسالة، ملفاً) وأسئلة إجاباتها الممكنة محددة بمخطط (اختيار من قائمة، تقييم على سُلّم، نعم/لا)، فيعيد في تمريرة واحدة إجابة ودرجة ثقة لكل سؤال. وتعلن الجهة المطوّرة مكاسب كبيرة جداً في السرعة والكلفة مقارنة بـ LLM؛ ولم أجد سوى أرقام صادرة عن الجهة المطوّرة وتقارير من الدرجة الثانية، ولا تقييماً مستقلاً. لذا أعتبرها وعوداً يجب التحقق منها على بياناتك، لا حقائق ثابتة. وكما في أي نموذج، لا يُستنتج عدد المرات التي يخطئ فيها الخانة من كتيّب تعريفي.

LLM (النظام 2)SOM (النظام 1)
ماذا ينتج؟نصاً، رمزاً بعد رمزقراراً من بين خيارات يحددها مخطط
زمن الاستجابةيزداد بطول الإجابةتمريرة واحدة، حسب الجهة المطوّرة
هل يمكن أن يجيب خارج الموضوع؟نعم، قد يختلقيبقى ضمن المخطط، لكنه قد يخطئ الخانة
مثالي لـالكتابة والتلخيص والشرح والاستدلالالفرز والتصنيف والتوجيه والتصفية بأحجام كبيرة

أما المبدأ الكامن فيمكن لأي مهندس التحقق منه: قرار مصحوب باحتمال يتيح اختيار عتبة. عند ثقة 98% يتصرف البرنامج وحده؛ وعند 55% يُحال الملف إلى شخص. ولا معنى لذلك إلا إذا كانت الثقة معايَرة (calibrated)، أي أن حوالي 90% من الإجابات المعطاة بثقة 90% صحيحة. وهذا يُقاس على مجموعة تحقق، وهو أول ما سأفحصه قبل ربط نموذج كهذا بتدفق حقيقي. ويمكن أيضاً مقاربة هذا المنطق بـ LLM عادي، بحصر الخرج في مخطط وقراءة احتمالات رموز الإجابة عندما تتيحها واجهة API، لكن المعايرة ليست مضمونة ويجب قياسها بالطريقة نفسها.

الأداة المناسبة للمهمة المناسبة

الدرس المفيد ليس معرفة أي نموذج هو "الأفضل"، بل كيفية تركيبها معاً:

  1. نموذج تصنيف (SOM أو غيره) يفرز. يوجّه وينبّه بسرعة إلى الحالات غير المعتادة.
  2. البرنامج التقليدي يطبّق القواعد. الحسابات والتواريخ والموافقات: كل ما يجب أن يكون دقيقاً بنسبة 100%.
  3. LLM يعالج الحالات المفتوحة. الكتابة وتحليل وثيقة والشرح، مع مصادر في السياق عندما تهم الدقة.
  4. الإنسان يحسم عندما تكون الثقة منخفضة أو الرهان كبيراً.

ما يجب تذكّره

  • LLM دالة تحوّل في كل دورة تسلسل رموز إلى توزيع احتمالي على الرمز التالي، عبر التضمين وطبقات الانتباه وMLP وlogits وsoftmax.
  • تُحسم الكلفة بالرموز (واللغة منها)، وبطول السياق (انتباه تربيعي في النسخة الساذجة، وذاكرة KV في الذاكرة)، وبطول الإجابة (تمريرة لكل رمز).
  • يجري التدريب على مراحل: تدريب مسبق (الكفاءة)، وضبط إشرافي (الصيغة)، ومواءمة (التفضيلات).
  • الهلوسة نتيجة لهدف المعقولية: تُخفَّف بالمصادر والأدوات والتقييم، ولا تُلغى.
  • لا تحلّ prompting وRAG وfine-tuning المشكلات نفسها: نقص التعليمات، ونقص المعارف، ونقص السلوك.

لو كان عليك أن تبدأ بشيء واحد، فأقترح قياس عدد الرموز في نصوصك أنت (بلغاتك) وبناء مجموعة تقييم صغيرة من حالاتك الحقيقية. هذان القياسان ينيران قرارات أكثر من أي معيار عام. وإن بدت لك نقطة مبسّطة أكثر من اللازم، فالأرجح أنها كذلك: الآلية مستقرة، لكن التفاصيل (ترميزات المواضع، ومتغيرات الانتباه، ووصفات المواءمة) تتغير بسرعة من نموذج إلى آخر.

المراجع

  • Vaswani et al., Attention Is All You Need (2017): https://arxiv.org/abs/1706.03762
  • Brown et al., Language Models are Few-Shot Learners (GPT-3, 2020): https://arxiv.org/abs/2005.14165
  • Hoffmann et al., Training Compute-Optimal Large Language Models (Chinchilla, 2022): https://arxiv.org/abs/2203.15556
  • Holtzman et al., The Curious Case of Neural Text Degeneration (nucleus sampling, 2019): https://arxiv.org/abs/1904.09751
  • Lewis et al., Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2020): https://arxiv.org/abs/2005.11401
  • DataCamp, article on Jev and System One Models (secondary source, vendor figures): https://www.datacamp.com/blog/system-one-models-jev