대규모 언어 모델(LLM)이 인간의 언어를 이해하고 생성하는 과정의 가장 첫 단계에는 토큰화(tokenization)라는 핵심적인 절차가 존재한다.
토큰화는 인간이 읽을 수 있는 텍스트를 모델이 처리할 수 있는 숫자 형식의 데이터, 즉 토큰(token)의 나열로 변환하는 필수적인 가교 역할을 한다. 이는 단순한 데이터 전처리 단계를 넘어, 모델이 언어를 인식하는 방식을 근본적으로 결정하는 중요한 아키텍처 설계의 일부이다.
토큰화 전략의 선택은 본질적으로 세 가지 상충하는 목표 사이의 균형을 맞추는 문제, 즉 핵심 삼중고(Core Trilemma)를 해결하려는 시도로 볼 수 있다.
의미론적 표현 (Semantic Representation): 토큰은 언어적으로 의미 있는 단위여야 한다.
어휘 크기 (Vocabulary Size): 모델이 사용하는 모든 고유 토큰의 집합(어휘)은 관리 가능한 크기여야 한다.
시퀀스 길이 (Sequence Length): 주어진 텍스트를 표현하는 토큰의 수는 모델의 컨텍스트 dnlsehdn(context window) 내에서 계산 부하를 줄일 수 있도록 가능한 한 짧아야 한다.
이러한 토큰화 방식의 선택은 LLM 기반 애플리케이션의 비용, 정확도, 그리고 속도에 직접적인 영향을 미친다.
서브워드 토큰화가 표준으로 자리 잡기 전, 자연어 처리 분야는 단어 수준과 문자 수준이라는 두 가지 극단적인 접근 방식에 의존했다.
이 두 방식은 각각 직관적인 장점을 가졌지만, 현대 LLM이 요구하는 규모와 유연성을 감당할 수 없는 치명적인 단점을 내포하고 있었다. 이러한 고전적 방법론의 실패는 필연적으로 새로운 패러다임의 등장을 촉진했다.
가장 직관적인 토큰화 방식은 텍스트를 공백이나 구두점을 기준으로 나누어 각 단어를 하나의 토큰으로 취급하는 것이다. 이 방식은 인간의 언어 인식 방식과 유사하지만, 기계 학습 모델에 적용될 때 세 가지 심각한 결함에 직면한다.
첫째, 가장 치명적인 문제는 미등록 단어(OOV) 문제이다. 모델은 훈련 데이터에서 보지 못한 단어(희귀 단어, 신조어, 오탈자 등)를 처리할 수 없다. 이 경우, 해당 단어는 정보 손실을 유발하는 일반적인 [UNK](unknown) 토큰으로 대체된다. 이는 모델이 중요한 의미를 파악할 기회를 원천적으로 차단한다.
둘째, 어휘 크기 문제이다. 영어와 같은 언어의 모든 단어를 포함하는 어휘집을 구축하려면 수십만, 심지어 수백만 개의 고유 토큰이 필요하다. 이는 모델의 임베딩 계층을 계산적으로나 메모리 측면에서 비현실적으로 크게 만든다.
셋째, 형태론적 무지(Morphological Blindness)이다. 이 방식은 run, running, ran과 같이 형태론적으로 관련된 단어들 사이의 관계를 인식하지 못하고, 이를 완전히 별개의 토큰으로 취급한다. 이는 모델이 문법적 패턴을 일반화하는 능력을 저해하는 요인이 된다.
단어 수준 토큰화의 OOV 문제를 해결하기 위한 대안으로 텍스트를 개별 문자로 분할하는 방식이 제시되었다. 이 접근법은 OOV 문제를 완벽하게 해결하며, 아스키(ASCII)나 유니코드(Unicode) 문자와 같이 매우 작고 고정된 크기의 어휘집을 갖는다는 장점이 있다.
하지만 이 방식 역시 두 가지 중대한 단점을 가진다.
첫째, 극단적인 시퀀스 길이이다. 텍스트를 문자 단위로 표현하면 시퀀스 길이가 매우 길어진다. 이는 시퀀스 길이에 따라 제곱()으로 계산량이 증가하는 트랜스포머 아키텍처의 셀프 어텐션(self-attention) 메커니즘에 엄청난 계산 부담을 준다.
둘째, 의미 단위의 파괴이다. 개별 문자는 그 자체로 거의 의미를 가지지 않는다. 모델은 단어와 같은 기본적인 개념을 처음부터 학습해야 하며, 이는 매우 비효율적인 과정이다.
단어와 문자 수준 토큰화의 실패는 단순한 기술적 한계를 넘어선 개념적 문제였다. 이들은 각각 의미의 풍부함(단어)과 어휘의 완전성(문자)이라는 양립하기 어려운 가치 사이의 잘못된 이분법을 대표했다.
이 내재된 충돌은 두 가지 요구 사항의 균형을 맞출 수 있는 새로운 패러다임, 즉 서브워드 토큰화의 필요성을 야기했다. 서브워드 토큰화는 자주 사용되는 단어는 하나의 단위로, 희귀한 단어는 의미 있는 더 작은 조각들의 조합으로 표현함으로써 이 딜레마를 해결하고자 했다.
| 기준 | 단어 수준 | 문자 수준 | 서브워드 수준 |
|---|---|---|---|
| 어휘 크기 | 매우 큼 (수십만 ~ 수백만) | 매우 작음 (수백 ~ 수천) | 관리 가능 (수만) |
| 시퀀스 길이 | 짧음 | 매우 긺 | 중간 |
| OOV 처리 | 불가능 | 완벽하게 처리 | 효과적으로 처리 |
| 의미 무결성 | 높음 (단어 단위) | 매우 낮음 (문자 단위) | 중간 (의미있는 조각) |
| 계산 효율성 | 낮음 (큰 임베딩 행렬) | 매우 낮음 (긴 시퀀스) | 높음 (균형) |
| 핵심 단점 | 어휘 폭발 및 OOV 문제 | 의미 파괴 및 계산 비효율성 | 알고리즘 복잡성 |
단어와 문자 수준 토큰화의 한계를 극복하기 위해 등장한 서브워드 토큰화는 현대 LLM의 표준으로 자리 잡았다.
이 접근법의 핵심은 고정된 어휘 크기 내에서 모든 단어를 효율적으로 표현하는 것이다. 자주 등장하는 단어는 하나의 토큰으로 유하고, 희귀하거나 처음 보는 단어는 의미 있는 더 작은 단위(subword)의 조합으로 분해한다. BPE, WordPiece, Unigram 등 다양한 알고리즘이 이 목표를 각기 다른 방식으로 달성한다.
바이트 페어 인코딩(BPE)은 원래 1994년 필립 게이지(Philip Gage)에 의해 데이터 압축 알고리즘으로 제안되었으나, 이후 OpenAI가 GPT 모델에 적용하면서 NLP 토큰화의 표준 기술 중 하나로 자리 잡았다. NLP에서의 BPE는 최대 압축이 아닌, 미리 정해진 크기의 어휘 사전을 구축하는 것을 목표로 한다.
BPE의 핵심적인 변형은 바이트 수준 BPE이다. 이 방식은 텍스트를 문자 단위가 아닌, UTF-8을 사용해 바이트(byte) 시퀀스로 먼저 인코딩한 후 BPE 알고리즘을 적용한다. 1바이트는 8비트로 구성되어 0부터 255까지 총 256개의 값을 가질 수 있으므로, 기본 어휘집은 이 256개의 바이트로 시작한다.
이 접근법의 중요성은 모든 종류의 텍스트 문자열을 미등록 심볼 없이 토큰화할 수 있다는 점에 있다. 256개의 기본 바이트는 모든 데이터를 표현할 수 있기 때문에, 이모지나 여러 언어의 특수 문자를 포함한 그 어떤 입력도 OOV 문제 없이 처리할 수 있다. 이는 다국어 모델과 같이 다양한 입력을 처리해야 하는 현대 LLM에게 필수적인 기능이다.
BPE가 효과적이긴 하지만, 단순히 빈도에만 의존하는 탐욕적(greedy) 방식이라는 한계가 있다. 이에 따라 언어학적 구조를 더 잘 반영하기 위한 대안적 알고리즘들이 개발되었다.
WordPiece는 BPE와 유사하지만 병합 기준이 다르다. 가장 빈번한 쌍을 선택하는 대신, 병합했을 때 훈련 데이터의 가능도(likelihood)를 가장 크게 높이는 쌍을 선택한다. 이 방식은 BPE보다 언어학적으로 더 타당한 서브워드를 생성하는 경향이 있다.
유니그램 모델은 더 정교한 확률적 접근법을 취한다. 이 알고리즘은 가능한 모든 부분 문자열과 같은 거대한 초기 후보 집합에서 시작하여, 유니그램 언어 모델 하에서 전체 코퍼스의 가능도에 가장 적게 기여하는 서브워드를 반복적으로 제거한다. 이 과정은 최종 어휘 크기가 목표치에 도달할 때까지 계속된다.
유니그램 모델의 가장 큰 특징은 하나의 단어에 대해 여러 개의 가능한 분할 방식을 확률적으로 모델링한다는 점이다. 예를 들어, "unbelievable"이라는 단어는 ['un', 'believable'] 또는 ['un', 'believe', 'able'] 등 여러 방식으로 분할될 수 있다. 훈련 중에 이러한 분할 방식을 무작위로 샘플링하는 서브워드 정규화(subword regularization)를 적용하여, 모델이 토큰화 방식의 미세한 차이에 대해 더 강건해지도록 만들 수 있다.
BPE에서 WordPiece와 유니그램으로의 발전은 기계 학습 분야의 더 큰 흐름을 반영한다. 즉, 단순한 빈도 기반의 휴리스틱(BPE)에서 더 원칙적이고 확률적인 모델(Unigram)로 이동하는 것이다.
BPE는 압축 기술에서 파생된 공학적 해결책인 반면, 유니그램은 통계 모델링에서 파생된 기계 학습적 해결책이다. 이는 토큰화 과정 자체에 더 근본적인 언어학적 이해를 통합하려는 시도로, 이 분야의 성숙을 보여주는 지표라 할 수 있다.
| 기준 | BPE (Byte-Pair Encoding) | WordPiece | 유니그램 (Unigram) |
|---|---|---|---|
| 핵심 원리 | 가장 빈번하게 등장하는 인접 쌍을 병합 | 병합 시 데이터의 가능도(likelihood)를 최대화하는 쌍을 선택 | 전체 코퍼스 가능도를 최대화하는 어휘 사전을 학습하고, 확률에 기반해 분할 |
| 주요 특징 | 탐욕적(Greedy)이고 결정론적(Deterministic)인 병합 방식 | 가능도 기반의 언어학적 병합 기준 | 확률적 모델, 다중 분할 가능, 서브워드 정규화 지원 |
| 주요 사용 사례 | GPT 계열, LLaMA, RoBERTa 등 | BERT, DistilBERT, Electra 등 | T5, ALBERT, XLNet 등 |
| 장점/단점 | 장점: 구현이 간단하고 빠름. 단점: 언어학적 구조를 고려하지 않음. | 장점: 언어학적으로 더 타당한 서브워드 생성. 단점: BPE보다 계산 복잡성이 높음. | 장점: 확률적 유연성, 정규화를 통한 모델 강건성 향상. 단점: 가장 계산적으로 복잡함. |
서브워드 알고리즘이 '무엇을' 할 것인지를 정의한다면, SentencePiece는 '어떻게' 할 것인지에 대한 강력한 프레임워크를 제공한다.
구글에 의해 개발된 SentencePiece는 특정 알고리즘이라기보다는, 언어에 구애받지 않는 텍스트 처리 철학을 구현한 종합적인 툴킷이다. 그 혁신성은 현대 다국어 LLM의 개발을 가능하게 한 핵심 요소로 평가받는다.
SentencePiece의 가장 중요한 혁신은 언어별 사전 처리 없이 원시 텍스트(raw text)에서 직접 훈련한다는 점이다.
이전의 토크나이저들은 대부분 입력 텍스트가 공백으로 분리되어 있을 것을 가정했다. 이로 인해 영어와 같은 언어는 처리가 용이했지만, 한국어, 일본어, 중국어처럼 단어 경계가 명확하지 않은 언어는 형태소 분석기와 같은 복잡한 언어별 전처리 도구를 먼저 거쳐야만 했다.
SentencePiece는 텍스트를 단순히 유니코드 문자의 연속으로 취급함으로써 이러한 전처리 과정을 완전히 제거했다. 이는 모든 언어를 동일한 방식으로 처리할 수 있게 하여, 다국어 모델을 위한 데이터 준비 파이프라인을 획기적으로 단순화시켰다.
SentencePiece의 또 다른 핵심 기능은 공백(whitespace)을 일반 기호처럼 취급하는 것이다. 공백을 버리는 대신, 특수한 메타 기호(예: U+2581)로 치환하여 텍스트 내에 보존한다.
이 방식의 중요성은 토큰화 과정이 완벽하게 가역적(reversible), 즉 무손실(lossless)이 된다는 점에 있다.
토큰화된 시퀀스로부터 원본 텍스트를 모호함 없이 완벽하게 복원(detokenization)할 수 있다. 예를 들어, 일반적인 토크나이저는 "World."와 "World."를 동일하게 `` 로 토큰화하여 원래의 공백 정보를 소실시킬 수 있다.
하지만 SentencePiece는 후자를 와 같이 토큰화하여 공백 정보를 보존하므로, 원본 문장을 정확히 복원할 수 있다. 이는 자연스러운 텍스트 생성에서 문법적, 의미적으로 중요한 공백을 올바르게 처리하는 데 결정적인 역할을 한다.
이러한 특징들은 SentencePiece를 현대 다국어 LLM에 없어서는 안 될 도구로 만들었다.
단어 경계가 불분명한 언어(예: 한국어, 중국어, 일본어, 태국어)를 영어와 동일한 방식으로 쉽게 처리할 수 있다.
BPE와 유니그램 알고리즘을 모두 구현하여 개발자에게 유연성을 제공한다.
C++로 구현되어 매우 효율적이며, 모델 파일만 있으면 어떤 플랫폼에서든 일관된 결과를 보장하는 독립적인 구조를 가진다.
결론적으로 SentencePiece는 단순한 도구를 넘어 토큰화에 대한 철학적 전환을 제시했다. 토큰화는 처리 중인 언어에 대해 어떠한 가정도 하지 않는, 완전히 가역적이고 데이터 기반의 프로세스여야 한다는 것이다. 이 철학은 초기 NLP의 영어 중심적 편향을 극복하고 진정한 의미의 글로벌 LLM을 탄생시키는 데 필수적이었다.
토큰화 전략의 선택은 모델이 학습을 시작하기 전에 언어를 어떻게 바라볼 것인지에 대한 구조를 강제하는 귀납적 편향(inductive bias)을 설정하는 행위이다.
좋은 토크나이저는 언어의 실제 구조와 유사한 편향을 제공하여 모델이 더 효율적으로 학습하도록 돕는다. 반면, 나쁜 토크나이저는 결함 있는 편향(예: "run"과 "running"을 무관하게 취급)을 부과하여 모델이 이를 교정하는 데 불필요한 용량을 낭비하게 만든다.
따라서 서브워드 토큰화의 채택은 기술적 편의를 넘어, 모델의 학습 효율과 최종 성능을 극대화하기 위한 근본적인 전략적 결정이다.
토큰화 전략의 중심에는 근본적인 트레이드오프가 존재한다. 더 큰 어휘 크기는 더 많은 일반 단어와 서브워드가 단일 토큰으로 표현될 수 있게 하여 더 짧은 시퀀스 길이를 유도한다. 시퀀스가 짧아지면 훈련 및 추론 과정에서 필요한 계산량과 메모리 사용량이 줄어든다. 그러나 어휘 크기가 커지면 모델의 임베딩 및 출력 투영 행렬의 크기가 증가하여 전체 매개변수 수가 늘어날 수 있다.
이러한 선택은 경제적, 성능적 결과로 직결된다. 요청당 토큰 수가 적을수록 최종 사용자와 기업에게는 API 비용이 절감되고 응답 시간이 단축된다. 따라서 효율적인 토큰화는 LLM 서비스의 비용 효율성과 사용자 경험을 직접적으로 결정하는 요소이다.
서브워드 토큰화의 핵심적인 장점은 희귀 단어, 기술 용어, 고유명사, 신조어 등을 알려진 더 작은 단위로 분해하여 처리하는 능력에 있다. 예를 들어, "tokenization"이라는 단어는 [token, iz, ation]과 같이 분해될 수 있다. 모델이 "token"이라는 부분을 이미 알고 있다면, 처음 보는 단어라도 그 의미를 유추할 수 있다.
이러한 접근법은 특히 형태론적으로 풍부한 언어(예: 한국어, 터키어, 핀란드어)에서 매우 효과적이다.
이들 언어에서는 하나의 어근에서 수백 가지의 활용형이 파생될 수 있다. 단어 수준 토큰화는 이를 감당할 수 없지만, 서브워드 방식은 어근과 접사를 분리함으로써 자연스럽게 처리한다. 이처럼 서브워드 토큰화는 모델이 단어의 내부 구조를 이해하도록 유도하여, 문법적 관계를 더 쉽게 학습하고 일반화할 수 있도록 돕는다.
다국어 모델의 경우, 여러 언어로 구성된 대규모 코퍼스에서 단일 토크나이저를 훈련시킨다.
이 과정은 여러 언어에 걸쳐 공유되는 서브워드 단위(예: 숫자, 구두점, "nation"(영어)과 "nación"(스페인어) 같은 동족어)를 학습하도록 유도한다.
이러한 공유된 표현은 한 언어에서 학습한 지식이 다른 언어로 전이되는 교차 언어 전이 학습(cross-lingual transfer learning)을 촉진할 수 있다.
이러한 다국어 처리 능력의 기술적 기반은 바로 바이트 수준 BPE와 SentencePiece이다. 이 두 기술은 어떤 언어의 어떤 문자라도 실패 없이 처리할 수 있음을 보장하며, 진정한 의미의 다국어 LLM을 가능하게 하는 핵심 동력이다.
LLM 분야가 계속해서 발전함에 따라, 토큰화 전략 역시 진화하고 있다. 최근 가장 두드러지는 경향은 어휘 크기를 대폭 확장하는 것으로, 이는 모델의 효율성과 성능을 한 단계 끌어올리기 위한 전략적 움직임으로 분석된다.
최신 SOTA(State-of-the-Art) 모델들은 과거 모델들에 비해 훨씬 더 큰 어휘 크기를 채택하는 경향을 명확히 보여준다. 예를 들어, GPT-2는 약 5만 개의 어휘를 사용했지만 , GPT-3.5/4는 10만 개 이상으로 확장되었다.
최근 발표된 Meta의 LLaMA 3는 12만 8천 개의 토큰을 사용하는 토크나이저를 채택했으며, 이는 모델이 텍스트, 특히 코드를 더 효율적으로 인코딩하는 데 기여한다.
이러한 추세의 근거는 명확하다. 어휘 크기가 클수록 더 많은 단어와 구문(특히 프로그래밍 언어나 비영어권 언어)이 단일 토큰으로 표현될 수 있다. 이는 상당한 시퀀스 길이 감소, 즉 더 나은 압축률로 이어진다. 결과적으로 계산 효율성이 향상되고, 제한된 컨텍스트 창 내에서 더 많은 정보를 처리할 수 있게 된다.
| 모델 | 토크나이저 알고리즘 | 프레임워크 | 어휘 크기 | 컨텍스트 윈도우 |
|---|---|---|---|---|
| GPT-4o | BPE | Tiktoken | 100,256+ | 128k |
| LLaMA 3 | BPE | Tiktoken | 128,000 | 8k (확장 가능) |
| Gemma 2 | BPE | SentencePiece | 256,000 | 8k |
| Claude 3 | BPE | (자체) | 200,000+ | 200k |
| Mixtral-8x22B | BPE | SentencePiece | 32,000 | 64k |
| Grok-1.5 | (미공개) | (미공개) | (미공개) | 128k |
더 큰 어휘 크기가 이론적으로 효율성을 높일 것이라는 기대는 최근 연구를 통해 경험적으로도 입증되고 있다. Takase 등의 2025년 연구는 어휘 크기와 LLM 성능 간의 관계를 체계적으로 분석한 중요한 증거를 제시한다.
이 연구의 핵심 발견은 다음과 같다.
성능 향상: 더 큰 어휘 크기는 영어와 일본어 LLM 모두에서 다운스트림 작업의 성능을 향상시켰다.
훈련 조건 무관: 이러한 성능 향상은 총 훈련 토큰 수를 고정하든, 훈련 에포크(epoch) 수를 고정하든 일관되게 나타났다.
훈련 효율성 증대: 특히 훈련 에포크 수를 고정했을 때, 더 큰 어휘를 사용한 모델은 더 적은 계산 비용(GPU 시간)으로 더 높은 성능에 도달하여 훈련 효율성이 향상됨을 보였다.
구조적 개선: 이러한 성능 향상은 단순히 매개변수 수가 증가했기 때문이 아니라, 어휘 구조 자체가 개선되었기 때문임이 밝혀졌다. 작은 어휘를 가진 모델은 관련 매개변수 수를 늘려도 성능이 향상되지 않았다.
이러한 연구 결과는 어휘 크기 확대가 단순한 양적 팽창이 아니라, 모델의 성능과 효율성을 동시에 개선하는 질적, 구조적 개선임을 시사한다.