Tokenization

Layer 3 · Code

Tokenization

Build a working byte-level BPE trainer and encoder from scratch, then compare it to a real tokenizer.

14 min read110 XP

  1. Corpus

    raw text as bytes

  2. get_stats

    count adjacent pairs

  3. merge

    replace most frequent pair

  4. loop

    until vocab_size reached

The full BPE trainer is under 40 lines of Python.

Below is a minimal but complete byte-level BPE trainer and encoder, close to what powers GPT-2's tokenizer (minus the regex pre-tokenizer, omitted for clarity). It operates directly on byte sequences, so it never needs an <UNK> token.