gradient
Вектор частных производных loss по параметрам модели — указывает направление наибольшего роста loss.
Что такое gradient
Gradient (градиент) — вектор частных производных скалярной функции потерь (loss) по каждому параметру модели. Элемент градиента ∂L/∂w_i показывает, насколько изменится loss при малом изменении параметра w_i.
Поскольку мы хотим минимизировать loss, обновляем параметры в противоположном направлению градиента (gradient descent):
w_new = w - lr × ∇L(w)
Gradient descent
Для нейросетей с миллиардами параметров точный градиент по всему датасету слишком дорог. Используют стохастический gradient descent (SGD) и его вариации:
- Mini-batch SGD: градиент по небольшому батчу (типично 8–512 примеров)
- Adam/AdamW: адаптивные learning rate для каждого параметра, основанные на моментах градиента. Стандарт для LLM
Vanishing и exploding gradients
Vanishing gradients: при backpropagation через много слоёв градиенты экспоненциально уменьшаются → ранние слои почти не обучаются. Решения: residual connections, нормализация (LayerNorm).
Exploding gradients: градиенты нарастают → нестабильное обучение. Решение: gradient clipping.
# Gradient clipping — стандартная практика при обучении LLM
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
Gradient accumulation
При ограниченной VRAM нельзя обработать весь желаемый батч за один проход. Gradient accumulation позволяет накапливать градиенты по нескольким mini-batch и делать один шаг оптимизатора суммарно.
Связанные термины
- backpropagation — алгоритм вычисления градиентов
- loss — скалярная функция, градиент которой вычисляется
- gradient accumulation — накопление градиентов между шагами
- learning rate — шаг обновления параметров по градиенту
Готовы запустить GPU-задачу?
Запустить GPU-сервер