Stop sequences (language models) (FA)

From Systems analysis Wiki
Jump to navigation Jump to search

Stop Sequence (دنباله توقف) در زمینه مدل‌های زبانی بزرگ (LLM) یک دنباله خاص از کاراکترها یا token‌ها است که به مدل سیگنال می‌دهد تولید متن را متوقف کند[1]. این مکانیزم یک مؤلفه مهم در مدل‌های زبانی خودبازگشتی است که پایان‌پذیری کنترل‌شده و قابل پیش‌بینی پاسخ را تضمین می‌کند.

هنگام استفاده از stop sequence، مدل در هر مرحله از تولید بررسی می‌کند که آیا متن تولیدشده تاکنون به یکی از دنباله‌های تعریف‌شده ختم شده است یا خیر. اگر تطابقی یافت شود، فرآیند بلافاصله متوقف می‌شود و خود stop sequence در خروجی نهایی گنجانده نمی‌شود[2]. این امر به توسعه‌دهنده اجازه می‌دهد بدون تغییر در خود درخواست، مرزهای پاسخ را به دقت کنترل کند.

اصول پایه عملکرد

در مدل‌های زبانی خودبازگشتی، تولید متن به صورت متوالی، token به token انجام می‌شود. در هر مرحله، مدل token بعدی را بر اساس کل دنباله پیشین (prompt ورودی و متن تولیدشده تاکنون) پیش‌بینی می‌کند. از نظر ریاضی این به صورت احتمال شرطی بیان می‌شود:

P(yty<t,x)

که در آن yt token در حال تولید، y<t دنباله token‌های پیش‌تر تولیدشده، و x دنباله ورودی است[3].

مکانیزم stop sequence به عنوان یک معیار خارجی برای قطع این فرآیند تکراری عمل می‌کند.

انواع دنباله‌های توقف

چندین نوع اصلی از مکانیزم‌های توقف وجود دارد که می‌توانند به صورت مجزا یا ترکیبی مورد استفاده قرار گیرند.

۱. Token‌های پایان دنباله (EOS)

End-of-Sequence (EOS) — token‌های خاصی هستند (مانند `<|endoftext|>`) که در واژگان مدل تعبیه شده‌اند و برای نشانه‌گذاری پایان یک بخش منطقی از متن طراحی شده‌اند. مدل یاد می‌گیرد که EOS token را زمانی تولید کند که پاسخ را کامل می‌داند، زیرا تمام متون در مجموعه داده آموزشی با این token پایان می‌یابند[4]. با تشخیص EOS token، تولید به طور خودکار متوقف می‌شود.

پژوهش‌ها نشان می‌دهند که وجود EOS token‌ها بر معماری attention تأثیر می‌گذارد: مدل‌ها مکانیزم‌های داخلی شمارش موقعیت را توسعه می‌دهند، که با این حال ممکن است توانایی آن‌ها را برای تعمیم به دنباله‌هایی که به طور قابل توجهی از طول نمونه‌های آموزشی فراتر می‌روند محدود کند[5].

۲. دنباله‌های سفارشی

این‌ها رشته‌های دلخواهی هستند که توسعه‌دهنده برای یک وظیفه خاص تعریف می‌کند. آن‌ها بخشی از واژگان مدل نیستند اما در سطح کاراکتر ردیابی می‌شوند. نمونه‌ها شامل موارد زیر می‌شوند:

  • کاراکترهای خط جدید: `\n` یا `\n\n` برای توقف پس از یک پاراگراف.
  • نشانگرهای زمینه‌ای: `Human:`، `User:` یا `Q:` برای جداسازی نوبت‌های گفتگو.
  • نشانگرهای خاص: `###`، `</output>` یا `END`.

۳. دنباله‌های ساختاری

این‌ها نشانگرهای تخصصی هستند که برای پایان دادن به عناصر ساختاری مشخص استفاده می‌شوند و در تولید محتوای قالب‌بندی‌شده اهمیت حیاتی دارند[1]:

  • کد: سه بک‌تیک (```) برای پایان دادن به بلوک کد.
  • JSON/XML: براکت‌های بسته (`}`) یا تگ‌ها (`</element>`).

پیاده‌سازی فنی و چالش‌ها

تشخیص مؤثر stop sequence یک وظیفه ساده نیست و با تعدادی از پیچیدگی‌ها همراه است.

الگوریتم تشخیص و بهینه‌سازی

فرآیند تشخیص در سیستم‌های واقعی شامل موارد زیر است:

  1. بررسی در هر مرحله: پس از تولید هر token جدید، سیستم بررسی می‌کند که آیا خروجی جاری به یکی از stop sequence‌های تعریف‌شده ختم شده است یا خیر.
  2. پردازش تطابق‌های جزئی: سیستم باید موقعیت‌هایی را ردیابی کند که بخشی از دنباله پیش‌تر تولید شده اما هنوز تطابق کامل حاصل نشده است.
  3. بررسی چندمعیاره: اکثر سیستم‌ها (مانند OpenAI API) امکان ردیابی چندین (تا چهار) stop sequence را به طور همزمان فراهم می‌کنند[2].

در فریم‌ورک Hugging Face Transformers برای این منظور یک کلاس انتزاعی `StoppingCriteria` پیاده‌سازی شده است که امکان ایجاد معیارهای توقف سفارشی مانند `MaxLengthCriteria` (بر اساس طول) یا `EosTokenCriteria` (بر اساس EOS token) را فراهم می‌کند[4].

مشکلات و محدودیت‌ها

  • مشکل tokenization: این اصلی‌ترین پیچیدگی فنی است. یک دنباله یکسان از کاراکترها (مانند `\nUser:`) بسته به زمینه ممکن است به شکل‌های مختلفی به token تقسیم شود. این امر تشخیص قابل اعتماد را دشوار می‌سازد، زیرا stop sequence ممکن است بین چندین token تقسیم شود[5].
  • کارایی: بررسی stop sequence‌های متعدد و طولانی در هر مرحله می‌تواند سرعت تولید را کاهش دهد، به ویژه هنگام کار با دنباله‌های طولانی در زمان واقعی.
  • فعال‌سازی‌های نادرست: دنباله تعریف‌شده ممکن است به طور تصادفی در وسط پاسخ مطلوب ظاهر شود و منجر به پایان زودهنگام شود. به همین دلیل مهم است که نشانگرهای به اندازه کافی منحصربه‌فرد و اختصاصی انتخاب شوند (مانند `\n###\n`)[6].

کاربردها و سناریوهای استفاده

Stop sequence‌ها ابزاری قدرتمند برای مدیریت رفتار LLM هستند.

  • کنترل طول و هزینه: امکان محدود کردن حداکثر اندازه پاسخ و در نتیجه کاهش مصرف token را فراهم می‌کنند، که هنگام استفاده از API‌های پولی اهمیت دارد.
  • سیستم‌های مکالمه‌ای: برای جداسازی روشن نوبت‌های طرفین مکالمه استفاده می‌شوند تا مدل دستیار پاسخ را به جای کاربر تولید نکند.
  • تولید محتوای ساختاریافته: برای دریافت خروجی صحیح در فرمت‌های JSON، XML یا هنگام نوشتن کد ضروری هستند و از اضافه شدن اطلاعات اضافی پس از تکمیل ساختار جلوگیری می‌کنند[7].
  • جلوگیری از رفتار ناخواسته: در قطع تولید هنگام ظهور محتوای تکراری یا نادرست (توهمات) کمک می‌کنند.
  • آموزش و fine-tuning: در مجموعه داده‌های آموزشی اغلب از نشانگرهای منحصربه‌فرد (مانند `###`) به عنوان stop sequence استفاده می‌شود تا مدل یاد بگیرد پاسخ را در جای مناسب به پایان برساند[6].

جهت‌گیری‌های پژوهشی معاصر

  • معیارهای توقف تطبیقی: توسعه روش‌هایی که نقطه پایان را به صورت پویا بر اساس زمینه و کیفیت متن تولیدشده تعیین می‌کنند.
  • رویکردهای آنتروپی‌محور: استفاده از آنتروپی توزیع token‌ها به عنوان یک معیار. آنتروپی بالا می‌تواند نشان‌دهنده عدم اطمینان مدل باشد و به عنوان سیگنالی برای توقف تولید عمل کند.

پیوندها

  • مستندات OpenAI در مورد استفاده از stop sequence‌ها
  • مستندات Hugging Face در مورد StoppingCriteria

منابع

  • 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. [۷]