GigaToken: HuggingFace tokenizers보다 최대 ~1000배 빠른 토크나이저
GigaToken: ~1000x faster Language model tokenization
TL;DR Highlight
토크나이저를 SIMD와 캐시로 다시 짰더니 HF tokenizers보다 최대 1,299배 빨라졌다
Who Should Read
수백 GB 텍스트를 토큰화하는 학습 데이터 전처리가 느려서 고민인 데이터·ML 인프라 개발자
Core Mechanics
- GPT-2 기준 24.53GB/s 달성
- EPYC 9565 144코어에서 owt_train.txt(11.9GB)를 토큰화한 수치다.
- 같은 조건에서 HF tokenizers는 24.8MB/s, tiktoken은 36.0MB/s였다.
- 정규식 엔진을 SIMD로 대체
- 보통 정규식 엔진에 맡기는 프리토크나이즈(단어 단위로 먼저 쪼개는 단계)를 SIMD로 직접 구현했다.
- 분기를 최소화하고 프리토큰별 인코딩 결과를 캐시로 빠르게 찾게 했다.
- 속도는 모델마다 크게 다르다
- Apple M4 Max에서 OLMo 2/3은 HF 대비 1,299×, GPT-2는 1,268×였다.
- Gemma 1은 같은 칩에서 HF 대비 17×, Ryzen 9800X3D에서는 13×에 그쳤다.
- 호환 모드는 1000배보다 느리다
- HF·tiktoken 출력과 정확히 일치시키려는 비용 때문에 성능이 떨어진다.
- 그래도 전반적으로 훨씬 빠르다고 README는 말한다.
- 최고 속도는 전용 API로만 나온다
- gt.Tokenizer와 TextFileSource로 Rust가 파일을 직접 읽게 해야 한다.
- 이러면 파이썬을 거치는 오버헤드와 스레드 간 통신이 줄어든다.
Community Reactions
- 추론 시간에서 토큰화는 0.1% 미만이라는 지적
- 추론용으로는 이득이 작다는 의견이 있었다.
- 토큰화만 하는 용도에는 좋을 것이라는 반응도 함께 있었다.
- 오프라인 학습 데이터 준비에 더 가치 있다는 의견
- 테라바이트 단위 코퍼스를 토큰화할 때 시간과 비용을 아껴 준다는 설명이다.
- 데이터셋을 바꿔 가며 실험하는 주기가 빨라진다는 의견이다.
- 캐싱과 정규식 대체가 범용 아이디어라는 의견
- 토크나이제이션 커뮤니티 디스코드에서 이 저장소를 보고 클론했다는 댓글이 있었다.
- 이 기법에서 배우고 싶어 하는 사람이 많다는 반응이었다.
- README가 코어당 성능을 강조했으면 좋겠다는 요청
- 코어 수가 다른 CPU끼리 비교하기 어렵다는 취지다.
- 호환 모드의 벤치마크가 따로 있는지 묻는 댓글도 있었다.
How to Apply
- 내 토크나이저 지원 여부를 벤치 명령으로 확인하기
- 오늘 샘플 파일을 받아 uvx gigatoken bench로 HF 모델 이름을 넣고 실행한다.
- --validate를 켜 HF 결과와 일치하는지 같이 확인한다.
- 호환 모드로 기존 코드 교체해 보기
- HF나 tiktoken 토크나이저를 gt.Tokenizer(...).as_hf() 또는 .as_tiktoken()으로 감싼다.
- encode_batch 결과가 기존과 같은지 비교한 뒤 속도를 잰다.
- 대용량 전처리는 encode_files로 옮기기
- 수 GB 이상의 텍스트 파일 전처리 파이프라인에서 TextFileSource와 encode_files를 쓴다.
- 구분자는 문서 경계 토큰(예: <|endoftext|>)으로 지정한다.
- 도입 전에 한계 항목을 점검하기
- 쓰는 토크나이저가 SentencePiece·WordPiece·CJK 비중 높은 데이터인지 확인한다.
- 해당되면 내 데이터로 먼저 벤치를 돌려 보고 결정한다.
Try It
# 터미널(셸)에 붙여넣기 — 설치 없이 uvx로 GigaToken 속도·정합성 확인
wget https://huggingface.co/datasets/stanford-cs336/owt-sample/resolve/main/owt_train.txt.gz
gunzip owt_train.txt.gz
uvx --with tokenizers gigatoken bench 'openai-community/gpt2' owt_train.txt --validate --doc-separator "<|endoftext|>"
# 이어서 해 볼 것: 'openai-community/gpt2'를 내가 쓰는 HF 모델 이름으로 바꿔 보기
# 옵션 확인: uvx gigatoken bench --helpTerminology
관련 논문
Mercury 3: 규모를 키운 diffusion LLM, 초당 1,000토큰 이상
Diffusion LLM을 40배 키웠더니 속도 4~8배, 품질은 속도 특화 모델 수준
Timestral: Mistral의 시계열 파운데이션 모델
209M 파라미터 시계열 모델이 3대 벤치마크 1위, CPU에서도 돌아간다
DeepSeek V4.1 Flash 1017 (Max) 성능·속도·가격 분석
DeepSeek V4.1 Flash 1017 Max는 지능 지수 45에 211 tok/s, 입력 $0.30
LLM 프록시를 직접 안 돌리면 무슨 일이 벌어지는지 어떻게 아나
자체 LLM 프록시를 세웠더니 키·모델·캐시 미스를 직접 볼 수 있다
DeepSeek V4.1 Flash 1017: 싼 가격에 1M 컨텍스트를 주는 에이전트용 모델
DeepSeek V4.1 Flash 1017은 입력 $0.05/M, 1M 컨텍스트의 에이전트용 모델
DeepSeek-V4.1-Flash-1017 공개: 더 짧게 생각하고 더 빠르게 일하는 에이전트용 모델
DeepSeek V4.1 Flash 마이너 업데이트로 코딩·에이전트 벤치 점수↑, 실행 시간·출력 길이↓
Llmspeed: 로컬 LLM 속도를 하드웨어 구매 전에 체감해 보는 시뮬레이터
GPU·모델을 고르면 로컬 LLM 속도를 미리 체감하게 해 주는 시뮬레이터