Выбор ответа Middle Оптимизаторы и обучение обновлено

Где ставить clipping

Вопрос

В каком месте цикла обучения вызывают clip_grad_norm_?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: После loss.backward() и до optimizer.step(). Клиппинг меняет уже посчитанные градиенты, поэтому вызывается после backward, и должен успеть до шага оптимизатора.

Варианты ответа

  1. До loss.backward(), чтобы ограничить градиенты ещё при их вычислении
  2. После optimizer.step(), чтобы обрезать уже применённые обновления весов
  3. После loss.backward() и до optimizer.step()правильный ответ
  4. Перед forward, сразу после optimizer.zero_grad()

Разбор

Клиппинг меняет уже посчитанные градиенты, поэтому вызывается после backward, и должен успеть до шага оптимизатора. При mixed precision с GradScaler перед клиппингом нужен scaler.unscale_(optimizer), иначе порог применится к масштабированным градиентам.

  • До backward градиентов ещё нет.
  • После step клиппинг уже ни на что не влияет.
  • Перед forward градиенты от прошлого шага, клиппинг бессмыслен.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме