GPU, ускорители и инфраструктура LLM

Автоматическая смешанная точность

Определение

Автоматическая смешанная точность — режим вычислений, в котором библиотека выбирает для операций числовые форматы разной точности. В PyTorch autocast выбирает формат чисел, а GradScaler отдельно масштабирует значение функции потерь и градиенты.

Также ищут: automatic mixed precision · AMP · смешанная точность

Зачем это знать

Тип весов сам по себе не показывает точность каждой операции. Проверьте, когда масштаб помогает сохранить малый градиент и в каком порядке снимать масштаб и обрезать градиенты.

Связи из словаря

Карта понятия

Автоматическая смешанная точность
Доказательная часть

Что подтверждено

  1. В PyTorch 2.9 autocast по правилам операций выбирает используемый тип данных; он не переводит все параметры модели и входы в FP16. Autocast и GradScaler — отдельные механизмы.

    Граница применимости: Только autocast и GradScaler из PyTorch 2.9; выбор точности зависит от операции и контекста. Не обещает единый тип для всей модели или каждого вычисления.

  2. GradScaler умножает значение функции потерь на масштаб S (loss scaling) до обратного прохода и снимает масштаб с градиентов перед обновлением параметров. В учебном примере для binary16 сохранены субнормальные числа, округление — к ближайшему, при равенстве к чётному; round16(x) обозначает такое округление. Для скалярного градиента g=2^-25 и S=256: round16(g)=0, round16(Sg)=2^-17, а снятие масштаба в FP32 возвращает g. Масштабирование после округления g до нуля его не восстановит.

    Граница применимости: Числовой пример — авторский скалярный расчёт при сохранении субнормальных binary16 и округлении к ближайшему с выбором чётного при равенстве, не трасса autograd. Масштабирование помогает снизить риск потери малых FP16-градиентов, но не гарантирует точность или качество обучения.

  3. При обрезке градиентов с GradScaler сначала вызовите scaler.unscale_(optimizer), затем ограничивайте норму. Иначе ограничение применяется к масштабированным значениям. GradScaler.step пропускает шаг оптимизатора, когда проверка обнаруживает градиенты inf или NaN.

    Граница применимости: Порядок из примеров PyTorch 2.9; не описание точного численного результата реализации torch.nn.utils.clip_grad_norm_.

  4. При накоплении градиентов одного эффективного пакета сохраняйте один масштаб S для всех микропакетов. Снимите масштаб и обновите параметры после всех вкладов; сам GradScaler не делит сумму на число микропакетов. Обновляйте масштаб на границе эффективного пакета, а не между его частями.

    Граница применимости: Порядок для накопления одного эффективного пакета в примерах PyTorch 2.9; не задаёт способ нормирования функции потерь или размер пакета.

Перед спецификацией

Что проверить

  1. Уточните, какие операции исполняются в каждом формате, а не только в каком формате хранят веса.
  2. Сохраняйте один масштаб для всех вкладов эффективного пакета и снимайте его после накопления.
  3. До обрезки градиентов снимите масштаб; качество проверяйте отдельно на той же задаче.
Открытые основания

Первоисточники

  • Исследование1
  • Документация2
  • Официальная документация
    Automatic Mixed Precision package - torch.amp PyTorch · PyTorch 2.9; Autocasting and Gradient Scaling · проверено

    Документация описывает выбор точности операций и отдельный механизм масштабирования градиентов.

    Утверждения: 01 · 02 · 03

  • Первичная публикация
    Mixed Precision Training Paulius Micikevicius и соавторы · Версия 3 от 15 февраля 2018 года; § 3.2 Loss Scaling · проверено

    Раздел описывает масштабирование функции потерь и градиентов как средство сохранить малые значения FP16.

    Утверждения: 02

  • Официальная документация
    Automatic Mixed Precision examples PyTorch · PyTorch 2.9; training, gradient clipping, gradient accumulation · проверено

    Примеры задают порядок снятия масштаба, обрезки и накопления градиентов.

    Утверждения: 03 · 04

Подтвердите действие