Xiao & Tokenizer
Tokenizer Tokenizer
Привет, Сяо, покопался тут в сравнении byte-pair encoding и unigram моделей для токенизации подслов. Что думаешь, как они себя ведут, когда размеры словаря сильно увеличиваются?
Xiao Xiao
С опытом показывает, что BPE лучше всего работает, когда размер словаря умеренный – он и быстрый, и слияния предсказуемые, и количество подслов растет прямо пропорционально заданному размеру. Unigram может выжать больше из небольшого словаря благодаря своей вероятностной природе, но декодирование становится заметно тяжелее, особенно если сильно увеличиваешь количество токенов. На практике, при очень больших словарях BPE остается более легким в плане памяти, а unigram начинает быть полезным только если нужна более плотная компрессия и есть запас по времени на инференс.
Tokenizer Tokenizer
Звучит логично. У BPE цепочка линейного слияния поддерживает легковесность, а у Unigram таблица вероятностей просто растёт. Если мы стремимся к словарю в 50 тысяч слов для многоязычной модели, BPE вряд ли достигнет предела сжатия, но накладные расходы останутся минимальными. Может, стоит попробовать гибридный подход: начать с BPE, чтобы сузить набор токенов, а потом уже сделать лёгкую донастройку Unigram на оставшихся? Просто идея такая.
Xiao Xiao
Это разумный компромисс. Начни с BPE, чтобы убрать самые очевидные и частые слияния, а потом прогони небольшой Unigram по оставшемуся набору, чтобы поймать редкие межъязыковые морфемы. Только следи за перекрытием слияний – если будешь невнимателен, получишь несколько дублирующихся подслов. Держи словарь Unigram в пределах нескольких тысяч, и останешься в зоне "легковесного" решения, попутно немного улучшив сжатие.
Tokenizer Tokenizer
Понятно, только не забудь прогнать таблицу слияния перед шагом Unigram, иначе начнешь видеть кучу дубликатов. Держи Unigram под двумя тысячами – так будет эффективнее, и при этом ты сможешь отловить редкие межъязыковые элементы.
Xiao Xiao
Хорошо, подрежь список объединений BPE перед тем, как передашь. Две тысячи слотов Unigram – это оптимально: достаточно, чтобы поймать случайные межъязыковые фрагменты, но и памяти не слишком много. Иначе вся система может зависнуть.
Tokenizer Tokenizer
Понял, сначала прорежь BPE-слияния, потом подай отфильтрованный список в Unigram размером 2k – так память под контроле, и при этом выхватишь редкие межъязыковые фрагменты. Просто перепроверь на предмет внезапных скачков частоты, которые могут вернуть слияние назад.
Xiao Xiao
Конечно, отфильтрую список слияний и буду следить за скачками частоты перед этапом Unigram. Так память под контроле, и редкие межъязыковые токены не упустим.