주제: TK-5 Tokenizer 핵심 개념
토크나이저에서 가장 중요한 것은 구현 세부가 아니라, 왜 subword를 쓰는지와 토큰 수가 비용·문맥 길이·성능에 어떤 영향을 주는지 이해하는 것이다.
1. 왜 필요한가
LLM은 텍스트를 문자 그대로 읽지 않고 토큰 단위로 읽습니다. 그래서 문장을 어떤 토큰 조각으로 나누느냐가 모델 입력 길이, 비용, 희귀어 처리 방식에 직접 영향을 줍니다.
2. 왜 subword를 쓰나
- 단어 전체를 토큰으로 쓰면 vocabulary가 너무 커집니다.
- 새 단어나 희귀 단어를 만나면 OOV(out-of-vocabulary) 문제가 심해집니다.
- 그래서 단어와 문자 사이 중간 단위인 subword를 많이 씁니다.
3. 최소 구분만 알면 되는 세 가지
| 방식 | 핵심 아이디어 | 알아둘 포인트 |
|---|---|---|
| BPE | 자주 함께 나오는 조각을 merge | GPT 계열에서 자주 보며 subword의 기본 감각을 잡기 좋음 |
| WordPiece | 언어모델 관점의 점수로 subword 선택 | BERT 계열과 연결해서 이해하면 충분 |
| SentencePiece | 공백 기준 전처리 없이 문자열 전체에서 학습 | 다국어, 한국어, T5 계열에서 자주 등장 |
4. 진짜 중요한 trade-off
- 토큰이 너무 잘게 쪼개지면: sequence length가 길어져 비용과 latency가 증가합니다.
- 토큰이 너무 크게 묶이면: 희귀어, 신조어, 도메인 용어 처리가 어려워집니다.
- vocab size는 memory와 표현력 trade-off와 연결됩니다.
5. 실전에서 어디까지 알면 충분한가
입문~중급 기준으로는 아래를 설명할 수 있으면 충분합니다.
- 왜 word-level보다 subword를 많이 쓰는가
- BPE / WordPiece / SentencePiece 차이의 핵심 한 줄
- 토큰 수가 context window, latency, 비용과 왜 연결되는가
- 한국어/영어/코드에서 토큰 길이가 왜 다르게 나오는가
6. 굳이 지금 안 파도 되는 것
- merge table 구현 세부
- byte-level 예외처리 디테일
- 각 tokenizer 라이브러리 내부 최적화
체크리스트
- 왜 subword tokenization을 쓰는가?
- BPE, WordPiece, SentencePiece 차이를 한 줄씩 말할 수 있는가?
- 토큰 수가 왜 비용과 문맥 길이에 직접 연결되는가?
- 토크나이저가 모델 성능에도 영향을 줄 수 있는 이유를 설명할 수 있는가?