2025년 7월 28일 작성

Token - AI가 언어를 처리하는 기본 단위

Token은 AI 언어 model이 text를 처리하는 가장 작은 기본 단위로, tokenization 방식에 따라 model 성능과 비용이 크게 달라집니다.

Token : AI 언어 처리의 기본 단위

  • token은 AI 언어 model이 text를 처리하는 가장 작은 기본 단위입니다.
    • 복잡한 자연어를 computer가 이해할 수 있는 형태로 분해하는 과정에서 사용됩니다.
    • 단어, 부분 단어, 문자, 기호 등 의미 있는 text 조각으로 구성됩니다.
  • tokenization은 연속된 text를 개별 token으로 나누는 과정으로, AI model의 성능과 효율성에 직접적인 영향을 미칩니다.
    • model이 처리할 수 있는 입력 길이의 제한을 결정합니다.
    • token 수에 따라 계산 비용과 처리 시간이 달라집니다.

Token의 역할

  • token은 AI model이 언어를 이해하기 위해 text를 분해하는 최소 단위입니다.
    • 인간에게는 자연스러운 문장도 AI에게는 숫자와 기호의 연속으로 변환되어야 합니다.
    • 이 변환 과정에서 token이 중간 단계 역할을 담당합니다.
  • 의미적 완결성을 고려하여 text를 분할합니다.
    • 자주 사용되는 단어는 하나의 token으로 유지됩니다.
    • 희귀하거나 복잡한 단어는 여러 개의 작은 token으로 분할됩니다.
    • 언어의 특성과 문맥을 고려하여 최적의 분할 지점을 찾습니다.

Text 처리 과정에서의 Token

  • raw text에서 numerical representation까지의 bridge 역할을 수행합니다.
    • 사용자 입력 text → tokenization → token sequence → numerical encoding → AI 처리.
    • AI 출력 → numerical decoding → token sequence → detokenization → 최종 text.
  • vocabulary 구성의 기준이 됩니다.
    • AI model은 미리 정의된 token vocabulary를 가지고 있습니다.
      • vocabulary란 model이 이해할 수 있는 token의 집합입니다.
    • vocabulary에 없는 새로운 단어는 기존 token들의 조합으로 표현됩니다.
    • vocabulary 크기는 model의 표현력과 계산 효율성 간의 trade-off를 결정합니다.

Tokenization 방식과 특징

  • tokenization은 언어와 model에 따라 다양한 방식으로 구현됩니다.
    • 각 방식마다 고유한 장단점과 적용 분야가 있습니다.
    • 최근에는 subword 기반 방식이 주류를 이루고 있습니다.

Word-level Tokenization

  • 단어 단위로 text를 분할하는 가장 직관적인 방식입니다.
    • 공백과 구두점을 기준으로 단어를 구분합니다.
    • 인간의 언어 이해 방식과 가장 유사합니다.
  • vocabulary 크기가 매우 커지는 문제가 있습니다.
    • 모든 단어를 개별 token으로 처리하면 수십만 개의 vocabulary가 필요합니다.
    • 새로운 단어나 오타에 대해 처리하기 어렵습니다.
    • memory 사용량과 계산 복잡도가 급격히 증가합니다.

Character-level Tokenization

  • 개별 문자를 token으로 사용하는 방식입니다.
    • vocabulary 크기가 매우 작아 효율적입니다.
    • 모든 text를 표현할 수 있어 coverage 문제가 없습니다.
  • 의미적 연관성이 떨어지는 한계가 있습니다.
    • 문자 단위로는 단어의 의미를 파악하기 어렵습니다.
    • 긴 sequence가 생성되어 처리 효율성이 낮아집니다.
    • long-range dependency를 학습하기 어렵습니다.

Subword Tokenization

  • 단어와 문자 사이의 중간 단위를 사용하는 현대적 방식입니다.
    • 단어의 일부분이나 morpheme을 기준으로 분할합니다.
    • vocabulary 크기와 표현력 사이의 균형을 맞춥니다.
  • BPE(Byte Pair Encoding)가 가장 널리 사용되는 subword 기법입니다.
    • 자주 함께 나타나는 문자 pair를 점진적으로 병합합니다.
    • 통계적 frequency를 바탕으로 optimal subword를 찾아냅니다.
    • GPT, BERT 등 대부분의 modern language model에서 사용됩니다.
  • SentencePiece는 언어 독립적인 tokenization을 지원합니다.
    • 공백이 없는 언어(중국어, 일본어 등)도 효과적으로 처리합니다.
    • 다국어 model에서 일관된 tokenization을 보장합니다.

언어별 Tokenization 특성

  • 각 언어의 고유한 특성에 따라 tokenization 방식이 달라집니다.
    • 문자 system, 단어 구조, 형태론적 특성을 고려해야 합니다.
    • 동일한 tokenizer라도 언어에 따라 다른 결과를 생성합니다.

영어 Tokenization

  • 공백 기반 단어 분리가 상대적으로 명확합니다.
    • 대부분의 단어가 공백으로 구분되어 처리가 용이합니다.
    • subword 분할도 morphological boundary와 잘 일치합니다.
  • 일반적으로 단어 단위로 분할되지만, subword 방식도 사용됩니다.
예시 Tokenization 결과
“Hello world!” [“Hello”, “world”, “!”]
“running” [“run”, “ning”] (subword 방식)
“unhappiness” [“un”, “happy”, “ness”] (prefix, root, suffix 분리)

한국어 Tokenization

  • 교착어 특성으로 인한 복잡한 형태 변화를 고려해야 합니다.
    • 어근에 다양한 어미와 조사가 결합되어 형태가 변합니다.
    • 동일한 의미라도 문맥에 따라 다른 형태로 나타납니다.
  • 한국어 tokenization은 형태소 분석과 밀접하게 연관되어 있습니다.
예시 Tokenization 결과
“안녕하세요” [“안녕”, “하세요”] 또는 [“안”, “녕”, “하”, “세”, “요”] (형태소 단위)
“가겠습니다” [“가”, “겠”, “습니다”] (어근 + 시제 + 존댓말)
“학교에서” [“학교”, “에서”] (조사 분리)
  • 따라서 형태소 분석과의 연계가 중요합니다.
    • 의미 단위로 분할하면 model의 이해도가 향상됩니다.
    • 하지만 computational cost와 complexity가 증가합니다.

중국어와 일본어 Tokenization

  • 공백이 없는 연속된 문자열을 처리해야 합니다.
    • 단어의 경계를 자동으로 찾아내는 word segmentation이 필요합니다.
    • 문맥을 고려하여 의미 단위로 분할해야 합니다.
  • 다양한 문자 체계의 혼용을 고려해야 합니다.
    • 일본어: 히라가나, 가타카나, 한자가 혼재
    • 중국어: 간체자와 번체자의 차이
    • 각 문자 체계마다 다른 tokenization 전략이 필요합니다.
예시 Tokenization 결과
“我爱自然语言处理” [“我”, “爱”, “自然”, “语言”, “处理”] (중국어)
“自然言語処理が好きです” [“自然”, “言語”, “処理”, “が”, “好き”, “です”] (일본어)

Token 수와 비용 계산

  • 대부분의 AI service는 token 수를 기준으로 과금합니다.
    • 입력 token과 출력 token에 대해 각각 다른 요금을 적용합니다.
    • token 효율성이 직접적인 비용 절감으로 이어집니다.

Token 수 예측의 어려움

  • 동일한 text라도 tokenizer에 따라 token 수가 달라집니다.
    • 각 AI service provider마다 고유한 tokenization 방식을 사용합니다.
    • 사전에 정확한 token 수를 예측하기 어려운 경우가 많습니다.
  • 언어별 token 효율성의 차이가 존재합니다.
    • 영어는 일반적으로 token 효율성이 높습니다.
    • 한국어, 중국어 등은 상대적으로 더 많은 token이 필요합니다.
    • 이는 training data의 언어 분포와 tokenizer 설계에 기인합니다.
  • text 복잡도에 따른 변동성이 큽니다.
    • 일반적인 vocabulary는 적은 token으로 표현됩니다.
    • 전문 용어, 고유 명사, 새로운 단어는 더 많은 token이 필요합니다.
    • code, 수식, 특수 기호는 예상보다 많은 token을 소모할 수 있습니다.

Token 계산 도구와 API

  • 일부 service provider는 token 계산 도구를 공급합니다.
    • OpenAI의 tiktoken library로 GPT model의 token 수를 미리 계산할 수 있습니다.
    • Anthropic은 최근 token 계산 API를 공개했습니다.
    • Google, Cohere 등도 비슷한 도구들을 순차적으로 출시하고 있습니다.
  • 정확한 비용 예측을 위한 사전 testing이 중요합니다.
    • 실제 사용할 text sample로 token 수를 측정해봅니다.
    • batch processing 시 token 수의 분포를 파악합니다.
    • 예상 사용량에 따른 월별 비용을 계산합니다.

Token 최적화 전략

  • 효율적인 token 사용은 성능과 비용 모두에 영향을 미칩니다.
    • 불필요한 token을 줄이면 처리 속도가 빨라지고 비용이 절감됩니다.
    • 하지만 의미 전달에 필수적인 정보는 유지해야 합니다.

입력 Text 최적화

  • 불필요한 공백과 formatting을 제거합니다.
    • 연속된 공백, tab, 줄바꿈 등을 정리합니다.
    • 하지만 문맥 이해에 필요한 구조는 보존해야 합니다.
  • 중복되는 정보를 간소화합니다.
    • 같은 내용을 반복하는 문장을 통합합니다.
    • 핵심 정보만 남기고 부차적인 설명을 제거합니다.
  • abbreviation과 acronym을 활용합니다.
    • 자주 사용되는 긴 용어는 줄임말로 대체합니다.
    • 단, model이 이해할 수 있는 범위 내에서 사용해야 합니다.

Prompt Engineering을 통한 최적화

  • 효율적인 prompt 구조를 설계합니다.
    • 핵심 지시 사항을 앞쪽에 배치합니다.
    • 예시는 필요 최소한으로 제한합니다.
    • template화하여 재사용 가능한 형태로 만듭니다.
  • context length 관리를 체계적으로 수행합니다.
    • 대화 history에서 오래된 내용을 정리합니다.
    • 중요한 context만 선별하여 유지합니다.
    • sliding window 방식으로 관리합니다.

Token과 AI Model 성능의 관계

  • token의 품질과 구성이 model output에 직접적인 영향을 미칩니다.
    • 적절한 tokenization은 model의 이해도를 높입니다.
    • 부적절한 token 분할은 의미 손실을 가져올 수 있습니다.

Tokenization이 성능에 미치는 영향

  • 의미 단위 보존이 중요합니다.
    • 관련된 morpheme이 분리되면 의미 파악이 어려워집니다.
    • 합성어나 전문 용어의 적절한 처리가 필요합니다.
  • consistency 유지가 성능 향상의 핵심입니다.
    • 동일한 개념이 항상 같은 방식으로 tokenize되어야 합니다.
    • 불규칙한 분할은 model 학습을 방해합니다.
  • vocabulary coverage를 확보해야 합니다.
    • out-of-vocabulary 문제를 최소화해야 합니다.
    • domain-specific term에 대한 적절한 처리가 필요합니다.

Token 길이와 처리 효율성

  • 적절한 token 길이가 processing efficiency를 결정합니다.
    • 너무 긴 token: 계산 복잡도 증가, memory 사용량 증가
    • 너무 짧은 token: sequence 길이 증가, context window 비효율
  • batch processing에서의 고려 사항입니다.
    • token 수의 분산이 클수록 padding overhead가 증가합니다.
    • 비슷한 길이의 sequence를 함께 처리하는 것이 효율적입니다.

Reference


목차