AI에서 토큰은 LLM이 텍스트를 표현하고 생성하는 데 사용하는 어휘의 한 항목입니다. 모델의 토크나이저에 따라 토큰은 단어, 단어의 일부, 구두점, 공백 또는 인코딩된 문자의 일부에 해당할 수 있습니다.
토큰은 언어의 보편적인 단위가 아닙니다. 토큰은 텍스트를 모델이 처리할 수 있는 번호가 매겨진 항목의 시퀀스로 변환하는 모델별 방식입니다.
토큰은 코드북 항목입니다
토크나이저를 텍스트를 준비하는 소프트웨어와 이를 처리하는 LLM이 공유하는 코드북이라고 생각해 보세요. 코드북에는 허용된 텍스트 또는 바이트 시퀀스가 들어 있으며, 각각에 정수 ID를 할당합니다.
예시용 토크나이저가 다음을 분할한다고 가정해 보겠습니다.
The cat sat.
다음과 같이 분할합니다.
The | cat | sat | .
이러한 눈에 보이는 조각은 다음과 같은 ID에 매핑될 수 있습니다.
[814, 3290, 7112, 13]
여기서 숫자는 작동 방식을 보여 주기 위해 만든 것입니다. 실제 ID와 경계는 토크나이저에 따라 달라집니다. 앞에 오는 공백이 뒤따르는 단어와 함께 묶일 수 있으므로 cat과 cat은 서로 다른 항목이 될 수 있습니다.
일상적인 설명에서 토큰은 눈에 보이는 조각이나 그 ID 중 하나를 의미할 수 있습니다. 이 구분은 중요합니다. 모델이 받는 것은 읽을 수 있는 작은 텍스트 문자열이 아니라 ID입니다. 각 ID는 모델이 처리할 수 있는, 학습된 초기 수치 표현을 선택합니다.
모델은 왜 단어보다 작은 조각을 사용할까요?
단어 전체를 어휘로 사용하려면 모델이 접할 수 있는 모든 이름, 철자, 굴절형, 전문 용어와 새로 만들어진 단어마다 항목이 필요합니다. 누락된 단어는 모두 미지의 단어가 됩니다.
문자만 사용하는 어휘는 미지의 단어 문제를 피할 수 있지만, 일반적인 텍스트를 훨씬 더 긴 시퀀스로 바꿉니다. 그러면 모델이 처리해야 하는 단계 수가 늘어납니다.
서브워드 토큰화는 절충안입니다. 자주 등장하는 시퀀스에는 자체 항목을 부여하고, 드문 단어는 더 작은 항목들을 조합해 만들 수 있습니다. 흔한 단어는 토큰 하나일 수 있지만, 드문 이름은 여러 조각으로 나뉠 수 있습니다. 구두점과 공백도 토큰이 되거나 토큰의 일부가 될 수 있습니다.
조각은 각각 독립적인 사전적 의미를 갖기 때문이 아니라, 유용한 범위와 짧은 시퀀스를 제공하도록 선택됩니다. ment 같은 조각, 앞에 공백이 붙은 단어 또는 바이트의 연속도 토크나이저의 어휘에 있다면 유효한 토큰입니다.
토큰화의 작동 방식
정확한 절차는 다르지만, 텍스트 모델을 통과하는 과정은 일반적으로 다음과 같은 형태입니다.
text
↓
model-specific tokenizer
↓
token pieces
↓
integer token IDs
↓
language model
↓
next token ID
↓
tokenizer decoder
↓
generated text먼저 토크나이저가 입력에 고정된 규칙을 적용합니다. 설계에 따라 텍스트를 정규화하고, 처음에 분할한 다음 BPE, Unigram 또는 WordPiece와 같은 알고리즘으로 세분화할 수 있습니다.
그다음 결과로 나온 각 조각을 어휘에서 찾아 해당 ID를 출력합니다. 경계를 표시하거나 요청 구조를 나타내는 등의 목적으로 특수 ID를 추가할 수도 있습니다. 이러한 특수 토큰은 눈에 보이는 텍스트에 반드시 나타나는 것은 아닙니다.
모델은 입력 ID를 처리합니다. 텍스트를 생성할 때는 가능한 다음 토큰 ID에 확률을 할당하고, 디코딩 설정에 따라 하나를 선택합니다. 새 ID가 시퀀스에 추가되고 이 과정이 반복됩니다. 마지막으로 디코더가 생성된 ID를 다시 바이트 또는 텍스트로 변환합니다.
완전하고 유효한 시퀀스라면 토큰화는 일반적으로 되돌릴 수 있습니다. 즉, ID를 디코딩하면 원래 텍스트가 재현됩니다. 특히 바이트 수준 토크나이저에서는 개별 토큰 하나만으로는 읽을 수 있는 문자가 되지 않는 경우도 있습니다. 먼저 인접한 토큰을 결합해야 할 수 있습니다.
하나의 단어도 토큰 수가 다를 수 있습니다
단어와 토큰 사이에 정확한 변환 비율은 없습니다.
한 OpenAI 토크나이저 예시에서는 antidisestablishmentarianism이 하나의 인코딩에 의해 다음 다섯 토큰으로 분할됩니다.
ant | idis | establishment | arian | ism
다른 인코딩에서는 다음 여섯 토큰으로 분할됩니다.
ant | idis | establish | ment | arian | ism
두 분할 모두 철자를 바꾸지 않습니다. 어느 분할도 한 모델이 해당 단어를 더 잘 이해한다는 증거가 아닙니다. 인코딩마다 어휘와 분할 규칙이 다를 뿐입니다.
토큰 수는 언어, 띄어쓰기, 구두점, 코드, 이모지와 특이한 문자 시퀀스에 따라서도 달라집니다. 작은 수정 하나만으로도 주변 경계가 바뀔 수 있습니다. 대략적인 평균은 초기 추정에 도움이 되지만, 신뢰할 수 있는 유일한 수치는 실제로 사용할 모델과 전체 요청에 대해 해당 토크나이저 또는 카운팅 엔드포인트가 제공하는 수치입니다.
토큰이 중요한 이유
얼마나 많은 내용이 들어갈 수 있는지를 결정합니다. 모델의 컨텍스트 윈도우는 단어가 아니라 토큰으로 측정됩니다. 입력, 이전 메시지, 생성된 출력 및 때로는 기타 요청 내용이 제공업체의 규칙에 따라 이 용량을 함께 사용합니다.
사용량을 측정합니다. 많은 AI API는 입력 토큰과 출력 토큰을 별도로 보고하고 요금을 부과합니다. 요율과 범주는 각기 다르므로 토큰 수만으로는 가격을 알 수 없습니다.
생성 시간에 영향을 줍니다. 텍스트 생성은 토큰 단위로 진행됩니다. 출력 토큰이 많을수록 일반적으로 생성 단계가 더 많이 필요하지만, 전체 지연 시간은 모델, 하드웨어, 부하 및 입력 처리에도 영향을 받습니다.
텍스트 효율을 좌우합니다. 사람이 읽을 때 길이가 비슷한 두 문자열도 서로 다른 수의 토큰을 사용할 수 있습니다. 이는 애플리케이션이 여러 언어, 소스 코드, 구조화된 데이터 또는 특이한 식별자를 처리할 때 중요합니다.
토크나이저와 모델을 연결합니다. 모델은 ID와 어휘 항목 사이의 특정 매핑을 사용해 학습합니다. 관련 없는 토크나이저로 교체하는 것은 단순한 외형상의 변경이 아닙니다. 같은 ID가 다른 조각을 가리킬 수 있으므로 모델이 잘못 학습된 표현을 받게 됩니다.
일반적인 오해
토큰 하나는 단어 하나다
짧고 흔한 단어는 때때로 토큰 하나가 됩니다. 하지만 토큰은 단어의 일부, 구두점, 공백이 포함된 조각, 문자 또는 바이트 시퀀스일 수도 있습니다. 토큰당 단어 수와 같은 수치는 특정 종류의 텍스트에 대한 추정치로만 생각해야 합니다.
토큰 경계는 모델이 개념의 의미를 어떻게 생각하는지 보여 준다
토큰 경계는 토크나이저의 어휘와 분할 규칙에서 나옵니다. 이는 모델의 개념 지도가 아닙니다. 단어가 네 토큰으로 나뉜다고 해서 반드시 네 가지 개념인 것은 아니며, 구가 하나의 토큰으로 저장된다고 해서 반드시 분리할 수 없는 하나의 개념으로 이해되는 것도 아닙니다.
모든 모델은 같은 텍스트를 같은 방식으로 센다
어휘가 다르면 경계와 개수도 달라집니다. 한 제공업체의 모델끼리도 서로 다른 인코딩을 사용할 수 있습니다. 다른 모델에서 얻은 개수를 재사용하지 말고, 사용할 특정 모델 인터페이스로 직접 세어야 합니다.
직접 입력한 텍스트만 계산된다
API 요청에는 시스템 지침, 대화 기록, 도구 정의, 파일 또는 이미지 표현과 서비스가 추가한 형식이 포함될 수 있습니다. 이 중 일부는 최종 채팅 인터페이스에 보이지 않더라도 토큰에 포함될 수 있습니다. 정확한 개수가 중요하다면 제공업체의 사용량 보고서나 전체 요청 계산 도구를 사용하세요.
토큰이 많을수록 의미가 많다
토큰 수는 정보의 양이나 품질이 아니라 모델 표현의 길이를 측정합니다. 반복적인 텍스트는 많은 토큰을 사용할 수 있습니다. 반면 압축된 수식은 적은 토큰으로 상당한 의미를 전달할 수 있습니다.
AI 토큰은 암호화폐 토큰이다
이 둘은 이름만 같을 뿐 작동 방식은 다릅니다. 텍스트 토큰은 모델 어휘의 단위입니다. 암호화폐 토큰은 블록체인의 디지털 자산 또는 기록입니다.
더 넓은 시스템에서 토큰이 차지하는 위치
토크나이저의 어휘는 일반적으로 언어 모델이 학습되기 전에 정해집니다. 학습 텍스트는 해당 토크나이저를 사용해 ID로 변환되고, 모델은 이러한 ID의 패턴을 학습합니다. 추론 시에는 동일한 매핑이 새 프롬프트를 입력 ID로 변환하고 생성된 ID를 다시 텍스트로 변환합니다.
따라서 토크나이저가 별도의 파일이나 라이브러리로 제공되더라도 모델의 일부로 간주됩니다. 모델, 어휘, 토크나이저 규칙과 특수 토큰 정의는 서로 일치해야 합니다.
토큰이라는 단어는 멀티모달 시스템에서 더 넓은 의미로 사용되기도 합니다. 제공업체가 이미지 패치, 오디오 구간 또는 비디오 프레임을 토큰으로 보고하는 단위로 변환할 수 있습니다. 이러한 단위는 모델 처리와 사용량 산정에서 비슷한 역할을 하지만, 텍스트 토크나이저가 만든 조각은 아닙니다.token can also be used more broadly in multimodal systems. A provider may convert image patches, audio intervals, or video frames into units that it reports as tokens. Those units serve a similar role in model processing and accounting, but they are not pieces produced by a text tokenizer.
다음 단계
토큰이 모델의 작업 한도를 어떻게 설정하는지 알아보려면 컨텍스트 윈도우란 무엇인가요?를 읽어 보세요. API 사용량 범주는 입력 토큰 vs. 출력 토큰 vs. 추론 토큰에서 계속 알아볼 수 있습니다.