1. Inicjalizacja: korpus jest dzielony na słowa, każde słowo na sekwencję bazowych symboli (znaków lub bajtów). Słownik początkowy zawiera te bazowe symbole.
2. Zliczanie par: dla każdego słowa w korpusie liczone są wszystkie pary sąsiadujących symboli, ważone częstotliwością słowa.
3. Wybór najczęstszej pary: para (a, b) o najwyższej łącznej częstotliwości w korpusie zostaje wybrana jako kandydat do merge'a.
4. Aktualizacja słownika i korpusu: nowy symbol „ab" dodawany jest do słownika; wszystkie wystąpienia pary (a, b) w korpusie zastępowane są tym symbolem. Para zapisywana jest na liście merge'owej.
5. Powtarzanie: kroki 2–4 powtarzane są aż słownik osiągnie zadany rozmiar (lub spadnie częstotliwość najczęstszej pary poniżej progu).
6. Encoding nowego tekstu: tekst jest dzielony na symbole bazowe; lista merge'owa aplikowana jest w kolejności priorytetu — odtwarzając te same merges, które algorytm wykonał na korpusie. Implementacje produkcyjne (tiktoken, HF tokenizers) używają priority-queue dla wydajności O(n log n).
Tokenizacja słowna nie radzi sobie z OOV (out-of-vocabulary), morfologią i wielojęzycznością; tokenizacja znakowa daje bardzo długie sekwencje. BPE rozwiązuje oba problemy jednocześnie: uczy słownika kompresującego typowe sekwencje (krótsze sekwencje od char-level) przy zachowaniu pokrycia rzadkich słów przez ich podjednostki (brak <UNK> dla zasadniczo dowolnego ciągu).
BPE merges nie powinny przekraczać granic słów ani spacji — bez odpowiedniego regexa pre-tokenizera (GPT-2 pattern) tokenizer uczy się „bezsensownych" merge'ów łączących koniec jednego słowa z początkiem następnego.
Słownik wytrenowany głównie na angielskim daje 2–3× więcej tokenów dla polskiego, japońskiego, arabskiego — co podnosi koszt API i obcina efektywne okno kontekstu.
Bez wymuszonego digit-splitting BPE dzieli liczby na fragmenty zależne od częstotliwości („1234" → „123"+"4" albo „12"+"34"). Llama 3 i GPT-4o rozwiązują to przez wymuszenie pojedynczych cyfr.
Merges generujące tokeny rzadkie w danych treningowych (np. „SolidGoldMagikarp" w GPT-3) wywołują deterministyczne błędy modelu — wektor ataków typu prompt injection i jailbreak.
Implementacje z różnymi tie-breaking dla par o tej samej częstotliwości mogą produkować różne tokenizacje dla tego samego tekstu — co rozjeżdża słownik treningu i inferencji. Zawsze używać oficjalnej implementacji modelu (tiktoken dla GPT, tokenizer.json HF).