Skip to content

About

Byte Pair Encoding tokenizer implementation from scratch in Python

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Byte Pair Encoding Tokenizer

Implémentation from-scratch d'un tokenizer BPE avec support des tokens spéciaux, inspiré de GPT-2.

Installation

pip install regex streamlit

Interface de visualisation

Une interface Streamlit interactive pour explorer le BPE en temps réel :

streamlit run src/visualizer.py

Fonctionnalités :

  • Training interactif avec datasets intégrés
  • Visualisation colorée des tokens
  • Mode document et conversation
  • Métriques (compression ratio, temps d'encoding)
  • Historique complet des merges

Usage rapide

from bpe import BytePairEncoder

# Training
tokenizer = BytePairEncoder()
tokenizer.train(text="Votre corpus d'entraînement", vocab_size=512)
tokenizer.save("merges.pkl")

# Encoding
ids = tokenizer.encode("Hello world", mode="document")
text = tokenizer.decode(ids)

Installation et utilisation du package

Installation depuis GitHub

%pip install git+https://github.com/ad-tr/byte-pair-encoding-tokenizer

Utilisation après installation

from tokenizer import BytePairEncoder

# Créer et entraîner un tokenizer
tokenizer = BytePairEncoder()
tokenizer.train(text="Votre corpus d'entraînement", vocab_size=512)
tokenizer.save("/{path}/merges.pkl")

# Charger un tokenizer existant
tokenizer = BytePairEncoder.load("/{path}/merges.pkl")

# Encoder et décoder
ids = tokenizer.encode("Hello world", mode="document")
text = tokenizer.decode(ids)
print(f"Vocab size: {tokenizer.vocab_size}")

Features

  • Algorithme BPE classique
  • Support tokens spéciaux (<begin_of_text>, <im_start>, etc.)
  • Modes document/conversation
  • Regex splitting pattern GPT-2
  • Sauvegarde/chargement des merges

Modes d'encodage

Document : Ajoute automatiquement <begin_of_text> et <end_of_text>

Conversation : Structure les dialogues avec <im_start>, <im_sep>, <im_end>

messages = [
    {"role": "System", "message": "Tu es un assistant"},
    {"role": "user", "message": "Bonjour"},
    {"role": "assistant", "message": "Bonjour"}
]
ids = tokenizer.encode(messages, mode="conversation")

Corpus d'entraînement

Ajoutez vos fichiers texte (.txt) dans le dossier /data. Vous pourrez ensuite les sélectionner dans le visualiseur pour entraîner le tokenizer.

Limites

  • Nécessite un corpus suffisamment large (erreur si vocab_size > paires disponibles)

Documentation

Pour plus de détails sur le projet :

About

Byte Pair Encoding tokenizer implementation from scratch in Python

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages