국산 AI의 한국어 토크나이저는 다를까? 12종 재보니 2종은 남의 것이었습니다

어휘 128,000개가 하나도 다르지 않았습니다. 국산 LLM의 한국어 토크나이저가 정말 한국어에 맞춰져 있는지 확인하려고, 같은 문서를 토크나이저 12종에 그대로 넣어 재본 결과입니다.

결론부터 적으면 통념은 절반만 맞았습니다. 국산 신형 셋은 한글 음절당 0.586에서 0.607 토큰으로 상위를 독차지했습니다. 그런데 국산으로 유통되는 다른 둘은 base 어휘 집합이 Llama 3, Mistral과 완전히 같았습니다. 토큰 집합도, 각 토큰의 번호도, 정렬해서 구한 해시값도 같았습니다.

AI-generated illustration. 큰 반투명 블록 흐름과 잘게 부서진 파편 흐름이 계측 장치를 통과하는 3D 렌더링
위쪽은 덩어리째 지나가고 아래쪽은 잘게 부서집니다. 같은 문장을 넣어도 토크나이저에 따라 이렇게 갈립니다. AI-generated illustration (OpenAI gpt-image-1-mini)

한국어 토크나이저를 무엇으로, 어떻게 쟀나

측정 코퍼스는 유엔인권최고대표사무소가 발행한 세계인권선언 공식 PDF의 한국어판과 영어판입니다. 같은 기관이 같은 문서를 두 언어로 낸 것이라 번역 등가성 문제가 가장 작습니다. 추출 결과 한국어판은 정규화 후 4,813자에 한글 음절 3,344개, 영어판은 10,760자였고 양쪽 모두 30개 조항이 온전히 확인됐습니다.

대표 지표는 한글 음절당 토큰수입니다. 분모를 한글 음절 3,344개로 고정했고, 공백과 문장부호를 포함한 전체 문자당 토큰수는 별도 열로 분리했습니다. 예를 들어 cl100k_base는 한글 음절당 1.429 토큰이지만 전체 문자당으로 재면 0.993 토큰입니다. 같은 글, 같은 토크나이저인데 분모만 바꾸면 값이 이렇게 달라지므로 둘을 섞어 쓰면 그 자체로 오보가 됩니다. 인코딩은 전부 로컬에서 돌렸고, 토크나이저 파일은 인증 없이 공개된 것만 받았습니다. 게이티드(내려받으려면 별도 승인이 필요한 상태)로 막힌 모델은 측정 대상에서 뺐습니다.

white caliper
측정은 자를 먼저 고정하는 데서 시작합니다. 분모를 무엇으로 두느냐가 이 글의 모든 숫자를 결정합니다. Photo by Ag PIC on Unsplash

추출 과정에서 함정 두 개를 만났습니다. 둘 다 그냥 넘어갔으면 표가 조용히 틀어졌을 종류입니다.

첫째, 유엔 영문 원본은 1조만 로마숫자로 적혀 있고 2조부터 30조까지는 아라비아 숫자입니다. 숫자만 찾는 규칙을 쓰면 1조가 빠져 조항 대응이 29쌍으로 줄어듭니다. 실제로 1차 실행에서 이 누락이 났고 검증 게이트가 잡아냈습니다. 둘째, 한글 PDF는 제목이 자간 분리로 추출되는데 이걸 되돌리는 규칙을 세게 걸면 “양도할 수 없는”이 “양도할수없는”으로 뭉개집니다.

그래서 단음절이 네 개 이상 연속될 때만 붙이도록 임계를 올리고, 한글 음절 수가 정규화 전후로 변하지 않는지를 사후에 검산했습니다. 원문판과 정규화판 수치를 둘 다 산출한 것도 같은 이유입니다.

12종 순위, 상위 셋은 전부 국산 신형

12종을 같은 코퍼스로 나란히 세운 결과입니다. 숫자가 작을수록 같은 한국어를 적은 토큰으로 처리한다는 뜻입니다. 맨 오른쪽 열은 100만 토큰 창에 한글이 몇 자나 들어가는지를 환산한 값입니다.

토크나이저어휘 크기한글 음절당 토큰KO/EN 토큰비1M 창 실효 한글
K-EXAONE-236B-A23B153,6000.5861.0281,706,993자
A.X-4.0102,4000.5890.8131,697,461자
kanana-2-30b-a3b128,2560.6070.9071,647,290자
Mistral-Small-24B131,0720.7831.1361,277,310자
EXAONE-4.0-32B102,4000.7841.1161,275,848자
o200k_base (GPT-4o)200,0190.8601.2751,162,726자
kanana-1.5-8b128,2590.8731.2921,145,990자
Llama-3.1-8B128,2560.8731.2921,145,990자
Qwen3-8B151,6690.9141.3411,093,525자
DeepSeek-V3128,8150.9511.4191,051,903자
cl100k_base (GPT-4)100,2771.4292.116699,581자
SOLAR-10.7B-v1.032,0001.5202.009658,008자

2026-08-03 KST에 허깅페이스 main 브랜치에서 수집했습니다. 표의 값은 정규화판이고, 원문판으로 재면 상위 셋의 순서가 kanana-2·K-EXAONE·A.X-4.0으로 바뀝니다. 맨 오른쪽 열은 이 코퍼스의 공백·문장부호 비율(한글 3,344자 / 전체 4,813자)을 그대로 가정한 환산값입니다. SOLAR-10.7B-v1.0·kanana-1.5-8b·EXAONE-4.0-32B는 국산 이전 세대입니다. 벤더가 토크나이저를 교체하면 값이 달라집니다.

상위 셋이 전부 국산 신형입니다. K-EXAONE이 0.586, A.X-4.0이 0.589, kanana-2가 0.607로 붙어 있습니다. 100만 토큰 창에 들어가는 한글로 환산하면 K-EXAONE이 약 170만 자, cl100k_base가 약 70만 자입니다. 같은 창인데 2.4배 차이가 납니다.

여기까지는 통념대로입니다.

핵심: 컨텍스트 창 크기가 같아도 한국어로 실제 들어가는 분량은 토크나이저에 따라 최대 2.6배까지 갈립니다.

kanana-1.5의 어휘는 Llama 3와 해시까지 같았다

문제는 그다음 줄이었습니다. kanana-1.5와 Llama-3.1의 값이 0.873으로 소수점 셋째 자리까지 같았습니다. 우연이라기엔 자리가 너무 많이 맞아서 어휘를 직접 열어 대조했습니다.

open Dictionary
토크나이저의 어휘는 모델이 세상을 쪼개 보는 사전입니다. 그 사전이 누구 것인지는 파일을 열어야 확인됩니다. Photo by Waldemar Brandt on Unsplash

base 어휘(특수 제어 토큰을 뺀 본체 어휘) 128,000개를 집합으로 놓고 양방향 차집합을 구했더니 둘 다 0개였습니다. 공유 토큰 128,000개는 번호까지 전부 일치했습니다. 정렬한 토큰 집합의 sha256도 같았습니다. 총 어휘가 128,259 대 128,256으로 갈리는데, 그 차이는 특수 제어 토큰뿐입니다. kanana 쪽에 전용 4개, Llama 쪽에 전용 1개가 있습니다.

kanana-1.5 모델카드에는 base model 표기가 없습니다. 토크나이저를 새로 학습했는지, 어휘 크기가 얼마인지에 대한 서술도 없습니다. 허깅페이스 태그에 llama가 달려 있을 뿐입니다. 이 글이 더하는 것은 그 태그가 어디까지 사실인지를 어휘 단위로 확정한 부분입니다.

분석

같은 회사가 세대를 건너며 어휘를 실제로 갈아치웠다는 것이 이 대조의 두 번째 결과입니다. kanana-2는 모델카드가 새 토크나이저를 학습했다고 밝혔고, 어휘 대조도 그 서술과 맞습니다.

  1. kanana-1.5의 base 어휘는 Llama-3.1과 차집합 0개, 번호 일치, 해시 동일로 완전히 같습니다.
  2. kanana-2는 Llama-3.1과 각각 전용 토큰을 60,848개씩 갖습니다. 어휘 크기는 128,256으로 같은데 base 어휘 128,000개 중 60,848개, 그러니까 47.5%가 서로 다릅니다.
  3. 같은 코퍼스로 잰 한글 음절당 토큰수는 0.873에서 0.607로 내려갑니다. 어휘를 새로 학습한 효과가 숫자로 남습니다.

SOLAR는 Mistral 32k, 그런데 A.X-4.0은 정반대였다

같은 검정을 SOLAR-10.7B-v1.0에도 걸었습니다. base 어휘 32,000개가 Mistral-7B-v0.1과 차집합 0개, 번호 일치, 해시 동일로 완전히 같았습니다. 다만 이쪽은 업스테이지가 모델카드에 Mistral 7B 가중치를 확장 계층에 통합했다고 이미 밝혀 둔 사안입니다. 새로운 것은 출처가 아니라 그 선택이 한국어에 남긴 결과입니다.

SOLAR의 한글 음절당 토큰수는 1.520으로 12종 중 가장 컸습니다. OpenAI가 GPT-4 시절에 쓰던 cl100k_base의 1.429보다도 큽니다. 어휘가 32,000개뿐이라 한글이 잘게 부서지는 것이 그대로 숫자에 남습니다.

반대 방향 사례도 나왔습니다. A.X-4.0은 모델카드가 Qwen2.5 기반이라고 밝힌 모델입니다. 그런데 어휘를 대조해 보니 Qwen2.5와 겹치는 토큰이 38,628개뿐이고, 그 겹치는 토큰조차 번호가 하나도 맞지 않았습니다. A.X 전용이 63,772개, Qwen 전용이 113,015개입니다. 베이스 모델은 남의 것을 썼지만 한국어를 세는 자는 새로 만들었다는 뜻입니다.

대조군으로 Qwen3-8B와 Qwen2.5-7B를 같이 재봤습니다. 이쪽은 세대가 바뀌었는데도 base 어휘 151,643개가 차집합 0개로 완전히 동일했습니다. 총 어휘는 특수 토큰 때문에 151,669 대 151,665입니다.

베이스 모델에서 이어 학습하면 토크나이저를 함께 승계하는 것이 오픈웨이트의 통상적인 방식이고, 두 모델 모두 라이선스를 어긴 것이 아닙니다. 정리하면 라벨과 실제가 어긋나는 방향이 두 사례에서 정반대입니다. 한쪽은 국산 라벨을 달고 남의 어휘를 그대로 쓰고, 다른 쪽은 남의 베이스를 쓴다고 밝히면서 어휘는 직접 만들었습니다. 지난번에 오픈웨이트 라이선스를 전수 확인했을 때도 같은 종류의 어긋남이 나왔습니다. 이름표는 안쪽을 보증하지 않습니다.

벤더가 공표한 수치를 그대로 검산했다

이 측정의 쓸모는 벤더가 공표한 숫자를 같은 자로 다시 재볼 수 있다는 데 있습니다. 세 회사 모두 어떤 코퍼스로 무엇에 견줘 잰 값인지를 밝히지 않아 원래는 서로 비교가 되지 않습니다.

벤더 공식 주장같은 코퍼스로 재측정
카카오, kanana-2 한국어 “improvement of over 30%”kanana-1.5 0.8726에서 kanana-2 0.6071로 30.4% 감소 (기준선 미명시, 자사 이전 세대로 잡음)
카카오, kanana-2 어휘 크기 128,256128,256 정확히 일치
SKT, A.X-4.0이 GPT-4o 대비 약 33% 절감o200k_base 0.8600 대비 0.5891로 31.5% 감소
LG, K-EXAONE 어휘 크기 153,600153,600 정확히 일치
LG, 6개 언어 어휘 재설계로 토큰 효율 “~30%” 개선 (한국어 단독 수치 아님, 기준선 미명시)자사 EXAONE-4.0 0.7838 대비 0.5858로 25.3% 감소

세 주장 모두 방향이 맞았고, 어휘 크기 두 건은 자릿수까지 일치했습니다. 절감률에서는 SKT 주장이 실측보다 1.5%포인트 높게 잡혀 있었습니다. LG의 30% 안팎 효율 주장은 비교 기준선이 명시돼 있지 않아, 자사 이전 세대인 EXAONE-4.0을 기준으로 잡았을 때 25.3%가 나옵니다. 세 수치 모두 정규화판 기준입니다. 원문판으로 재면 카카오 29.4%, SKT 27.1%, LG 25.3%가 나오고, 카카오의 30% 이상 주장은 어느 판으로 재느냐에 따라 성립과 미달이 갈립니다.

한글이 영어보다 토큰을 덜 먹는 지점, 그리고 흔들림

같은 의미의 문서를 한국어판과 영어판으로 각각 재면 토큰 비율이 나옵니다. A.X-4.0에서는 이 값이 0.813이었습니다. 한국어판이 1,970 토큰, 영어판이 2,423 토큰입니다. 한글이 영어보다 토큰을 덜 먹는 구간이 실제로 존재한다는 뜻입니다.

다만 이 역전을 토크나이저만의 공으로 돌리면 틀립니다. 같은 내용을 한국어는 4,813자, 영어는 10,760자로 적습니다. 한글의 문자 밀도와 토크나이저 효율이 겹쳐서 나온 값입니다.

그리고 이 비율은 단일 값으로 인용하면 안 됩니다. 30개 조항을 각각 잘라 따로 재봤더니 토크나이저마다 최댓값이 최솟값보다 49.0%에서 67.6%까지 컸습니다. A.X-4.0은 중앙값 0.889에 범위가 0.694에서 1.075, cl100k_base는 중앙값 2.220에 범위가 1.780에서 2.652입니다. 짧은 문장 하나를 골라 재고 한국어는 영어의 몇 배라고 단정하면, 고른 문장에 따라 답이 바뀝니다. 검색 상위 글들이 서로 다른 배수를 말하는 이유가 여기 있습니다.

이 측정이 말하지 않는 것

표에 없는 것을 적어 둡니다. 구글 gemma-3-27b-it, 네이버 HyperCLOVAX-SEED-Text-Instruct-1.5B, 업스테이지 solar-pro2는 인증을 요구해 표에 넣지 못했습니다. Claude나 Gemini 같은 상용 비공개 모델도 대상 밖입니다. 메타 Llama 3.1도 공식 저장소는 막혀 있어, 서로 다른 미러 둘을 해시까지 대조해 base 어휘 128,000개가 같은 값임을 확인한 뒤 미러로 측정했습니다.

어휘 크기는 증거가 되지 못합니다. kanana-2와 Llama-3.1은 어휘 크기가 128,256으로 똑같은데, 전용 토큰이 각각 60,848개씩 있습니다. 크기가 같다고 같은 어휘가 아니고, 크기가 다르다고 다른 계보인 것도 아닙니다.

토크나이저 효율은 모델 성능이 아닙니다. 텍스트를 어떻게 쪼개는지에 대한 이야기이고, 쪼갠 다음에 무엇을 하는지는 완전히 다른 층의 문제입니다. 허깅페이스 다운로드 순위를 쟀을 때와 마찬가지로, 이 숫자도 한 층에 대한 사실입니다.

다음 세대에서 확인할 지점은 kanana가 1.5에서 2로 건너뛴 그 구간입니다. 같은 회사가 남의 어휘를 쓰다가 자기 어휘를 새로 학습하면 한글 음절당 토큰수가 0.873에서 0.607로 내려갑니다. 업스테이지의 solar-pro2와 네이버의 HyperCLOVAX-SEED가 게이트를 열면 같은 자로 잴 수 있습니다. 그때 국산 라벨과 실제 어휘가 어느 쪽으로 갈리는지가 이 표의 다음 줄이 됩니다.

참고 자료

트렌드를 먼저 읽는 사람들

AI, 테크, 경제의 핵심 인사이트를 한국어와 영어로 동시에 제공합니다.

더 많은 글 보기