GigaToken - 언어 모델 토큰화를 약 1,000배 가속

3 hours ago 1

다양한 CPU와 널리 쓰이는 토크나이저를 지원하며, 텍스트를 GB/s 단위로 처리하는 Tiktoken 과 HuggingFace Tokenizers 대체 도구 정규식 엔진이 맡던 사전 토큰화를 SIMD로 최적화하고 분기·스레드 통신·Python 상호작용을 줄이며, 이전에 본 단어의 토큰 매핑을 효율적으로 캐싱함 11.9GB OpenWebText 벤치마크에서 GPT-2 처리량은 AMD EPYC 9565에서 24.53GB/s, Apple M4 Max에서 8.79GB/s, Ryzen 7 9800X3D에서 6.27GB/s를 기록함 HuggingFace·Tiktoken 호환 모드는 기존 코드를 거의 그대로 유지하지만 출력 일치 비용으로 성능이 낮아지며, Rust가 파일을 직접 읽는 Gigatoken API가 최대 병렬성과 최고 속도를 제공함 WordPiece와 파일 출력은 아직 지원하지 않고 SentencePiece 최적화와 Windows 검증도 부족해, 현재는 BPE 토크나이저와 Linux·macOS 또는 WSL 환경에 더 적합함 지원 범위와 사용 방식 Gigatoken은 언어 모델용 고속 토크나이저로, 현대적인 x86·ARM CPU와 거의 모든 일반적인 토크나이저를 대상으로 함 pip install gigatoken으로 설치하며 자체 API와 HuggingFace Tokenizers·Tiktoken 호환 모드를 제공함 호환 모드는 기존 토크나이저를 감싸 각각 .as_hf() 또는 .as_tiktoken()으로 변환함 HuggingFace Tokenizers와 출력이 정확히 일치하도록 상당한 작업을 적용함 호환성 처리에는 무시하기 어려운 성능 비용이 있어 자체 API의 약 1,000배 가속에는 미치지 못하지만, 전반적으로 기존 구현보다 빠름 자체 API는 "Qwen/Qwen3-8B" 같은 HuggingFace 모델 이름과 TextFileSource를 받아 파일을 직접 인코딩함 Rust 구현이 데이터를 직접 읽어 불필요한 오버헤드를 건너뛰고 병렬성을 극대화함 Python 자료구조를 전달하면 Python에서 데이터를 읽는 비용이 남음 속도를 높이는 구현 가장 큰 개선은 보통 정규식 엔진에 맡기는 사전 토큰화를 SIMD 기반으로 직접 고도화한 데서 나옴 분기를 최소화하고, 이미 본 단어의 인코딩 토큰을 찾는 사전 토큰 매핑 캐시를 집중적으로 최적화함 캐시는 빠르게 커지고 사전 토큰 분포가 긴 꼬리 형태여서 다루기 어려움 Py...

Read Entire Article