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

un

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

Те, що їсть токенізатор, стає тим, що він знає

Дієта токенізатора: Визначення

Токенізатор 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% матриці вбудовування на дані, які модель ніколи не бачить.

Сформулюйте правило дієти

Поясніть правило дієти для токенізатора в одному реченні. Потім опишіть найгірший випадок: дослідник навчає токенізатор Harris на Вікіпедії (формальна проза, цитати), але навчає модель на Twitter (сленг, емодзі, хештеги). Що піде не так?

Яким великим повинен бути N

Огляд науки про словник

ANDREA-120M провела експеримент з науки про словник: навчила токенізатори Harris з різними значеннями N (кількість запитаних сегментів) на одному й тому ж корпусі firehose об'ємом 1.25B символів. Виміряла, скільки сегментів токенізатор фактично знаходить. Побудувала графік результатів.


Запрошено NЗнайдено сегментів насправдіСтатус
2,0482,048Ненасичений (є простір для зростання)
4,0964,096Ненасичений
8,1928,192Точка насичення
16,38413,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 символів контексту на один прохід вперед.

Понад чи нижче насичення

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

Звідки взялося 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 параметрів. Кожен параметр отримує сигнал винагороди, тому що кожен сегмент відображається на текст, на якому модель фактично тренується.

Покриття проти Перекриття

Токенізатор 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 стискав гірше в чаті (більше байтів витрачалося на фрагменти з поверненням до байтів, оскільки сегменти чату були рідкіснішими у словнику). Дієта-вирівняний токенізатор ANDREA-120M тримає шматок у формі чату на швидкому шляху & рідкісні сценарії на поверненні до байтів.


Активність 4 триває

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

Оберіть N

Розміртеся з компромісом: чи повинна майбутня модель ANDREA використовувати N = 4096 (швидше тренування, більше байтів-на-токен = довший ефективний контекст) чи N = 16384 (довші-але-рідкісніші сегменти, менше токенів на шматок тексту, але минуща насичення, тому марні слоти)? Оберіть один & дайте однореченне обґрунтування. Немає неправильної відповіді.