토크나이저 어휘가 인도계 문자에서 소형 언어모델의 효율을 무너뜨린다
Efficiency Measured in English: Tokeniser Coverage Bounds Small Language Models on Indic Scripts
무엇인가
이 논문은 소형 언어모델(SLM)의 효율이 거의 항상 단일 메모리 수치로 보고된다는 관행을 문제 삼는다. 양자화와 파라미터 효율적 적응(PEFT)을 앞세운 SLM이 컴퓨팅 제약 환경의 다국어 AI 해법으로 제안되지만, 그 효율 수치는 영어로 측정된 것이며 다른 문자 체계로 전이되지 않는다는 것이 저자의 주장이다. 핵심 지표는 'fertility', 즉 공백으로 구분된 단어 하나당 토크나이저가 내보내는 서브워드 토큰의 평균 개수다. 이 값이 언어권별로 어떻게 달라지는지가 곧 사용자가 실제로 누릴 수 있는 문맥 창의 크기를 결정한다.
어떻게 동작하나
방법은 모델 추론이 아니라 토크나이저 자체의 측정이다. 저자는 131,044문장 규모의 인도계 감성 분석 코퍼스를 사용하는데, 이 데이터에는 언어 라벨이 없어 유니코드 블록 소속으로 문자(script)를 결정론적으로 복원했다. 복원된 구조는 11개 인도계 언어가 각 10,822문장씩, 라틴 문자 9,695문장, 페르소-아랍 문자 1,154문장으로 정확히 합계 131,044가 된다. 즉 하나의 문장 집합을 각 언어로 기계 번역한 병렬 텍스트다. 저자는 이 데이터에 대해 널리 퍼진 두 가지 주장도 정정한다. 코드믹싱은 131,044문장 중 345문장(0.3%)에 불과하고, 클래스 불균형은 중립이 24.8%로 가장 작은 쪽이며(긍정 40.1%, 부정 35.1%) 페르소-아랍 하위집합에는 중립 예시가 하나도 없다.
무엇과 다른가
측정의 축은 '어휘가 비어 있다'는 가설을 반증 가능한 형태로 세운 것이다. Llama-2의 SentencePiece 토크나이저를 물려받은 TinyLlama는 바이트 폴백(byte fallback)을 켜 두었으므로, 어휘에 없는 문자는 개별 <0xXX> 바이트 토큰으로 분해된다. 인도계 문자는 UTF-8에서 3바이트를 차지하므로, 어휘 커버리지가 0인 문자는 단어당 바이트 수와 같은 fertility를 보여야 한다. 이것이 표의 'Ceiling' 열이고, 실측값이 여기에 붙으면 어휘가 비어 있다는 증거가 된다.
어떻게 쓰나
결과는 이론적 상한에 근접한다. TinyLlama-1.1B는 라틴 문자 단어당 1.34토큰, 칸나다어 단어당 22.60토큰을 내보낸다. 어휘 커버리지는 오디아 0%, 텔루구 1%, 칸나다 2%, 구자라티 1%, 구르무키 5%, 데바나가리 30%, 라틴 50%다. 11개 문자 중 5개에서 실측 fertility가 바이트 폴백 상한에 붙어 있고, 오디아는 상한 18.1 대비 18.02로 99.6%에 이르며 방출 토큰의 93.6%가 순수 바이트다. 텔루구 94.3%, 구자라티 94.6%, 칸나다 90.4%, 구르무키 85.1%가 상한 대비 비율이고, 데바나가리는 40%, 라틴은 21%에 그친다. 화자 수에 따라 어휘가 배분되지도 않았다. 텔루구(커버리지 1%)는 말라얄람(28%)이나 타밀(26%)보다 화자가 많다.
전제와 한계
더 중요한 발견은 이 실패가 침묵한다는 점이다. 바이트 폴백은 어떤 입력도 인코딩할 수 있게 설계된 장치라서 UNK 토큰을 발생시키지 않는다. TinyLlama의 UNK율은 오디아를 포함해 모든 문자에서 0.0%이며, 이는 실험 결과가 아니라 토크나이저 설계의 필연적 귀결이다. 반대로 낮은 fertility가 효율의 반대를 뜻하는 경우도 있다. mBERT는 오디아에서 단어당 1.10토큰으로 이 연구의 모든 측정치 중 가장 좋은 점수를 기록하지만, 오디아 어휘 커버리지가 0%이고 방출 토큰의 87.9%가 UNK다. 지원되지 않는 문자에서 fertility가 1.0에 가깝다는 것은 단어당 UNK 하나를 찍고 있다는 신호일 뿐이다. 인도계 어휘를 갖춘 인코더 MuRIL은 TinyLlama 파라미터의 5분의 1 규모(어휘 197k 대 32k)로 모든 문자를 단어당 1.23~2.26토큰으로 읽고 UNK도 바이트 폴백도 0이다. 칸나다어 기준 1.75 대 22.60으로 13배 차이다.
이 차이는 사용자 경험으로 직결된다. 2048토큰 문맥 창에서 라틴 문자 사용자는 1,528단어를 쓰지만 칸나다어 사용자는 91단어, 텔루구 97단어, 오디아 114단어, 말라얄람 174단어, 벵골 214단어, 데바나가리 307단어다. KV 캐시는 토큰당 약 22KB(22층, GQA KV 헤드 4개, 헤드 차원 64, FP16)이므로 30단어 문장이 라틴 문자에서 약 75토큰, 칸나다어에서 약 713토큰이 된다. 배치 크기 1에서는 14MB 차이로 가중치 메모리가 지배해 양자화가 잘 동작하는 것처럼 보이지만, 배치 32에서는 52MB 대 490MB로 벌어진다. 저자가 제안하는 실무 규칙은 세 가지다. 효율을 문자별로, 평가셋의 문자 분포와 함께 보고할 것, fertility를 UNK/바이트 폴백 비율과 함께 보고할 것, 저자원 언어용 SLM을 검토할 때 파라미터 수보다 어휘를 먼저 확인할 것. GPU 없이 5분이면 된다.
저자가 명시한 한계도 분명하다. 첫째, 문자는 언어가 아니며 데바나가리는 힌디·마라티·네팔어를, 벵골 문자는 벵골어·아삼어를 함께 포괄한다. 논문의 주장은 언어가 아니라 문자에 대한 것이다. 둘째, 이 연구는 메커니즘을 측정했을 뿐 다운스트림 과제 정확도 손실은 아직 보고하지 않는다. 셋째, 코퍼스가 기계 번역 병렬 텍스트라 토크나이저 측정에는 충분하지만 실제 사용 양태에 대한 주장에는 부적합하다. 또한 배치 크기에 따른 KV 캐시 비용 차이는 측정된 fertility로부터의 분석적 추론이며, 서빙 환경에서의 실증은 후속 과제로 남겨 두었다.