Mixed Precision
Обучение со смешанной точностью сочетает вычисления FP16 и FP32, чтобы ускорить обучение и сократить расход памяти без потери точности. Узнай, как Ultralytics YOLO применяет этот подход.
Обучение со смешанной точностью — важный метод оптимизации моделей, который ускоряет обучение моделей глубокого обучения и снижает потребление памяти. Стратегически сочетая различные числовые форматы — обычно 16- и 32-разрядные числа с плавающей запятой, — этот метод позволяет алгоритмам машинного обучения быстрее выполнять вычисления без ущерба для итоговой точности модели. Сегодня это стандартная практика разработки ИИ, особенно при решении ресурсоемких задач, например обучении архитектуры YOLO26 на огромных наборах данных.
Как работает обучение со смешанной точностью#
В традиционных сценариях глубокого обучения модели обычно выполняют вычисления в формате чисел с плавающей запятой одинарной точности (FP32). Для каждого числа FP32 требуется 32 бита памяти. Этот формат отличается высокой точностью, но требует больших вычислительных ресурсов и объема памяти.
При смешанной точности используется пониженная точность (FP16), для которой достаточно 16 бит. Однако использование только FP16 может привести к численной нестабильности из-за меньшего динамического диапазона. Чтобы решить эту проблему, методы смешанной точности сохраняют «основную копию» весов модели в формате FP32 для стабильности, а FP16 используют для ресурсоемких математических операций, таких как свертки и умножение матриц.
Обычно этот процесс состоит из трех основных этапов:
-
Преобразование типов: входные данные и активации модели преобразуются в FP16, чтобы ускорить выполнение на совместимом оборудовании, например тензорных ядрах NVIDIA.
-
Масштабирование функции потерь: значения функции потерь увеличиваются, чтобы избежать «потери значимости», когда небольшие обновления градиента в формате FP16 превращаются в нули.
-
Накопление: арифметические операции выполняются в FP16, но результаты накапливаются в FP32, чтобы сохранить необходимую информацию перед обновлением основных весов.
Преимущества в обучении ИИ#
Смешанная точность дает разработчикам и исследователям значительные преимущества при эффективном использовании вычислительных ресурсов:
- Более быстрое обучение: Операции в FP16 требуют меньшей пропускной способности памяти и выполняются быстрее на современных GPU. Это может значительно сократить время, необходимое для одной эпохи.
- Снижение использования памяти: тензоры FP16 занимают вдвое меньше памяти, чем FP32, поэтому разработчики часто могут увеличить размер пакета. Большие пакеты обычно обеспечивают более стабильные оценки градиентов и ускоряют сходимость.
- Энергоэффективность: Снижение вычислительной нагрузки уменьшает энергопотребление, что особенно важно для крупномасштабного обучения в облаке.
Примеры применения в реальных условиях#
Смешанную точность применяют в разных отраслях, чтобы эффективно работать со сложными моделями и большими наборами данных.
Автономное вождение#
При разработке автономных транспортных средств инженерам приходится обучать модели обнаружения объектов на миллионах кадров видео высокого разрешения. Смешанная точность позволяет эффективно обучать современные модели, такие как YOLO26. Благодаря меньшему объему памяти можно обрабатывать изображения более высокого разрешения, что особенно важно для обнаружения небольших объектов, например дорожных знаков или пешеходов вдали.
Анализ медицинских изображений#
Анализ медицинских изображений часто предполагает работу с трехмерными объемными данными МРТ или КТ, которые требуют очень много памяти. Обучение моделей сегментации на таких данных с полной точностью FP32 часто приводит к ошибкам «недостаточно памяти» (OOM). Смешанная точность позволяет исследователям помещать эти ресурсоемкие модели в память GPU и разрабатывать ИИ, который помогает врачам раньше диагностировать заболевания.
Использование смешанной точности с Ultralytics#
Современные фреймворки, например PyTorch, обычно автоматически справляются со сложностями смешанной точности благодаря функции Automatic Mixed Precision (AMP). Пакет ultralytics включает AMP по умолчанию во время обучения, обеспечивая оптимальную производительность.
Ниже приведен краткий пример запуска обучения Ultralytics YOLO26, в котором смешанная точность включена по умолчанию (это можно изменить с помощью аргумента amp):
from ultralytics import YOLO
# Загрузить последнюю модель YOLO26
model = YOLO("yolo26n.pt")
# Обучить модель на наборе данных COCO8
# amp=True — настройка смешанной точности обучения по умолчанию
results = model.train(data="coco8.yaml", epochs=5, imgsz=640, amp=True)Смешанная точность и связанные понятия#
Чтобы избежать путаницы, полезно отличать смешанную точность от похожих терминов в глоссарии:
- Квантование модели: При смешанной точности во время обучения используются числа с плавающей точкой меньшей точности (FP16), а при квантовании веса обычно преобразуются в целые числа (например, INT8) после обучения для развертывания. Квантование в первую очередь направлено на сокращение задержки инференса на периферийных устройствах, тогда как смешанная точность ускоряет обучение и повышает его стабильность.
- Пониженная точность: это непосредственно формат данных FP16. Смешанная точность — метод, использующий совместно FP16 и FP32. Использование только пониженной точности без «основной» копии FP32 часто приводит к тому, что модели не сходятся из-за численных ошибок.
Заключение#
Смешанная точность изменила подход к обучению нейронных сетей и стала важным фактором развития масштабных базовых моделей и систем компьютерного зрения, которые мы видим сегодня. Балансируя между требованиями к математической точности и ограничениями скорости и памяти оборудования, она позволяет разработчикам быстрее проводить эксперименты и создавать более эффективные решения на базе ИИ.
Тем, кто хочет легко управлять наборами данных и обучать оптимизированные модели, платформа Ultralytics предлагает комплексную среду, которая автоматически использует современные методы оптимизации.










