Stop sequences (language models) (HU)
Stop Sequence (megállási szekvencia) a nagy nyelvi modellek (LLM) kontextusában egy speciális karakter- vagy token-sorozat, amely jelzi a modellnek, hogy állítsa le a szöveggenerálást[1]. Ez a mechanizmus az autoregresszív nyelvi modellek fontos komponense, amely kezelhető és kiszámítható válaszbefejezést biztosít.
A stop sequence használatakor a modell a generálás minden lépésénél ellenőrzi, hogy a már generált szöveg véget ér-e valamelyik megadott szekvenciával. Ha egyezést talál, a folyamat azonnal leáll, miközben maga a stop sequence nem kerül bele a végső kimenetbe[2]. Ez lehetővé teszi a fejlesztő számára, hogy pontosan szabályozza a válasz határait anélkül, hogy magát a lekérést módosítaná.
Alapvető működési elvek
Az autoregresszív nyelvi modellekben a szöveggenerálás szekvenciálisan, tokenről tokenre történik. Minden lépésben a modell a következő tokent jósolja meg a teljes előző szekvencia (a bemeneti prompt és a már generált szöveg) alapján. Matematikailag ez feltételes valószínűségként fejezhető ki:
ahol az aktuálisan generált token, a korábban generált tokenek sorozata, pedig a bemeneti sorozat[3].
A stop sequence mechanizmus külső leállítási feltételként működik ebben az iteratív folyamatban.
A megállási szekvenciák típusai
Több alapvető megállási mechanizmus létezik, amelyek önállóan és kombinálva is alkalmazhatók.
1. Szekvenciavégi tokenek (EOS)
End-of-Sequence (EOS) — speciális tokenek (például `<|endoftext|>`), amelyek be vannak építve a modell szótárába, és a szöveg egy logikai egységének végét jelölik. A modell arra van betanítva, hogy EOS-tokent generáljon, amikor befejezettnek ítéli a választ, mivel a tanítókészlet összes szövege ezzel a tokennel zárul[4]. Az EOS-token érzékelésekor a generálás automatikusan leáll.
A kutatások azt mutatják, hogy az EOS-tokenek jelenléte befolyásolja az attention architektúráját: a modellek belső pozíciószámláló mechanizmusokat fejlesztenek ki, ami azonban korlátozhatja extrapolációs képességüket azokon a szekvenciákon, amelyek jelentősen meghaladják a tanítási példák hosszát[5].
2. Egyedi szekvenciák
Ezek tetszőleges karakterláncok, amelyeket a fejlesztő egy adott feladathoz határoz meg. Nem részei a modell szótárának, de karakterszinten követésre kerülnek. Példák:
- Sortörés karakterek: `\n` vagy `\n\n` egy bekezdés utáni megálláshoz.
- Kontextuális jelölők: `Human:`, `User:` vagy `Q:` a párbeszédreplikák elválasztásához.
- Speciális jelölők: `###`, `</output>` vagy `END`.
3. Strukturális szekvenciák
Ezek speciális jelölők, amelyeket bizonyos strukturális elemek lezárásához használnak, ami kritikusan fontos formázott tartalom generálásakor[1]:
- Kód: hármas visszaperjel (```) egy kódblokk lezárásához.
- JSON/XML: záró zárójelek (`}`) vagy tagek (`</element>`).
Technikai megvalósítás és problémák
A stop sequence hatékony érzékelése nem triviális feladat, számos nehézséggel jár.
Érzékelési algoritmus és optimalizálás
Az érzékelési folyamat a valós rendszerekben a következőket foglalja magában:
- Ellenőrzés minden lépésnél: Minden új token generálása után a rendszer ellenőrzi, hogy az aktuális kimenet véget ér-e valamelyik megadott stop sequence-szel.
- Részleges egyezések kezelése: A rendszernek nyomon kell követnie azokat a helyzeteket, amikor a szekvencia egy része már generálódott, de teljes egyezés még nem áll fenn.
- Többkritériumos ellenőrzés: A legtöbb rendszer (például az OpenAI API) lehetővé teszi több (legfeljebb négy) stop sequence egyidejű figyelését[2].
A Hugging Face Transformers keretrendszerben erre a célra egy absztrakt `StoppingCriteria` osztály van megvalósítva, amely lehetővé teszi egyedi megállási feltételek létrehozását, például `MaxLengthCriteria` (hossz alapján) vagy `EosTokenCriteria` (EOS-token alapján)[4].
Problémák és korlátok
- Tokenizálási probléma: Ez az alapvető technikai nehézség. Ugyanaz a karaktersorozat (például `\nUser:`) a kontextustól függően különböző módon osztható tokenekre. Ez megnehezíti a megbízható érzékelést, mivel a stop sequence több token között is széteshet[5].
- Teljesítmény: Számos hosszú stop sequence ellenőrzése minden lépésnél lelassíthatja a generálást, különösen valós idejű, hosszú szekvenciákkal való munkánál.
- Téves riasztások: A megadott szekvencia véletlenül megjelenhet a kívánt válasz közepén, ami korai befejezést eredményez. Ezért fontos kellően egyedi és specifikus jelölőket választani (például `\n###\n`)[6].
Alkalmazás és felhasználási esetek
A stop sequence-k hatékony eszközök az LLM viselkedésének szabályozásához.
- Hossz- és költségkontroll: Lehetővé teszik a válasz maximális méretének korlátozását és ezáltal a tokenfelhasználás csökkentését, ami fontos fizetős API-k használatakor.
- Párbeszédes rendszerek: A beszélgetők replikáinak egyértelmű elválasztására használják, hogy az asszisztens modell ne generálja a felhasználó helyett a választ.
- Strukturált tartalom generálása: Nélkülözhetetlenek a helyes kimenet előállításához JSON, XML formátumban vagy kód írásakor, megakadályozva a felesleges információk hozzáadását a struktúra lezárása után[7].
- Nemkívánatos viselkedés megelőzése: Segítenek megszakítani a generálást ismétlődő vagy helytelen tartalom (hallucinációk) megjelenésekor.
- Tanítás és finomhangolás (fine-tuning): A tanítókészletekben gyakran használnak egyedi jelölőket (például `###`) stop sequence-ként, hogy a modell megtanulja a megfelelő helyen befejezni a választ[6].
Jelenlegi kutatási irányok
- Adaptív megállási feltételek: Olyan módszerek fejlesztése, amelyek dinamikusan határozzák meg a befejezési pontot a kontextus és a generált szöveg minősége alapján.
- Entrópia-alapú megközelítések: A token-eloszlás entrópiájának megállási feltételként való alkalmazása. A magas entrópia a modell bizonytalanságát jelezheti, és a generálás leállítására vonatkozó jelzésként szolgálhat.
Hivatkozások
- Az OpenAI dokumentációja a stop sequence-k használatáról
- A Hugging Face dokumentációja a StoppingCriteria osztályról
Irodalom
- 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.
Megjegyzések
- ↑ 1.0 1.1 «Stop Sequence: Understanding & Setting It Correctly». Promptitude.io Help Center. [1]
- ↑ 2.0 2.1 «How do I use stop sequences in the OpenAI API?». OpenAI Help Center. [2]
- ↑ «How to use stop sequences?». Vellum. [3]
- ↑ 4.0 4.1 Brown, Tom, et al. «A Survey on GPT-3». arXiv:2212.00857 [cs.CL], 1 дек. 2022 г. [4]
- ↑ 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.0 6.1 Eric, Mihail. «How to Finetune GPT3». mihaileric.com. [6]
- ↑ Corin, Daniel. «Way Enough - Cursor Triple Backticks Stop Sequence». danielcorin.com. [7]