Те, що їсть токенізатор, стає тим, що він знає
Дієта токенізатора: Визначення
Токенізатор Harris навчається на зразку корпусу. Він проводить distributional analysis по цьому зразку, вибирає 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% матриці вбудовування на дані, які модель ніколи не бачить.
Сформулюйте правило дієти
Яким великим повинен бути N
Огляд науки про словник
ANDREA-120M провела експеримент з науки про словник: навчила токенізатори Harris з різними значеннями N (кількість запитаних сегментів) на одному й тому ж корпусі firehose об'ємом 1.25B символів. Виміряла, скільки сегментів токенізатор фактично знаходить. Побудувала графік результатів.
| Запрошено N | Знайдено сегментів насправді | Статус |
|---|---|---|
| 2,048 | 2,048 | Ненасичений (є простір для зростання) |
| 4,096 | 4,096 | Ненасичений |
| 8,192 | 8,192 | Точка насичення |
| 16,384 | 13,106 | Корпус вичерпано |
Що означає насичення
При малому N корпус має багато повторюваних патернів; токенізатор заповнює кожен слот, який запитує. При великому N токенізатор вичерпує статистично значущі межі. Корпус на 1.25B символів містить приблизно 13,106 унікальних сегментів у формі морфем понад порогом частоти. Запит 16,384 дає 13,106; решта 3,278 слотів заповнюються або залишаються порожніми.
Насичення: точка, де запитаний 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 символів контексту на один прохід вперед.
Понад чи нижче насичення
Звідки взялося 63.6%
Підрахунок Втрачених Слотів
Токенізатор ANDREA-12M, навчений на сирому megachat-v8.txt (замовлено 4096 сегментів, знайдено). Команда взяла вибірку з ваговою вибіркою за навчальним планом: корпус, зважений за частотою вибору кожного джерела бандитом. Вони повторно провели аналіз Гарріса на цій зваженій вибірці та запитали: скільки з оригінальних 4096 сегментів все ще з'являються?
Результат: 36.4% перекриття. 1,491 з 4,096 сегментів відповідали ваговій вибірці навчального плану. Решта 2,605 сегментів походили з джерел, які модель виключила.
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.25B символів, 21 джерело) при насиченні N = 8192. Тренувальний корпус = той самий потік даних. Дієтичне вирівнювання: 100%. Результуюче перекриття на зразку з вагою чату: 36.5%. (Примітка: 36.5% — це перекриття, а не покриття; чат сам по собі є підмножиною повного потоку даних, тому це число поводиться інакше, ніж 36.4% для 12M.)
Ефективне стиснення: 5.91 байт UTF-8 на токен. Матриця вбудувань ANDREA-120M: 8449 × 768 = 6,488,832 параметрів. Кожен параметр отримує сигнал винагороди, тому що кожен сегмент відображається на текст, на якому модель фактично тренується.
Покриття проти Перекриття
Чому 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 стискав гірше в чаті (більше байтів витрачалося на фрагменти з поверненням до байтів, оскільки сегменти чату були рідкіснішими у словнику). Дієта-вирівняний токенізатор ANDREA-120M тримає шматок у формі чату на швидкому шляху & рідкісні сценарії на поверненні до байтів.
Активність 4 триває
Активність 4 (grow_a_language_model_embeddings) охоплює те, що відбувається з тими 8449 записами словника: вони стають рядками матриці вбудувань форми V × d_model, потім додаються вивчені позиційні вбудування перед потоком у перший блок трансформера.