Part 2 · Tokenization - Tokenizers in Real LLMs

실제 언어 모델은 어떤 토크나이저를 사용할까

토큰화라는 개념을 이해했다고 해서 실제 언어 모델의 입력 과정을 모두 이해한 것은 아닙니다. 실제 LLM은 목적에 따라 서로 다른 토크나이저를 사용하며, 각각 고유한 특징을 가지고 있습니다. 이 장에서는 BPE, WordPiece, SentencePiece가 어떻게 동작하며 어떤 차이를 갖는지 살펴봅니다.

LLM Input Pipeline

LLM은 문장을 어떻게 입력받을까?

LLM은 사용자가 입력한 문장을 글자 그대로 처리하지 않습니다. 먼저 토크나이저가 문장을 토큰으로 나누고, 각 토큰을 토큰 ID로 변환합니다.

입력 문장 사용자가 입력한 텍스트
토크나이저 서브워드로 분할
토큰 ID 정수 번호로 변환
임베딩 숫자 벡터로 변환
Transformer 문맥 관계 계산
토크나이저는 모델의 바깥에 있는 단순한 전처리 도구처럼 보이지만, 모델이 읽는 기본 단위와 최대 입력량을 결정하는 중요한 구성 요소입니다.
Tokenizer Families

대표적인 서브워드 토크나이저 계열

실제 모델에서는 여러 종류의 서브워드 알고리즘을 사용합니다. 세부 구현은 다르지만, 제한된 토큰 사전으로 다양한 문자열을 표현하려는 목적은 같습니다.

BPE (Byte Pair Encoding)

작은 단위에서 시작해 자주 함께 나타나는 두 조각을 반복적으로 합칩니다. 많이 반복되는 문자열은 점차 큰 토큰이 됩니다.

l o → lo → low
WordPiece

후보 조각을 합쳤을 때 학습 데이터를 얼마나 효율적으로 표현할 수 있는지 고려하여 토큰 사전을 구성합니다.

read ##ing
SentencePiece / Unigram

공백으로 먼저 단어를 나누지 않고 원문 문자열에서 직접 토큰 후보를 학습할 수 있어 여러 언어에 적용하기 쉽습니다.

▁자연어 처리
BPE와 Byte-level BPE는 같은가?
기본적인 병합 아이디어는 비슷하지만 출발 단위가 다를 수 있습니다. 문자에서 시작하는 BPE도 있고, UTF-8 바이트에서 시작하여 거의 모든 입력 문자열을 표현하도록 설계한 Byte-level BPE도 있습니다.
Model Families

모델 계열과 토크나이저

모델 이름만 보고 토크나이저의 세부 구현을 단정해서는 안 됩니다. 같은 계열에서도 버전과 공개 구현에 따라 어휘 사전과 전처리 방식이 달라질 수 있습니다.

BERT 계열 WordPiece 계열 토큰화를 설명할 때 대표적으로 사용됩니다.
read ##ing
뒤에 이어지는 조각을 ##로 표시하는 예가 많습니다.
GPT 계열 BPE 또는 Byte-level BPE 계열을 사용하는 경우가 많습니다.
Ġreading
일부 시각화에서는 앞 공백을 별도의 기호로 표시합니다.
Llama 등 여러 공개 LLM SentencePiece나 BPE 계열 토크나이저를 기반으로 한 구현이 널리 사용됩니다.
▁reading
실제 결과는 모델 버전과 토크나이저 파일에 따라 달라집니다.
중요: “GPT는 항상 이 방식”, “Llama는 항상 저 방식”처럼 외우기보다, 실제 사용할 모델의 토크나이저 설정과 어휘 파일을 확인하는 습관이 중요합니다.
Token Markers

토큰 앞의 특수 표시는 무엇일까?

토큰화 결과에 보이는 특수 기호는 원문에 있던 문자가 아니라, 공백이나 단어 경계를 보존하기 위한 내부 표시인 경우가 많습니다.

##

read + ##ing

새로운 단어가 시작된 것이 아니라 앞 토큰 뒤에 이어 붙는 조각이라는 의미입니다.

▁

▁cute ▁bear

SentencePiece 출력에서 공백이나 새 단어의 시작을 나타낼 때 사용됩니다.

Ġ

Ġcute Ġbear

일부 BPE 토크나이저의 시각화에서 토큰 앞에 공백이 있음을 나타냅니다.

토큰 마커는 문자열을 다시 원문으로 복원할 때 어디에 공백을 넣고 어떤 조각을 이어 붙일지 알려 주는 정보입니다.
Interactive Explorer

토크나이저 스타일 비교

작음 중간 큼
WordPiece 스타일 결과 0 tokens

이 실습은 세부 알고리즘을 그대로 구현한 것이 아니라, 토큰 사전 크기와 경계 표시의 차이를 이해하기 위한 단순화된 예시입니다.

Token Count and Cost

토큰 수가 왜 중요할까?

문맥 길이

모델의 최대 입력 길이는 일반적으로 글자 수가 아니라 토큰 수를 기준으로 제한됩니다.

계산량과 메모리

같은 내용이라도 토큰 수가 많으면 모델이 처리해야 할 입력 길이가 늘어납니다.

사용량과 비용

토큰 사용량을 기준으로 제한이나 비용을 계산하는 API와 서비스가 많습니다.

토큰 수가 적다고 항상 더 좋은 토크나이저는 아닙니다. 어휘 사전 크기, 다국어 처리, 새로운 단어 표현 능력, 모델의 학습 방식과 함께 평가해야 합니다.
Practical Checks

실제 모델을 사용할 때 확인할 사항

확인 항목 확인해야 하는 이유
토크나이저 파일과 버전 같은 모델 이름이라도 버전에 따라 토큰 ID와 어휘가 달라질 수 있습니다.
특수 토큰 문장 시작·끝, 패딩, 미등록 토큰 등의 ID가 모델마다 다릅니다.
대소문자와 정규화 대소문자 변환, 유니코드 정규화, 공백 처리 방식이 결과에 영향을 줍니다.
최대 문맥 길이 입력과 출력 토큰을 합한 길이가 모델의 제한을 넘지 않아야 합니다.
언어별 토큰 효율 같은 의미라도 언어에 따라 필요한 토큰 수가 달라질 수 있습니다.
모델과 다른 토크나이저를 사용해도 될까?
일반적으로 안 됩니다. 모델은 특정 토큰 ID와 임베딩 테이블의 대응 관계를 학습합니다. 다른 토크나이저를 사용하면 같은 문장이 전혀 다른 ID로 변환되어 모델이 기대하는 입력과 맞지 않게 됩니다.
토크나이저만 교체해서 성능을 높일 수 있을까?
학습이 끝난 모델의 토크나이저만 임의로 교체하기는 어렵습니다. 어휘 사전과 임베딩 행의 대응이 달라지기 때문입니다. 토크나이저를 변경하려면 보통 임베딩 조정과 추가 학습이 함께 필요합니다.
Summary

학습 내용 정리

이번 장에서는 실제 LLM과 언어 모델에서 사용하는 토크나이저의 주요 개념을 살펴보았습니다.

  • BPE는 자주 붙는 조각을 반복적으로 합쳐 토큰 사전을 만듭니다.
  • WordPiece는 데이터 표현 효율을 고려하여 서브워드 후보를 선택합니다.
  • SentencePiece는 공백으로 먼저 나누지 않고 원문 문자열에서 직접 토큰을 학습할 수 있습니다.
  • ##, ▁, Ġ 같은 기호는 토큰의 연결과 공백 정보를 나타냅니다.
  • 토큰 수는 최대 문맥 길이, 계산량, 메모리 사용량과 서비스 비용에 영향을 줄 수 있습니다.
  • 모델은 학습할 때 사용한 토크나이저와 함께 사용해야 합니다.

다음 장에서는 토큰 ID가 임베딩 테이블을 통해 어떻게 숫자 벡터로 변환되는지 살펴봅니다.