Stop sequences (language models) (KO)
Stop Sequence (중지 시퀀스)는 대형 언어 모델(LLM)의 맥락에서, 모델에게 텍스트 생성을 중단하도록 신호를 보내는 특수한 문자 또는 token의 시퀀스입니다[1]. 이 메커니즘은 자기회귀(autoregressive) 언어 모델의 중요한 구성 요소로, 응답의 종료를 제어 가능하고 예측 가능한 방식으로 보장합니다.
Stop sequence를 사용할 때, 모델은 생성의 각 단계에서 이미 생성된 텍스트가 지정된 시퀀스 중 하나로 끝나는지 확인합니다. 일치하는 항목이 발견되면 프로세스는 즉시 중단되며, 이때 stop sequence 자체는 최종 출력에 포함되지 않습니다[2]. 이를 통해 개발자는 요청(prompt) 자체를 수정하지 않고도 응답의 경계를 정확하게 제어할 수 있습니다.
기본 작동 원리
자기회귀 언어 모델에서 텍스트 생성은 token 하나씩 순차적으로 이루어집니다. 각 단계에서 모델은 전체 이전 시퀀스(입력 prompt 및 이미 생성된 텍스트)를 기반으로 다음 token을 예측합니다. 수학적으로 이는 조건부 확률로 표현됩니다:
여기서 는 현재 생성 중인 token, 은 이전에 생성된 token의 시퀀스, 는 입력 시퀀스입니다[3].
Stop sequence 메커니즘은 이 반복적 프로세스를 중단하기 위한 외부 기준으로 작동합니다.
중지 시퀀스의 유형
단독으로 또는 조합하여 사용할 수 있는 몇 가지 주요 중지 메커니즘 유형이 있습니다.
1. 시퀀스 종료 토큰 (EOS)
End-of-Sequence (EOS)는 모델의 어휘(vocabulary)에 내장된 특수 token(예: `<|endoftext|>`)으로, 텍스트 논리 단위의 끝을 표시하기 위해 사용됩니다. 학습 데이터의 모든 텍스트가 이 token으로 끝나기 때문에, 모델은 응답이 완성되었다고 판단할 때 EOS token을 생성하도록 학습됩니다[4]. EOS token이 감지되면 생성이 자동으로 중단됩니다.
연구에 따르면 EOS token의 존재는 attention 아키텍처에 영향을 미칩니다. 모델은 위치를 계산하는 내부 메커니즘을 발전시키지만, 이로 인해 학습 예제의 길이를 크게 초과하는 시퀀스에 대한 외삽(extrapolation) 능력이 제한될 수 있습니다[5].
2. 사용자 정의 시퀀스
개발자가 특정 작업을 위해 지정하는 임의의 문자열입니다. 이는 모델 어휘의 일부가 아니지만 문자 수준에서 추적됩니다. 예시는 다음과 같습니다:
- 줄 바꿈 문자: 단락 이후 중지를 위한 `\n` 또는 `\n\n`.
- 맥락 마커: 대화에서 발화를 구분하기 위한 `Human:`, `User:` 또는 `Q:`.
- 특수 마커: `###`, `</output>` 또는 `END`.
3. 구조적 시퀀스
형식화된 콘텐츠를 생성할 때 특정 구조 요소의 종료에 사용되는 특수 마커로, 매우 중요합니다[1]:
- 코드: 코드 블록을 닫기 위한 삼중 백틱(```).
- JSON/XML: 닫는 괄호(`}`) 또는 태그(`</element>`).
기술적 구현과 문제점
Stop sequence의 효과적인 감지는 여러 복잡성을 수반하는 비자명한(non-trivial) 과제입니다.
감지 알고리즘 및 최적화
실제 시스템에서 감지 프로세스는 다음을 포함합니다:
- 각 단계의 검사: 새로운 token이 생성될 때마다 시스템은 현재 출력이 지정된 stop sequence 중 하나로 끝나는지 확인합니다.
- 부분 일치 처리: 시스템은 시퀀스의 일부가 이미 생성되었지만 완전한 일치가 아직 이루어지지 않은 상황을 추적해야 합니다.
- 다중 기준 검사: 대부분의 시스템(예: OpenAI API)은 여러 개(최대 4개)의 stop sequence를 동시에 추적할 수 있습니다[2].
Hugging Face Transformers 프레임워크에서는 이를 위해 `StoppingCriteria` 추상 클래스가 구현되어 있으며, `MaxLengthCriteria`(길이 기준) 또는 `EosTokenCriteria`(EOS token 기준)와 같은 사용자 정의 중지 기준을 생성할 수 있습니다[4].
문제점 및 한계
- 토크나이제이션 문제: 이것은 주요 기술적 어려움입니다. 동일한 문자 시퀀스(예: `\nUser:`)는 맥락에 따라 다르게 token으로 분할될 수 있습니다. 이는 stop sequence가 여러 token에 걸쳐 분리될 수 있어 신뢰할 수 있는 감지를 어렵게 만듭니다[5].
- 성능: 각 단계에서 여러 개의 긴 stop sequence를 검사하면 생성 속도가 느려질 수 있으며, 특히 실시간으로 긴 시퀀스를 처리할 때 두드러집니다.
- 오탐(False positive): 지정된 시퀀스가 원하는 응답 중간에 우연히 나타나 조기 종료로 이어질 수 있습니다. 따라서 충분히 고유하고 구체적인 마커(예: `\n###\n`)를 선택하는 것이 중요합니다[6].
활용 및 사용 시나리오
Stop sequence는 LLM의 동작을 제어하는 강력한 도구입니다.
- 길이 및 비용 제어: 응답의 최대 크기를 제한하고, 결과적으로 token 소비를 줄일 수 있어 유료 API 사용 시 중요합니다.
- 대화 시스템: 어시스턴트 모델이 사용자 대신 응답을 생성하지 않도록 대화 참여자의 발화를 명확하게 구분하는 데 사용됩니다.
- 구조화된 콘텐츠 생성: JSON, XML 형식의 올바른 출력을 얻거나 코드를 작성할 때, 구조 완성 후 불필요한 정보 추가를 방지하는 데 필수적입니다[7].
- 원치 않는 동작 방지: 반복적이거나 부정확한 콘텐츠(환각, hallucination)가 나타날 때 생성을 중단하는 데 도움이 됩니다.
- 학습 및 fine-tuning: 학습 데이터셋에서는 모델이 올바른 위치에서 응답을 종료하도록 학습시키기 위해 고유한 마커(예: `###`)를 stop sequence로 자주 사용합니다[6].
최신 연구 동향
- 적응형 중지 기준: 맥락과 생성된 텍스트의 품질을 기반으로 종료 지점을 동적으로 결정하는 방법 개발.
- 엔트로피 기반 접근법: token 분포의 엔트로피를 기준으로 사용. 높은 엔트로피는 모델의 불확실성을 나타내며 생성 중단 신호로 활용될 수 있습니다.
참조
- Stop sequence 사용에 관한 OpenAI 문서
- StoppingCriteria에 관한 Hugging Face 문서
참고 문헌
- 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.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]