Stop-Sequenzen
Eine Stop Sequence (Stoppsequenz) ist im Kontext von großen Sprachmodellen (LLMs) eine spezielle Abfolge von Zeichen oder Tokens, die dem Modell signalisiert, die Textgenerierung zu beenden[1]. Dieser Mechanismus ist ein wichtiger Bestandteil autoregressiver Sprachmodelle und ermöglicht einen kontrollierten und vorhersagbaren Abschluss der Antwort.
Bei der Verwendung einer Stop-Sequenz prüft das Modell bei jedem Generierungsschritt, ob der bereits erzeugte Text mit einer der angegebenen Sequenzen endet. Wenn eine Übereinstimmung gefunden wird, wird der Prozess sofort beendet, wobei die Stop-Sequenz selbst nicht in die endgültige Ausgabe aufgenommen wird[2]. Dies ermöglicht es Entwicklern, die Grenzen der Antwort präzise zu steuern, ohne den eigentlichen Prompt zu verändern.
Grundprinzipien der Funktionsweise
In autoregressiven Sprachmodellen erfolgt die Textgenerierung sequenziell, Token für Token. Bei jedem Schritt sagt das Modell das nächste Token auf der Grundlage der gesamten vorhergehenden Sequenz (des Eingabe-Prompts und des bereits generierten Textes) voraus. Mathematisch wird dies als bedingte Wahrscheinlichkeit ausgedrückt:
wobei das aktuell generierte Token ist, die Sequenz der zuvor generierten Tokens und die Eingabesequenz[3].
Der Mechanismus der Stop-Sequenz fungiert als externes Kriterium, um diesen iterativen Prozess zu unterbrechen.
Arten von Stop-Sequenzen
Es gibt mehrere Haupttypen von Stop-Mechanismen, die einzeln oder in Kombination verwendet werden können.
1. End-of-Sequence-Token (EOS)
End-of-Sequence (EOS)-Token sind spezielle Tokens (z. B. `<|endoftext|>`), die in das Vokabular des Modells integriert sind und das Ende eines logischen Textabschnitts markieren. Das Modell lernt, ein EOS-Token zu generieren, wenn es die Antwort für abgeschlossen hält, da alle Texte im Trainingsdatensatz mit diesem Token enden[4]. Wenn ein EOS-Token erkannt wird, wird die Generierung automatisch beendet.
Studien zeigen, dass das Vorhandensein von EOS-Tokens die Aufmerksamkeitsarchitektur beeinflusst: Modelle entwickeln interne Mechanismen zur Positionszählung, was jedoch ihre Fähigkeit zur Extrapolation auf Sequenzen, die die Länge der Trainingsbeispiele deutlich überschreiten, einschränken kann[5].
2. Benutzerdefinierte Sequenzen
Dies sind beliebige Zeichenketten, die ein Entwickler für eine bestimmte Aufgabe festlegt. Sie sind nicht Teil des Modellvokabulars, werden aber auf Zeichenebene verfolgt. Beispiele hierfür sind:
- Zeilenumbruchzeichen: `\n` oder `\n\n`, um nach einem Absatz zu stoppen.
- Kontext-Marker: `Human:`, `User:` oder `Q:`, um Redebeiträge in einem Dialog zu trennen.
- Spezielle Marker: `###`, `</output>` oder `END`.
3. Strukturelle Sequenzen
Dies sind spezialisierte Marker, die zum Abschluss bestimmter Strukturelementen verwendet werden, was bei der Generierung von formatierten Inhalten von entscheidender Bedeutung ist[1]:
- Code: Dreifache Backticks (```), um einen Codeblock abzuschließen.
- JSON/XML: Schließende Klammern (`}`) oder Tags (`</element>`).
Technische Implementierung und Probleme
Die effiziente Erkennung von Stop-Sequenzen ist eine nicht-triviale Aufgabe, die mit einer Reihe von Schwierigkeiten verbunden ist.
Erkennungsalgorithmus und Optimierung
Der Erkennungsprozess in realen Systemen umfasst:
- Prüfung bei jedem Schritt: Nach der Generierung jedes neuen Tokens prüft das System, ob die aktuelle Ausgabe mit einer der definierten Stop-Sequenzen endet.
- Verarbeitung von Teilübereinstimmungen: Das System muss Situationen verfolgen, in denen ein Teil der Sequenz bereits generiert wurde, aber noch keine vollständige Übereinstimmung vorliegt.
- Prüfung mehrerer Kriterien: Die meisten Systeme (z. B. die OpenAI API) ermöglichen die gleichzeitige Überwachung mehrerer (bis zu vier) Stop-Sequenzen[2].
Im Framework Hugging Face Transformers ist dafür die abstrakte Klasse `StoppingCriteria` implementiert, die es ermöglicht, benutzerdefinierte Abbruchkriterien zu erstellen, wie z. B. `MaxLengthCriteria` (basierend auf der Länge) oder `EosTokenCriteria` (basierend auf dem EOS-Token)[4].
Probleme und Einschränkungen
- Problem der Tokenisierung: Dies ist die größte technische Schwierigkeit. Dieselbe Zeichenfolge (z. B. `\nUser:`) kann je nach Kontext unterschiedlich in Tokens aufgeteilt werden. Dies erschwert eine zuverlässige Erkennung, da eine Stop-Sequenz auf mehrere Tokens aufgeteilt sein kann[5].
- Leistung: Die Überprüfung zahlreicher langer Stop-Sequenzen bei jedem Schritt kann die Generierung verlangsamen, insbesondere bei der Arbeit mit langen Sequenzen in Echtzeit.
- Fehlalarme: Eine definierte Sequenz kann zufällig mitten in der gewünschten Antwort auftreten, was zu einem vorzeitigen Abbruch führt. Daher ist es wichtig, ausreichend einzigartige und spezifische Marker zu wählen (z. B. `\n###\n`)[6].
Anwendung und Nutzungsszenarien
Stop-Sequenzen sind ein leistungsstarkes Werkzeug zur Steuerung des Verhaltens von LLMs.
- Kontrolle von Länge und Kosten: Sie ermöglichen es, die maximale Länge der Antwort zu begrenzen und somit den Token-Verbrauch zu reduzieren, was bei der Nutzung kostenpflichtiger APIs wichtig ist.
- Dialogsysteme: Sie werden verwendet, um die Redebeiträge der Gesprächspartner klar voneinander zu trennen, damit das Assistenzmodell keine Antwort für den Benutzer generiert.
- Generierung strukturierter Inhalte: Sie sind unerlässlich, um korrekte Ausgaben in Formaten wie JSON oder XML zu erhalten oder beim Schreiben von Code, um das Hinzufügen überflüssiger Informationen nach Abschluss der Struktur zu verhindern[7].
- Verhinderung unerwünschten Verhaltens: Sie helfen, die Generierung zu unterbrechen, wenn sich wiederholender oder fehlerhafter Inhalt (Halluzinationen) auftritt.
- Training und Feinabstimmung (Fine-Tuning): In Trainingsdatensätzen werden oft einzigartige Marker (z. B. `###`) als Stop-Sequenz verwendet, damit das Modell lernt, die Antwort an der richtigen Stelle zu beenden[6].
Aktuelle Forschungsrichtungen
- Adaptive Abbruchkriterien: Entwicklung von Methoden, die den Endpunkt dynamisch auf der Grundlage des Kontexts und der Qualität des generierten Textes bestimmen.
- Entropiebasierte Ansätze: Verwendung der Entropie der Token-Verteilung als Kriterium. Eine hohe Entropie kann auf Unsicherheit des Modells hindeuten und als Signal zum Abbruch der Generierung dienen.
Weblinks
- OpenAI-Dokumentation zur Verwendung von Stop-Sequenzen
- Hugging Face-Dokumentation zu StoppingCriteria
Literatur
- 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.
Einzelnachweise
- ↑ 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. Dez. 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. Mai 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]