검색
검색
공개 노트 검색
회원가입로그인

ChatGPT 토큰 제한 이해하기

ChatGPT를 이용하다가 다음 오류 메시지를 보신 적이 있으신가요?

ChatGPT 토큰 제한 이해하기 image 1

The message you submitted was too long, please reload the conversation and submit something shorter.

메시지가 너무 길기 때문에 발생하는 에러입니다. 왜 이런 에러가 발생할까요? 바로 ChatGPT에 있는 토큰 제한 (max token, context window) 때문입니다.

토큰은 머신러닝에서 글자를 효율적으로 처리하기 위한 단위입니다. ChatGPT는 BPE(Byte-Pair Encoding)라는 기법을 사용합니다. BPE는 일종의 텍스트 압축 알고리즘으로 훈련 데이터에서 많이 등장하는 글씨의 조합을 하나의 토큰으로 치환합니다.

예를 들어 banana is delicious. 라는 문장을 토큰화하면 다음과 같이 5개의 토큰이 됩니다. [ban/ana/ is/ delicious/.] 이를 통해 한 글자를 단위로 하는게 아니라 토큰을 단위로 해서 데이터를 좀 더 효율적으로 처리할 수 있습니다.

최초에 LLM이 학습될 때 특정 토큰 수를 기준으로 잘라서 학습을 하는데, 이 길이가 토큰의 제한에 영향을 끼칩니다.

예를 들어 ChatGPT의 기본 모델인 GPT-3.5는 4096 토큰 제한이 있고 GPT-4는 8192의 토큰 제한이 있습니다. GPT-4-Turbo 의 경우 무려 12만 8천 토큰(128k)까지 소화가 가능합니다.

이 토큰 제한은 사용자의 입력값과 ChatGPT의 출력값을 합한 개념 입니다. 예를 들어 GPT-3.5로 2000 토큰을 입력했다면 ChatGPT가 출력할 수 있는 최대 토큰 수는 2096 토큰입니다.

모델명최대 토큰 수
gpt-3.54096 토큰
gpt-3.5-turbo16,385토큰
gpt-48192 토큰
gpt-4-turbo-preview128,000토큰

출처 : https://platform.openai.com/docs/models

그렇다면 글자수로는 어떻게 될까요? 사실 토큰 수로 정확한 글자 수를 알기는 어렵습니다. 하지만 대략적으로 생각해 보면 영어는 1글자 당 0.25토큰 (1토큰 당 4글자), 한글은 1글자 당 2~3토큰 정도라고 볼 수 있습니다. 좀 더 제 경험 상의 팁을 드리면 한글의 경우 영어와 띄어쓰기, 문장 부호 등이 섞여있기 때문에 1글자 당 1토큰 정도로 수렴하게 됩니다.

그런데 왜 한글은 영어보다 더 많은 토큰을 차지할까요? 그건 훈련 데이터에 더 많이 등장하는 글자일 수 록 토큰화가 더 잘되기 때문입니다. 영어의 경우 많은 데이터가 있기 때문에 적은 토큰으로 표현할 수 있지만 한글은 상대적으로 적은 데이터가 있기 때문에 더 많은 토큰이 필요하게 됩니다.

다른 말로 이 토큰의 한계는 ChatGPT가 맥락을 기억할 수 있는 길이라고 볼 수 도 있습니다. (컨텍스트 윈도우, context window) 이 범위 안에서 ChatGPT가 이전 내용을 기억하고 처리할 수 있기 때문입니다. 일종의 메모리와 같은 개념입니다.

인공지능 모델들이 발전하면서 이 토큰의 한계는 계속 늘어날 것으로 보입니다. 그리고 요즘 ChatGPT 서비스에서는 다양한 기법들을 사용해서 토큰의 한계를 넘어도 대답을 해주는 경우가 많은 것 같습니다. 하지만 API 서비스에서는 토큰의 한계가 정확히 적용됩니다.

이걸 이해하고 있다면 왜 ChatGPT에 너무 많은 텍스트를 입력하면 에러가 나는지, 한글은 왜 더 많은 토큰을 차지하는지, 어디까지 기억할 수 있는지 아실 수 있으실 겁니다. 토큰은 ChatGPT와 같은 LLM에서 기본 단위이자 중요한 개념입니다.

실습

Tiktoken Calculator - a Hugging Face Space by JacobLinCool 또는 Tiktokenizer 를 사용해서 다음 글자가 몇 개의 토큰인지 알아 보세요.

  1. Learning is fun.

  2. 지식을 배우는 것은 즐겁다.

이를 통해서 글자가 어떻게 토큰화가 되는지 얼마의 토큰을 차지하는지 아실 수 있으실 겁니다.

token

조회수 : 160
공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기