Skip to main content
공개 노트

토크나이저는 왜 이제야 빨라졌을까? Gigatoken이 24.53 GB/s를 찍기까지

Views 19약 3분생성형 AI 활용
Summary

토크나이저는 충분히 빠르다? Gigatoken이 그 가정을 다시 쓰다

토크나이저 최적화는 오랫동안 ‘이미 해결된 문제’로 여겨져 왔다. HuggingFace Tokenizers와 tiktoken 모두 멀티스레드 Rust로 구현되어 있기 때문이다. 그런데 Stanford 박사과정 학생 Marcel Rød가 MIT 라이선스로 공개한 Gigatoken은 이 통념을 정면으로 뒤집는다. GPT-2 기준 인코딩 처리량이 24.53 GB/s에 달하며, HuggingFace Tokenizers보다 989배, tiktoken보다 681배 빠르다. 이 숫자가 시사하는 진짜 질문은 “어떻게 이렇게 빠를 수 있는가”가 아니라, “왜 지금까지 이렇게 느렸는가”이다.

SWAR 사전 토크나이저: 정규식을 해체하다

성능 향상의 출발점은 사전 토큰화(pre-tokenization) 단계의 전면적인 재설계다. 기존 토크나이저들은 텍스트를 작은 단위로 분할하는 이 과정을 범용 정규식 엔진에 맡겨 왔다. 정규식은 유연하지만, 매번 패턴을 해석하고 매칭하는 비용이 누적되면 대규모 텍스트에서는 병목으로 작용한다.

Gigatoken은 이 단계를 SWAR(SIMD Within A Register) 기법으로 대체했다. CPU의 64비트 레지스터 하나에 8바이트를 동시에 적재하고, 분기 없는 산술 연산만으로 문자 경계를 탐지한다. 사전 토크나이저 최적화 로그에 따르면, 정규식 기반 구현의 처리량은 약 47 MiB/s였으나 SWAR 구현체는 830 MiB/s까지 올라갔다. 여기에 두 개의 커서를 병렬로 운영해 CPU 파이프라인을 채우는 ‘이중 커서’ 기법을 더하자 1,049 MiB/s에 도달했다. 사전 토크나이저 하나만 22.3배 빨라진 셈이다.

사전 토큰 캐싱: 롱테일 분포를 다루는 법

두 번째 핵심 기법은 사전 토큰 매핑 캐싱이다. 텍스트에는 동일한 단어나 어절이 반복 등장하므로, 한 번 처리한 결과를 저장해두면 이후 동일한 입력을 다시 계산하지 않고 재사용할 수 있다.

문제는 자연어의 단어 빈도가 극단적인 롱테일 분포를 보인다는 점이다. 소수의 고빈도 단어는 자주 등장하지만, 대부분의 단어는 데이터셋 전체에서 드물게 나타난다. 캐시 크기가 빠르게 증가하면 조회 속도가 오히려 느려질 위험이 있기 때문에, Gigatoken은 캐시 계층 구조를 최적화하여 희소한 항목이 성능을 갉아먹지 않도록 설계했다. 이 최적화 덕분에 반복 패턴이 많은 실제 텍스트, 예컨대 CommonCrawl 문서 추출물과 유사한 OWT(OpenWebText) 데이터셋에서 큰 폭의 성능 이득을 얻을 수 있었다.

실무자가 알아야 할 세 가지 판단 기준

첫째, 최대 속도는 Rust API에서 파일을 직접 읽을 때 달성된다. Gigatoken은 Rust 구현체가 파일을 직접 읽고 병렬 인코딩할 때 24.53 GB/s에 이르는 최대 처리량을 낸다. Python 객체로 데이터를 넘기면 객체 마샬링 비용이 발생해 속도 향상 폭이 크게 줄어든다. 다만 호환 모드를 사용하면 출력이 HuggingFace Tokenizers와 정확히 일치하므로, 최소한의 코드 변경만으로 기존 파이프라인에 통합할 수 있다.

둘째, SentencePiece 계열 모델은 BPE 대비 최적화 효과가 상대적으로 낮다. Llama, Gemma, Mistral 등 SentencePiece 기반 토크나이저는 Gigatoken 내에서 최적화가 덜 되어 있어 속도 향상 폭이 10~22배 수준이다. 반면 GPT-2, Qwen, Phi 같은 BPE 기반 토크나이저는 수백 배에서 최대 1,000배 가까운 성능 향상을 보인다. 도입 전에 자신이 사용하는 토크나이저 계열과 기대할 수 있는 이득을 확인해야 한다.

셋째, 적용할 작업과 아닌 작업을 구분해야 한다. 대규모 코퍼스 전처리나 학습 데이터 토큰화처럼 처리량이 중요한 배치 작업은 Gigatoken을 즉시 도입할 가치가 충분하다. 단일 머신에서도 Common Crawl 전체를 약 6.5시간 만에 토큰화할 수 있다는 계산이 이를 뒷받침한다. 반면, 추론 시점에 단일 프롬프트를 토큰화하는 API 서버에서는 수 마이크로초의 작업을 최적화하는 셈이므로 실질적인 이득이 거의 없다.


토크나이저가 충분히 빠르다는 가정은 지금까지 의심 없이 받아들여져 왔다. Gigatoken은 정규식을 수작업 SWAR 사전 토크나이저로 대체하고 사전 토큰 캐싱을 정교하게 최적화함으로써, 토크나이저가 오히려 파이프라인의 숨은 병목이었다는 사실을 증명했다. 모든 워크로드에 적합한 도구는 아니지만, 대규모 텍스트 처리를 다루는 실무자에게는 검토할 가치가 분명한 프로젝트다.

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기