허허의 오늘은 뭐 먹지?

GPT(chatgpt계열)에서 토큰(token) 수 세기 본문

AI

GPT(chatgpt계열)에서 토큰(token) 수 세기

luminovus 2025. 1. 22. 23:39
반응형

GPT에서 말하는 "토큰(Token)"이란, 텍스트(문자열)를 모델이 처리할 수 있는 단위로 쪼개어 놓은 것을 의미한다.
예를 들어, 사람이 작성한 글(문장, 단어, 문장부호 등)을 GPT가 이해하기 위해선 이를 내부적으로 작은 조각들(토큰)으로 분할해야 한다.

아래는 토큰에 대한 주요 특징이다:

  1. 텍스트의 최소 처리 단위
    • 토큰은 단어 전체가 될 수도 있고, 단어의 일부(접사)나 문장부호가 붙은 형태가 될 수도 있다.
    • 예를 들어, “playing”이라는 단어가 play + ing 두 개의 토큰으로 분리될 수 있다.
    • 공백, 구두점, 특별 기호 등도 독립된 토큰으로 처리될 수 있다.
  2. 언어 모델 학습과 추론에 활용
    • GPT는 입력으로 들어오는 텍스트를 토큰 단위로 인식하고, 각 토큰을 벡터(수치)로 변환해 모델에 입력한다.
    • 모델이 다음에 올 토큰을 예측하거나, 문맥 속에서 어떤 토큰이 적절한지를 판단하는 방식으로 작동한다.
  3. 컨텍스트 윈도우(Context Window)와 토큰 제한
    • GPT는 한 번에 처리할 수 있는 토큰의 최대 개수(컨텍스트 윈도우 크기)가 정해져 있다.
    • 예를 들어, GPT-3.5 계열 모델은 수천 개에서 만여 개의 토큰 정도가 한계이며, 이를 넘어서면 이전 문맥(토큰)을 잊어버린다.
  4. 가격 및 사용량 측정 단위
    • ChatGPT API나 OpenAI API를 사용할 때, 가격과 사용량이 ‘토큰’을 기준으로 측정된다.
    • 예를 들어, “입력 토큰 N개, 출력 토큰 M개 사용 시 비용”과 같은 식으로 과금이 이뤄진다.
  5. 토큰화(Tokenization) 알고리즘
    • GPT 시리즈는 BPE(Byte Pair Encoding)와 같은 기법을 활용해 텍스트를 토큰으로 분할한다.
    • 이 알고리즘은 전체 텍스트에서 가장 자주 등장하는 글자열(서브워드)을 기준으로 점진적으로 토큰을 생성한다.

정리하면, GPT 토큰(Token)이란 GPT 모델이 텍스트를 이해하고 처리하기 위해 사용하는 기본 단위다.
이 토큰을 기준으로 모델이 맥락을 파악하고 결과를 생성하며,
API 비용도 토큰 양에 따라 책정된다.

 

그럼 토큰의 크기는 어떻게 측정할 수 있을까?!

 

ChatGPT(또는 GPT 계열 모델)에서 토큰 크기(토큰 개수)를 확인하는 방법은 크게 두 가지다.

  1. API 사용 시 응답에 포함되는 사용량(Usage) 확인
  2. 직접 토큰화 라이브러리를 사용해 토큰 개수 계산

아래에서 두 가지 방법을 차례대로 설명한다.


1. API 사용 시 사용량(Usage) 확인하기

OpenAI API를 직접 호출해 ChatGPT(GPT-3.5, GPT-4 등)를 사용할 때는, 응답(Response)에 usage 항목이 포함될 수 있다. 이 필드를 통해 실제로 사용된 **프롬프트 토큰(prompt_tokens)**과 응답 토큰(completion_tokens) 수를 확인할 수 있다.

예시 응답(JSON)에서 usage 정보가 다음과 같이 제공된다.

{
  "id": "chatcmpl-1234",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-3.5-turbo-0301",
  "usage": {
    "prompt_tokens": 15,
    "completion_tokens": 34,
    "total_tokens": 49
  },
  "choices": [ ... ]
}
  • prompt_tokens: 사용자 프롬프트(질문)에 사용된 토큰 수
  • completion_tokens: 모델이 생성한 답변(결과)에 사용된 토큰 수
  • total_tokens: 이 둘을 합친 값

API 기반으로 ChatGPT를 사용 중이라면, 이 값을 보고 손쉽게 대화에 사용된 토큰 수를 알 수 있다.


2. 직접 토큰화(Tokenization) 라이브러리 사용하기

2.1 tiktoken 라이브러리

OpenAI에서 제공하는 tiktoken 라이브러리는 GPT 계열 모델이 텍스트를 어떻게 토큰화하는지 시뮬레이션해볼 수 있도록 해준다.

  • 파이썬(python) 환경에서 사용 가능
  • GPT 모델별로 다른 토큰화 방식을 사용할 수 있음

설치

pip install tiktoken

 

사용예시

import tiktoken

# 1) 사용할 모델에 맞는 tokenizer 불러오기
tokenizer = tiktoken.get_encoding("cl100k_base")  
# 예: GPT-3.5-turbo나 GPT-4에서 주로 사용하는 인코딩

text = "안녕하세요, ChatGPT 토큰을 어떻게 세나요?"

# 2) 텍스트를 토큰 리스트로 변환
tokens = tokenizer.encode(text)

print("토큰 리스트:", tokens)
print("토큰 개수:", len(tokens))
  • get_encoding("cl100k_base"):
    • GPT-3.5-turbo나 GPT-4에서 사용되는 인코딩 방식
    • 모델별로 “gpt2” 또는 “r50k_base” 등 다른 인코딩을 쓸 수도 있다.
  • tokens는 정수 ID 리스트이며, len(tokens)가 곧 토큰 수가 된다.

2.2 모델별 토큰화 차이

GPT-4, GPT-3.5-turbo, GPT-3 등 모델별로 토큰화 룰이 약간씩 다를 수 있다.
tiktoken에서 공식적으로 권장하는 인코딩 옵션은 다음과 같다.

  • GPT-3.5-turbo, GPT-4: cl100k_base
  • GPT-3 (text-davinci-003 등): r50k_base or p50k_base (권장: p50k_base)

사용 중인 모델에 맞춰 적절한 인코딩 옵션을 선택하면 실제 모델과 동일하게 토큰을 쪼갤 수 있다.


3. ChatGPT 웹 인터페이스(브라우저)에서 토큰 확인하기

  • ChatGPT 웹 인터페이스(https://chat.openai.com 등)에서는 기본적으로 토큰 수를 직접 보여주지 않는다.
  • 다만, 대화맥락이 길어질수록 “이전 내용 일부를 잊어버리는” 현상이 발생할 수 있는데, 이는 컨텍스트 윈도우(모델이 한 번에 처리 가능한 최대 토큰 수) 한계를 넘어설 때 나타난다.
  • 정확한 토큰 수를 확인하려면, 자신이 작성한 메시지(프롬프트)를 복사하여 토큰화 라이브러리(tiktoken) 또는 토큰 카운터 웹 툴을 사용해 세는 방법을 쓴다.
반응형

'AI' 카테고리의 다른 글

sLLM (Smaller Large Language Model) 이란?  (1) 2025.01.23
AI 인프라 프로바이더와 시장  (0) 2025.01.22
GPT 메모리란?  (0) 2025.01.22
몇가지 시나리오에 따른 gpt 프롬프트 샘플  (0) 2025.01.22
gpt 프롬프트 작성 가이드  (0) 2025.01.22
Comments