Экономия в одном месте стоит ресурсов в другом
ПослеMуспешных merges наш vocabulary содержит256+Mtokens. Частые byte-последовательности получают короткое представление в IDs. На новом тексте длина может уменьшиться слабее, чем на training corpus; это зависит от содержания и языка.
При vocabularyV и embedding widthd матрица E занимаетVdпараметров. Независимый LM head добавляет ещёdV, часто такжеVbias. Поэтому больший словарь делает входную/выходную таблицы дороже. Зато более короткая sequence уменьшает число attention-пар n².
Если длина последовательности уменьшилась вдвое, плотная attention-матрица имеет вчетверо меньше ячеек. Но вся стоимость Transformer не равна n²: проекции и FFN тоже требуют операций, а LM head зависит отV. Нельзя выбирать tokenizer по одному коэффициенту compression.
Эксперимент. Меняйте requested merges0..24 при фиксированном corpus и query. Сравните actual merges, vocabulary size, bytes count и token count. Алгоритм может остановиться раньше requested budget; это не ошибка. Если query состоит из невстречавшихся комбинаций, byte tokens останутся длинной последовательностью.
Граница. Полученные tokens не обязаны быть морфемами или словами. Частые пробелы с буквами могут сливаться, а редкие буквы — оставаться разделёнными на bytes. Эта реализация не содержит language-specific pre-tokenizer и не претендует на оптимальный tokenizer для русского языка.