انتقل إلى المحتوى الرئيسي

جارٍ تحميل المختبر المرئي…

#generation-temperatureنماذج LLM وTransformers

التوليد: الحرارة وtop-k وtop-p.

ما ستُجرّبه

  1. مرحبًا بك في #generation-temperature. في الأعلى، الأمر التوجيهي «النموذج يتعلم» في مربّعات زرقاء. في المنتصف، اثنا عشر عمودًا: توزيع الكلمة التالية الذي يحسبه نموذج لغوي صغير مُدرَّب على 63 جملة عربية (طقس، مدرسة، ذكاء اصطناعي، طبخ — معجم من نحو 145 كلمة). لا «يعرف» LLM ما الكلمة التي تأتي بعدُ: إنه يُسنِد احتمالًا لكل كلمة في معجمه، ثم يأخذ عيّنة من هذا التوزيع. تضبط الحرارة وtop-k وtop-p هذه العيّنة — وذلك هو الفرق بين نصٍّ مسطَّح ومكرَّر ونصٍّ مبتكِر… أو غير متماسك. إلى اليمين، مقياس الحرارة (0.8 للبدء).
  2. اكتب /generate 5: يأخذ النموذج عيّنة من خمس كلمات متتالية. في كل خطوة ينظر إلى آخر كلمتين، ويحسب توزيع الكلمة التالية، ويأخذ عيّنة، ويُلحقها بالجملة، ثم يُعيد الكرّة. يضيء العمود المُعايَن، وتنضمّ الكلمة إلى الجملة، ثم تنزلق الأعمدة إلى توزيع الكلمة التالية.
  3. بَرِّده: /temperature 0.2. تقسم الحرارة اللوغيتات (logits) قبل softmax: مع T < 1 تتّسع الفروق ويصبح التوزيع مدبَّبًا. يُعاد توليد النص بنفس البذرة، فقط التوزيع تغيَّر.
  4. سَخِّنه: /temperature 1.8. مع T > 1 تنبسط الفروق: يصبح التوزيع مسطَّحًا، وتصير الكلمات النادرة محتملة تقريبًا كالجيّدة. تسيطر العشوائية على ما تعلّمه النموذج.
  5. عُد إلى /temperature 0.8، الضبط المعتاد للمساعدين: عشوائية كافية لتنويع الصياغة، وبنية كافية للحفاظ على التماسك. تسوية، لا حقيقة.
  6. رافعة أخرى: خُذ عيّنة من الكلمات الـ k الأعلى فقط. اكتب /top-k 3. لن تخرج الكلمات النادرة بعدها، مهما كانت الحرارة.
  7. top-k جامد: ثلاثة مرشَّحين سواء كان التوزيع مسطَّحًا أم مدبَّبًا. أعِد الضبط بـ /top-k 0، ثم جرِّب /top-p 0.9 (nucleus sampling): احتفظ بأصغر مجموعة كلمات مجموع كتلتها يبلغ 90%، فيصبح عدد المرشَّحين يتكيَّف مع كل خطوة.
  8. ماذا لو أوقفنا العيّنة نهائيًا؟ /greedy يختار دائمًا الكلمة الأرجح (العمود الأزرق): هذا هو فكّ الترميز الجشِع، وهو مكافئ لـ T → 0. يُعاد توليد النص.
  9. دورك للعب: اكتب «/prompt الحساء» أو «/prompt الطقس اليوم» لتغيير الموضوع، /generate 20 لتتمّة أطول، /word متبوعًا بواحدة من الكلمات الاثنتَي عشرة المعروضة لفرض الكلمة التالية (يقترحها الإكمال التلقائي)، /temperature 0.05 لوضع شبه جشِع، /top-p 0.5 لعيّنة حذِرة، /clear للبدء من جديد من الأمر التوجيهي، /reset لاستعادة كل شيء. المحطّة التالية: قناة #rag، حيث نُسلّم النموذج وثائق ليقرأها قبل أن يولّد.

أوامر القناة

  • /prompt <words>يغيّر الأمر التوجيهي (السطر كاملًا) ويمحو التتمّة المُولَّدة.
  • /temperature <T=0.05..2>يقسم اللوغيتات على T: < 1 يشحذ التوزيع، > 1 يسطّحه. يُعاد توليد النص.
  • /top-k <k=0..50>يأخذ عيّنة من الكلمات الأرجح k فقط (0 = مُعطَّل). يُعاد توليد النص.
  • /top-p <p=0..1>nucleus sampling: يحتفظ بالكلمات حتى كتلة تراكمية p (1 = مُعطَّل). يُعاد توليد النص.
  • /generate <n=1..30>يأخذ عيّنة من n كلمات على التوالي (5 افتراضيًا) ويُلحقها بالنص.
  • /greedyيبدّل بين العيّنة العشوائية وفكّ الترميز الجشِع (دائمًا الكلمة الأرجح)، ثم يُعيد التوليد.
  • /seed <n=0..9999>يغيّر بذرة المعاينة ويُعيد توليد النص (تُحفَظ الكلمات المفروضة).
  • /word <word>يفرض الكلمة التالية من الكلمات المعروضة الـ 12.
  • /clearيُفرغ التتمّة المُولَّدة ويُبقي الأمر التوجيهي والضبط.
  • /resetيستعيد الأمر التوجيهي «النموذج يتعلم»، T = 0.8، بلا مُرشِّح، البذرة 7، عيّنة عشوائية.

المسرد

الحرارة
عدد يقسم اللوغيتات قبل softmax: p_i ∝ exp(z_i / T). T < 1 يُضخِّم الفروق (توزيع مدبَّب، نص آمن ومكرَّر)، T > 1 يسطّحها (توزيع مسطَّح، نص مبتكِر ثم غير متماسك). T → 0 يُختزَل إلى فكّ الترميز الجشِع.
top-k
مرشِّح يحتفظ فقط بالكلمات الأرجح k ويعيد تسوية كتلتها إلى 100% قبل المعاينة. بسيط وفعّال ضد الكلمات النادرة، لكنه جامد: k يبقى نفسه سواء كان التوزيع مسطَّحًا أم مدبَّبًا.
top-p
يُعرف أيضًا بـ nucleus sampling: احتفظ، بالترتيب التنازلي للاحتمال، بأصغر مجموعة كلمات تبلغ كتلتها التراكمية p (غالبًا 0.9)، ثم أعِد التسوية. يتكيّف عدد المرشَّحين في كل خطوة: واحد عندما يكون النموذج واثقًا، كثيرون عندما يتردَّد.
المعاينة وفكّ الترميز الجشِع
طريقتان لاختيار الكلمة التالية من التوزيع نفسه: المعاينة تسحب عشوائيًا وفق الاحتمالات (متنوّعة، غير حتمية بدون بذرة)؛ فكّ الترميز الجشِع يأخذ دائمًا الأرجح (حتمي، غالبًا مكرَّر). الحرارة وtop-k وtop-p لا تعني إلا المعاينة.
اللوغيتات وsoftmax
اللوغيتات هي النتائج الخام z_i التي تنتجها الشبكة لكل كلمة في المعجم؛ وsoftmax يحوّلها إلى احتمالات: p_i = exp(z_i) / Σ exp(z_j). تُطبَّق الحرارة بينهما: softmax(z / T).
الإنتروبيا
مقياس عدم يقين التوزيع: H = −Σ p_i log₂ p_i، بالبتات. 0 بت عندما تكون كلمة واحدة ممكنة، log₂(V) بت عندما يكون المعجم بأكمله متساوي الاحتمال. الحرارة ترفعها، وtop-k وtop-p يخفضانها.
الحيرة (perplexity)
أُسّ متوسّط سالب اللوغاريتم الاحتمالي للنص تحت النموذج: PP = exp(−(1/N) Σ log p(w_i | context)). تُقرأ كعدد الكلمات التي «يتردَّد» بينها النموذج وسطيًا: 1 = نص قابل للتنبّؤ تمامًا، V = مفاجئ كسحبة منتظمة. تُستخدَم لتقييم النماذج اللغوية.
بحث الحُزمة (beam search)
بدلًا من الاحتفاظ بنصٍّ واحد (جشِع)، احتفظ في كل خطوة بأفضل B متتاليات جزئية واختر الأرجح في النهاية. جيّد للترجمة أو التلخيص، حيث توجد إجابة «صحيحة»؛ نادرًا ما يُستخدَم في المحادثة، لأنه يُنتج نصًا مسطَّحًا ومكرَّرًا.
الهلوسة (hallucination)
عبارة سلسة لكنها خاطئة أو مختلقة. تُنتجها الحرارة العالية آليًا: تخرج كلمات غير مرجَّحة ثم يركبها النموذج كأنها حقيقة. خفض الحرارة أو تضييق top-p يخفف الخطر دون إزالته: قد يكون النموذج واثقًا… ومخطئًا.
n-gram
نموذج لغوي يتنبّأ بالكلمة التالية من الكلمات الـ n − 1 السابقة عبر عدّ المتتاليات المرصودة في متن (ثنائيات: كلمة واحدة من السياق، ثلاثيات: كلمتان). هذا هو النموذج في هذه القناة، مع تراجع إلى مرتبة أدنى وتنعيم عندما لا تُرصَد متتالية. تفعل LLM الشيء نفسه بسياق آلاف الكلمات وبشبكة عوض العدّ.

قنوات أخرى في نماذج LLM وTransformers

  • #tokenizationالتقطيع وBPE: كيف يُقطِّع نموذج LLM النص.
  • #attentionالانتباه الذاتي: كل كلمة تنظر إلى الأخريات.
  • #transformer-blockكتلة المحوّل: الانتباه، الوصلات التجاوزية، التسوية، شبكة FFN.
  • #generation-temperatureالتوليد: الحرارة وtop-k وtop-p.
  • #ragRAG: الإجابة انطلاقًا من وثائقك.
  • #alignment-rlhfالمحاذاة وRLHF: تعلّم ما يفضّله البشر.