Обучение моделей 16 просмотров

Mixed Precision

Mixed Precision Training

Mixed Precision — техника обучения нейросетей с использованием нескольких форматов данных (FP32 + FP16/BF16) одновременно, ускоряющая обучение в 2-3× при минимальной потере точности.

Что такое Mixed Precision

Mixed Precision Training — техника, при которой основные вычисления (forward + backward) выполняются в пониженной точности (FP16 или BF16), а критические операции (обновление весов, loss) — в FP32.

Форматы данных

Формат Бит Диапазон Применение
FP32 32 ±3.4×10³⁸ Master weights
FP16 16 ±65504 Forward/backward
BF16 16 ±3.4×10³⁸ Forward/backward (лучше для ML)
TF32 19 ±3.4×10³⁸ Ampere+ автоматически
FP8 8 E4M3: ±448 Hopper+ инференс

BF16 vs FP16

BF16 (Brain Float 16) имеет тот же диапазон, что FP32 (8 бит экспоненты), но меньшую точность. Не требует loss scaling и стабильнее при обучении.

FP16 имеет узкий диапазон — требуется loss scaling для предотвращения underflow градиентов.

Использование в PyTorch

# Automatic Mixed Precision (AMP)
scaler = torch.amp.GradScaler()

for batch in dataloader:
    optimizer.zero_grad()

    with torch.autocast(device_type="cuda", dtype=torch.bfloat16):
        output = model(batch)
        loss = criterion(output)

    scaler.scale(loss).backward()
    scaler.step(optimizer)
    scaler.update()

Экономия ресурсов

  • VRAM: 2× меньше для активаций
  • Скорость: 2-3× быстрее на Tensor Cores
  • Качество: практически без потерь при BF16

Рекомендация: всегда используйте BF16 на GPU Ampere+ (A100, H100). FP16 с loss scaling — только на старых GPU (V100).

Связанные термины

Требует
Улучшается
Необходим для
Использует

Попробуйте на практике

Арендуйте GPU и запустите ML-модели в Intelion Cloud

Начать работу