Stop sequences (language models) — تسلسلات الإيقاف

From Systems analysis wiki
Jump to navigation Jump to search

تسلسل الإيقاف (Stop Sequence) في سياق نماذج اللغة الكبيرة (LLM) هو تسلسل خاص من الأحرف أو الرموز، والذي يعطي إشارة للنموذج بضرورة التوقف عن توليد النص[1]. تعد هذه الآلية مكونًا مهمًا في نماذج اللغة ذاتية الانحدار، مما يضمن إنهاء الاستجابة بطريقة يمكن التحكم بها والتنبؤ بها.

عند استخدام تسلسل الإيقاف، يقوم النموذج في كل خطوة من خطوات التوليد بالتحقق مما إذا كان النص الذي تم إنشاؤه بالفعل ينتهي بأحد التسلسلات المحددة. إذا تم العثور على تطابق، تتوقف العملية على الفور، مع العلم أن تسلسل الإيقاف نفسه لا يتم تضمينه في المخرجات النهائية[2]. يتيح ذلك للمطور التحكم بدقة في حدود الاستجابة دون تغيير الطلب نفسه.

المبادئ الأساسية للتشغيل

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

P(yty<t,x)

حيث yt هو الرمز الذي يتم توليده حاليًا، وy<t هو تسلسل الرموز التي تم توليدها مسبقًا، وx هو تسلسل الإدخال[3].

تعمل آلية stop sequence كمعيار خارجي لإيقاف هذه العملية التكرارية.

أنواع تسلسلات الإيقاف

توجد عدة أنواع رئيسية من آليات الإيقاف التي يمكن استخدامها بشكل فردي أو مجتمعة.

1. End-of-Sequence (EOS) tokens - رموز نهاية التسلسل (EOS)

رموز نهاية التسلسل (End-of-Sequence أو EOS) هي رموز خاصة (مثل `<|endoftext|>`) مدمجة في مفردات النموذج ومصممة للإشارة إلى نهاية مقطع نصي منطقي. يتم تدريب النموذج على توليد رمز EOS عندما يعتبر أن الاستجابة قد اكتملت، حيث أن جميع النصوص في عينة التدريب تنتهي بهذا الرمز[4]. عند الكشف عن رمز EOS، يتوقف التوليد تلقائيًا.

تظهر الأبحاث أن وجود رموز EOS يؤثر على بنية الانتباه: حيث تطور النماذج آليات داخلية لعد المواضع، وهو ما قد يحد من قدرتها على الاستقراء (extrapolation) على تسلسلات تتجاوز بشكل كبير طول أمثلة التدريب[5].

2. التسلسلات المخصصة من قبل المستخدم

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

  • رموز الانتقال إلى سطر جديد: `\n` أو `\n\n` للتوقف بعد فقرة.
  • علامات سياقية: `Human:`، `User:` أو `Q:` لفصل الأدوار في الحوار.
  • علامات خاصة: `###`، `</output>` أو `END`.

3. التسلسلات الهيكلية

هي علامات متخصصة تُستخدم لإنهاء عناصر هيكلية معينة، وهو أمر بالغ الأهمية عند توليد محتوى منسق[1]:

  • الكود: علامات الاقتباس الخلفية الثلاثية (```) لإنهاء كتلة الكود.
  • JSON/XML: الأقواس المعقوفة المغلقة (`}`) أو الوسوم (`</element>`).

التنفيذ التقني والمشكلات

يعد الكشف الفعال عن تسلسلات الإيقاف مهمة غير بسيطة، وتنطوي على عدد من الصعوبات.

خوارزمية الكشف والتحسين

تتضمن عملية الكشف في الأنظمة الحقيقية ما يلي:

  1. التحقق في كل خطوة: بعد توليد كل رمز جديد، يتحقق النظام مما إذا كانت المخرجات الحالية تنتهي بأحد تسلسلات الإيقاف المحددة.
  2. معالجة التطابقات الجزئية: يجب على النظام تتبع الحالات التي تم فيها توليد جزء من التسلسل، ولكن لم يحدث تطابق كامل بعد.
  3. التحقق متعدد المعايير: تسمح معظم الأنظمة (مثل OpenAI API) بتتبع عدة تسلسلات إيقاف (تصل إلى أربعة) في وقت واحد[2].

في إطار عمل Hugging Face Transformers، تم تنفيذ فئة مجردة لهذا الغرض تسمى `StoppingCriteria`، والتي تسمح بإنشاء معايير إيقاف مخصصة، مثل `MaxLengthCriteria` (حسب الطول) أو `EosTokenCriteria` (حسب رمز EOS)[4].

المشكلات والقيود

  • مشكلة الترميز (Tokenization): هذه هي الصعوبة التقنية الرئيسية. يمكن تقسيم نفس تسلسل الأحرف (على سبيل المثال، `\nUser:`) إلى رموز بطرق مختلفة اعتمادًا على السياق. هذا يعقد عملية الكشف الموثوقة، حيث قد يتم تقسيم تسلسل الإيقاف بين عدة رموز[5].
  • الأداء: يمكن أن يؤدي التحقق من العديد من تسلسلات الإيقاف الطويلة في كل خطوة إلى إبطاء عملية التوليد، خاصة عند التعامل مع تسلسلات طويلة في الوقت الفعلي.
  • الإنذارات الكاذبة: قد يظهر التسلسل المحدد بشكل عشوائي في منتصف الاستجابة المطلوبة، مما يؤدي إلى إنهاء مبكر. لذلك، من المهم اختيار علامات فريدة ومحددة بما فيه الكفاية (مثل `\n###\n`)[6].

التطبيقات وسيناريوهات الاستخدام

تعد تسلسلات الإيقاف أداة قوية للتحكم في سلوك نماذج اللغة الكبيرة.

  • التحكم في الطول والتكلفة: تتيح تحديد الحد الأقصى لحجم الاستجابة، وبالتالي تقليل استهلاك الرموز، وهو أمر مهم عند استخدام واجهات برمجة التطبيقات (API) المدفوعة.
  • أنظمة الحوار: تُستخدم للفصل الواضح بين أدوار المتحاورين، حتى لا يقوم النموذج المساعد بتوليد ردود نيابة عن المستخدم.
  • توليد المحتوى المهيكل: لا غنى عنها للحصول على مخرجات صحيحة بتنسيقات مثل JSON، وXML أو عند كتابة الكود، حيث تمنع إضافة معلومات زائدة بعد اكتمال الهيكل[7].
  • منع السلوك غير المرغوب فيه: تساعد على إيقاف التوليد عند ظهور محتوى متكرر أو غير صحيح (هلوسات).
  • التدريب والضبط الدقيق (fine-tuning): في مجموعات بيانات التدريب، غالبًا ما تُستخدم علامات فريدة (مثل `###`) كتسلسلات إيقاف لكي يتعلم النموذج إنهاء الاستجابة في المكان الصحيح[6].

الاتجاهات البحثية الحديثة

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

روابط خارجية

المراجع الأكاديمية

  • Sutskever, I.; Vinyals, O.; Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215.
  • Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
  • Keskar, N. S. et al. (2019). CTRL: A Conditional Transformer Language Model for Controllable Generation. arXiv:1909.05858.
  • Holtzman, A. et al. (2020). The Curious Case of Neural Text Degeneration. arXiv:1904.09751.
  • Brown, T. et al. (2020). Language Models are Few-Shot Learners. arXiv:2005.14165.
  • Zong, M.; Krishnamachari, B. (2022). A Survey on GPT-3. arXiv:2212.00857.
  • Zhao, Y. et al. (2022). Calibrating Sequence Likelihood Improves Conditional Language Generation. arXiv:2210.00045.
  • Hu, J. C.; Cavicchioli, R.; Capotondi, A. (2023). A Request for Clarity over the End-of-Sequence Token in the Self-Critical Sequence Training. arXiv:2305.12254.
  • Zhu, W. et al. (2024). Improving Open-Ended Text Generation via Adaptive Decoding. arXiv:2402.18223.
  • Zhang, H. et al. (2024). Adaptable Logical Control for Large Language Models. arXiv:2406.13892.
  • Suh, Y. J. et al. (2025). The Curious Case of Sequentially Mis-calibrated Language Models. arXiv:2205.11916.

ملاحظات

  1. 1.0 1.1 «Stop Sequence: Understanding & Setting It Correctly». Promptitude.io Help Center. [١]
  2. 2.0 2.1 «How do I use stop sequences in the OpenAI API?». OpenAI Help Center. [٢]
  3. «How to use stop sequences?». Vellum. [٣]
  4. 4.0 4.1 Brown, Tom, et al. «A Survey on GPT-3». arXiv:2212.00857 [cs.CL], 1 дек. 2022 г. [٤]
  5. 5.0 5.1 Suh, Y. J., et al. «The Curious Case of Sequentially Mis-calibrated Language Models». arXiv:2205.11916 [cs.CL], 24 мая 2022 г. [٥]
  6. 6.0 6.1 Eric, Mihail. «How to Finetune GPT3». mihaileric.com. [٦]
  7. Corin, Daniel. «Way Enough - Cursor Triple Backticks Stop Sequence». danielcorin.com. [٧]