본문 바로가기

인공지능

GigaToken: 언어 모델 토큰화를 최대 1,000배 가속하는 초고속 토크나이저

728x90
반응형
728x170

언어 모델 전처리 성능을 획기적으로 높이는 GigaToken

대규모 언어 모델(LLM)을 학습하거나 추론하는 과정에서 토큰화(Tokenization)는 반드시 거쳐야 하는 핵심 단계입니다. 하지만 토큰화는 데이터 규모가 커질수록 전체 파이프라인의 병목이 되기 쉽습니다.

GigaToken은 이러한 문제를 해결하기 위해 개발된 초고속 토크나이저로, 기존 HuggingFace TokenizersTiktoken을 대체할 수 있도록 설계되었습니다. SIMD 기반 최적화와 캐싱 기법을 활용해 토큰화 속도를 획기적으로 향상시키며, 일부 환경에서는 기존 구현 대비 약 1,000배 빠른 처리 성능을 제공합니다.

이번 글에서는 GigaToken의 구조와 핵심 기술, 성능, 지원 범위, 그리고 현재 알려진 제약 사항까지 살펴보겠습니다.

반응형

GigaToken이란?

GigaToken은 현대적인 x86 및 ARM CPU 환경에서 동작하는 고성능 언어 모델 토크나이저입니다.

기존 Python 기반 토큰화 과정에서 발생하는 오버헤드를 최소화하고 Rust 기반 구현을 적극 활용하여 GB/s 단위의 처리 속도를 제공합니다.

주요 특징은 다음과 같습니다.

  • 다양한 CPU 아키텍처 지원
  • 대부분의 일반적인 BPE 기반 토크나이저 지원
  • HuggingFace Tokenizers 및 Tiktoken 호환
  • 자체 API를 통한 최고 수준의 성능 제공
  • 대규모 파일을 직접 읽으며 병렬 처리 수행

기존 토크나이저보다 빠른 이유

GigaToken의 성능 향상은 단순히 구현 언어를 Rust로 변경한 것이 아니라 토큰화 과정 전체를 다시 최적화한 결과입니다.

SIMD 기반 사전 토큰화

기존 토크나이저는 대부분 정규식(Regex) 엔진을 이용해 사전 토큰화를 수행합니다.

GigaToken은 이 과정을 SIMD(Single Instruction Multiple Data) 기반으로 직접 구현하여 CPU가 여러 문자를 동시에 처리하도록 최적화했습니다.

이를 통해 정규식 처리 비용을 크게 줄였습니다.


사전 토큰 캐시 최적화

텍스트에는 동일한 단어가 반복해서 등장합니다.

GigaToken은 이전에 처리한 단어의 토큰 매핑을 캐시에 저장하여 동일한 문자열을 다시 계산하지 않습니다.

특히 긴 꼬리(Long-tail) 형태의 단어 분포까지 고려하여 캐시 구조를 최적화한 것이 특징입니다.


Python 오버헤드 최소화

기존 Python 기반 토크나이저는 Python 객체 생성과 함수 호출 과정에서도 상당한 비용이 발생합니다.

GigaToken은 Rust가 직접 파일을 읽고 토큰화를 수행하여

  • Python과의 상호작용 감소
  • 스레드 간 통신 최소화
  • 불필요한 분기 제거

등을 통해 추가적인 성능 향상을 달성했습니다.


지원 방식

GigaToken은 크게 두 가지 방식으로 사용할 수 있습니다.

1. 호환 모드

기존 프로젝트를 거의 수정하지 않고 사용할 수 있습니다.

다음과 같은 변환 API를 제공합니다.

  • .as_hf()
  • .as_tiktoken()

이 방식은 기존 코드와 높은 호환성을 유지하면서도 기존 구현보다 빠른 성능을 제공합니다.

다만 출력 결과를 기존 라이브러리와 정확히 일치시키기 위한 추가 처리가 수행되므로 자체 API보다는 성능이 낮습니다.


2. 자체 Gigatoken API

최고 성능을 원한다면 자체 API 사용이 권장됩니다.

자체 API는 다음과 같이 HuggingFace 모델 이름과 TextFileSource를 이용해 파일을 직접 토큰화합니다.

pip install gigatoken

자체 API에서는 Rust가 데이터를 직접 읽으므로 Python 자료구조를 거치지 않아 병렬성을 최대한 활용할 수 있습니다.


벤치마크 성능

11.9GB OpenWebText 데이터를 이용한 벤치마크에서는 매우 높은 처리량을 기록했습니다.

AMD EPYC 9565 (144코어)

  • GPT-2 처리량: 24.53GB/s
  • HuggingFace 대비 약 989배
  • Tiktoken 대비 약 681배

주요 BPE 계열 토크나이저는 약 15.49~24.00GB/s 수준을 기록했습니다.


Apple M4 Max (16코어)

  • GPT-2 처리량: 8.79GB/s
  • HuggingFace 대비 1,268배
  • Tiktoken 대비 140배

OLMo 및 Qwen 계열에서도 1,000배 이상의 성능 향상이 확인되었습니다.


AMD Ryzen 7 9800X3D

  • GPT-2 처리량: 6.27GB/s
  • HuggingFace 대비 106배
  • Tiktoken 대비 68배

일반적인 BPE 계열에서는 약 4~6GB/s 수준의 처리 성능을 보였습니다.


대규모 데이터 처리 성능

GigaToken은 대용량 데이터셋 처리에서도 높은 효율을 제공합니다.

OpenWebText 검증에서는

  • 총 20,401개 문서
  • 출력 결과 완전 일치

를 확인했으며,

Apple M4 Max에서는

  • 11.9GB 데이터를
  • 1.432초 만에 처리

AMD EPYC에서는

  • 동일 데이터를
  • 0.486초 만에 처리했습니다.

특히 EPYC 기준 처리 속도라면 130조 토큰 규모의 Common Crawl 전체 데이터도 6.5시간 이내에 토큰화할 수 있는 수준으로 소개되고 있습니다.


벤치마크 방식

성능 비교에는 OpenWebText(OWT)가 사용되었습니다.

OWT는 Common Crawl에서 추출한 문서로 구성되어 실제 대규모 언어 모델 학습 데이터를 대표하는 벤치마크로 활용됩니다.

GigaToken은

  • 파일 전체를 직접 읽으며
  • 자동 병렬화를 수행하고
  • 데이터 분할 경계도 자체적으로 처리합니다.

반면 비교 대상인 HuggingFace와 Tiktoken은 미리 분할된 일부 데이터만 사용하여 측정되었습니다.

또한 각 벤치마크는 동일한 어휘(Vocabulary), 병합(Merge), 사전 토크나이저 구성을 사용하는 토크나이저 기준으로 비교되었습니다.


지원 환경

현재 GigaToken은 다음 환경에 가장 적합합니다.

  • Linux
  • macOS
  • WSL

설치는 다음 명령으로 수행할 수 있습니다.

pip install gigatoken

또는 설치 없이 다음 명령으로 성능 검증도 가능합니다.

uvx --with tokenizers gigatoken bench

이 명령은 HuggingFace 모델 저장소의 토큰화 결과를 검증하고 처리 시간을 함께 측정합니다.


현재 알려진 제약 사항

아직 모든 환경과 토크나이저를 동일한 수준으로 지원하는 것은 아닙니다.

현재 알려진 제한 사항은 다음과 같습니다.

  • WordPiece 토크나이저 미지원
  • SentencePiece 최적화 수준이 상대적으로 낮음
  • Gigatoken API의 파일 출력 기능 미구현
  • Python ABI3 사용으로 일부 Python 버전에서 오버헤드 존재
  • Windows 환경은 충분한 검증이 이루어지지 않아 WSL 사용 권장

특히 SentencePiece 기반 토크나이저는 BPE 계열보다 성능 최적화가 덜 이루어져 상대적으로 처리 속도가 낮습니다.


AI 활용 범위

프로젝트는 대부분 AI 없이 직접 개발되었으며, AI는 프로젝트 후반부의 일부 작업에 활용되었습니다.

활용 범위는 다음과 같습니다.

  • 사용자 API 구현
  • 다양한 토크나이저 호환성 확대
  • 사전 토크나이저 일반화
  • Unicode 정규화 지원
  • Padding 및 Truncation 지원
  • SIMD 전략 이식(AVX512, AVX2, NEON)
  • 분기 제거 및 캐시 계층 개선
  • 리팩터링과 코드 재사용성 향상

프로젝트에서는 이러한 최적화를 통해 마지막 단계에서 약 4배의 추가 성능 향상을 달성했다고 설명하고 있습니다.


728x90

GigaToken은 언어 모델의 전처리 과정에서 발생하는 토큰화 병목을 해결하기 위해 설계된 초고속 토크나이저입니다. SIMD 기반 사전 토큰화, 효율적인 캐시 구조, Rust 기반 병렬 처리 등을 통해 기존 HuggingFace Tokenizers와 Tiktoken 대비 매우 높은 처리 성능을 제공하는 것이 가장 큰 특징입니다.

또한 기존 프로젝트에 쉽게 적용할 수 있는 호환 모드와 최고 성능을 위한 자체 API를 함께 제공하여 다양한 개발 환경에 대응할 수 있습니다.

다만 현재는 BPE 기반 토크나이저와 Linux·macOS·WSL 환경에 최적화되어 있으며, WordPiece 미지원, SentencePiece 최적화 부족, Windows 검증 미흡 등 일부 제한 사항도 존재합니다.

대규모 언어 모델 학습이나 추론 파이프라인에서 토큰화 성능이 중요한 환경이라면, GigaToken은 처리 시간을 크게 단축할 수 있는 유용한 선택지가 될 수 있습니다.

300x250

https://github.com/marcelroed/gigatoken/

 

GitHub - marcelroed/gigatoken: Language model tokenization at GB/s

Language model tokenization at GB/s. Contribute to marcelroed/gigatoken development by creating an account on GitHub.

github.com

728x90
반응형
그리드형