Training

training — процесс подбора параметров модели на данных

Раздел
Основы AI
Обновлено
18.05.26

Training (обучение модели) — процесс, в котором алгоритм подбирает значения параметров нейросети по размеченным данным. На каждом шаге модели показывают пример, считают ошибку между её предсказанием и правильным ответом и подстраивают веса так, чтобы в следующий раз ошибка была меньше. Цикл повторяется миллиарды раз. Обучение современных моделей идёт на GPU-кластерах от часов (дообучение LoRA) до месяцев (с нуля для LLM).

Коротко

Коротко. Training — это цикл, в котором модель учится решать задачу через примеры. Алгоритм подаёт пример → модель делает предсказание → сравнивается с правильным ответом → веса подкручиваются в сторону, уменьшающую ошибку. Один проход по всем данным — это эпоха; обычно нужно от нескольких до сотен эпох. Современные LLM обучают месяцами на кластерах из тысяч GPU; домашнее дообучение через LoRA — часы на одной видеокарте.

Что это такое

Январь 2020-го. На паре кластеров NVIDIA V100 запускается обучение GPT-3. 175 миллиардов параметров с нуля. Один проход по обучающему корпусу из 300 миллиардов токенов занимает недели. Полный цикл — три месяца. Стоимость по разным оценкам — от 4 до 12 миллионов долларов.

Обучение — самая дорогая операция в жизни модели. Один раз потраченные миллионы создают файл с весами, который потом миллионы пользователей запускают за копейки. Это и есть водораздел между обучением и инференсом.

Внутри обучение — простой цикл. Модели показывают пример из датасета. Она делает предсказание. Считается ошибка — насколько предсказание далеко от истины. По формуле обратного распространения вычисляется, как каждый параметр должен измениться, чтобы ошибка стала чуть меньше. Параметры обновляются на крохотную величину. Цикл повторяется на следующем примере. И ещё миллион раз. И ещё миллиард.

Идея не нова. Алгоритм обратного распространения (backpropagation) был описан в 1986 году. Перцептрон обучался ещё в 1958-м. Но превратить эту идею из учебной игрушки в работающий стек удалось только в 2010-х: появились большие датасеты, мощные GPU и приёмы, делающие обучение глубоких сетей устойчивым.

Как это работает

Один шаг обучения — это четыре последовательные операции.

  1. Forward pass. Пример из датасета проходит через сеть. На каждом слое веса умножаются на входы, складываются, проходят через активацию. На выходе появляется предсказание.
  2. Loss (ошибка). Считается, насколько предсказание далеко от правильного ответа. Для классификации — cross-entropy, для регрессии — mean squared error, для генерации текста — perplexity. Это просто число: чем больше, тем хуже модель угадала.
  3. Backward pass (backpropagation). Идём по сети в обратном направлении. По цепному правилу дифференцирования считается градиент: на сколько каждый параметр повлиял на ошибку. Внутри сети с миллиардами параметров градиент — это тоже миллиард чисел.
  4. 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 МБ.

Подготовка:

  1. Датасет: 25 фотографий персонажа с разных ракурсов, с подписями вроде <token> standing in armor, <token> portrait close-up, где <token> — уникальное имя, которого SDXL не знает.
  2. Конфигурация: batch size 1, learning rate 1e-4, 1500 шагов, AdamW оптимизатор. На RTX 3060 12 GB занимает 45 минут.

Что происходит во время training:

  1. Каждые 10 шагов LoRA-адаптеры подкручивают свои параметры.
  2. Каждые 100 шагов сохраняется checkpoint — можно потом откатиться.
  3. На каждых 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, потому что от неё зависит, кому будет доступно делать собственные модели.