English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

гость
1 / ?
назад к урокам

То, что ест токенизатор, становится тем, что он знает

Диета токенизатора: Определение

Токенизатор Харриса обучается на выборке корпуса. Он проводит распределительный анализ по этой выборке, выбирает N сегментов, которые повторяются наиболее сильно, и записывает их в словарь. После обучения эти N сегментов становятся фиксированным алфавитом, который языковая модель использует для всего: обучения, инференса, каждого ввода, каждого вывода.


Диета токенизатора = выборка текста, на которой обучается токенизатор.


Тренировочная диета = корпус, на котором обучается языковая модель.


Когда две диеты различаются, токенизатор обучается сегментам, настроенным на текст, который модель никогда не увидит. Емкость эмбеддингов (один слот на запись в словаре) тратится на сегменты, которые не приносят вознаграждения во время обучения.


Диета токенизатора и насыщение


ОШИБКА ANDREA-12M

ANDREA-12M обучала свой токенизатор Harris на сыром файле megachat-v8.txt. Этот файл содержал образцы кода и данные вызовов инструментов. Однако учебная программа исключала код и вызовы инструментов; ANDREA-12M видела только разговорный текст.


Результат: токенизатор выучил сегменты из ключевых слов Python, фигурных скобок JSON, флагов shell. Модель обучена на словарных статьях и диалогах. Только 36,4% сегментов пересекались с выборкой, взвешенной по учебной программе. Оставшиеся 63,6% слотов словаря были выделены под сегменты, с которыми модель никогда не столкнется во время обучения.


Почему это важно

Каждая запись словаря потребляет параметры эмбеддингов: одну строку матрицы эмбеддингов размером V × d_model (рассматривается в задании 4). При V = 4353 и d_model = 384 каждый слот словаря стоит 384 чисел с плавающей запятой. Трата 63,6% — это трата 63,6% матрицы эмбеддингов на данные, которые модель никогда не видит.

Сформулируйте правило диеты

Объясните правило диеты для токенизатора в одном предложении. Затем опишите худший случай: исследователь обучает токенизатор Harris на Википедии (формальная проза, цитаты), но обучает модель на Твиттере (слэнг, эмодзи, хэштеги). Что пойдет не так?

Насколько большим должен быть N

Обзор науки о словарях

ANDREA-120M провела эксперимент по науке о словарях: обучила токенизаторы Harris с разными значениями N (запрашиваемые сегменты) на одном и том же корпусе из 1,25 млрд символов. Измерила, сколько сегментов токенизатор фактически находит. Построила график результатов.


Запрошено NНайдено сегментов фактическиСтатус
2,0482,048Ненасыщенный (есть запас роста)
4,0964,096Ненасыщенный
8,1928,192Точка насыщения
16,38413,106Корпус исчерпан

Что означает насыщение

При малом N корпус содержит множество повторяющихся паттернов; токенизатор заполняет каждый слот, который запрашивает. При большом N токенизатор исчерпывает статистически значимые границы. Корпус из 1,25 млрд символов содержит примерно 13 106 различных сегментов в форме морфем выше порога частоты. Запрос 16 384 даёт 13 106; оставшиеся 3278 слотов заполняются или остаются пустыми.


Насыщение: точка, где запрошенное N = найденное N. За пределами насыщения токенизатор не может обнаружить больше сегментов без снижения качества (понижения порогов частоты и принятия шума).


Оптимальная точка на 8192

ANDREA-120M выбрала N = 8192. Обоснование:


- Ниже 8192 (например, 4096): словарь недостаточно охватывает распространённые морфемы; последовательности фрагментируются на большее количество токенов; пропускная способность падает.

- При 8192: каждый слот сегмента соответствует реальному, рекуррентному паттерну в корпусе.

- Выше 8192: убывающая отдача; 13,106 < 16,384 означает, что слоты тратятся впустую.


Финальный словарь ANDREA-120M: 256 + 8192 + 1 = 8449 токенов. Среднее сжатие: 5.91 байт UTF-8 на токен, что означает, что каждый токен заменяет ~5.9 байт сырого текста. Это соотношение определяет эффективный контекст модели: при 1024 токенах × 5.91 байт/токен ANDREA-120M читает примерно 6,050 символов контекста за один проход вперед.

Выше или ниже насыщения

Предположим, исследователь рассматривает два значения N для будущей модели ANDREA: N = 6144 (ниже насыщения) против N = 12288 (выше насыщения, где фактическое количество найденных сегментов = 13106 все еще применяется, поскольку корпус фиксирован). Для каждого: (a) вычислите финальный размер словаря (256 + N + 1), & (b) укажите в одной фразе, тратит ли каждая настройка словарную емкость впустую, захватывает ли весь доступный сигнал или недозахватывает. Покажите расчеты.

Откуда взялись 63.6%

Подсчёт потраченных впустую слотов

Токенизатор ANDREA-12M обучен на сыром megachat-v8.txt (запрошено 4096 сегментов, найдено). Команда взяла выборку, взвешенную по учебному плану: корпус, взвешенный по тому, как часто каждый источник выбирался бандитом. Они заново провели анализ Харриса на этой взвешенной выборке и задали вопрос: сколько из оригинальных 4096 сегментов всё ещё присутствует?


Результат: 36.4% пересечения. 1491 из 4096 сегментов соответствовали взвешиванию по учебному плану. Оставшиеся 2605 сегментов взяты из источников, исключённых моделью.


63,6% слотов словаря были выделены байтам, которые модель никогда не видела.


Стоимость эмбеддингов

Каждая запись словаря занимает одну строку в матрице эмбеддингов размером (V, d_model). Для ANDREA-12M:


- V = 4353 (256 + 4096 + 1)

- d_model = 384

- Параметры эмбеддингов = V × d_model = 4353 × 384 = 1 671 552 параметра


63,6% этих параметров остались неиспользованными для обучения разговору. 1 063 107 параметров выделено, 0 сигналов вознаграждения. ANDREA-12M выживает, потому что 256 базовых байт всегда покрывают любой символ; но ёмкость на параметр резко упала.


Как ANDREA-120M это исправил

Токенизатор ANDREA-120M обучен на полном потоке данных (1,25 млрд символов, 21 источник) при насыщении N = 8192. Корпус для обучения = тот же поток данных. Выравнивание по диете: 100%. Получившееся пересечение на выборке, взвешенной по чату: 36,5%. (Примечание: 36,5% — это пересечение, а не покрытие; чат сам по себе — подмножество полного потока данных, поэтому это число ведёт себя иначе, чем 36,4% у 12M.)


Эффективное сжатие: 5,91 байт UTF-8 на токен. Матрица встраиваний ANDREA-120M: 8449 × 768 = 6 488 832 параметра. Каждый параметр получает сигнал вознаграждения, потому что каждый сегмент отображается на текст, на котором модель действительно обучается.

Покрытие против пересечения

Токенизатор ANDREA-120M обучался на корпусе, совпадающем с корпусом обучения модели. Тем не менее «покрытие сегментов на выборке, взвешенной по чату», составило 36,5%, аналогично 36,4% у 12M. Почему 36,5% не является проблемой для 120M, в то время как 36,4% была проблемой для 12M? Используйте фразу о том, какой подмножество что.

Почему 5,91 байт на токен имеет значение

Коэффициент сжатия

Среднее количество байт UTF-8 на токен измеряет, сколько сырого текста сжимает каждая запись словаря. ANDREA-120M в среднем 5,91. Модель с более короткими кусками (3 байта/токен) читает меньше контекста за проход вперед; модель с более длинными кусками (8 байт/токен) читает больше, но обучается медленнее (каждый кусок требует больше образцов для хорошего обучения).


Эффективный контекст


КоличествоЗначение
Окно контекста токенов1 024 токена
Средние байты на токен5,91
Эффективный контекст символов1024 × 5,91 ≈ 6 050

Примерно 6000 символов UTF-8 помещаются в один прямой проход ANDREA-120M. Страница плотной английской прозы содержит ~3000–4000 символов; ANDREA читает около полутора страниц за проход.


Диета улучшает сжатие

Хорошо выровненный токенизатор сжимает лучше. Когда токенизатор обучается на сегментах, которые повторяются в обучающем корпусе, больше текста помещается на токен. Плохо выровненный токенизатор ANDREA-12M сжимал хуже на чате (больше байтов тратилось на фрагменты с fallback на байты, потому что сегменты чата были реже в словаре). Диета-выровненный токенизатор ANDREA-120M держит кусок в форме чата на быстром пути, а редкие скрипты — на fallback на байты.


Активность 4 продолжается

Активность 4 (grow_a_language_model_embeddings) охватывает, что происходит с этими 8449 записями словаря: они становятся строками матрицы эмбеддингов формы V × d_model, затем добавляются обучаемые позиционные эмбеддинги перед поступлением в первый блок трансформера.

Выберите N

Подумайте о компромиссе: должна ли будущая модель ANDREA использовать N = 4096 (быстрее обучение, больше байт-на-токен = более длинный эффективный контекст) или N = 16384 (длинные, но редкие сегменты, меньше токенов на кусок текста, но прошлая насыщения, так что пустые слоты зря)? Выберите один и дайте однострочное обоснование. Нет неправильного ответа.