Training
training — процесс подбора параметров модели на данных
Training (обучение модели) — процесс, в котором алгоритм подбирает значения параметров нейросети по размеченным данным. На каждом шаге модели показывают пример, считают ошибку между её предсказанием и правильным ответом и подстраивают веса так, чтобы в следующий раз ошибка была меньше. Цикл повторяется миллиарды раз. Обучение современных моделей идёт на GPU-кластерах от часов (дообучение LoRA) до месяцев (с нуля для LLM).
Коротко
Коротко. Training — это цикл, в котором модель учится решать задачу через примеры. Алгоритм подаёт пример → модель делает предсказание → сравнивается с правильным ответом → веса подкручиваются в сторону, уменьшающую ошибку. Один проход по всем данным — это эпоха; обычно нужно от нескольких до сотен эпох. Современные LLM обучают месяцами на кластерах из тысяч GPU; домашнее дообучение через LoRA — часы на одной видеокарте.
Что это такое
Январь 2020-го. На паре кластеров NVIDIA V100 запускается обучение GPT-3. 175 миллиардов параметров с нуля. Один проход по обучающему корпусу из 300 миллиардов токенов занимает недели. Полный цикл — три месяца. Стоимость по разным оценкам — от 4 до 12 миллионов долларов.
Обучение — самая дорогая операция в жизни модели. Один раз потраченные миллионы создают файл с весами, который потом миллионы пользователей запускают за копейки. Это и есть водораздел между обучением и инференсом.
Внутри обучение — простой цикл. Модели показывают пример из датасета. Она делает предсказание. Считается ошибка — насколько предсказание далеко от истины. По формуле обратного распространения вычисляется, как каждый параметр должен измениться, чтобы ошибка стала чуть меньше. Параметры обновляются на крохотную величину. Цикл повторяется на следующем примере. И ещё миллион раз. И ещё миллиард.
Идея не нова. Алгоритм обратного распространения (backpropagation) был описан в 1986 году. Перцептрон обучался ещё в 1958-м. Но превратить эту идею из учебной игрушки в работающий стек удалось только в 2010-х: появились большие датасеты, мощные GPU и приёмы, делающие обучение глубоких сетей устойчивым.
Как это работает
Один шаг обучения — это четыре последовательные операции.
- Forward pass. Пример из датасета проходит через сеть. На каждом слое веса умножаются на входы, складываются, проходят через активацию. На выходе появляется предсказание.
- Loss (ошибка). Считается, насколько предсказание далеко от правильного ответа. Для классификации — cross-entropy, для регрессии — mean squared error, для генерации текста — perplexity. Это просто число: чем больше, тем хуже модель угадала.
- Backward pass (backpropagation). Идём по сети в обратном направлении. По цепному правилу дифференцирования считается градиент: на сколько каждый параметр повлиял на ошибку. Внутри сети с миллиардами параметров градиент — это тоже миллиард чисел.
- Update. Каждый параметр сдвигается в сторону, уменьшающую ошибку:
param = param - learning_rate · grad.learning_rateобычно 0.0001–0.001 — крохотный шаг, чтобы не «перепрыгнуть» оптимум.
Цикл повторяется. Не на одном примере, а на пачке (batch) — обычно 16, 32, 64 или 256 примеров за раз. Это даёт более стабильную оценку градиента и лучше использует параллельность GPU.
Один проход по всему датасету — это эпоха (epoch). Полное обучение часто требует от 3–5 эпох (для дообучения) до 100+ эпох (для обучения с нуля на небольших данных). У LLM понятие эпохи размывается: обучение идёт на потоковой выборке из триллионов токенов и проходит каждый пример обычно меньше одного раза.
Что меняется во время обучения:
- В начале — веса инициализированы случайно, предсказания почти бессмысленны, loss большой.
- Через первые тысячи шагов — модель улавливает грубые закономерности (где обычно лица, что часто идёт после слова «привет»). Loss быстро падает.
- К середине обучения — тонкие связи. Modель начинает различать редкие случаи, контекст, нюансы.
- К концу — выходим на плато: каждое следующее улучшение требует всё больше шагов. Дальше — либо остановиться, либо собирать новые данные.
Пример на практике
3D-художник готовит fine-tuning Stable Diffusion на персонажа своей игры. Нужно научить базовую SDXL рисовать конкретного героя в любых позах.
Полное обучение модели не нужно (и невозможно — 6.9 ГБ весов). Используется LoRA — обучается тонкая надстройка над SDXL, на 50–200 МБ.
Подготовка:
- Датасет: 25 фотографий персонажа с разных ракурсов, с подписями вроде
<token> standing in armor,<token> portrait close-up, где<token>— уникальное имя, которого SDXL не знает. - Конфигурация: batch size 1, learning rate 1e-4, 1500 шагов, AdamW оптимизатор. На RTX 3060 12 GB занимает 45 минут.
Что происходит во время training:
- Каждые 10 шагов LoRA-адаптеры подкручивают свои параметры.
- Каждые 100 шагов сохраняется checkpoint — можно потом откатиться.
- На каждых 250 шагах генерируется тестовая картинка с тем же seed — видно, как модель «учится» персонажу.
К 500-му шагу LoRA уже узнаёт лицо. К 1000-му — позы и одежду. На 1500-м начинает переобучаться (overfitting): если перебрать, теряется гибкость к новым позам.
Готовая LoRA character_v1.safetensors весит 144 МБ. В ComfyUI её загружают через ноду Load LoRA, подключают между моделью и сэмплером, ставят strength 0.7. Промпт <token> standing on a beach — и персонаж в любой позе на любом фоне.
Это «дешёвая» сторона обучения: одна GPU, час времени, готовая база. Дорогая сторона — обучение самой SDXL с нуля — заняла бы три месяца на кластере и стоила бы 500 тысяч долларов.
С чем часто путают
- Training и Inference — это два разных режима. Training подбирает параметры (медленно, дорого, на GPU-кластере). Inference использует готовые параметры (быстро, дёшево, иногда даже на CPU). Один раз обучил → используй много раз.
- Training и fine-tuning — это два уровня. Training (pre-training) — обучение с нуля на огромном корпусе общих данных. Fine-tuning — короткое дообучение уже готовой модели под узкую задачу. Стоимость отличается на порядки.
- Training и in-context learning — настоящее обучение меняет параметры модели. In-context learning (когда LLM «учится» из примеров в промпте) параметры не меняет — это работа в контекстном окне, эффект пропадает после ответа.
- Training и RAG — RAG не меняет модель; добавляет внешний поиск перед запросом. Это разные подходы к одной проблеме «модель не знает фактов»: либо дообучать (training), либо подсовывать ей контекст (RAG).
Частые ошибки и заблуждения
- Чем дольше обучать, тем лучше модель. До определённой точки — да, после — нет. Перетренированная модель запоминает датасет наизусть и теряет способность обобщать. Признак — train loss падает, validation loss растёт.
- Большой learning rate ускоряет обучение. В разы — но и риск всё уронить. Слишком большой lr приводит к «прыжкам» через оптимум; loss скачет вверх-вниз, модель не сходится. Стандартный приём — начать с малого, постепенно уменьшать (learning rate schedule).
- Хорошо обученная модель даст идеальный ответ всегда. Нет. Обучение оптимизирует среднюю ошибку на распределении данных. На примерах вне этого распределения (out-of-distribution) модель может уверенно ошибаться.
- Можно обучить серьёзную модель за вечер на ноутбуке. Только fine-tuning или LoRA. Обучение базовой SDXL — минимум 1000 GPU-часов. LLM 7B с нуля — около 30 000 GPU-часов.
- Тренировка завершена — модель готова. На практике дальше идёт valuation, фильтрация по reward-моделям (RLHF), human review, safety-проверки. Сырая обученная модель — это полуфабрикат.
Связанные термины
- Inference — использование готовой модели; следующая стадия после training.
- Dataset — то, на чём идёт обучение.
- Parameters — то, что подбирается во время обучения.
- Loss function — функция, измеряющая ошибку предсказания.
- Backpropagation — алгоритм вычисления градиентов по всем слоям.
- Learning rate — размер шага обновления весов.
- Epoch — один полный проход по обучающему датасету.
- Overfitting — типичная неудача обучения: модель запоминает датасет.
- Fine-tuning — короткое дообучение готовой модели.
- LoRA — лёгкий способ training, обучает 1–2% параметров.
Частые вопросы
Сколько GPU нужно для домашнего обучения? Для fine-tuning LoRA или классификатора — одна RTX 3060 12 GB или 3090. Для серьёзного обучения с нуля — облако или кластер. Стандарт промышленности — кластеры по 8 × A100 или H100, дальше — десятки тысяч карт.
Что такое pre-training и post-training? Pre-training — обучение модели на огромном корпусе сырых данных без специфической задачи (предсказывать следующий токен на всём интернете). Post-training — серия дополнительных этапов: instruction tuning (учим следовать инструкциям), RLHF (учим отвечать по предпочтениям людей), safety tuning. ChatGPT, Claude, Gemini — это pre-training + post-training в несколько слоёв.
Можно ли продолжить обучение готовой модели? Можно, и это называется continued pre-training (на новых данных в том же духе) или fine-tuning (на узкой задаче). Главное — не разрушить уже выученное (catastrophic forgetting). Помогает: смешивание новых данных со старыми, малый learning rate, LoRA-адаптеры вместо полного обновления.
Что такое gradient descent? Алгоритм обновления параметров. Берётся градиент loss по параметрам, параметры сдвигаются в направлении, противоположном градиенту (в сторону уменьшения loss). Самый базовый — SGD; на практике используют Adam, AdamW — варианты с адаптивной скоростью.
Почему обучение часто запускают на batch, а не на одном примере? Один пример даёт шумную оценку градиента — модель «дёргает» в разные стороны. Batch усредняет градиент по нескольким примерам, что даёт стабильный шаг. Плюс GPU параллельно обрабатывает batch с почти теми же затратами, что и один пример.
Главное
Training — это сердцевина машинного обучения: цикл, в котором модель пробует, ошибается, учится. Под капотом всё та же математика, что и в 1986 году, — backpropagation плюс gradient descent. Но масштаб вырос на порядки: вместо тысяч параметров и сотен примеров — миллиарды параметров и триллионы токенов. От качества данных, архитектуры и аккуратности обучения зависит, получится в итоге работающая модель или ещё одна попытка. Удешевить training (через LoRA, fine-tuning, квантизацию) — главная инженерная задача современного AI, потому что от неё зависит, кому будет доступно делать собственные модели.