Gigatoken

대규모 LLM 데이터셋을 병렬 처리하는 Rust 기반 Python 토크나이저

pip install gigatoken

대용량 언어 모델 데이터셋을 CPU에서 병렬 토큰화하는 Rust 코어와 Python API·CLI입니다. 고유 API는 Hugging Face 모델 이름과 텍스트 파일을 직접 받아 Python 객체 변환을 줄이고, 호환 래퍼는 기존 Hugging Face Tokenizers 또는 tiktoken 호출부를 비교적 적게 바꾸도록 설계됐습니다. 프로젝트 벤치마크는 특정 AMD EPYC·Apple Silicon·Ryzen 환경에서 얻은 결과이므로 실제 처리량은 토크나이저 종류, 파일 구조, 코어 수와 호환 모드 사용 여부에 따라 달라집니다.

판단

이럴 때 씁니다

  • 수 GB 이상 텍스트 파일을 학습 전처리하며 CPU 병렬 토큰화가 병목일 때
  • 기존 Hugging Face 또는 tiktoken 호출부를 유지하면서 처리량을 비교하고 싶을 때
  • 모델별 출력 일치 검증을 포함한 재현 가능한 벤치마크가 필요할 때

이럴 땐 쓰지 마세요

  • WordPiece가 필수이거나 SentencePiece 성능이 핵심인 파이프라인
  • Windows 네이티브 운영이 필수이고 WSL을 쓸 수 없는 환경
  • 작은 요청을 실시간 처리해 파일 단위 병렬화 이점이 거의 없는 서비스

차별점

  • Rust SIMD와 병렬 처리로 파일 읽기부터 토큰 출력까지 한 경로에서 처리합니다.
  • Hugging Face Tokenizers와 tiktoken 형태의 호환 래퍼를 제공합니다.
  • 모델별 출력 일치 여부와 처리량을 확인하는 bench CLI를 제공합니다.

워크플로

  1. 01격리된 Python 3.10 이상 환경에 0.10.0을 설치합니다.
  2. 02대표 데이터와 토크나이저로 bench --validate를 실행해 출력 일치를 먼저 확인합니다.
  3. 03기존 코드에는 호환 래퍼를 적용해 회귀를 비교하고, 대규모 배치에는 TextFileSource 기반 고유 API를 시험합니다.
  4. 04처리량·메모리·출력 해시를 기존 토크나이저와 같은 하드웨어에서 측정한 뒤 전환합니다.

주요 명령

명령설명
pip install gigatoken현재 Python 환경에 Gigatoken과 필수 의존성을 설치합니다.
uvx --with tokenizers gigatoken bench openai-community/gpt2 data.txt --validate표본 데이터에서 출력 일치와 처리량을 함께 확인합니다.

설정

import gigatoken as gt
tokenizer = gt.Tokenizer("Qwen/Qwen3-8B")
source = gt.TextFileSource(["data.txt"], separator=b"<|endoftext|>")
tokens = tokenizer.encode_files(source)

함정

설치 전에 확인하세요

  • README의 수십~천 배 수치는 프로젝트가 공개한 특정 하드웨어·데이터셋 벤치마크이며 모든 워크로드의 보장값이 아닙니다.
  • WordPiece와 파일 sink는 아직 지원하지 않고 SentencePiece 계열 최적화는 상대적으로 약합니다.
  • Windows는 충분히 시험되지 않아 프로젝트가 WSL 사용을 권장합니다.
  • 호환 래퍼에서도 실제 모델·정규화·특수 토큰 설정으로 출력 일치 테스트를 먼저 해야 합니다.

비교

Hugging Face Tokenizers와 tiktoken이 범용성과 생태계 호환성이 넓다면 Gigatoken은 대규모 오프라인 파일 토큰화의 CPU 처리량을 우선합니다. 최대 성능은 고유 파일 API에서 나오며, 호환 모드는 기존 코드를 덜 바꾸는 대신 Python 경계와 검증 비용이 남습니다.

최근 변경

PyPI 0.10.0은 2026-07-25 배포됐습니다. 현재 README는 BPE 중심의 다중 CPU 벤치마크와 Hugging Face·tiktoken 호환 경로를 함께 문서화합니다.