По порядку Middle PyTorch на практике обновлено
Шаг обучения с AMP и клиппингом
Вопрос
Расставьте вызовы одного шага обучения с fp16 mixed precision, клиппингом и пошаговым расписанием.
Попробуйте сами
Расставьте шаги по порядку стрелками.
- 1scheduler.step()
- 2Forward и loss внутри torch.autocast
- 3scaler.scale(loss).backward()
- 4optimizer.zero_grad()
- 5scaler.unscale_(optimizer)
- 6scaler.step(optimizer)
- 7clip_grad_norm_(model.parameters(), max_norm)
- 8scaler.update()
Показать ответ и разбор
Коротко
unscale должен стоять до клиппинга, иначе порог применится к масштабированным градиентам. scaler.step пропустит шаг, если в градиентах inf или NaN, а update подстроит масштаб.
Правильный порядок
- 1optimizer.zero_grad()
- 2Forward и loss внутри torch.autocast
- 3scaler.scale(loss).backward()
- 4scaler.unscale_(optimizer)
- 5clip_grad_norm_(model.parameters(), max_norm)
- 6scaler.step(optimizer)
- 7scaler.update()
- 8scheduler.step()
Разбор
unscale_ должен стоять до клиппинга, иначе порог применится к масштабированным градиентам. scaler.step пропустит шаг, если в градиентах inf или NaN, а update подстроит масштаб.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.