LLM은 글자나 단어 전체를 읽지 않습니다. 그들은 **토큰(tokens)**을 읽습니다. 토큰이란 텍스트의 서브워드 청크(subword chunks)로, 숫자로 변환됩니다. 토큰을 이해하는 것이 중요한 이유는 그것이 두 가지를 동시에 결정하기 때문입니다: 모델이 얼마나 기억할 수 있는지, 그리고 사용자의 AI 앱 운영 비용입니다.
쉽게 말해: 킬로미터 단위가 아닌 작은 텍스트 청크 단위로 계산하는 택시 미터기를 생각해보세요. 보내는 모든 청크와 모델이 되돌려 쓰는 모든 청크가 요금에 추가됩니다.
다이어그램: 토크나이저(tokenizer)는 텍스트를 서브워드 청크로 분할하고 각각을 숫자에 매핑합니다. 일반적인 단어는 하나의 토큰이고, 희귀하거나 복합적인 단어는 여러 조각으로 나뉘며, 숫자와 구두점은 종종 여러 개의 토큰을 차지합니다. 애니메이션 버전 보기.
일반적인 규칙으로는 토큰 하나가 영어 단어의 약 3분의 4 정도이므로, 100개의 토큰은 대략 75단어에 해당합니다. 일반적인 단어는 하나의 토큰으로 처리됩니다. 희귀하거나 복합적인 단어는 조각으로 나뉘며, 숫자, 기호 및 코드는 각각 여러 개의 토큰을 차지하는 경우가 많습니다. 모델마다 다른 토크나이저를 사용하므로 정확한 개수는 다릅니다.
컨텍스트 창 (The context window)
**컨텍스트 창(context window)**은 모델의 단기 기억 한계치입니다: 한 번에 고려할 수 있는 총 토큰의 개수입니다. 128,000개의 토큰 창을 가진 모델은 단일 호출에서 몇 백 페이지 분량의 텍스트를 담을 수 있습니다. 모든 것이 이 한도에 포함됩니다: 시스템 명령어(system instructions), 채팅 기록(chat history), 붙여넣는 문서, 그리고 응답 자체입니다. 이 한도를 초과하면 가장 오래된 내용부터 삭제되므로, 모델이 이전 지침을 잊어버리는 것처럼 보일 수 있습니다.
다이어그램: 컨텍스트 창은 모델이 한 번에 담을 수 있는 양입니다. 명령어, 채팅 기록, 문서, 그리고 응답 모두 계산됩니다. 오버플로우가 발생하면 가장 오래된 텍스트가 삭제되어 사실상 잊힙니다. 애니메이션 버전 보기.
토큰 경제학 (Token economics)
제공자들은 사용자가 보내는 **입력 토큰(input tokens)**과 모델이 생성하는 **출력 토큰(output tokens)**에 대해 비용을 청구합니다. 출력 토큰은 텍스트를 생성하는 데 더 많은 GPU 작업이 필요하기 때문에, 일반적으로 입력 토큰보다 몇 배나 비싸며 종종 세 배에서 네 배에 달하기도 합니다. 가격은 제공자마다 다르고 자주 변경되므로 항상 최신 가격표를 확인해야 합니다.
다이어그램: 제공자들은 입력 토큰과 출력 토큰을 별도로 청구하며, 출력 토큰이 일반적으로 몇 배 더 비쌉니다. 이 예시 호출에서는 출력이 전체 토큰의 5분의 1이지만 비용은 절반 정도입니다. 애니메이션 버전 보기.
최적화(Optimization)
작은 습관들이 규모가 커지면 빠르게 쌓입니다:
- 기록(history)을 간결하게 만드세요. 매번 전체 채팅 내용을 보내지 마십시오. 최근 대화 내용만 유지하고, 오래된 내용은 요약하거나 삭제하십시오.
- 주입되는 텍스트와 코드에서 불필요한 공백과 노이즈를 제거하십시오.
- 반복되는 긴 프롬프트에 대해 비용을 절감하려면 정적인 시스템 지침에 **프롬프트 캐싱(prompt caching)**을 사용하십시오.
- 최대 토큰 수 설정으로 답변 길이를 제한하십시오.
- 쉬운 작업은 더 작은 모델로 라우팅하고, 플래그십 모델은 어려운 문제에만 남겨두십시오.
다이어그램: 채팅 기록 간결화, 공백 제거, 정적 프롬프트 캐싱, 답변 길이 제한 및 쉬운 작업을 더 작은 모델로 라우팅하는 각 방법이 비용을 절감합니다. 여기에 제시된 백분율은 예시입니다. 애니메이션 버전 보기.
여기에는 실제 토크나이저를 사용하여 토큰 수를 계산하고 호출 비용을 추정하는 동일한 아이디어가 파이썬 코드로 구현되어 있습니다. 제시된 가격은 가상의 단위이며, 단지 계산의 형태를 보여주기 위함입니다.
import tiktoken
enc = tiktoken.get_encoding(
본 게시물은 애니메이션 다이어그램을 포함하고 있으며, [https://sureshpallapothu.in/blog/day-10-tokens-and-cost](https://sureshpallapothu.in/blog/day-10-tokens-and-cost)에서 최초 게시되었습니다.