2026 г.

Глава 4. Предобучение: как модель учится предсказывать следующий токен

Учебник «Большие языковые модели»

В предыдущих главах мы собрали машину: токенизатор превращает текст в последовательность номеров (глава 1), эмбеддинги — номера в векторы (глава 2), башня блоков трансформера — векторы в распределение вероятностей следующего токена (глава 3). Осталось главное: миллиарды параметров этой машины изначально заполнены случайным шумом. Процесс, который превращает шум в знание, называется предобучением (pre-training). Для базовых моделей это обычно самый вычислительно дорогой этап, хотя его учебная постановка удивительно проста.

4.1. Задача и функция потерь

Вся задача формулируется в одну строку: по префиксу текста предсказать следующий токен. Никакой разметки не нужно — «правильные ответы» содержатся в самом тексте, каждый его токен по очереди служит целью для предсказания по предыдущим. Поэтому предобучение называют самоконтролируемым обучением (self-supervised learning): целевая разметка автоматически получается из самого текста.

Модель для позиции i выдаёт распределение вероятностей pθ(t | t1, …, ti−1) по всему словарю (θ — совокупность параметров). Качество измеряется перекрёстной энтропией: штраф за позицию — минус логарифм вероятности, которую модель назначила правильному токену, а потери на тексте — среднее по позициям:

L(θ) = −(1/n) Σi=1..n log pθ(ti | t1, …, ti−1)

Интуиция проста: если модель дала правильному токену вероятность 1, штраф равен нулю; если вероятность мала — штраф велик (логарифм стремится к минус бесконечности). Заметьте, что благодаря причинной маске из главы 3 потери по всем позициям последовательности вычисляются за один проход — каждый токен одновременно и контекст для следующих, и цель для предыдущих; в этом источник эффективности обучения трансформеров.

Производная метрика — перплексия (perplexity): PPL = exp(L). Её можно интуитивно понимать как эффективное число вариантов: перплексия 8 соответствует той же средней логарифмической потере, что и равновероятный выбор из восьми токенов. При почти равномерном распределении случайно инициализированной модели PPL близка к размеру словаря. Сравнивать перплексию корректно лишь на одном корпусе и при совместимой токенизации: разные словари задают разные единицы измерения.

Обучение — это минимизация L(θ) градиентным спуском: градиенты всех параметров вычисляются обратным распространением ошибки, и параметры сдвигаются небольшим шагом против градиента. На практике используется стохастический вариант, часто с оптимизатором AdamW: на каждом шаге берётся случайный батч текста (в крупных обучениях — миллионы токенов на шаг), и таких шагов делаются сотни тысяч. Скелет цикла обучения на PyTorch помещается на полстраницы:

import torch
import torch.nn.functional as F

# model: трансформер из главы 3, отображает (B, n) номеров токенов
# в логиты (B, n, V); data -- итератор батчей токенов (B, n+1)

opt = torch.optim.AdamW(model.parameters(), lr=3e-4)

for batch in data:                       # batch: (B, n+1)
    x = batch[:, :-1]                    # входы:  токены 1..n
    y = batch[:, 1:]                     # цели:   токены 2..n+1
    logits = model(x)                    # (B, n, V)
    loss = F.cross_entropy(
        logits.reshape(-1, logits.size(-1)),   # (B*n, V)
        y.reshape(-1))                         # (B*n,)
    opt.zero_grad()
    loss.backward()                      # градиенты всех параметров
    opt.step()                           # шаг оптимизатора
    print(f"loss {loss.item():.3f}  ppl {loss.exp().item():.1f}")

Сдвиг входов и целей на один токен — вся «разметка», которая нужна. Этот цикл, по существу без изменений, обучает и игрушечную модель на ноутбуке, и модель на сто миллиардов параметров — разница в объёме данных, числе GPU и количестве инженерии вокруг.

4.2. Данные

При близких архитектурах важным различием становятся данные. Смесь может включать отфильтрованный веб (открытые корпуса часто строятся на слепках Common Crawl), код, книги, научные статьи, энциклопедии и диалоги. Для ряда крупных моделей раскрыты объёмы в триллионы и десятки триллионов токенов, но состав и размер коммерческих корпусов часто не публикуются. Доля каждого источника и качество фильтрации не менее важны, чем общий счётчик токенов.

Подготовка данных — огромная и недооценённая часть работы: извлечение текста из HTML, фильтрация машинного и токсичного мусора, языковая фильтрация, дедупликация (повторы корпуса ухудшают модель и усиливают запоминание конкретных текстов), удаление персональных данных и — критически важно — исключение тестовых наборов бенчмарков, иначе оценки качества теряют смысл (загрязнение, contamination). Возрастает доля синтетических данных — текстов, порождённых другими моделями: ими добирают недопредставленные области (математика, редкие языки), но при неосторожности модель наследует и усиливает ошибки модели-генератора.

Использование текстов для обучения поднимает вопросы авторского права, лицензий, персональных данных и условий доступа. Практика и судебные решения зависят от юрисдикции и продолжают меняться, поэтому происхождение и права на данные надо документировать, а юридические выводы — сверять для конкретного проекта.

4.3. Законы масштабирования

Законы масштабирования (scaling laws; Каплан и др., 2020) описывают эмпирическое наблюдение: в исследованных режимах потери на отложенных данных падают примерно степенным образом с ростом числа параметров N, объёма данных D и вычислений C, причём в позднейшей работе о Chinchilla (Хоффман и др., 2022) зависимость от N и D параметризована в виде

L(N, D) ≈ E + A/Nα + B/Dβ

где E, A, B, α и β подбираются по измерениям и зависят от постановки. Практический смысл: серия небольших экспериментов помогает оценить отдачу от дополнительных параметров, данных и вычислений. Такая экстраполяция полезна внутри проверенного диапазона, но не гарантирует качество на отдельной прикладной задаче.

Работа о Chinchilla также уточнила баланс для исследованного семейства плотных моделей: при фиксированном бюджете вычислений параметры и данные выгодно наращивать примерно пропорционально; полученная оценка составляла около 20 обучающих токенов на параметр. Это не универсальная константа. Архитектура, качество данных и стоимость последующего инференса меняют оптимум; поэтому модели, которые будут обслуживать много запросов, иногда намеренно делают меньше и обучают дольше.

Для плотного трансформера часто используют грубую инженерную оценку стоимости обучения:

C ≈ 6 N D  операций с плавающей точкой

(порядка 2ND на прямой проход и вдвое больше на обратный). Формула не учитывает часть операций, разреженные MoE-слои, повторное использование данных и потери эффективности оборудования. Например, модель на N = 70·109 параметров и D = 15·1012 токенов — это ~6,3·1024 FLOP; кластер из тысячи ускорителей с полезной производительностью 400 ТФЛОПС каждый посчитает это примерно за 180 суток (или 6000 ускорителей — за месяц). Отсюда понятно, почему крупное предобучение требует значительной инфраструктуры. Реальные срок и стоимость зависят от загрузки ускорителей, сети, памяти, сбоев и цены оборудования. Само обучение при этом ведётся распределённо, комбинируя параллелизм по данным (копии модели обрабатывают разные батчи), по тензорам (слои режутся между ускорителями) и по конвейеру (разные блоки — на разных устройствах); это отдельная большая инженерная дисциплина.

4.4. Что модель выучивает — и чего не может

Предсказание следующего токена выглядит простой целью, но для снижения потерь на разнообразных текстах модели приходится усваивать грамматику, стили, программные шаблоны, многочисленные фактические ассоциации и связи между понятиями. Эти внутренние представления не являются полной или гарантированно верной моделью мира, но позволяют переносить закономерности между задачами и языками и обучаться по примерам в контексте (few-shot; глава 8).

Из природы задачи следуют ограничения. Фиксированный обучающий корпус задаёт дату отсечения знаний (knowledge cutoff); более свежие сведения можно подать через поиск и инструменты или добавить последующим обучением. Модель обучена продолжать правдоподобно, а не истинно — отсюда галлюцинации: уверенный тон не подкреплён механизмом проверки фактов. Она усваивает статистику данных вместе с их перекосами и стереотипами. И главное: предобученная модель — ещё не ассистент. На вопрос она может ответить встречным вопросом, продолжить список похожих вопросов или воспроизвести стилистику форума — она делает то, чему её учили: продолжает текст. Путь от «продолжателя текста» к помощнику, который понимает инструкции и отказывается от вредных просьб, — это дообучение: SFT, RLHF и их родственники. Ими откроется вторая часть учебника.

4.5. Итоги

Предобучение превращает текст в саму обучающую задачу: модель минимизирует перекрёстную энтропию следующего токена на большом подготовленном корпусе. Перплексия полезна для сравнения совместимых экспериментов, но не переносится напрямую между разными корпусами и токенизаторами. Законы масштабирования и оценка 6ND помогают планировать вычисления, оставаясь эмпирическими приближениями. Итоговая модель усваивает множество закономерностей данных, но не получает встроенной проверки истины и ещё не становится ассистентом.

Упражнения

1. При почти равномерном распределении перплексия случайной модели близка к размеру словаря. Какой перплексии соответствует средний штраф L = 2,0 ната на токен? Сколько это «эффективных вариантов» выбора?

2. По формуле C ≈ 6ND оцените, во сколько FLOP обойдётся обучение модели на 8 млрд параметров на 15 трлн токенов, и сколько времени займёт обучение на 8 ускорителях по 400 ТФЛОПС. Реалистично ли это для небольшой компании?

3. Соберите из открытых источников (например, объявлений о выпуске открытых моделей) пары (N, D) для пяти–семи моделей и посчитайте отношение D/N. Кто ближе всех к оценке из работы Chinchilla, а кто дальше всех — и почему это может быть осознанным решением? Не называйте эту оценку универсальным оптимумом.

404 Not Found

404 Not Found


nginx/1.24.0 (Ubuntu)

Связь с редакцией