Stop sequences (language models) (HE)

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 פועל כקריטריון חיצוני להפסקת תהליך איטרטיבי זה.

סוגי רצפי עצירה

קיימים מספר סוגים עיקריים של מנגנוני עצירה, שניתן להשתמש בהם בנפרד או בשילוב.

1. Token-ים של סוף רצף (EOS)

End-of-Sequence (EOS) — הם token-ים מיוחדים (לדוגמה, `<|endoftext|>`), המוטמעים במילון המודל ומיועדים לסמן את סוף קטע טקסט לוגי. המודל מאומן לייצר את ה-EOS token כאשר הוא רואה את התשובה כשלמה, מאחר שכל הטקסטים במדגם האימון מסתיימים ב-token זה[4]. עם זיהוי ה-EOS token, היצירה נפסקת אוטומטית.

מחקרים מראים כי נוכחות ה-EOS token משפיעה על ארכיטקטורת ה-attention: מודלים מפתחים מנגנונים פנימיים לספירת מיקומים, מה שעם זאת עשוי להגביל את יכולת החיזוי שלהם על רצפים הארוכים משמעותית מדוגמאות האימון[5].

2. רצפים מותאמים אישית

אלה מחרוזות произвольות שהמפתח מגדיר למשימה ספציפית. הן אינן חלק ממילון המודל, אך נעקבות ברמת התווים. דוגמאות כוללות:

  • תווי שורה חדשה: `\n` או `\n\n` לעצירה לאחר פסקה.
  • סמני הקשר: `Human:`, `User:` או `Q:` להפרדת תורות בדיאלוג.
  • סמנים מיוחדים: `###`, `</output>` או `END`.

3. רצפים מבניים

אלה סמנים מתמחים המשמשים לסיום אלמנטים מבניים מסוימים, דבר שהוא קריטי בעת יצירת תוכן מפורמט[1]:

  • קוד: גרשיים הפוכות משולשות (```) לסיום בלוק קוד.
  • JSON/XML: סוגריים סוגרים (`}`) או תגיות (`</element>`).

מימוש טכני ובעיות

זיהוי יעיל של stop sequence הוא משימה לא טריוויאלית הכרוכה בסדרת קשיים.

אלגוריתם זיהוי ואופטימיזציה

תהליך הזיהוי במערכות אמיתיות כולל:

  1. בדיקה בכל שלב: לאחר יצירת כל token חדש, המערכת בודקת האם הפלט הנוכחי מסתיים באחד מה-stop sequences הנתונים.
  2. טיפול בהתאמות חלקיות: המערכת חייבת לעקוב אחר מצבים שבהם חלק מהרצף כבר נוצר, אך עדיין אין התאמה מלאה.
  3. בדיקה רב-קריטריונית: רוב המערכות (לדוגמה, OpenAI API) מאפשרות לעקוב אחר מספר (עד ארבעה) stop sequences בו-זמנית[2].

ב-framework של Hugging Face Transformers, לצורך זה מומש מחלקה מופשטת `StoppingCriteria`, המאפשרת ליצור קריטריוני עצירה מותאמים אישית, כגון `MaxLengthCriteria` (לפי אורך) או `EosTokenCriteria` (לפי EOS token)[4].

בעיות ומגבלות

  • בעיית tokenization: זוהי הקושי הטכני העיקרי. אותו רצף תווים (לדוגמה, `\nUser:`) עשוי להיות מפוצל ל-token-ים בצורות שונות בהתאם להקשר. הדבר מסבך את הזיהוי האמין, מאחר שה-stop sequence עשוי להיות מחולק בין מספר token-ים[5].
  • ביצועים: בדיקת stop sequences ארוכים רבים בכל שלב עשויה להאט את היצירה, במיוחד בעת עבודה עם רצפים ארוכים בזמן אמת.
  • זיהוי שגוי: הרצף הנתון עשוי להופיע באקראי באמצע התשובה הרצויה, מה שיוביל לסיום מוקדם. לפיכך, חשוב לבחור סמנים ייחודיים וספציפיים דיים (לדוגמה, `\n###\n`)[6].

יישומים ותרחישי שימוש

Stop sequences הם כלי עוצמתי לניהול התנהגות ה-LLM.

  • שליטה באורך ובעלות: מאפשרים להגביל את הגודל המרבי של התגובה ועל ידי כך לצמצם את צריכת ה-token-ים, דבר שחשוב בעת שימוש ב-API בתשלום.
  • מערכות דיאלוג: משמשים להפרדה ברורה של תורות הדוברים, כדי שמודל העוזר לא ייצור תשובה עבור המשתמש.
  • יצירת תוכן מובנה: הכרחיים לקבלת פלט תקין בפורמטים JSON, XML או בעת כתיבת קוד, תוך מניעת הוספת מידע מיותר לאחר סיום המבנה[7].
  • מניעת התנהגות בלתי רצויה: מסייעים להפסיק את היצירה עם הופעת תוכן חוזר או שגוי (הזיות).
  • אימון ו-fine-tuning: במדגמי נתוני אימון נעשה שימוש תכוף בסמנים ייחודיים (לדוגמה, `###`) כ-stop sequence, כדי שהמודל ילמד לסיים את התשובה במקום הנכון[6].

כיווני מחקר עכשוויים

  • קריטריוני עצירה אדפטיביים: פיתוח שיטות הקובעות באופן דינמי את נקודת הסיום על בסיס ההקשר ואיכות הטקסט שנוצר.
  • גישות אנטרופיה: שימוש באנטרופיה של התפלגות ה-token-ים כקריטריון. אנטרופיה גבוהה יכולה להצביע על חוסר ודאות של המודל ולשמש אות להפסקת היצירה.

קישורים

  • תיעוד OpenAI לשימוש ב-stop sequences
  • תיעוד 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. [1]
  2. 2.0 2.1 «How do I use stop sequences in the OpenAI API?». OpenAI Help Center. [2]
  3. «How to use stop sequences?». Vellum. [3]
  4. 4.0 4.1 Brown, Tom, et al. «A Survey on GPT-3». arXiv:2212.00857 [cs.CL], 1 дек. 2022 г. [4]
  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 г. [5]
  6. 6.0 6.1 Eric, Mihail. «How to Finetune GPT3». mihaileric.com. [6]
  7. Corin, Daniel. «Way Enough - Cursor Triple Backticks Stop Sequence». danielcorin.com. [7]