콘텐츠로 바로가기

LLM Tokenization & BPE

텍스트를 LLM이 연산 가능한 정수 시퀀스로 변환하는 공정. 문자를 직접 사용하면 어휘집이 너무 작아지고, 단어 단위는 미등록어(OOV) 문제가 생긴다.

지식 성숙도: evergreen

목차 보기22

1. Overview

LLM 토큰화와 BPE(LLM Tokenization & BPE)는 텍스트를 LLM이 연산할 수 있는 정수 시퀀스(토큰 ID)로 바꾸는 전처리 공정입니다. 모델은 문자열을 직접 읽지 못하므로, 입력이 어떤 단위로 쪼개지는지가 어휘집 크기, 컨텍스트 윈도우 사용량, 임베딩 메모리, 언어별 비용에 모두 영향을 줍니다.

단위를 어떻게 정할지에는 양 극단이 있습니다. 문자 단위로 쪼개면 어휘집은 작아지지만 시퀀스가 길어지고, 단어 단위로 쪼개면 시퀀스는 짧아지지만 사전에 없는 단어(OOV, Out-of-Vocabulary)를 표현할 수 없습니다. **Byte Pair Encoding(BPE)**은 자주 함께 나오는 문자 쌍을 반복적으로 병합해 이 둘 사이의 서브워드(subword) 어휘집을 만드는 대표적 방법입니다. 이 글은 BPE의 동작과 어휘집 크기의 효과, 언어별 토큰 수 차이가 실무에 주는 영향을 정리합니다.

2. Scope & Boundaries

In-Scope

  • 서브워드 토큰화 (Subword Tokenization): 문자, 단어, 서브워드 단위의 장단점과 BPE의 병합 규칙.
  • 어휘집 크기 (Vocabulary Size): VV 가 임베딩 행렬 크기와 시퀀스 길이에 미치는 영향.
  • 토큰 수의 실무적 의미: 컨텍스트 윈도우 소비량, 언어별 토큰 수 차이.

Out-of-Scope

  • 토큰 ID를 벡터로 바꾼 이후의 의미 공간 → LLM Embedding Spaces 영역.
  • 토큰 시퀀스로부터 다음 토큰을 예측하는 학습 → Next-Token Prediction 영역.
  • 자연어 처리의 형태소 분석 규칙: 언어학적 분석기는 이 글의 범위가 아닙니다.

Boundaries

  • BPE vs. 형태소 분석: BPE는 말뭉치의 통계적 빈도로 병합 규칙을 배우며 언어학적 경계를 보장하지 않습니다. 그래서 서브워드가 형태소와 일치할 수도, 그렇지 않을 수도 있습니다.
  • 토큰 vs. 단어: 토큰은 모델이 쓰는 처리 단위일 뿐 단어와 1:1로 대응하지 않습니다. 같은 문장도 토크나이저에 따라 토큰 수가 달라집니다.

3. Counterexample

  • "토큰 수 = 단어 수" 가정: 비용 산정이나 컨텍스트 길이 계산을 단어 수로 하는 경우. 같은 문장이라도 언어와 모델에 따라 토큰 수가 달라지며, 일부 토크나이저 측정에서는 한국어가 영어의 1.5~3배 토큰을 소비하기도 합니다(토크나이저별로 편차가 큽니다). 한국어 서비스에서 영어 기준 토큰 예산을 그대로 쓰면 컨텍스트가 일찍 소진됩니다.
  • 어휘집을 무한정 키우면 좋다는 가정: 어휘집이 커지면 같은 문장이 더 적은 토큰으로 표현되지만, 임베딩 행렬이 V×dmodelV \times d_{model} 이므로 메모리가 선형으로 늘고, 드물게 나오는 토큰은 충분히 학습되지 못합니다.
  • "OOV가 완전히 사라진다"는 과장: 서브워드 분해는 사전에 없는 단어도 더 작은 조각으로 표현하게 해 주지만, 기본 문자 집합에 없는 문자는 별도 처리(예: 바이트 단위 폴백)가 있어야 합니다. GPT-2는 바이트 수준 BPE를 사용해 이 문제를 피했습니다.

4. Prerequisites

  • 문자 인코딩 (Basic): 유니코드와 UTF-8 바이트 표현을 알아야 바이트 수준 토큰화를 이해할 수 있습니다.
  • 해시 맵과 가변 길이 배열 (Basic): 병합 규칙 테이블과 토큰 ID 매핑을 구현하는 데 필요합니다.
  • 빈도 기반 통계 (Recommended): 쌍 빈도 계산이 BPE의 핵심 단계입니다.

5. Learning Map

Sequence Core Cluster Objective & Description Evidence (BoK)
1 Why Subwords 문자 단위와 단어 단위의 한계를 비교하고 서브워드가 절충안이 되는 이유를 이해합니다. Primary:Sennrich2016
2 BPE Algorithm 가장 자주 붙어 나오는 문자 쌍을 반복 병합해 어휘집을 구축하는 절차를 구현합니다. Primary:Sennrich2016
3 Vocabulary Size 어휘집 크기가 임베딩 행렬 크기와 시퀀스 길이 사이의 균형을 어떻게 정하는지 분석합니다. Primary:Radford2019
4 Cross-lingual Cost 언어별 토큰 수 차이가 비용과 컨텍스트에 주는 영향을 측정합니다. Secondary:Petrov2023

연결 노트

  • LLM Embedding Spaces — 토큰 ID가 벡터로 변환되는 다음 단계
  • Next-Token Prediction — 토큰 시퀀스를 입력으로 받아 다음 토큰을 예측
  • ReAct Pattern in LLMs — 에이전트가 tool use 결과를 텍스트로 받아 다시 토큰화하여 처리

6. Learning Topics

Basic

Core Topic 01: 서브워드 토큰화의 필요성 (Why Subwords)

  • Why to Learn: 텍스트를 어떤 단위로 자를지가 어휘집 크기와 시퀀스 길이를 동시에 결정하므로, 이 트레이드오프를 알아야 토크나이저 설정과 비용 문제를 이해할 수 있습니다.
  • What to Learn:
    • Concepts: 문자 단위는 어휘집이 매우 작은 대신 시퀀스가 길어지고, 단어 단위는 사전에 없는 단어(OOV)를 표현하지 못하는 문제가 있습니다.
    • Skills: 단위별 어휘집 크기와 평균 시퀀스 길이를 같은 말뭉치에서 비교.
    • Tools: Hugging Face tokenizers, tiktoken.
    • Trade-offs: 서브워드는 어휘집을 적당한 크기로 유지하면서 희귀 단어를 조각으로 표현하는 대신, 단어 경계와 일치하지 않는 조각이 생깁니다.
  • How to Learn:
    • 1단계: 같은 문단을 문자, 공백 단위 단어, 서브워드로 각각 잘라 어휘집 크기와 토큰 수를 표로 정리합니다.
    • 2단계: 사전에 없는 신조어가 서브워드로 어떻게 분해되는지 관찰합니다.
  • Implement: 세 가지 단위로 토큰화하고 통계를 출력하는 비교 스크립트.

Core Topic 02: Byte Pair Encoding 알고리즘 (BPE)

  • Why to Learn: 대부분의 현대 LLM 토크나이저가 BPE 계열이므로, 병합 절차를 이해하면 어휘집이 어떻게 만들어지고 새 입력이 어떻게 쪼개지는지 예측할 수 있습니다.
  • What to Learn:
    • Concepts: 말뭉치에서 인접해 가장 많이 등장하는 기호 쌍을 찾아 하나의 새 기호로 합치는 과정을 정해진 횟수만큼 반복해 어휘집을 만듭니다. 드문 단어는 더 작은 조각들의 나열로 표현되므로 사전에 없는 단어도 별도 미등록 처리 없이 다룰 수 있습니다.
    • Skills: 학습 단계(병합 규칙 학습)와 적용 단계(학습된 규칙을 우선순위 순으로 적용)의 구분.
    • Tools: tiktoken, SentencePiece.
    • Trade-offs: BPE는 데이터 압축 알고리즘에서 유래했으며(Gage, 1994), Sennrich 등이 신경망 기계 번역의 희귀 단어 문제에 적용했습니다. 병합 횟수가 어휘집 크기를 결정합니다.

분해 예시와 어휘집 규모의 감각은 다음과 같습니다.

CODE
입력:   "tokenization"
결과:   ["token", "ization"]     # 두 개의 서브워드로 분해
어휘집: V = 약 3만 ~ 10만 개 토큰
  • How to Learn:
    • 1단계: 작은 말뭉치(예: low lower newest widest)에서 쌍 빈도를 직접 세고 병합을 3~5회 반복해 어휘집 변화를 기록합니다.
    • 2단계: 학습된 규칙으로 새 단어를 토큰화해 위 코드 블록과 같은 서브워드 분해가 나오는지 확인합니다.
  • Implement: 병합 규칙을 학습하고 문자열을 토큰 ID 배열로 변환하는 최소 SimpleBPE.

Practical

Core Topic 03: 토큰 수가 의미하는 것 (Why It Matters)

  • Why to Learn: 토큰은 LLM의 연산·비용·컨텍스트 소비의 기본 단위이므로 서비스 설계 단계에서 토큰 수를 추정할 수 있어야 합니다.
  • What to Learn:
    • Concepts: LLM은 토큰 하나를 연산 단위로 처리하므로, 문장이 몇 개의 토큰이 되는지가 컨텍스트 윈도우를 얼마나 차지하는지를 정합니다.
    • Skills: 같은 문장이라도 언어·모델에 따라 토큰 수가 달라지며(한국어 ≈ 영어의 1.5~3배 토큰 소비), 이를 직접 측정합니다. Vocabulary size가 임베딩 행렬 크기(V×dmodelV \times d_{model})를 결정하므로 메모리와 직결됩니다.
    • Tools: 모델별 토크나이저 계산기.
    • Trade-offs: 어휘집을 키우면 토큰 수가 줄어 컨텍스트와 속도에 유리하지만 임베딩과 출력층 메모리가 커집니다.
  • How to Learn:
    • 1단계: 같은 의미의 한국어·영어 문장을 여러 토크나이저로 세어 비율을 표로 만듭니다.
    • 2단계: 어휘집 크기를 30,000에서 100,000으로 늘렸을 때 V×dmodelV \times d_{model} 의 원소 수가 몇 배가 되는지 계산합니다.
  • Implement: 문자열과 토크나이저를 입력받아 토큰 수와 예상 컨텍스트 사용 비율을 출력하는 도구.

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry:ID) Flags(core)
Token 모델이 처리하는 텍스트의 기본 단위로, 문자·서브워드·단어 조각에 정수 ID가 대응됩니다. 기본 입력 단위 Vocabulary / ID vs. Word 단어와 1:1이라고 가정함 Primary:Sennrich2016 core
BPE 자주 붙어 나오는 기호 쌍을 반복적으로 병합해 서브워드 어휘집을 만드는 알고리즘입니다. 기본 어휘집 구축 Subword / Merge Rule vs. WordPiece 언어학적 경계를 보장한다고 오해함 Primary:Sennrich2016 core
Vocabulary Size (VV) 토크나이저가 구분하는 서로 다른 토큰의 총 개수입니다. 권장 설계 변수 Embedding Matrix vs. Sequence Length 클수록 항상 좋다고 가정함 Primary:Radford2019 core
OOV 어휘집에 없어 표현되지 않는 단어를 뜻하며, 서브워드 분해로 크게 줄어듭니다. 기본 한계 개념 Subword / Byte-level vs. Unknown Token 서브워드 방식에서도 항상 사라진다고 믿음 Primary:Sennrich2016 core
Byte-level BPE 문자 대신 UTF-8 바이트를 기본 단위로 삼아 모든 입력을 표현 가능하게 한 BPE 변형입니다. 심화 폴백 UTF-8 vs. Character BPE 토큰 수가 항상 줄어든다고 오해함 Primary:Radford2019 core

8. References

Primary References

  • [Sennrich, Haddow & Birch, 2016. "Neural Machine Translation of Rare Words with Subword Units." arXiv:1508.07909] — NMT에 BPE를 적용해 서브워드로 희귀 단어를 표현한 논문.
  • [Radford et al., 2019. "Language Models are Unsupervised Multitask Learners." OpenAI] — GPT-2의 바이트 수준 BPE 토크나이저 사용.

Secondary References

  • [Gage, 1994. "A New Algorithm for Data Compression." C Users Journal 12(2)] — BPE의 원형인 데이터 압축 알고리즘.
  • [Kudo & Richardson, 2018. "SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing." arXiv:1808.06226] — 공백 처리까지 포함한 언어 독립 토크나이저.
  • [Petrov et al., 2023. "Language Model Tokenizers Introduce Unfairness Between Languages." arXiv:2305.15425] — 언어별 토큰 수 차이와 그 영향.

Industry References

  • [OpenAI tiktoken (GitHub: openai/tiktoken)] — BPE 기반 토크나이저 구현과 토큰 수 계산.
  • [Hugging Face Tokenizers Documentation] — BPE, WordPiece, Unigram 구현과 사용법.

9. Final Checklist

Primary Checklist

  • 문자, 단어, 서브워드 단위의 장단점을 어휘집 크기와 시퀀스 길이로 비교 설명할 수 있는가?
  • BPE가 쌍 빈도를 세어 병합하는 절차를 작은 예시로 손으로 수행할 수 있는가?

Secondary Checklist

  • 어휘집 크기 VV 가 임베딩 행렬 V×dmodelV \times d_{model} 의 메모리에 미치는 영향을 계산할 수 있는가?
  • 서브워드 방식에서도 OOV가 완전히 사라지지 않는 이유와 바이트 수준 폴백의 역할을 설명할 수 있는가?

Industry Checklist

  • 서비스 대상 언어(예: 한국어)의 토큰 수를 실제 토크나이저로 측정해 컨텍스트 예산과 비용에 반영했는가?
  • 모델을 바꿀 때 토크나이저가 달라져 토큰 수와 비용이 달라질 수 있음을 확인했는가?

Transformer Architecture & LLM Foundations

5 / 7