BPE
Byte Pair Encoding — алгоритм токенизации, итеративно объединяющий частые пары символов в один токен.
Что такое BPE
BPE (Byte Pair Encoding) — алгоритм субсловной токенизации, оригинально разработанный для сжатия данных и адаптированный для NLP. Строит словарь токенов, итеративно объединяя наиболее частые пары символов в обучающем корпусе.
Большинство современных LLM используют BPE или его варианты: GPT-2/3/4 (tiktoken), Llama (SentencePiece с BPE), Mistral, Qwen и другие.
Алгоритм
- Начать с символьного словаря (каждый символ = токен)
- Найти пару токенов, встречающуюся чаще всего
- Объединить её в один новый токен
- Повторять до достижения нужного размера словаря (например, 32 000)
Корпус: "low lower lowest"
Итерация 1: "l o w" → самая частая пара "l o" → добавить "lo"
Итерация 2: "lo w" → самая частая пара "lo w" → добавить "low"
...
Byte-level BPE
GPT-2 использует byte-level BPE — работает с байтами UTF-8, а не символами. Это позволяет токенизировать любой Unicode-текст (включая русский, китайский) без unknown tokens:
import tiktoken
enc = tiktoken.get_encoding("cl100k_base") # GPT-3.5/4
tokens = enc.encode("Привет, мир!")
# [36729, 44, 1093, 78, 11, 1063, 0] — 7 токенов для 12 символов
BPE и русский язык
Английские LLM-токенизаторы плохо приспособлены к кириллице: русские слова часто разбиваются на много токенов (1 токен ≈ 1–2 буквы). Это означает:
- Меньше «информации» в одном токене
- Использование большего числа токенов = дороже и медленнее
- Нужен больший контекст для одного и того же смыслового объёма
Многоязычные модели (Llama 3, Qwen 2.5) имеют более сбалансированные словари.
Связанные термины
- токенизатор — реализует BPE для конкретной модели
- токенизация — процесс разбивки текста на токены
- токен — единица, которую создаёт BPE
- перплексия — метрика, зависящая от токенизатора
Готовы запустить GPU-задачу?
Запустить GPU-сервер