모델의 첫 입력은 토큰 번호의 줄이다
화면에는 문장이 보입니다. 계산을 시작하기 전에 토크나이저가 이 문장을 여러 조각으로 나누고, 각 조각을 어휘표의 번호와 연결합니다. 모델은 그 번호를 다시 벡터로 바꾸어 계산합니다. 따라서 토큰은 사람이 읽는 말과 모델이 계산하는 수 사이의 첫 다리입니다.
우리는 ‘한글’을 읽지만, 언어 모델은 먼저 입력을 일정한 조각과 번호의 줄로 바꿉니다. 그 조각이 토큰입니다. 토큰을 알면 글자 수와 비용, 문맥의 길이, 낯선 표현을 다루는 방식이 함께 보입니다.
화면에는 문장이 보입니다. 계산을 시작하기 전에 토크나이저가 이 문장을 여러 조각으로 나누고, 각 조각을 어휘표의 번호와 연결합니다. 모델은 그 번호를 다시 벡터로 바꾸어 계산합니다. 따라서 토큰은 사람이 읽는 말과 모델이 계산하는 수 사이의 첫 다리입니다.
토큰 하나는 한 글자일 때도 있고, 여러 글자나 공백을 포함할 때도 있습니다. 실제 o200k_base에서 “나는 학교에 갑니다.”는 “나는 / 학교 / 에 / 갑 / 니다 / .”에 해당하는 여섯 토큰으로 나뉩니다. 토큰 경계가 형태소 분석과 비슷하게 보이는 경우도 있습니다. 토크나이저는 학습 자료에서 자주 함께 나타난 바이트 묶음을 계산에 쓸 단위로 정합니다.
컴퓨터는 문자를 바이트로 저장합니다. “한”은 UTF-8에서 ED 95 9C라는 세 바이트로 표현됩니다. 바이트 기반 BPE 토크나이저는 모든 가능한 입력을 다룰 수 있도록 바이트에서 출발해 자주 나타나는 묶음을 합칩니다. 그래서 익숙한 한글 조각은 하나의 토큰이 되고, 드문 입력은 더 작은 바이트 조각으로 남을 수 있습니다. 바이트에서 시작하면 처음 보는 문자 조합도 작은 조각으로 나누어 입력할 수 있습니다.
BPE의 핵심 생각은 단순합니다. 자료에서 자주 이웃하는 작은 단위를 찾아 하나로 합치고, 새 묶음을 어휘표에 추가합니다. 이 과정을 반복하면 자주 쓰는 글자열은 큰 토큰이 되고 드문 표현은 작은 토큰의 조합으로 남습니다. 아래 실습은 “가나다 / 가나다 / 가나”라는 작은 자료에서 실행하는 교육용 병합 모형입니다. 실제 o200k_base의 방대한 학습 자료나 병합표를 재현하지 않습니다.
사람은 띄어쓰기를 단어 사이의 빈자리로 읽습니다. 토크나이저는 공백도 입력 문자로 처리합니다. “생각그림”은 실제로 네 토큰이지만 “생각 그림”은 세 토큰이며, 세 번째 토큰이 공백과 “그림”을 함께 담습니다. 같은 낱말도 앞의 공백 유무에 따라 다른 번호를 받을 수 있습니다. 프롬프트의 띄어쓰기와 줄바꿈을 바꾸면 토큰의 수와 경계가 달라지는 이유가 여기에 있습니다.
o200k_base 실행 결과입니다.“학교에서 공부합니다.”는 “학교 / 에서 / 공부 / 합니다 / .”에 가까운 다섯 토큰으로 나뉘지만, 다른 문장에서는 같은 조사나 어미가 주변 표현과 다른 크기로 묶일 수 있습니다. 형태소 분석은 문법 단위를 설명하고, 토큰화는 계산 입력을 만듭니다. 조사와 어미의 뜻은 토큰 경계만으로 정하지 않고 문맥 속 관계까지 살펴야 합니다. 모델은 여러 토큰의 관계를 뒤 단계에서 계산하며 문맥 속 기능을 배웁니다.
학교 │ 에서 │ 공부 │ 합니다
계산 입력을 만드는 경계완성형 “한글”과 초성·중성·종성을 따로 저장한 “한글”은 화면에서 비슷해 보일 수 있습니다. 그러나 UTF-8 바이트열이 다르므로 토큰 수도 달라집니다. 실제 실행에서 완성형은 2토큰, 분해형은 18토큰이었습니다. 복사한 문장에서 유난히 토큰 수가 늘었다면 유니코드 정규화와 숨은 문자를 살펴볼 필요가 있습니다. 정규화는 고유 표기를 바꿀 수 있어 목적을 확인하고 적용해야 합니다.
o200k_base 실제 실행입니다. 저장 방식과 토큰 경계는 실제 바이트열을 확인해 판별합니다.“안녕하세요 👋”에서 인사말은 두 토큰으로 묶이지만, 손을 흔드는 이모지는 공백을 포함한 앞부분과 남은 바이트가 갈라져 두 토큰이 됩니다. 한 토큰만 따로 해독하면 정상 문자로 보이지 않아 20 F0 9F 91과 8B처럼 표시됩니다. 두 토큰을 차례대로 합치면 원래 이모지로 복원됩니다. 토큰 경계와 문자 경계가 서로 어긋날 수 있음을 보여 주는 사례입니다.
선택 상자에는 티크토큰 0.14.0의 o200k_base로 미리 실행하고 원문 왕복 복원까지 확인한 결과를 넣었습니다. 문장을 바꾸어 토큰 조각과 번호를 비교해 보세요. 이 실습은 표시된 예문을 미리 토큰화하고 기록한 실행 결과를 재현합니다. 브라우저에서 새 문장을 토큰화하는 기능은 제공하지 않습니다.
모델이 한 번에 다룰 수 있는 문맥의 한도와 서비스의 사용량은 보통 토큰을 기준으로 계산됩니다. 토큰 하나에 들어가는 한국어 글자 수는 표현과 인코딩에 따라 달라집니다. 같은 네 글자인 “생각그림”은 4토큰이고, 공백을 넣은 “생각 그림”은 3토큰입니다. 긴 문서를 준비할 때는 글자 수만 보고 단정하기보다 실제로 사용하는 모델과 인코딩에 맞는 토크나이저로 측정해야 합니다.
반복되는 안내와 불필요한 서식을 정리하면 토큰을 줄이고 핵심 요청을 또렷하게 만들 수 있습니다. 그러나 조사를 무리하게 빼거나 문장을 전보처럼 줄이면 조건과 관계가 흐려집니다. 좋은 요청은 “대상·목적·자료·결과 형식”을 한 번씩 분명히 적고, 긴 참고 자료는 필요한 범위와 위치를 알려 줍니다. 필요한 뜻을 빠짐없이 담고 중복을 덜어 낸 문장이 실용적인 목표입니다.
토큰화는 문장을 번호의 줄로 바꾸는 첫 처리 단계입니다. 그 다음 모델은 지금까지 들어온 토큰을 바탕으로 다음 위치에 올 후보들의 점수를 계산합니다. 후보 선택 방식과 설정이 달라지면 같은 질문에서도 다른 답이 나올 수 있습니다. 다음 회에서는 토큰 상자들 뒤에 놓인 ‘다음 토큰 후보’와 선택 과정을 생각그림으로 따라가며, 무엇이 달라지고 무엇이 그대로인지 직접 확인합니다.
o200k_base로 2026년 10월 4일 실행했습니다.