Happy-LLM, глава 4: большие языковые модели
Конспект четвёртой главы книги Datawhale «Строим большую модель с нуля»: что отличает LLM от BERT-эпохи, какие у неё способности и слабости, и три этапа обучения — предобучение, SFT и RLHF.
Четвёртая глава книги «Строим большую модель с нуля» (Happy-LLM) завершает теоретическую часть. Авторы отвечают на два вопроса: чем большая языковая модель (LLM) отличается от предобученных моделей вроде BERT и как такую модель обучают — от сырого текста до ассистента, который понимает инструкции. Глава без кода: это теория, которую главы 5 и 6 потом воплощают руками.
Конспект написан своими словами. Где книга устарела или неточна, мы это отмечаем; числовые примеры посчитаны заново.
Коротко
Заголовок раздела «Коротко»- LLM — та же Decoder-only архитектура и та же задача «следующий токен», что у GPT, но на порядки больше параметров и данных. Узко — модели от десятков миллиардов параметров; широко — всё от ≈1 млрд, если есть «эмерджентные» способности.
- Четыре способности: эмерджентность (способности появляются скачком при росте масштаба), обучение в контексте, следование инструкциям, пошаговые рассуждения (цепочка мыслей).
- Четыре особенности: многоязычность «из коробки», длинный контекст, расширение на картинки, галлюцинации.
- Три этапа обучения: предобучение (знания), SFT — дообучение на инструкциях (умение отвечать), RLHF — обучение с подкреплением по отзывам людей (соответствие ожиданиям). DPO — упрощённая замена RLHF.
- Главные трудности предобучения — вычисления (распределённое обучение, ZeRO) и данные (состав смеси, очистка, дедупликация).
Как читать вместе с курсом
Заголовок раздела «Как читать вместе с курсом»| Раздел главы | Урок курса |
|---|---|
| 4.2.1 Масштаб, закон | 5.1.1 Законы масштабирования |
| 4.2.1 Данные для предобучения | 5.1.2 Данные для предобучения |
| 4.2.1 Распределённое обучение, ZeRO | 5.4.3 Распределённое обучение |
| 4.2.2 SFT, многоходовые диалоги | 6.1.1 Base и chat, 6.1.2 SFT |
| 4.2.3 RLHF, PPO, DPO | 6.3.2 RLHF и PPO, 6.3.3 DPO |
Главу полезно прочитать дважды: перед ступенью 5 — как обзор, после ступени 6 — чтобы увидеть, как всё складывается. Описание PPO в книге очень сжатое; для настоящего понимания нужен модуль 6.0 нашего курса.
4.1 Что такое LLM
Заголовок раздела «4.1 Что такое LLM»4.1.1 Определение
Заголовок раздела «4.1.1 Определение»LLM — языковая модель, у которой гораздо больше параметров, чем у прежних, и которая предобучена на гораздо большем корпусе. Архитектура и задача те же, что у GPT (Decoder-only, предсказание следующего токена), но масштаб другой — и поэтому другие способности.
Книга даёт два определения. В узком смысле LLM — это модели с десятками и сотнями миллиардов параметров, обученные на триллионах токенов на кластерах из многих видеокарт. В широком — всё от ≈1 млрд параметров (пример в книге — Qwen-1.5B) до сотен миллиардов (Grok, 314B), если у модели проявляются эмерджентные способности, недоступные BERT и T5.
Точкой отсчёта считают GPT-3 (175 млрд параметров), а эпоху открыл ChatGPT (ноябрь 2022), обученный в три этапа: предобучение, SFT, RLHF. Книга приводит хронологию первого года после ChatGPT. Выборка из неё:
| Месяц | Открытые модели | Закрытые модели |
|---|---|---|
| 2022.11 | — | ChatGPT (OpenAI) |
| 2023.02 | LLaMA (Meta), MOSS (Фудань) | — |
| 2023.03 | Alpaca, Vicuna, ChatGLM | GPT-4, ERNIE Bot (Baidu), Claude, Bard |
| 2023.04 | Qwen (Alibaba) | SenseNova (SenseTime) |
| 2023.06 | ChatGLM2, InternLM (Shanghai AI Lab), Baichuan | — |
| 2023.07 | LLaMA 2 | Claude 2 |
| 2023.09 | Baichuan 2 | Gemini, Hunyuan (Tencent) |
| 2023.11 | Yi (01.AI), DeepSeek | Grok (xAI) |
4.1.2 Способности LLM
Заголовок раздела «4.1.2 Способности LLM»Эмерджентные способности. Главное отличие от PLM: при той же архитектуре и той же задаче некоторые умения почти отсутствуют у маленьких моделей и резко появляются у больших — как фазовый переход в физике, «количество переходит в качество». Именно с ними связаны надежды на то, что LLM когда-нибудь приблизятся к общему искусственному интеллекту (AGI).
Обучение в контексте (in-context learning). Впервые показано на GPT-3: модель решает задачу по инструкции и нескольким примерам в запросе, без обновления весов. Книга сравнивает экономику. Дообучение даже небольшой BERT-подобной модели требует видеокарты от 10 ГБ и, главное, размеченных данных — от тысячи до десятков тысяч примеров, размеченных людьми. LLM часто хватает инструкции и 1–5 примеров. Поэтому практика сдвинулась от «предобучить и дообучить» к промпт-инжинирингу — подбору запроса.
Следование инструкциям (instruction following). После дообучения на смеси задач, сформулированных как инструкции (instruction tuning), модель справляется и с новыми инструкциями, которых не было в обучении. Именно это сделало ChatGPT массовым продуктом: сочинение, программа, проверка контрольной — всё через одну и ту же переписку. На этой способности держатся агенты и рабочие процессы на LLM.
Пошаговые рассуждения (step by step reasoning). Раньше модели проваливались на задачах в несколько шагов — например, на классической китайской задаче «куры и кролики в одной клетке» (столько-то голов и столько-то ног, сколько кого?). LLM справляются с ними с помощью цепочки мыслей (Chain-of-Thought, CoT): модель выписывает промежуточные шаги и только потом ответ. Книга упоминает гипотезу, что эта способность во многом идёт от обучения на коде.
Пример CoT на задаче про кур и кроликов (наш): «35 голов, 94 ноги. Если бы все были курами, ног было бы 70. Лишних 24 ноги — по 2 на каждого кролика, значит кроликов 12, кур 23». Модель, которую попросили «рассуждать по шагам», выдаёт похожую цепочку и реже ошибается, чем при ответе одним числом.
Как пример применения книга приводит Copilot от Microsoft на базе GPT-4: дописывание и генерация кода опираются сразу на следование инструкциям и на рассуждения.
4.1.3 Особенности LLM
Заголовок раздела «4.1.3 Особенности LLM»- Многоязычность. Корпуса для предобучения по природе многоязычные, поэтому LLM сразу понимают много языков. Но качество неравномерно: хороших английских данных больше всего, и модели вроде GPT-4 сильнее в английском, чем в китайском; китайские модели (ERNIE Bot, Qwen) за счёт дополнительного обучения лучше работают с китайским. То же верно для русского.
- Длинный контекст. У PLM стандарт — 512 токенов (BERT, T5). LLM обучают на 4K, 8K, 32K токенов, а позиционное кодирование RoPE (или ALiBi) позволяет экстраполировать на длины больше обучающих. Пример из книги: InternLM предобучали на 32K, а работать он умеет с 200K токенов. Тема подробно — в модуле 5.5 курса.
- Мультимодальность. К LLM добавляют кодировщик изображений и слой-адаптер (Adapter), дообучают на парах «картинка — текст», и модель отвечает на вопросы по картинкам. Как лучше согласовать представления текста и изображений — открытый вопрос.
- Галлюцинации. Модель уверенно выдумывает: например, список литературы к статье из несуществующих работ. Это врождённое свойство LLM и большая проблема в медицине, финансах и других областях, где ошибка дорога. Ограничения в промпте и RAG (глава 7) помогают, но полностью проблему не решают.
4.2 Как обучают LLM
Заголовок раздела «4.2 Как обучают LLM»flowchart LR P["Предобучение<br/>триллионы токенов сырого текста<br/>задача: следующий токен"] --> S["SFT<br/>миллиарды токенов инструкций<br/>задача: ответ на инструкцию"] S --> R["RLHF<br/>сравнения ответов людьми<br/>модель наград + PPO"] P -.-> K["знания"] S -.-> F["умение отвечать"] R -.-> A["полезно, честно, безопасно"]
4.2.1 Предобучение
Заголовок раздела «4.2.1 Предобучение»Предобучение (Pretrain) — первый, главный и самый дорогой этап. Задача та же, что у GPT, — каузальная языковая модель (CLM): по началу текста предсказать следующий токен. Отличие от BERT-эпохи — в масштабе.
| Модель | Слоёв | Голов | Параметров | Токенов предобучения | |
|---|---|---|---|---|---|
| BERT-base | 12 | 768 | 12 | 0,1 млрд | ≈3 млрд |
| BERT-large | 24 | 1024 | 16 | 0,3 млрд | ≈3 млрд |
| Qwen-1.8B | 24 | 2048 | 16 | 1,8 млрд | 2,2 трлн |
| LLaMA-7B | 32 | 4096 | 32 | 7 млрд | 1 трлн |
| GPT-3 | 96 | 12 288 | 96 | 175 млрд | 300 млрд |
Сколько нужно данных и вычислений. Книга ссылается на закон масштабирования: вычисления , где — число параметров, — число токенов обучения. Читается так: на каждый параметр и каждый токен уходит около 6 операций с плавающей точкой (2 на прямой проход и 4 на обратный). Для GPT-3: операций.
Сколько токенов на параметр? GPT-3 обучали примерно на 1,7 токена на параметр (300 млрд на 175 млрд). Книга пишет, что «LLaMA предложила» брать около 20 токенов на параметр. Уточним: правило «≈20 токенов на параметр» получено в работе DeepMind о Chinchilla (Hoffmann и др., 2022; она есть в списке литературы главы), а LLaMA пошла дальше и обучала маленькие модели на гораздо большем числе токенов, чтобы их было дешевле использовать. Пример по правилу Chinchilla: модели на 7 млрд параметров нужно ≈140 млрд токенов и операций.
По оценке книги, модель на десятки миллиардов параметров обучают больше месяца на 1024 A100, модель на несколько миллиардов — 2–3 дня на 256 A100. Поэтому без распределённого обучения не обойтись.
Распределённое обучение. Две базовые идеи:
- Параллелизм по данным (data parallelism). Модель помещается в одну видеокарту, но хочется большой батч и быстрее. На каждой карте — полная копия модели, каждая обрабатывает свою часть батча; после прохода градиенты усредняются, и все копии обновляются одинаково. Итоговый батч = сумма батчей на картах.
- Параллелизм по модели (model parallelism). Модель не помещается в одну карту — её режут: разные слои или части слоёв живут на разных картах.
На их основе выросли тензорный параллелизм, 3D-параллелизм и ZeRO. Популярные фреймворки — DeepSpeed (самый распространённый), Megatron-LM, ColossalAI.
ZeRO (Zero Redundancy Optimizer) — главная идея DeepSpeed (вторая — выгрузка части данных в оперативную память, CPU-offload). Память при обучении делится на состояния модели (веса, градиенты, состояния оптимизатора Adam) и остальное (активации, буферы, фрагментация). При смешанной точности на один параметр уходит около 16 байт: 2 на вес в fp16, 2 на градиент, 12 на состояния Adam (копия весов в fp32, первый и второй моменты). Три уровня ZeRO делят эти данные между картами:
| Уровень | Что делится между картами | Байт на параметр при | Модель 7B на одну карту |
|---|---|---|---|
| Обычный DDP | ничего | 16 | 112 ГБ |
| ZeRO-1 | состояния Adam | 2 + 2 + 12/4 = 7 | 49 ГБ |
| ZeRO-2 | + градиенты | 2 + 2/4 + 12/4 = 5,5 | 38,5 ГБ |
| ZeRO-3 | + сами веса | 16/4 = 4 | 28 ГБ |
(Расчёт наш, только состояния модели, без активаций.) Чем глубже деление, тем меньше памяти на карте, но тем больше обмена данными между картами, поэтому загрузка видеокарт выше всего у ZeRO-1 и ниже всего у ZeRO-3. Выбор зависит от размера модели и железа. На машине с 4 картами по 32 ГБ полное обучение 7B даже с ZeRO-3 не влезает с запасом (ещё нужны активации) — поэтому в курсе модели такого размера дообучают через LoRA (урок 6.2.1).
Данные. Почти все знания LLM получает при предобучении, поэтому корпус должен быть огромным (сотни миллиардов — триллионы токенов) и разнообразным. Открытые источники: CommonCrawl, C4, GitHub, Википедия и др.; компании добавляют закрытые качественные данные. Пропорции смеси — «секретный рецепт» каждой лаборатории. Смесь LLaMA (по статье LLaMA, которую цитирует книга):
| Источник | Доля | Объём на диске |
|---|---|---|
| CommonCrawl | 67,0% | 3,3 ТБ |
| C4 | 15,0% | 783 ГБ |
| GitHub | 4,5% | 328 ГБ |
| Википедия | 4,5% | 83 ГБ |
| Книги | 4,5% | 85 ГБ |
| ArXiv | 2,5% | 92 ГБ |
| StackExchange | 2,0% | 78 ГБ |
Для китайских моделей задача труднее: качественных данных на английском больше, а китайские лаборатории свои корпуса обычно не публикуют. На момент написания главы открытыми были, например, SkyPile (150 млрд токенов, Kunlun Tiangong) и корпус yayi2 (100 млрд). Для русского языка ситуация похожая.
Очистка данных — качество часто важнее объёма. Три шага:
- Подготовка документов: фильтрация адресов (вредные сайты), извлечение текста из HTML, определение языка.
- Фильтрация: убрать мусор, рекламу, токсичный текст. Либо классификатором, обученным на эталонных текстах, либо эвристиками — вручную заданными признаками качества.
- Дедупликация: повторы сильно портят обобщение. Похожие документы находят хешированием (например, MinHash) или точным совпадением подстрок.
Пример эффекта очистки из книги: SlimPajama (627 млрд токенов после фильтрации и дедупликации RedPajama) даёт модель лучше, чем исходный RedPajama на 1 трлн токенов.
4.2.2 SFT
Заголовок раздела «4.2.2 SFT»После предобучения модель похожа, по образу книги, на начитанного, но бестолкового книжника: продолжит любой текст, но не понимает, что от неё хотят. Она просто дописывает. Второй этап — SFT (Supervised Fine-Tuning) — учит пользоваться знаниями.
В эпоху BERT дообучали под каждую задачу отдельно. LLM учат общему умению следовать инструкциям — через дообучение на инструкциях. Пример: вход «Какая сегодня погода?», выход — вежливый развёрнутый ответ.
Объём и разнообразие. Под одну узкую задачу хватает 500–1000 примеров. Для общего умения нужны тысячи типов задач и в сумме порядка нескольких миллиардов токенов. Важны и пропорции. InstructGPT (предшественник ChatGPT) использовал такую смесь запросов пользователей API: генерация текста 45,6%, открытые вопросы 12,4%, мозговой штурм 11,2%, чат 8,4%, переписывание 6,6%, суммаризация 4,2%, классификация 3,5%, прочее 3,5%, вопросы по документу 2,6%, извлечение 1,9%.
Откуда данные. Ответы, написанные людьми, дороги, и их почти никто не публикует — во многом на них держался успех ChatGPT. Дешёвая альтернатива — генерировать инструкции и ответы сильной моделью по нескольким «затравочным» примерам (так сделан набор Alpaca по методу Self-Instruct).
Формат. Типичная запись — три поля: instruction (что сделать), input (дополнительный ввод, может быть пустым),
output (эталонный ответ). При обучении поля вставляются в шаблон, чтобы модель отличала инструкцию от продолжения
текста. Например, в стиле Alpaca:
### Instruction:Переведи на английский: Сегодня отличная погода
### Response:The weather is great today!Важная деталь: SFT — это всё тот же CLM. Модель получает весь текст «шаблон + инструкция + ответ», но потери считаются только по токенам ответа; токены инструкции маскируются.
Многоходовые диалоги. Умение помнить, что было сказано раньше в разговоре, появляется только на этапе SFT —
предобучение тут ни при чём. Пусть диалог — это P1 C1 P2 C2 P3 C3 (P — реплики пользователя, C — ответы модели).
Книга сравнивает три способа сделать из него обучающие примеры:
| Способ | Что учим | Минус |
|---|---|---|
| 1. Один пример, потери только на C3 | последний ответ | теряются C1 и C2 |
| 2. Три примера: до C1, до C2, до C3 | каждый ответ отдельно | многократно пересчитываем одно и то же начало |
| 3. Один пример, потери на C1, C2 и C3 | все ответы сразу | — |
Третий способ возможен благодаря каузальной маске: ответ C1 вычисляется, не видя P2 и дальше, поэтому один проход по всему диалогу эквивалентен трём отдельным. Так сейчас и делают.
4.2.3 RLHF
Заголовок раздела «4.2.3 RLHF»RLHF (Reinforcement Learning from Human Feedback) считают главным шагом от GPT-3 к ChatGPT. Книга делит обучение на две части: предобучение даёт знания, выравнивание (alignment) — согласует поведение с ожиданиями людей. SFT выравнивает по инструкциям, RLHF — глубже, по ценностям: ответ должен быть полезным, честным и безвредным.
Аналогия книги: предобучение — это лекции, SFT — разбор того, как читать условие и решать задачи, а RLHF — домашние задания, которые проверяет учитель: правильные приёмы закрепляются, неправильные отбрасываются.
Обучение с подкреплением — отдельная ветка машинного обучения: агент действует в среде, получает награду и меняет стратегию (policy), чтобы набрать больше награды. Здесь агент — LLM, действие — ответ, награду выдаёт модель, обученная на оценках людей. RLHF состоит из двух шагов.
Шаг 1. Модель наград (Reward Model, RM). По сути — классификатор текста: LLM (или BERT) с линейным слоем, который
выдаёт одно число — насколько ответ нравится людям. Людям трудно согласованно ставить баллы, поэтому их просят
сравнивать: для одного запроса указать лучший (chosen) и худший (rejected) ответ. Пример пары (наш): на просьбу
помочь обойти сигнализацию в чужой машине chosen — отказ с объяснением, rejected — подробная инструкция. Модель
наград получает обе пары «запрос + ответ» и учится, чтобы награда chosen была выше награды rejected:
Что здесь написано: — число, которое модель наград ставит ответу на запрос ; — сигмоида. Если разница наград большая и положительная, и потеря ≈0; если модель перепутала порядок — потеря большая. Пример: при разнице 2 потеря , при разнице — около 2,13. (Книга описывает эту идею словами — «максимизировать разницу наград», формула наша.)
Модель наград не обязана быть того же размера, что LLM: у OpenAI LLM была на 175 млрд, а модель наград — на 6 млрд. Инициализировать её из SFT-модели или обучать с нуля — по книге, однозначного ответа нет.
Шаг 2. PPO (Proximal Policy Optimization). В обучении участвуют четыре модели:
| Модель | Откуда | Обучается? | Роль |
|---|---|---|---|
| Actor (актёр) | SFT-модель | да | генерирует ответы, это и есть будущий ассистент |
| Reference (эталон) | SFT-модель | нет | не даёт актёру уйти слишком далеко |
| Reward (награда) | модель наград | нет | оценивает ответ целиком |
| Critic (критик) | модель наград | да | оценивает ожидаемую награду на каждом шаге |
Цикл: на запрос отвечают актёр и эталон; расхождение между ними измеряют KL-дивергенцией и вычитают из награды (штраф за уход от исходной модели); ответ актёра оценивают модель наград и критик; из этого собираются потери для актёра и критика, и оба обновляются. Книга приводит формулы этого шага в упрощённом виде и прямо отсылает за подробностями к теории RL (учебник Datawhale «Easy RL»). У нас PPO разобран в уроках 6.0.3 и 6.3.2.
Цена — память: четыре модели вместо одной. По оценке книги, PPO с актёром и моделью наград по 7 млрд параметров требует около 240 ГБ видеопамяти (четыре A100 80 ГБ, по ≈60 ГБ на каждой). Зачем две замороженные модели? Чтобы обучение не разрушило знания и навыки, полученные при предобучении и SFT.
DPO (Direct Preference Optimization). Из-за сложности RLHF появилась замена через обычное обучение с учителем.
DPO показывает, что задачу «максимизировать награду с ограничением на уход от эталона» можно решить за один этап
обучения прямо на парах chosen/rejected — без модели наград и без RL. Нужны только две модели (обучаемая и
эталонная), и обучение гораздо проще PPO. Вывод формулы DPO книга не приводит — он есть в уроке
6.3.3.
Глава заканчивается переходом: дальше — обучение своей LLM с нуля (глава 5) и на фреймворках (глава 6).
Что сделать руками
Заголовок раздела «Что сделать руками»- Посчитайте по вычисления для LLaMA-7B (1 трлн токенов). Ответ: ≈. Сколько это дней на одной видеокарте с реальными 100 трлн операций в секунду? Около 4900 дней — поэтому кластеры.
- Повторите таблицу ZeRO для модели на 1,5 млрд параметров и 4 карт. Помещается ли полное обучение в 32 ГБ на карту при ZeRO-2? (Состояния модели — 8,25 ГБ на карту, остаётся место под активации.)
- Сделайте из диалога из трёх реплик пример по способу 3: выпишите токены и отметьте, где потери считаются, а где нет. Затем сравните со своим кодом SFT на уроке 6.1.2.
- Посчитайте потерю модели наград для разниц наград 0, 1, 3. Ответы: 0,69; 0,31; 0,05.
- Запишите задачу «кур и кроликов» с другими числами (например, 20 голов и 56 ног) и попросите любую доступную модель ответить сначала сразу, потом «по шагам». Ответ: 12 кур и 8 кроликов.
Словарик
Заголовок раздела «Словарик»| English | Русский |
|---|---|
| large language model, LLM | большая языковая модель |
| artificial general intelligence, AGI | общий искусственный интеллект |
| emergent abilities | эмерджентные способности |
| in-context learning | обучение в контексте |
| instruction following / instruction tuning | следование инструкциям / дообучение на инструкциях |
| chain-of-thought, CoT | цепочка мыслей |
| hallucination | галлюцинация |
| pre-training | предобучение |
| supervised fine-tuning, SFT | дообучение с учителем |
| RLHF | обучение с подкреплением по отзывам людей |
| alignment | выравнивание |
| reward model, RM | модель наград |
| proximal policy optimization, PPO | PPO, проксимальная оптимизация стратегии |
| direct preference optimization, DPO | прямая оптимизация предпочтений |
| data / model parallelism | параллелизм по данным / по модели |
| ZeRO | оптимизатор без избыточности (ZeRO) |
| deduplication | дедупликация |