Gemma 토크나이저 특징 - 한국어 처리 효율
Google의 Gemini 모델과 호환되는 Gemma 토크나이저는 공개된 토크나이저 중 하나로, 이를 통해 비공개 Gemini 토크나이저의 일부 구조를 유추할 수 있다.
아래는 Gemma 토크나이저의 주요 특징을 나열 하였다.
1. SentencePiece 기반
- Gemma 토크나이저는 SentencePiece를 기반으로 구현되어 있다.
- SentencePiece는 언어에 독립적인 토크나이저로, 사전 토큰 분할(pre-tokenization)을 하지 않고 바로 텍스트를 처리한다.
SentencePiece는 Google에서 개발한 서브워드 기반 토크나이저 불규칙한 언어 변화에 강해서, 한국어를 포함한 멀티모달 모델에서 널리 사용되며, Gemini/Gemma에서도 활용된다.
2. 숫자 처리 방식
- OpenAI의 cl100k_base는 숫자를 3자리씩 묶어서 토큰화하는 반면, Gemma는 숫자를 자릿수마다 분리하여 각각 다른 토큰으로 처리한다. (예: 123456 → 1, 2, 3, 4, 5, 6 (각 자릿수별로 분리))
3. Unknown Token 처리
- 알 수 없는 토큰(unknown token)은 바이트 단위로 인코딩된다.
- 이는 BPE(Byte Pair Encoding) 방식의 fallback을 위한 것으로 보인다.
4. 어휘 크기 (Vocabulary Size)
- 총 256,000개의 토큰을 보유하고 있다.
- 이는 기존의 OpenAI cl100k_base (100,000개)보다 훨씬 큰 규모로, 다양한 언어와 특수 문자, 이모지 등을 포괄할 수 있는 여유를 제공한다.
5. Pre-tokenizer 미사용
- OpenAI의 토크나이저는 공백이나 특수문자 등을 미리 분리하는 pre-tokenizer를 사용하여 성능을 향상시키지만,
- Gemma는 pre-tokenizer를 사용하지 않고, SentencePiece의 특성을 그대로 활용한다.(이는 처리 방식의 단순화와 언어 독립성을 높이는 데 기여할 수 있다.)
6. 스페셜 토큰 처리 방식
- 일반적으로 스페셜 토큰은 <pad>, <eos>처럼 꺾쇠나 특수문자를 포함하지만, Gemma에서는 user, model 같은 일반 영단어 형태의 스페셜 토큰을 사용한다.
8. 특수문자 연속 처리
\n (줄바꿈), \t (탭), 공백 문자(▁; U+2581) 등 자주 반복되는 특수문자 패턴은 1개의 토큰으로 처리된다.
예: \n이 1~31개 반복되어도 1개의 토큰으로 처리됨.(이는 토큰 수를 줄여 효율을 높이는 전략으로 보인다)
9. HTML 태그 처리
<table>, <h1>, </h6>, <strong> 등 주요 HTML 태그를 1개의 토큰으로 처리합니다.(웹 기반 콘텐츠를 다루는 데 유리)
10. Unicode 범위 포함
U+0000부터 U+00FF까지의 모든 유니코드 바이트를 포함합니다.이는 BPE byte fallback을 위한 것으로, 다양한 언어와 특수문자 처리에 유리합니다.
BPE byte fallback는 토크나이저가 알 수 없는 문자나 희귀한 문자를 처리할 때 사용하는 전략으로, 자주 등장하는 문자 쌍을 반복적으로 병합하여 서브워드 단위를 만드는 알고리즘
11. 동아시아 문자 지원
한글, 한자, 이모지 등 동아시아 문자에 약 25,000개의 토큰을 할당.
기존 토크나이저에서는 바이트 단위로 쪼개어 1글자당 3토큰 이상이 필요한 경우가 많았지만,
Gemma는 1글자당 1토큰으로 처리하여 효율을 높음
토크나이저의 한국어 처리 효율
모델 | 토큰 크기 | 특징 |
OpenAI GPT-4 (cl100k_base) | 약 160 토큰 | BPE 기반, 3자리 숫자 묶음, 영어 중심 설계 |
Google PaLM2 | 약 88 토큰 | SentencePiece 기반, 멀티언어 지원 |
Gemma (Google) | 약 107 토큰 | SentencePiece 기반, pre-tokenizer 미사용 |
Gemini (예상) | 미공개 (예상: Gemma보다 효율적) | 한국어 성능 우수, 추가 토큰 존재 가능성 |