Смешанная точность
Повысьте эффективность глубокого обучения с помощью обучения со смешанной точностью! Добейтесь более высокой скорости, снижения использования памяти и экономии энергии без ущерба для точности.
Смешанная точность - это мощный метод оптимизации в
глубокое обучение которая стратегически
сочетает различные числовые форматы - в частности, 16-битный (с половинной точностью) и 32-битный (с одинарной точностью) с плавающей запятой
для ускорения обучение модели и сократить
использование памяти. Выполняя интенсивные вычислительные операции с более низкой точностью и сохраняя основную копию
веса модели с более высокой точностью,
такой подход обеспечивает значительное ускорение на современном оборудовании без ущерба для
точность или стабильности конечной
сети. Это позволяет исследователям и инженерам эффективно обучать более крупные
нейронные сети или увеличить
размер партии при тех же аппаратных
ограничения.
Как работает смешанная точность
Основной механизм смешанной точности опирается на архитектуру современных ускорителей, например, оснащенных
Tensor ядрамиNVIDIA которые могут выполнять матричные умножения в
с половинной точностью (FP16) намного быстрее
чем в стандартной одинарной точности (FP32). Процесс обычно включает три ключевых этапа:
-
Кастинг: Операции как
свертки и матричные
умножения, приводятся к FP16. Это уменьшает требуемую пропускную способность памяти и ускоряет вычисления.
-
Ведение мастер-весов: Мастер-копия параметров модели хранится в FP32. В течение
обратного распространенияградиенты вычисляются в FP16, но применяются к мастер-весам FP32. Это позволяет сохранить небольшие градиенты
которые в противном случае могут быть потеряны из-за ограниченного диапазона FP16, что предотвращает такие проблемы, как
исчезающие градиенты.
-
Масштабирование потерь: Для дальнейшего обеспечения численной стабильности значение
функция потерь часто умножается
на масштабный коэффициент. Это смещает значения градиента в диапазон, который FP16 может представлять более эффективно, избегая
ошибки недополнения, прежде чем они будут преобразованы обратно для обновления веса.
Применение в реальном мире
Смешанная точность стала стандартной практикой в различных областях искусственного интеллекта благодаря своей способности
максимальной эффективности аппаратного обеспечения.
-
Обучение современным моделям видения: Разработка высокоэффективных
компьютерное зрение
архитектуры, такие как Ultralytics YOLO11предполагает обучение на массивных наборах данных, таких как
COCO. Смешанная точность позволяет значительно ускорить процесс обучения, что дает возможность выполнить большее количество итераций.
настройка гиперпараметров и
более быстрые циклы развертывания.
-
Большие языковые модели (LLM): Создание
базовые модели и
Большие языковые модели
требует обработки терабайтов текстовых данных. Смешанная точность здесь очень важна, поскольку она примерно вдвое сокращает объем памяти
требуемой для активаций, что позволяет моделям с миллиардами параметров уместиться на кластерах
графических процессоров.
Реализация смешанной точности с помощью Ultralytics
Сайт ultralytics Библиотека упрощает использование автоматической смешанной точности (AMP). По умолчанию обучающие
программы обучения проверяют совместимость оборудования и включают AMP для обеспечения оптимальной производительности.
from ultralytics import YOLO
# Load the YOLO11 model for training
model = YOLO("yolo11n.pt")
# Train using Automatic Mixed Precision (AMP)
# 'amp=True' is the default setting, ensuring faster training on supported GPUs
results = model.train(data="coco8.yaml", epochs=5, imgsz=640, amp=True)
Смешанная точность в сравнении со смежными терминами
Полезно отличать смешанную точность от других концепций оптимизации и представления данных:
-
Vs. Половинная точность: Чистая половинная
точности (FP16) хранит и вычисляет все в 16-битном формате. Хотя это позволяет добиться максимальной скорости, это часто приводит к
численной нестабильности и плохой сходимости во время обучения. Смешанная точность смягчает эту проблему, сохраняя мастер-копию в формате FP32
для стабильного обновления весов.
-
Vs. Квантование модели:
Квантование еще больше снижает точность, обычно преобразуя веса в целые числа (INT8) для оптимизации
время ожидания вывода и модель
для развертывания на краевые устройства ИИ устройствах.
Смешанная точность - это в первую очередь оптимизация во время обучения с использованием чисел с плавающей точкой, в то время как квантование
часто применяется после обучения для выводов.
-
Vs. Bfloat16: Brain Floating Point
(Bfloat16) - это альтернативный 16-битный формат, разработанный компанией Google. В отличие от стандартного
IEEE 754 FP16, Bfloat16 сохраняет тот же
диапазон экспонент, как и в FP32, что делает его более устойчивым к переполнению без агрессивного масштабирования с потерями. Он широко используется
в обучении со смешанной точностью на
TPU и новых графических процессорах.
Поддерживается такими фреймворками, как PyTorch AMPсмешанная точность остается одним из наиболее эффективных способов демократизации доступа к высокопроизводительному глубокому обучению,
позволяя разработчикам обучать сложные модели на доступном оборудовании.