Tiny BPE Trainer 소개

GPT부터 RoBERTa까지 오늘날 대부분의 최신 NLP 모델은 **바이트 쌍 인코딩(BPE)**을 사용한 하위 단어 토큰화에 의존합니다. 하지만 순수 C++로 자신만의 어휘를 학습시키고 싶다면 어떻게 해야 할까요?

Tiny BPE Trainer를 만나보세요. 최신 C++17/20으로 작성된 놀랍도록 빠른 헤더 전용 BPE 트레이너로, 종속성 없음, 완벽한 UTF-8 지원, 그리고 HuggingFace 호환 출력(vocab.txt, merges.txt)을 제공합니다.

왜 또 다른 BPE 트레이너가 필요할까요?

기존 옵션은 다음과 같은 경우가 많습니다.

  • Python 전용, 높은 런타임 종속성(Rust, Protobuf 등)
  • C++ 애플리케이션에 쉽게 임베드할 수 없음
  • 속도, 단순성 또는 크로스 플랫폼 사용에 중점을 두지 않음

Tiny BPE Trainer의 특징은 다음과 같습니다.

  • 헤더 전용
  • 크로스 플랫폼(Linux, Windows, macOS)
  • HuggingFace 호환
  • 제 다른 프로젝트인 Modern Text Tokenizer 와 완벽하게 호환됩니다.

핵심 기능

  • 일반 텍스트 또는 JSONL 데이터세트를 사용한 완전한 BPE 학습
  • CLI 및 C++ API 지원 - 툴링 또는 임베드에 적합
  • HuggingFace 호환 출력 (vocab.txt, merges.txt)
  • UTF-8 안전 – 이모지, 다국어 스크립트, 특수 문자 처리
  • 구성 가능 – 소문자, 구두점 분리, 최소 빈도 등
  • 데모 모드 – 한 줄 명령으로 모든 것을 테스트

데모

1./Tiny-BPE-Trainer --demo

합성 코퍼스를 생성하고, 어휘를 학습하고, 통계를 출력하고, 토큰화를 실행하는 모든 작업을 단 몇 초 만에 완료합니다. CI 및 스모크 테스트에 적합합니다.

BPE 토크나이저 학습 방법

빌드하기

1g++ -std=c++17 -O3 -o Tiny-BPE-Trainer Tiny-BPE-Trainer.cpp

코퍼스에서 학습하기

1./Tiny-BPE-Trainer -i corpus.txt -v 16000 -o my_tokenizer

또는 JSONL에서:

1./Tiny-BPE-Trainer -i dataset.jsonl --jsonl -v 32000

텍스트 토큰화

1./Tiny-BPE-Trainer --test "안녕하세요! 테스트입니다."

Modern Text Tokenizer와 완벽하게 호환

훈련이 완료되면, 제 Modern Text Tokenizer 에서 사용자 지정 어휘를 직접 사용할 수 있습니다.

1TextTokenizer tokenizer;
2tokenizer.load_vocab("my_tokenizer_vocab.txt");
3auto ids = tokenizer.encode("Hello world!");

이렇게 하면 런타임 종속성이 전혀 없는 완전한 C++ 토크나이저 파이프라인을 얻을 수 있습니다.

실제 데이터셋 사용

HuggingFace 데이터셋을 사용하여 코퍼스를 쉽게 생성할 수 있습니다.

1from datasets import load_dataset
2
3dataset = load_dataset("imdb", split="train")
4with open("corpus.txt", "w", encoding="utf-8") as f:
5    for x in dataset:
6        f.write(x["text"].strip().replace("\n", " ") + "\n")

그런 다음 훈련하세요:

1./Tiny-BPE-Trainer -i corpus.txt -v 16000 -o imdb_tokenizer

벤치마크

1처리된 문자 수: 3,300만 자
2고유 단어 수: 10만 6천 단어
3어휘 크기: 32,000개
4훈련 시간: 약 30분(Ryzen 9, -O3)

대용량 코퍼스 파일(IMDB, WikiText)에서도 Tiny BPE Trainer는 효율적이고 예측 가능한 성능을 제공하며 HuggingFace, SentencePiece 및 자체 C++ 토크나이저와 호환되는 어휘를 생성합니다.

사용 사례

  • LLM 및 변환기를 위한 맞춤형 토크나이저 훈련
  • Python을 사용할 수 없는 환경에서 기기 내 자연어 처리
  • 고성능 전처리기 구축
  • 도메인별 어휘 훈련(법률, 의료, 코드)

지금 사용해 보세요

1git clone https://github.com/Mecanik/Tiny-BPE-Trainer
2cd Tiny-BPE-Trainer
3g++ -std=c++17 -O3 -o Tiny-BPE-Trainer Tiny-BPE-Trainer.cpp
4./Tiny-BPE-Trainer --demo

고급 옵션, CLI 플래그 및 통합 팁은 GitHub의 전체 README를 확인하세요.

GitHub의 Tiny BPE Trainer

NLP 및 C++ 커뮤니티를 위해 ❤️로 제작되었습니다.

마음에 드셨다면 GitHub에 별표를 표시해 주세요 , 프로젝트에 사용하거나 기여해 주세요!