Полупрецизионные
Узнайте, как полуточные вычисления (FP16) ускоряют ИИ благодаря более быстрым вычислениям, снижению потребления памяти и эффективному развертыванию моделей.
Полуточка, также известная как FP16, - это формат чисел с плавающей точкой, который использует 16 бит памяти для представления числа, в отличие от более распространенных 32-битных форматов с одинарной точностью (FP32) или 64-битных с двойной точностью (FP64). В контексте глубокого обучения использование полуточности значительно сокращает объем памяти и вычислительные требования модели. Этот компромисс достигается за счет уменьшения диапазона и точности вычислений. Однако современные технологии, в частности обучение со смешанной точностью, сделали FP16 краеугольным камнем эффективного машинного обучения (ML), позволяя ускорить обучение и выводы при минимальном влиянии на точность модели.
Как работает полуточная точность
Переход от FP32 к FP16 сокращает объем памяти, необходимой для хранения весов и активаций модели, в два раза. Это позволяет использовать более крупные модели, большие объемы партий или проводить обучение на GPU с меньшим объемом памяти. Кроме того, современные GPU, например, с тензорными ядрами NVIDIA, специально разработаны для выполнения 16-битных матричных операций на гораздо более высокой скорости, чем 32-битные операции.
Основной проблемой FP16 является ограниченный числовой диапазон, что может привести к таким проблемам, как исчезновение градиентов во время обучения. Для борьбы с этим почти всегда используется подход смешанной точности. Эта стратегия подразумевает выполнение большинства вычислений в FP16 для повышения скорости, но стратегическое использование FP32 для критических операций, таких как обновление весов и вычисление некоторых функций потерь, для поддержания численной стабильности. Такие фреймворки глубокого обучения, как PyTorch и TensorFlow, предлагают встроенную поддержку автоматического обучения со смешанной точностью.
Применение и примеры
Широко используется полуточная точность, в основном с помощью методов смешанной точности:
- Ускорение обучения моделей: Обучение больших моделей глубокого обучения, например, для классификации изображений или обработки естественного языка (NLP), можно значительно ускорить с помощью смешанной точности, сократив время и стоимость обучения. Платформы, подобные Ultralytics HUB, часто используют эти оптимизации во время облачных сеансов обучения.
- Оптимизация выводов при обнаружении объектов: Такие модели, как Ultralytics YOLO11, можно экспортировать в форматы ONNX или TensorRT с точностью FP16 для более быстрого вывода выводов в реальном времени. Это очень важно для приложений, требующих высокой пропускной способности, таких как система безопасности, анализирующая множество видеопотоков, или контроль качества на высокоскоростной производственной линии.
- Развертывание на устройствах с ограниченными ресурсами: Уменьшение объема памяти и вычислительных затрат моделей FP16 делает их пригодными для развертывания на платформах граничного ИИ, таких как NVIDIA Jetson, или мобильных устройствах с использованием таких фреймворков, как TensorFlow Lite или Core ML от Apple.
- Обучение больших языковых моделей (LLM): Огромный размер таких моделей, как GPT-3 и другие базовые модели, требует использования 16-битных форматов для размещения моделей в памяти и завершения обучения в разумные сроки.
Полупрецизионность по сравнению с другими форматами
- Bfloat16 (BF16): Альтернативный 16-битный формат, разработанный компанией Google, Bfloat16 выделяет больше битов на экспоненту и меньше на мантиссу по сравнению с FP16. Это дает ему тот же динамический диапазон, что и FP32, делая его более устойчивым к переполнению и недополнению, но ценой более низкой точности. Он активно используется в TPU Google. Подробнее о нем можно прочитать в блоге Google Cloud AI Blog.
- Квантование модели: Хотя оба метода являются методами оптимизации модели, квантование модели обычно преобразует весовые коэффициенты с плавающей точкой (FP32 или FP16) в более низкие целочисленные форматы, чаще всего 8-битные целые числа (INT8). Это может обеспечить еще большее ускорение, особенно на центральных процессорах и некоторых ускорителях, но часто требует более тщательной калибровки, например, Quantization-Aware Training (QAT), чтобы избежать значительного падения производительности модели.
- Одиночная точность (FP32): Этот формат используется по умолчанию в большинстве фреймворков глубокого обучения. Он обеспечивает высокую точность и широкий динамический диапазон, что делает его надежным для обучения. Однако он медленнее и более требователен к памяти, чем формат половинной точности, что делает его менее идеальным для развертывания больших моделей или для приложений, требующих максимальной скорости. Компромисс между этими форматами является ключевым моментом, как показано в различных сравнениях моделей.