GPT-4, ChatGPT 및 AI 모델용 무료 토큰 카운터
OpenAI의 tiktoken 라이브러리로 텍스트의 토큰 수를 정확히 계산합니다. GPT-4, GPT-3.5, ChatGPT가 API 요금 산정과 컨텍스트 길이 제한에 실제로 사용하는 것과 동일한 인코딩 방식으로 토큰 수를 계산합니다.
토큰 카운터
잘못된 입력
문서화
토큰 카운터란?
토큰 카운터는 AI 언어 모델이 텍스트를 읽을 때 해당 텍스트가 몇 개의 토큰으로 나뉘는지 측정합니다. 토큰은 GPT-4와 ChatGPT 같은 모델이 원시 문자 대신 처리하는 작은 텍스트 단위로, 완전한 단어, 단어의 일부 또는 문장 부호일 수 있습니다. 이 도구는 OpenAI가 공개한 오픈 소스 토크나이저 라이브러리인 tiktoken을 사용하므로, 토큰 수가 OpenAI 자체 모델과 API에서 산출하는 값과 일치합니다.
토큰화의 작동 방식
토크나이저는 단순히 단어 수를 세지 않습니다. 텍스트를 바이트 페어 인코딩(BPE)이라는 알고리즘에 통과시킵니다. 이 알고리즘은 텍스트의 개별 바이트에서 시작하여, 학습 중 대규모 텍스트 데이터에서 학습한 패턴을 바탕으로 가장 자주 나타나는 인접 쌍을 반복해서 병합합니다. 그 결과 수만 개의 일반적인 텍스트 조각으로 이루어진 고정 어휘가 만들어집니다. 여기에는 짧은 단어 전체, 자주 나타나는 단어 조각, 드문 문자에 사용되는 개별 문자가 포함됩니다.
따라서 영어 단어 하나가 토큰 하나가 되는 경우가 많지만, 길거나 특이한 단어는 두 개 이상의 토큰으로 나뉠 수 있습니다. 공백은 대개 자체적으로 세지 않고 다음 토큰의 시작 부분에 붙으며, 문장 부호는 일반적으로 각각 별도의 토큰이 됩니다.
이 도구가 지원하는 인코딩
Tiktoken은 각각 OpenAI 모델군과 연결된 여러 인코딩을 제공합니다. 이 도구는 세 가지를 지원합니다.
| 인코딩 | 사용 모델 | 대략적인 어휘 크기 |
|---|---|---|
cl100k_base | GPT-3.5 및 GPT-4 계열 모델, ChatGPT | 약 100,000개 토큰 |
p50k_base | 이후 출시된 GPT-3 모델 | 약 50,000개 토큰 |
r50k_base | 이전 GPT-3 및 GPT-2 모델 | 약 50,000개 토큰 |
cl100k_base가 기본으로 선택됩니다. 오늘날 대부분의 사람이 사용하는 모델군을 다루기 때문입니다. 같은 텍스트라도 인코딩에 따라 토큰 수가 달라질 수 있습니다. 각 인코딩은 서로 다른 텍스트로 학습되었고 문자를 서로 다른 방식으로 병합하기 때문입니다.
토큰 수를 계산하는 방법
BPE 병합은 특정 텍스트와 학습된 어휘에 따라 달라지므로, 문자 수나 단어 수를 토큰 수로 바꾸는 간단한 산술 공식은 없습니다. 정확한 방법은 텍스트를 토크나이저 자체에 통과시키는 것뿐입니다.
- 대상 모델에 맞는 인코딩을 선택합니다.
- 해당 인코딩의 토크나이저에 텍스트를 입력합니다.
- 생성된 토큰 ID 목록의 개수를 셉니다. 그 목록의 길이가 토큰 수입니다.
영어 텍스트의 대략적인 추정치로는 토큰 하나가 문자 네 개 또는 단어 4분의 3 정도에 해당합니다. 이는 참고용일 뿐입니다. 숫자, 코드, 영어가 아닌 텍스트, 특이한 철자에 따라 그 비율은 크게 달라질 수 있습니다.
풀이 예제
다음 문장을 살펴보겠습니다.
토큰화는 텍스트를 여러 조각으로 나눈다.
cl100k_base 인코딩에서 tiktoken은 이 문장을 7개 토큰으로 나눕니다:
Token, ization, splits, text, into, pieces, .
"Tokenization" 자체가 "Token"과 "ization"이라는 두 토큰으로 나뉘는 반면, 나머지 단어는 각각 온전한 형태로 유지됩니다. 마지막 마침표도 자체적인 토큰입니다. 따라서 문자 37개와 단어 5개로 이루어진 문장이 6개가 아니라 7개 토큰을 생성합니다.
토큰 수가 중요한 이유
AI 제공업체는 API 사용료를 토큰 단위로 부과하며, 전송한 텍스트와 응답으로 생성된 텍스트를 모두 계산합니다. 따라서 토큰 수를 알면 요청을 보내기 전에 비용을 예측할 수 있습니다. 모든 모델에는 최대 컨텍스트 길이도 있습니다. 이는 하나의 요청과 그 응답에 함께 포함될 수 있는 토큰 수의 한도입니다. 이 한도는 모델마다 다르고 제공업체가 새 버전을 출시함에 따라 바뀌므로, 기억에 의존하기보다 사용 중인 모델의 최신 문서에서 확인하는 것이 좋습니다.
자주 묻는 질문
AI 언어 모델에서 토큰이란 무엇인가요? 토큰은 언어 모델이 하나의 단위로 읽는 텍스트 조각입니다. 짧은 단어 전체, 긴 단어의 일부, 문장 부호 또는 다음 단어에 붙은 공백일 수 있습니다.
같은 텍스트인데 인코딩마다 토큰 수가 다른 이유는 무엇인가요? 각 인코딩은 자체 텍스트 표본으로 학습되며, 자주 나타나는 조각으로 이루어진 자체 어휘를 만듭니다. 한 어휘에서는 단일 토큰이 될 만큼 흔한 단어가 다른 어휘에는 없을 수 있으므로 다르게 나뉩니다.
문장 부호도 토큰으로 계산되나요? 예. 문장 부호는 대개 각각 별도의 토큰으로 계산되지만, 토크나이저의 학습 중 해당 조합이 얼마나 자주 나타났는지에 따라 옆 문자와 병합되는 경우도 있습니다.
토큰은 단어와 같은 것인가요? 아닙니다. 짧고 흔한 단어는 대개 각각 하나의 토큰입니다. 더 길거나 덜 흔한 단어와 영어 이외의 대부분의 단어는 두 개 이상의 토큰으로 나뉘는 경우가 많습니다.
이 도구는 얼마나 정확한가요? OpenAI 자체의 tiktoken 라이브러리를 사용하고 OpenAI가 내부적으로 사용하는 것과 동일한 인코딩 로직을 실행하므로, 같은 텍스트와 인코딩에 대해 OpenAI API 호출이 보고하는 값과 토큰 수가 일치합니다.
이 도구로 OpenAI가 아닌 모델의 토큰도 계산할 수 있나요? 이 도구는 OpenAI 모델용으로 구축된 tiktoken 인코딩을 사용합니다. Anthropic이나 Google 같은 다른 제공업체는 자체 토크나이저를 사용하므로 같은 텍스트에 대해 다른 토큰 수를 산출할 수 있습니다.
참고 문헌
- OpenAI. "tiktoken." GitHub, https://github.com/openai/tiktoken.
- Sennrich, Rico 외. "Neural Machine Translation of Rare Words with Subword Units." arXiv:1508.07909, 2016, http://arxiv.org/abs/1508.07909.
- Brown, Tom B. 외. "Language Models are Few-Shot Learners." arXiv:2005.14165, 2020, http://arxiv.org/abs/2005.14165.