huggingface/tokenizers
요약
huggingface/tokenizers는 성능과 다재다능함에 초점을 맞춘 토크나이저 구현 라이브러리입니다. Rust로 구현되어 학습 및 토큰화 과정 모두 매우 빠르며, 1GB의 텍스트를 20초 미만으로 처리할 수 있습니다. 이 라이브러리는 BPE, WordPiece, Unigram 등 다양한 모델을 지원하며, 정규화 추적, 전처리(pre-processing), 특수 토큰 추가 등 연구 및 프로덕션 환경에 필요한 모든 기능을 제공합니다.
핵심 포인트
- Rust 구현 기반으로 매우 빠른 성능을 자랑하여 대용량 텍스트 처리에 효율적입니다.
- BPE, WordPiece, Unigram 등 다양한 최신 토크나이저 모델을 지원하며 사용하기 쉽습니다.
- 정규화 추적(alignments tracking) 기능을 통해 주어진 토큰에 해당하는 원문 위치를 정확히 파악할 수 있습니다.
- 전처리 과정(Truncate, Pad, Special Tokens 추가 등)과 학습/인코딩 과정이 간결하게 구현되어 있습니다.
성능과 다재다능함에 초점을 맞추어, 오늘날 가장 많이 사용되는 토크나이저 (tokenizers)의 구현을 제공합니다.
- 오늘날 가장 많이 사용되는 토크나이저를 사용하여 새로운 어휘 집합 (vocabularies)을 학습시키고 토큰화 (tokenize)할 수 있습니다.
- Rust 구현 덕분에 매우 빠릅니다 (학습 및 토큰화 모두). 서버의 CPU에서 1GB의 텍스트를 토큰화하는 데 20초 미만이 소요됩니다.
- 사용하기 쉬우면서도 매우 다재다능합니다.
- 연구 및 프로덕션 (production)을 위해 설계되었습니다.
- 정규화 (Normalization)에는 정렬 추적 (alignments tracking) 기능이 포함되어 있습니다. 주어진 토큰에 해당하는 원문 문장의 부분을 언제든지 가져올 수 있습니다.
- 자르기 (Truncate), 패딩 (Pad), 모델에 필요한 특수 토큰 (special tokens) 추가 등 모든 전처리 (pre-processing)를 수행합니다.
성능은 하드웨어에 따라 다를 수 있지만, g6 aws 인스턴스에서 ~/bindings/python/benches/test_tiktoken.py를 실행하면 다음과 같은 결과를 얻을 수 있습니다:
다음 언어들에 대한 바인딩 (bindings)을 제공합니다 (더 추가될 예정입니다!):
소스에서 다음을 사용하여 설치할 수 있습니다:
pip install git+https://github.com/huggingface/tokenizers.git#subdirectory=bindings/python
또는 출시된 버전을 설치하려면:
pip install tokenizers
Byte-Pair Encoding, WordPiece 또는 Unigram 중에서 모델을 선택하고 토크나이저를 인스턴스화하세요:
from tokenizers import Tokenizer
from tokenizers.models import BPE
tokenizer = Tokenizer(BPE())
사전 토큰화 (pre-tokenization, 예: 단어로 분할)가 수행되는 방식을 사용자 정의할 수 있습니다:
from tokenizers.pre_tokenizers import Whitespace
tokenizer.pre_tokenizer = Whitespace()
그런 다음 파일 세트에서 토크나이저를 학습시키는 데는 단 두 줄의 코드만 필요합니다:
from tokenizers.trainers import BpeTrainer
trainer = BpeTrainer(special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"])
tokenizer.train(files=["wiki.train.raw", "wiki.valid.raw", "wiki.test.raw"], trainer=trainer)
토크나이저 학습이 완료되면, 단 한 줄로 어떤 텍스트든 인코딩 (encode)할 수 있습니다:
output = tokenizer.encode("Hello, y'all! How are you 😁 ?")
print(output.tokens)
# ["Hello", ",", "y", "'", "all", "!", "How", "are", "you", "[UNK]", "?"]
더 자세히 알아보려면 문서를 확인하거나 퀵투어 (quicktour)를 살펴보세요!
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Rust (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기