По порядку Middle PyTorch на практике обновлено

Шаг обучения с AMP и клиппингом

Вопрос

Расставьте вызовы одного шага обучения с fp16 mixed precision, клиппингом и пошаговым расписанием.

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

Расставьте шаги по порядку стрелками.

  1. 1
    scheduler.step()
  2. 2
    Forward и loss внутри torch.autocast
  3. 3
    scaler.scale(loss).backward()
  4. 4
    optimizer.zero_grad()
  5. 5
    scaler.unscale_(optimizer)
  6. 6
    scaler.step(optimizer)
  7. 7
    clip_grad_norm_(model.parameters(), max_norm)
  8. 8
    scaler.update()
Показать ответ и разбор

Коротко

unscale должен стоять до клиппинга, иначе порог применится к масштабированным градиентам. scaler.step пропустит шаг, если в градиентах inf или NaN, а update подстроит масштаб.

Правильный порядок

  1. 1
    optimizer.zero_grad()
  2. 2
    Forward и loss внутри torch.autocast
  3. 3
    scaler.scale(loss).backward()
  4. 4
    scaler.unscale_(optimizer)
  5. 5
    clip_grad_norm_(model.parameters(), max_norm)
  6. 6
    scaler.step(optimizer)
  7. 7
    scaler.update()
  8. 8
    scheduler.step()

Разбор

unscale_ должен стоять до клиппинга, иначе порог применится к масштабированным градиентам. scaler.step пропустит шаг, если в градиентах inf или NaN, а update подстроит масштаб.

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

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