quicktok: 더 빠른 토크나이저 (tiktoken과 정확히 일치하며 바이트 단위로 동일함)
요약
C++로 구현된 고성능 BPE 토크나이저인 quicktok을 소개합니다. tiktoken과 동일한 토큰 ID를 유지하면서도 인코딩 속도를 최대 11배까지 향상시켰습니다.
핵심 포인트
- tiktoken과 바이트 단위로 동일한 토큰 ID 지원
- bpe-openai 대비 2~3.6배, tiktoken 대비 4~11배 빠른 속도
- 2바이트 트라이 및 밀집 키 캐시를 통한 메모리 액세스 최적화
- cl100k, o200k, Llama-3, Qwen2.5 등 주요 인코딩 지원
한동안 이 작업을 진행해 왔습니다! 토큰화 (tokenization) 워크플로우의 속도를 높이려는 모든 분에게 유용할 것입니다.
quicktok은 C++로 작성된 빠르고 정확한 BPE 토크나이저 (tokenizer)입니다. 토큰 ID (Token ids)는 tiktoken과 바이트 단위로 동일하며, 인코딩 (encoding) 속도는 bpe-openai (제가 아는 가장 빠른 대안)보다 23.6배 빠르고, tiktoken 자체보다 411배 빠릅니다. cl100k, o200k, GPT-OSS, Llama-3, 그리고 Qwen2.5/3를 지원합니다.
접근 방식. bpe-openai와 동일한 알고리즘 (정확한 백트래킹 BPE, exact backtracking BPE)을 사용하지만, 메모리 액세스 (memory accesses)를 줄이기 위해 많은 데이터 구조 엔지니어링 (data structure engineering)을 적용했습니다:
가장 긴 일치 탐색 (longest-match walk)을 위해 2바이트 트라이 (2-byte trie)를 사용합니다.
병합 유효성 검사 (merge-validity checks)를 위해 밀집된 정확한 키 캐시 (Dense exactly-keyed caches)를 사용합니다.
일반적인 정규 표현식 엔진 (regex engine) 대신 직접 컴파일된 프리토크나이저 (pretokenizer)를 사용합니다.
벤치마크 (Benchmarks) (Apple M1, 단일 스레드, MB/s, cl100k_base 기준이며 모든 출력은 측정 전 토큰 단위로 검증됨):
인코더 (encoder) The Pile Code Common Crawl
quicktok (native) 121.7 139.2 71.3
quicktok (Python) 77.9 83.6 49.7
bpe-openai 36.6 38.7 28.9
rs-bpe 30.9 34.7 23.5
tiktoken-rs 15.4 13.8 13.3
tiktoken (Python) 13.6 12.8 12.3
TokenDagger 11.1 11.9 10.7
o200k_base도 비율 면에서 유사합니다. 각 인코더는 자체적인 로우 API (raw API)를 통해 호출되었으며, 저장소(repo)에서 make bench-compare 명령어로 벤치마크를 재현할 수 있습니다.
pip install quicktok-v1
저장소 (Repo): https://github.com/dmatth1/quicktok
submitted by /u/casa_nova to r/MachineLearning
[link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기