Глоссарий

Смешанная точность

Повысь эффективность глубокого обучения с помощью тренировок со смешанной точностью! Достигни более высокой скорости, уменьши потребление памяти и сэкономь энергию, не жертвуя точностью.

Обучай модели YOLO просто
с помощью Ultralytics HUB.

Узнай больше

Обучение со смешанной точностью - это техника, используемая в глубоком обучении (ГОО) для ускорения обучения моделей и снижения потребления памяти без существенного влияния на точность модели. Она достигается за счет стратегического использования комбинации различных форматов точности для хранения и вычисления значений в нейронной сети (НС). Обычно это подразумевает использование стандартного 32-битного формата с плавающей точкой (FP32 или single-precision) для критически важных частей, таких как хранение весов модели, в то время как для вычислений во время прямого и обратного проходов(backpropagation) используются более быстрые и менее требовательные к памяти 16-битные форматы с плавающей точкой (FP16 или half-precision, а иногда BF16 или BFloat16).

Как работает смешанная точность

Основная идея смешанной точности заключается в том, чтобы использовать преимущества скорости и памяти форматов с более низкой точностью и при этом снизить потенциальные проблемы с численной стабильностью. Общий подход включает в себя следующие шаги:

  1. Поддерживай мастер-весы в FP32: первичная копия весов модели хранится в стандартном формате FP32, чтобы обеспечить высокую точность обновления весов.
  2. Используй FP16/BF16 для вычислений: Во время цикла обучения веса FP32 преобразуются в FP16 или BF16 для прямого и обратного проходов. Вычисления с использованием этих форматов с более низкой точностью значительно быстрее на современном оборудовании, например на графических процессорахNVIDIA , оснащенных Tensor ядрами, которые специально разработаны для ускорения матричных умножений с более низкой точностью.
  3. Масштабирование с потерями: При использовании FP16 диапазон представимых чисел гораздо меньше, чем у FP32. Это может привести к тому, что небольшие значения градиента, вычисленные во время обратного распространения, станут нулевыми (underflow), что помешает обучению. Чтобы предотвратить это, значение потерь масштабируется перед обратным распространением, эффективно увеличивая градиенты в диапазон, представимый FP16. Перед обновлением веса эти градиенты снова уменьшаются. BF16, обладая более широким динамическим диапазоном, чем FP32, но меньшей точностью, часто позволяет избежать необходимости масштабирования потерь.
  4. Обнови мастер-весы: Вычисленные градиенты (уменьшенные, если использовалось масштабирование потерь) используются для обновления мастер-копии весов, которые остаются в FP32.

Такой тщательный баланс позволяет моделям обучаться быстрее и использовать меньше GPU памяти.

Преимущества смешанной точности

  • Более быстрое обучение: Вычисления с низкой точностью (FP16/BF16) выполняются гораздо быстрее на совместимом оборудовании, что значительно сокращает время, необходимое для каждой эпохи обучения. Это позволяет быстрее проводить итерации и эксперименты.
  • Уменьшенное потребление памяти: Значения FP16/BF16 требуют вдвое меньше памяти, чем значения FP32. Это уменьшение относится к активациям, хранящимся во время прямого прохода, и градиентам, вычисляемым во время обратного прохода. Меньшее потребление памяти позволяет обучать более крупные модели или использовать большие объемы партий, что может улучшить производительность модели и стабильность обучения.
  • Повышение эффективности: Сочетание более быстрых вычислений и меньших требований к пропускной способности памяти приводит к более эффективному использованию аппаратных ресурсов, что потенциально снижает стоимость обучения для облачных вычислений или локальных кластеров.

Смешанная точность против смежных понятий

  • Полная точность (FP32): Традиционное обучение использует FP32 для всего хранения и вычислений. Как правило, он более стабилен численно, но медленнее и требует больше памяти, чем смешанная точность.
  • Половинная точность (FP16/BF16): Использование только FP16 или BF16 на протяжении всего обучения может привести к значительной численной нестабильности (особенно FP16 без таких техник, как масштабирование потерь) и потенциальной потере точности. Смешанная точность - это более надежный подход, который сочетает в себе FP32 и FP16/BF16.
  • Квантование модели: Обычно это означает преобразование весов и/или активаций модели в форматы еще более низкой точности, такие как 8-битные целые числа (INT8), в первую очередь для оптимизации скорости и эффективности выводов, особенно на граничных устройствах. Хотя это иногда используется во время обучения(Quantization-Aware Training), оно отличается от типичной смешанной точности FP32/FP16, используемой на стандартных этапах обучения.

Применение и примеры

Смешанная точность широко используется при обучении крупномасштабных моделей машинного обучения (ML).

  1. Обучение больших языковых моделей (LLM): Такие модели, как GPT-3, BERT и T5, имеют миллиарды параметров. Их обучение с использованием только FP32 потребовало бы запредельных объемов памяти и времени GPU . Смешанная точность делает обучение таких фундаментальных моделей осуществимым за счет значительного сокращения потребностей в памяти и ускорения вычислений. Такие фреймворки, как PyTorch и TensorFlow обеспечивают встроенную поддержку обучения со смешанной точностью.
  2. Ускорение моделей компьютерного зрения: В компьютерном зрении (КВ) смешанная точность ускоряет обучение сложных моделей, таких как конволюционные нейронные сети (CNN) и трансформаторы зрения (ViT), используемых для таких задач, как обнаружение объектов, сегментация изображений и их классификация. Например, модели Ultralytics YOLO , включая новейшие Ultralytics YOLO11могут использовать смешанную точность во время обучения для ускорения сходимости и эффективного использования ресурсов, как отмечается в наших советах по обучению моделей и их сравнении. Это позволяет пользователям быстрее обучать высокопроизводительные модели на таких наборах данных, как COCO. Более быстрые циклы обучения способствуют более быстрой настройке гиперпараметров и разработке моделей на таких платформах, как Ultralytics HUB. Смешанная точность также может использоваться во время выводов, чтобы ускорить развертывание, особенно при экспорте моделей в такие форматы, как TensorRT которые сильно оптимизированы для более низкой точности.
Читать полностью