# Стэнфордский CME295: как на самом деле обучаются современные LLM — от претрейна до LoRA

Источник: https://www.youtube.com/watch?v=VlA_jt_3Qc4
Канал: Stanford Online
Опубликовано: 21.10.2025

---

Четвертая лекция курса CME295 в Стэнфордском университете посвящена «индустриальному» закулисью больших языковых моделей (LLM) — процессам их обучения и оптимизации. Преподаватели курса, Афшин и Шервин, подробно разбирают путь модели от поглощения терабайтов интернет-данных до превращения в полезного ИИ-ассистента через механизмы SFT и LoRA.

## 🎓 Логистика курса и рекап основ
[[JUMP:0:05]]

Лекция началась с организационных моментов: Афшин напомнил, что промежуточный экзамен (midterm) состоится через неделю и будет охватывать материал первых четырех лекций [0:21]. Экзамен пройдет в формате закрытой книги (closed book), где разрешены только ручки — калькуляторы и шпаргалки запрещены, хотя на сайте курса доступен лист с формулами для подготовки [3:55].

Для понимания процесса обучения важно вспомнить ключевые концепции из предыдущих занятий:

*   **Mixture of Experts (MoE):** архитектура, позволяющая масштабировать модели без кратного увеличения стоимости инференса за счет активации лишь части параметров для каждого входа [4:42].
*   **Стратегии декодирования:** жадное декодирование (greedy), лучевой поиск (beam search) и сэмплирование [5:41].
*   **Температура:** гиперпараметр, регулирующий «остроту» распределения вероятностей токенов [6:10].
*   **Оптимизация инференса:** такие методы, как KV-кэширование, критически важны для сокращения задержек при генерации [6:41].

## 🏗️ Претрейн: создание фундамента знаний
[[JUMP:7:21]]

Современная парадигма LLM строится на **transfer learning** (переносе обучения). Вместо того чтобы обучать отдельную модель для каждой задачи (спам-фильтр, анализ тональности), исследователи сначала обучают гигантскую «базовую» модель на огромном массиве данных [8:50].

Претрейнинг — это самый дорогой и ресурсоемкий этап. Его суть заключается в предсказании следующего токена (next token prediction) [10:55]. Модель поглощает буквально «весь интернет»:

*   **Common Crawl:** архив из миллиардов веб-страниц [12:03].
*   **Википедия и соцсети:** статьи и диалоги на Reddit.
*   **Код:** репозитории GitHub и форумы Stack Overflow [12:42].

Масштабы данных поражают: если GPT-3 обучалась на 300 миллиардах токенов, то современная Llama 3 прошла через 15 триллионов токенов [13:09]. 

### Экономика вычислений и «Закон Чинчиллы»

Афшин вводит две ключевые метрики вычислений:

1.  **FLOPs (floating operations):** общее количество операций над числами с плавающей запятой, затраченных на обучение (порядок 10^25 для современных LLM) [13:53].
2.  **FLOPS (operations per second):** скорость вычислений оборудования (часто указывается в спецификациях GPU) [15:26].

Долгое время считалось, что чем больше модель, тем лучше. Однако в 2020 году вышло исследование **Scaling Laws**, показавшее, что производительность растет линейно с увеличением вычислений, данных и параметров [17:09]. Позже появился так называемый **Chinchilla Law** (закон Чинчиллы): для оптимального расхода бюджета на один параметр модели должно приходиться примерно 20 токенов обучающих данных [19:23]. По этой метрике GPT-3 (175 млрд параметров на 300 млрд токенов) считается «недообученной» [20:06].

## ⚙️ Железо и память: как уместить гиганта в GPU
[[JUMP:25:09]]

Основная проблема обучения — нехватка памяти GPU. Хотя H100 обладает внушительными 80 ГБ видеопамяти, этого недостаточно для хранения всех данных [30:29]:

*   Веса модели (миллиарды параметров).
*   Активации (значения на каждом слое для обратного прохода).
*   Градиенты.
*   Состояния оптимизатора (например, Adam хранит два дополнительных момента для каждого параметра) [29:13].

Для решения проблемы используются различные виды параллелизма:

*   **Data Parallelism (DP):** распределение данных между GPU, при котором на каждом устройстве лежит полная копия модели [31:14].
*   **ZeRO (Zero Redundancy Optimizer):** устранение дублирования данных. Память экономится за счет шардирования (разделения) состояний оптимизатора, градиентов и параметров между видеокартами [34:23].
*   **Model Parallelism:** разделение самой модели (тензорный, конвейерный параллелизм или экспертный параллелизм для MoE) [35:45].

## ⚡ Flash Attention: магия оптимизации памяти
[[JUMP:38:39]]

Метод **Flash Attention**, разработанный в Стэнфорде, произвел революцию в скорости работы трансформеров [38:54]. Проблема классического механизма внимания в том, что GPU тратит больше времени на чтение и запись данных в медленную память (HBM), чем на сами вычисления [42:30].

Flash Attention использует два типа памяти GPU:

1.  **HBM (High Bandwidth Memory):** большая (80 ГБ), но медленная [39:08].
2.  **SRAM:** очень маленькая (десятки МБ), но в 10 раз быстрее [39:48].

Суть метода — в «тайлинге» (блочном подходе). Вместо того чтобы вычислять огромную матрицу внимания целиком и постоянно записывать её в HBM, алгоритм берет маленькие блоки, загружает их в быструю SRAM, проводит там все вычисления (включая softmax) и записывает в основную память только итоговый результат [45:14]. 

Более того, Flash Attention применяет трюк с **рекомпьютацией**: вместо того чтобы хранить тяжелые активации в памяти для обратного прохода, он просто вычисляет их заново, так как это теперь происходит быстрее, чем чтение из памяти [50:10]. В итоге мы получаем меньше обращений к памяти и ускорение работы при сохранении точности [51:17].

## 📉 Квантование и смешанная точность
[[JUMP:52:40]]

Нужно ли нам хранить веса с огромной точностью после запятой? Квантование говорит — нет. 

*   **FP32 (Single Precision):** 32 бита на число.
*   **FP16 / BF16:** 16 бит. Занимают вдвое меньше места и работают быстрее [54:36].

Популярный метод — **Mixed Precision Training**: веса хранятся в высокой точности (FP32), но все вычисления (прямой и обратный проходы) делаются в FP16 [56:53]. Это позволяет избежать накопления ошибок при обновлении весов, сохраняя при этом скорость [58:08].

## 🧸 SFT: от предсказателя текста к помощнику
[[JUMP:1:02:27]]

Шервин объясняет, что после претрейна модель — это просто статистический автодополнитель текста. Если спросить «Можно ли стирать плюшевого мишку в машинке?», сырая модель может выдать описание состава мишки или похожий вопрос, но не даст совета [10:41].

Чтобы сделать ИИ полезным, применяется **SFT (Supervised Fine-Tuning)** — контролируемое дообучение на парах «инструкция — ответ» [1:06:16]. В отличие от претрейна, здесь используется на порядки меньше данных (тысячи или миллионы примеров вместо триллионов), но они должны быть сверхвысокого качества [1:18:25].

### Проблемы выравнивания (Alignment)

В состав данных для SFT входят:

*   Диалоги ассистента.
*   Написание кода и решение задач.
*   **Safety (безопасность):** обучение модели вежливо отказываться от генерации вредного контента [1:13:40].

Шервин отмечает, что сегодня данные для обучения часто генерируются другими, более мощными LLM, а люди лишь проверяют их качество [1:12:41].

## 📊 Кризис оценки: бенчмарки против «вайба»
[[JUMP:1:26:30]]

Как понять, стала ли модель лучше? 

1.  **Академические бенчмарки (MMLU, GSM8K):** дают сухие цифры по знаниям и математике [1:27:11]. Однако существует проблема «обучения на тестах»: если данные из бенчмарка попали в обучающую выборку, оценка становится необъективной [1:28:40].
2.  **Chatbot Arena:** платформа, где пользователи сравнивают ответы двух анонимных моделей и выбирают лучший [1:31:33]. Это оценка «вайба» и предпочтений пользователей.

Спикер подчеркивает субъективность оценок: кому-то нравятся эмодзи в ответах, а эксперты их ненавидят [1:34:35]. Кроме того, пользователи склонны выше оценивать модель, которая дает уверенный, но фактически неверный ответ, чем ту, что честно отказывается из соображений безопасности [1:35:30].

## 🚀 Эффективное дообучение: LoRA и QLoRA
[[JUMP:1:37:52]]

Полное дообучение всех параметров модели слишком дорого. Технология **LoRA (Low-Rank Adaptation)** позволяет обновлять лишь крошечную часть весов [1:38:20]. 
Идея: мы «замораживаем» основные веса модели и добавляем к ним две маленькие матрицы (A и B), произведение которых имитирует изменения в основной матрице [1:40:10]. Это сокращает количество обучаемых параметров в тысячи раз.

**QLoRA** идет еще дальше, комбинируя LoRA с 4-битным квантованием [1:45:22]. Метод использует формат **NF4** (Normal Float 4), который предполагает нормальное распределение весов и квантует их максимально эффективно [1:46:07]. Это позволяет дообучать огромные модели на обычном потребительском железе, экономя до 16 раз больше видеопамяти [1:47:11].