Претрейнинг и scaling laws
Как из триллионов токенов интернета получается base model, почему её качество предсказуемо заранее по формуле — и почему «умная» модель нужного размера считается на калькуляторе, а не подбирается наугад.
Интуиция
Претрейнинг (pretraining) — это одна очень простая задача, повторённая невообразимое число раз: по началу текста предсказать следующий токен (next token prediction). Гениальность в том, что это самообучение (self-supervised learning): не нужны разметчики — любой текст сам себе разметка. Взял предложение, спрятал последнее слово — вот тебе пример «вопрос → ответ». Весь интернет мгновенно превращается в обучающую выборку.
Чтобы хорошо предсказывать следующий токен, модели приходится «попутно» выучить грамматику, факты, стиль, логику и даже код — иначе она будет систематически ошибаться. Так из тупой задачи вырастает нетупая модель.
Как это работает
Модель (обычно трансформер) выдаёт распределение вероятностей следующего токена, а учится минимизацией кросс-энтропии (cross-entropy loss) — среднего минус-логарифма вероятности правильного токена:
Данные — веб-краулы (Common Crawl), книги, статьи, код. Сырой веб ужасен, поэтому половина успеха — пайплайн подготовки: фильтрация мусора и токсичности, дедупликация (deduplication), удаление тестовых бенчмарков из трейна. Качество данных решает не меньше архитектуры. Масштабы: триллионы токенов, тысячи GPU, недели и месяцы обучения, десятки миллионов долларов за один прогон.
Scaling laws: качество по формуле
Эмпирический факт: лосс падает по степенному закону (power law) от числа параметров N, объёма данных D и компьюта C. В духе работы Chinchilla:
Здесь E — неустранимая энтропия языка (её не пробить никаким размером), член A/Nα — потери из-за малой модели, B/Dβ — из-за нехватки данных. Главный вывод Chinchilla: при фиксированном бюджете компьюта параметры и токены надо растить вместе, примерно по 20 токенов на параметр. GPT-3 (175 млрд параметров, 300 млрд токенов) была сильно недотренирована: Chinchilla с 70 млрд параметров и 1,4 трлн токенов обошла её при том же компьюте.
Обрати внимание: и «слишком маленькая» модель (не хватает ёмкости), и «слишком большая» (не хватило токенов) при одном и том же бюджете дают худший лосс, чем оптимум на зелёной огибающей. При бюджете ≈6·10²³ FLOPs оптимум — это и есть Chinchilla: ~70 млрд параметров на ~1,4 трлн токенов.
Emergent abilities и что умеет base model
С ростом масштаба у моделей «внезапно» появляются способности, которых не было у меньших: арифметика в несколько шагов, following инструкций, перевод. Это называют эмерджентными способностями (emergent abilities). Вокруг них идёт спор: часть «скачков» — артефакт жёстких метрик (exact match даёт 0, пока ответ не идеален, хотя внутренняя вероятность правильного ответа растёт плавно). Но сам факт, что новые навыки трудно предсказать до обучения, никуда не девается.
Важно: результат претрейнинга — base model. Она гениально продолжает текст, но не «отвечает»: на вопрос «Как сварить пасту?» может выдать список ещё десяти похожих вопросов — потому что в интернете вопросы часто идут списками. Чтобы получить ассистента, нужно пост-обучение: SFT и alignment.
- «Почему претрейнинг называют self-supervised?» — метки не размечает человек: следующий токен и есть метка, поэтому годится весь текст мира.
- «В чём вывод Chinchilla?» — при фиксированном компьюте N и D растят вместе (~20 токенов на параметр); GPT-3 была недотренирована по данным.
- «Зачем дедупликация?» — повторы заставляют модель заучивать наизусть, искажают лосс и загрязняют бенчмарки, попавшие в трейн.
- «Почему base model не годится как ассистент?» — её цель — правдоподобно продолжить текст, а не выполнить просьбу; формат «полезного ответа» ей задают только на пост-обучении.