토큰은 언어 모델이 읽고 쓰는 텍스트의 기본 단위입니다. 대규모 언어 모델의 맥락에서 토큰은 반드시 전체 단어일 필요는 없으며, 하위 단어, 문자, 또는 바이트 수준의 표현일 수도 있습니다. 원시 텍스트를 토큰으로 변환하는 과정을 토큰화라고 하며, 이는 모델이 언어를 해석하고 생성하는 방식을 결정하는 중요한 전처리 단계입니다. 언어 모델의 모든 운영 지표(가격, 컨텍스트 창 크기, 처리 속도 포함)는 토큰 단위로 측정되므로, 토큰은 현대 인공지능 시스템의 통화 역할을 합니다.
토큰화를 통해 모델은 방대한 어휘를 효율적으로 처리할 수 있습니다. 토크나이저는 모든 가능한 단어를 저장하는 대신 학습된 어휘(일반적으로 30,000~100,000개의 토큰)를 기반으로 텍스트를 더 작은 조각으로 분해합니다. 예를 들어, "unhappiness"라는 단어는 "un", "happi", "ness"로 분할될 수 있는 반면, "the"와 같은 일반적인 단어는 단일 토큰으로 유지됩니다. 이 접근 방식은 계산 효율성과 언어적 범위 사이의 균형을 맞추어, 비현실적인 사전 크기 없이도 다양한 언어와 기술 용어를 처리할 수 있게 합니다.
토큰화 방법
수년에 걸쳐 여러 토큰화 알고리즘이 개발되었습니다. 2016년 Rico Sennrich와 동료들이 도입한 바이트 페어 인코딩(BPE)은 가장 널리 사용되는 방법 중 하나입니다. BPE는 훈련 말뭉치에서 가장 빈번한 문자 또는 하위 단어 쌍을 목표 어휘 크기에 도달할 때까지 반복적으로 병합합니다. 또 다른 인기 있는 방법은 Google에서 개발한 WordPiece로, 우도 기반 접근 방식을 사용하여 병합을 선택합니다. 더 최근에는 Google이 만든 SentencePiece가 전체 텍스트를 문자 시퀀스로 처리하여 일본어나 중국어와 같이 명확한 단어 경계가 없는 언어를 처리할 수 있습니다.
또한 SentencePiece에 구현된 유니그램 언어 모델 토큰화는 훈련된 유니그램 모델을 기반으로 텍스트의 가장 가능성 높은 분할을 선택하는 확률적 접근 방식을 취합니다. 각 방법은 압축률, 어휘 외 처리, 다운스트림 모델 성능 측면에서 장단점이 있습니다. 토크나이저의 선택은 모델이 희귀 단어, 형태론적 변형, 다국어 텍스트를 얼마나 잘 이해하는지에 큰 영향을 미칩니다.
언어 모델에서의 역할
트랜스포머 기반 모델에서 토큰은 신경망 입력으로 사용되는 숫자 임베딩으로 변환됩니다. 각 토큰에는 어휘에서 고유한 정수 ID가 할당되며, 이러한 ID는 의미 및 구문 정보를 포착하는 고차원 벡터에 매핑됩니다. 모델은 여러 계층의 어텐션과 피드포워드 네트워크를 통해 이러한 임베딩 시퀀스를 처리하여 토큰 간의 패턴과 관계를 학습합니다.
생성 중에 모델은 주어진 이전 컨텍스트를 기반으로 다음 토큰에 대한 전체 토큰 어휘의 확률 분포를 출력합니다. 이 자기회귀 과정은 특수한 시퀀스 종료 토큰이 생성되거나 최대 길이에 도달할 때까지 계속됩니다. 토큰의 세분성은 모델이 일관된 텍스트를 생성하는 능력에 영향을 미칩니다. 하위 단어 토큰은 새로운 단어의 유연한 구성을 허용하는 반면, 문자 수준 토큰은 훨씬 더 긴 시퀀스와 더 많은 계산을 요구합니다.
컨텍스트 창 및 한계
토큰으로 측정되는 컨텍스트 창 크기는 모델이 한 번에 고려할 수 있는 텍스트의 양을 정의합니다. GPT-2와 같은 초기 모델은 1,024개의 토큰 컨텍스트 창을 가졌지만, GPT-4 Turbo와 같은 현대 모델은 최대 128,000개의 토큰을 지원하며, Claude 3과 같은 일부 모델은 200,000개의 토큰 컨텍스트를 제공합니다. 이러한 한계는 긴 문서 분석, 전체 책 요약, 또는 확장된 상호작용에서 일관된 대화 유지와 같은 모델이 수행할 수 있는 작업 유형에 직접적인 영향을 미칩니다.
입력이 컨텍스트 창을 초과하면 모델은 일반적으로 가장 오래된 토큰을 잘라내거나 슬라이딩 창 또는 검색 증강과 같은 기술을 사용하여 더 긴 텍스트를 관리합니다. 컨텍스트 창은 또한 메모리 사용량과 계산 비용에 영향을 미칩니다. 더 긴 컨텍스트는 표준 트랜스포머에서 시퀀스 길이에 따라 제곱으로 확장되는 더 많은 어텐션 계산을 요구합니다. 이로 인해 희소 어텐션 및 선형 어텐션과 같은 효율적인 어텐션 메커니즘에 대한 연구가 촉진되어 과도한 리소스 요구 없이 컨텍스트 길이를 확장할 수 있게 되었습니다.
가격 및 비용
API 제공업체는 토큰 사용량에 따라 요금을 부과하며, 일반적으로 입력 토큰과 출력 토큰을 구분합니다. 예를 들어, OpenAI의 GPT-4 Turbo는 1,000개의 입력 토큰당 $0.01, 1,000개의 출력 토큰당 $0.03의 비용이 들며, Anthropic의 Claude 3 Opus는 1,000개 토큰당 입력 $0.015, 출력 $0.075를 청구합니다. 이러한 가격은 토큰 처리의 계산 비용을 반영하며, 출력 토큰은 순차적 생성 과정으로 인해 더 비쌉니다.
토큰 수는 미세 조정 및 훈련 비용도 결정합니다. 모델 훈련에는 수십억 개의 토큰 처리가 포함되며, 총 비용은 토큰 수에 따라 선형적으로 확장됩니다. 예를 들어, Llama 2와 같은 700억 매개변수 모델을 훈련하려면 약 2조 개의 토큰이 필요하며, 수백만 달러의 계산 비용이 들었습니다. 토큰 가격을 이해하는 것은 특히 대규모 텍스트 처리나 실시간 상호작용을 포함하는 AI 애플리케이션의 예산을 계획하는 데 필수적입니다.
속도 및 처리량
처리 속도는 초당 토큰 수(TPS)로 측정됩니다. 추론 속도는 하드웨어와 모델 크기에 따라 크게 다릅니다. NVIDIA A100과 같은 고급 GPU에서 70억 매개변수 모델은 초당 20~30개의 토큰을 생성할 수 있는 반면, 특수 하드웨어의 더 작은 모델은 초당 수백 개의 토큰을 달성할 수 있습니다. Groq와 같은 회사는 맞춤형 칩을 개발하여 매우 높은 처리량을 달성했으며, LPU(언어 처리 장치)는 일부 모델에서 초당 500개 이상의 토큰을 제공합니다.
속도는 챗봇, 코드 완성, 실시간 번역과 같은 실시간 애플리케이션에 중요합니다. 첫 토큰까지의 시간인 지연 시간도 밀리초 단위로 측정되며, 모델 크기와 추론 스택의 효율성에 따라 달라집니다. 양자화, 모델 가지치기, 추측 디코딩과 같은 기술은 토큰 처리량을 개선하여 더 빠르고 비용 효율적인 배포를 가능하게 합니다.
토큰 효율성 및 최적화
연구자와 실무자는 지속적으로 토큰 효율성을 개선하기 위해 노력합니다. 여기에는 텍스트를 더 효과적으로 압축하는 토크나이저 개발이 포함되며, 동일한 정보를 나타내는 데 필요한 토큰 수를 줄입니다. 예를 들어, 일부 모델은 임의의 텍스트를 처리하기 위해 바이트 수준 토큰화를 사용하는 반면, 다른 모델은 코드나 과학 표기법을 위한 특수 어휘를 사용합니다.
프롬프트 엔지니어링도 토큰 효율성에 중점을 둡니다. 더 짧은 프롬프트는 비용과 지연 시간을 줄이기 때문입니다. 지시 튜닝 및 퓨샷 학습과 같은 기술은 최소한의 토큰 사용으로 원하는 출력을 달성하는 것을 목표로 합니다. 또한 모델 증류와 양자화는 토큰당 계산 비용을 줄여 성능 손실 없이 모델을 더 빠르고 저렴하게 실행할 수 있게 합니다.
미래 방향
언어 모델이 진화함에 따라 토큰화는 여전히 활발한 연구 분야입니다. 멀티모달 모델은 이제 텍스트뿐만 아니라 이미지, 오디오, 비디오도 토큰화하며, 별도 또는 통합 토크나이저를 사용합니다. 예를 들어, GPT-4V와 같은 모델은 이미지 패치를 토큰으로 처리하고, 오디오 모델은 파형을 이산 표현으로 변환합니다. 이러한 토큰 유형의 확장은 다양한 양식에서 이해하고 생성할 수 있는 더 다재다능한 AI 시스템을 가능하게 합니다.
또한 컨텍스트나 작업에 따라 분할이 적응하는 동적 토큰화에 대한 관심도 증가하고 있습니다. 일부 연구는 효율성과 일관성을 개선하기 위해 전체 구나 문장과 같은 더 큰 토큰 단위를 사용하는 것을 탐구합니다. 그러나 이러한 접근 방식은 유연성을 유지하고 새로운 입력을 처리하는 데 어려움을 겪습니다. 토큰화 기술의 지속적인 개발은 언어 모델의 기능과 경제성을 계속 형성할 것입니다.