Gigatoken은 언어 모델 학습·평가용 대규모 텍스트를 빠르게 토큰화하기 위한 오픈소스 토크나이저 라이브러리다. Hugging Face tokenizers나 tiktoken을 쓰던 코드에 가깝게 붙일 수 있으면서, 대형 CPU 서버에서는 모델별 토크나이저를 GB/s 단위 처리량으로 실행하는 것을 목표로 한다.
왜 필요한가
LLM 파이프라인에서 토큰화는 종종 “작은 전처리”로 취급되지만, 실제 대규모 학습 데이터에서는 I/O와 CPU 병목이 된다. 수십 GB 이상의 웹 텍스트, 코드 데이터, 합성 데이터셋을 반복 처리할 때 토크나이저가 느리면 GPU 학습 전에 데이터 준비 단계가 지연된다.
Gigatoken의 README 벤치마크는 OpenWebText 계열 11.9GB 파일을 AMD EPYC 9565 2소켓 서버에서 인코딩한 결과를 제시한다. GPT-2, Phi-4, Qwen, Llama, DeepSeek 계열 토크나이저에서 수 GB/s에서 20GB/s대 처리량을 보고하며, Hugging Face tokenizer 대비 수백 배 높은 수치를 제시한다.
사용 방식
가장 쉬운 방식은 기존 토크나이저 객체를 감싸는 호환 모드다.
from transformers import AutoTokenizer
from gigatoken import Tokenizer
hf_tokenizer = AutoTokenizer.from_pretrained("openai-community/gpt2")
tokenizer = Tokenizer.from_hf_tokenizer(hf_tokenizer)
ids = tokenizer.encode("hello world")더 높은 처리량이 필요하면 Gigatoken API를 직접 사용한다. 데이터셋 전체를 배치 단위로 밀어 넣는 전처리 작업에서는 이 방식이 더 적합하다.
어디에 맞는가
| 사용처 | 적합한 이유 |
|---|---|
| 대규모 사전학습 데이터 전처리 | 수십 GB 이상 텍스트를 반복 토큰화할 때 CPU 시간을 줄인다 |
| 모델별 토크나이저 벤치마크 | GPT-2, Llama, Qwen, DeepSeek 등 여러 vocabulary를 같은 기준으로 비교할 수 있다 |
| 데이터 품질 필터링 파이프라인 | 토큰 수 기반 필터, 길이 분포 분석, chunking 전에 빠른 인코딩이 필요하다 |
| 기존 Hugging Face 코드 | 호환 모드로 교체 비용을 낮출 수 있다 |
주의할 점
README의 최고 처리량은 대형 서버 CPU 기준이다. 일반 노트북이나 단일 소켓 워크스테이션에서는 절대 수치가 낮아질 수 있다. 또한 토크나이저 교체는 “같은 문자열이 같은 토큰 ID로 변환되는가”가 중요하므로, 학습·평가 파이프라인에 넣기 전에는 기존 tokenizer와 샘플 단위 동등성 테스트를 먼저 해야 한다.
관련 문서
- llm-inference — LLM 추론의 기본 연산 흐름
- unified-memory — 로컬 LLM 하드웨어에서 용량과 속도를 가르는 메모리 구조
- qwen-code — Qwen 계열 코딩 모델 활용
참고 자료
- marcelroed/gigatoken — GitHub 공식 저장소