토큰이란 언어 모델이 실제로 다루는 가장 작은 텍스트 조각입니다. GPT, Claude, Llama 같은 모델에 프롬프트를 보내면, 텍스트는 먼저 토큰 시퀀스로 분할됩니다(보통 단어 전체, 흔한 서브워드, 또는 단일 문자). 그리고 각 토큰은 모델이 처리할 수 있는 숫자로 변환됩니다. 모델은 같은 방식으로 출력도 생성하며, 중단을 결정할 때까지 한 번에 토큰 하나씩 예측하고 내보냅니다.
토큰의 작동 방식
토큰은 텍스트와 모델 사이에서 작동하는 별도의 프로그램인 토크나이저가 생성합니다. 가장 흔한 방식은 바이트 페어 인코딩(BPE)과 WordPiece인데, 개별 문자에서 시작해 가장 자주 등장하는 인접 쌍을 반복적으로 병합해 더 긴 단위로 만듭니다. 그 결과 보통 30,000~200,000개 항목으로 구성된 고정 어휘가 만들어지며, 짧고 흔한 단어와 재사용 가능한 서브워드 조각이 균형을 이룹니다. the 같은 자주 쓰이는 단어는 보통 하나의 토큰이 되지만, unbelievableness처럼 드물거나 새로 만든 단어는 여러 토큰으로 나뉩니다: un, believ, able, ness.
영어는 토큰당 평균 4자 정도이기 때문에, 대략적인 경험칙으로 100 토큰 ≈ 영어 75단어이지만 이는 토크나이저와 언어에 따라 달라집니다. 가격, 컨텍스트 한도, 생성 속도는 모두 단어나 문자가 아닌 토큰 단위로 측정됩니다. 200,000 토큰 컨텍스트 윈도우를 가진 모델은 한 번의 프롬프트에 긴 소설 여러 권과 여러 논문을 한꺼번에 담을 수 있습니다.
왜 중요한가
토큰은 모든 사용자가 신경 쓰는 세 가지, 즉 비용, 용량, 동작을 결정합니다. API 제공업체는 백만 토큰당 요금을 청구하므로, 비효율적으로 토큰화되는 프롬프트는 필요 이상으로 비용이 듭니다. 컨텍스트 윈도우(모델이 한 번에 고려할 수 있는 최대 텍스트량)는 토큰으로 계산되기 때문에, 매우 긴 문서는 입력 전에 청크로 나누어야 합니다. 동작에도 영향을 미칩니다. 토크나이저가 단어를 다르게 분할하면 모델이 그 단어에 대해 추론하는 방식이 달라질 수 있고, 일부 언어는 영어보다 단어당 훨씬 많은 토큰으로 나뉘어 비영어 사용자에게는 비용이 증가하고 실질적 컨텍스트가 줄어듭니다.
핵심 토큰 개념
- 토큰화: 텍스트를 토큰으로 분할하는 알고리즘으로, 보통 BPE, WordPiece, Unigram을 사용합니다.
- 어휘: 모델이 아는 고정된 토큰 목록으로, 각 항목에 고유한 정수 ID가 부여됩니다.
- 특수 토큰:
<BOS>,<EOS>, 패딩 마커처럼 경계와 구조를 알리는 예약된 기호로, 내용이 아니라 신호 역할을 합니다. - 컨텍스트 윈도우: 단일 요청에서 모델이 처리할 수 있는 최대 토큰 수로, 입력과 생성된 출력을 모두 포함합니다.
- 토큰 한도: 제공업체가 요청에 허용하는 토큰 수에 대해 부과하는 상한으로, 종종 입력과 출력 한도로 나뉩니다.
바이트 페어 인코딩을 더 깊이 살펴보려면 Andrej Karpathy의 설명인 minbpe가 실용적인 출발점이며, 원래의 Neural Machine Translation of Rare Words with Subword Units 논문이 대부분의 현대 토크나이저가 여전히 기반을 두고 있는 접근법을 소개했습니다.