Глоссарий

Полупрецизионные

Узнайте, как полуточные вычисления (FP16) ускоряют ИИ благодаря более быстрым вычислениям, снижению потребления памяти и эффективному развертыванию моделей.

Полупрецизионность, технически известная как FP16 (Floating-Point 16-bit), - это числовой формат, использующий 16 бит для представления числа, в отличие от более распространенных 32-битных форматов с одинарной точностью (FP32) или 64-битных форматов с двойной точностью (FP64). В области искусственного интеллекта (ИИ) и, в частности, глубокого обучения (ГОО), использование полуточности стало важнейшим методом оптимизации обучения и вывода моделей, обеспечивающим баланс между вычислительной эффективностью и численной точностью. Это позволяет моделям работать быстрее и потреблять меньше памяти, делая сложный ИИ возможным на более широком спектре аппаратных средств.

Что такое полуточность?

Числа с плавающей точкой используются для представления вещественных чисел в компьютерах, аппроксимируя их фиксированным количеством битов. Стандарт IEEE 754 определяет общие форматы, включая FP16 и FP32. Число FP16 использует 1 бит для знака, 5 бит для экспоненты (определяющей диапазон) и 10 бит для сигнификата или мантиссы (определяющей точность). Для сравнения, в FP32 используется 1 бит знака, 8 битов экспоненты и 23 бита сигнификата. Такое сокращение количества битов означает, что FP16 имеет значительно меньший числовой диапазон и более низкую точность, чем FP32. Базовый обзор того, как работают эти форматы, см. в разделе "Основы арифметики с плавающей точкой".

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

Использование FP16 дает ряд преимуществ в рабочих процессах глубокого обучения:

  • Сокращение объема используемой памяти: Веса, активации и градиенты модели, хранящиеся в FP16, требуют вдвое меньше памяти, чем FP32. Это позволяет использовать более крупные модели, большие объемы партий или развертывать их на устройствах с ограниченной памятью.
  • Более быстрые вычисления: Современное оборудование, такое как графические процессоры NVIDIA с тензорными ядрами и специализированные процессоры Google TPU, может выполнять операции FP16 гораздо быстрее, чем операции FP32.
  • Повышенная пропускная способность и меньшая задержка: Сочетание снижения требований к пропускной способности памяти и более быстрых вычислений приводит к повышению пропускной способности во время обучения и снижению задержек в выводах, что позволяет проводить выводы в реальном времени для требовательных приложений .

Потенциальные недостатки

Хотя использование исключительно FP16 и полезно, иногда это может привести к проблемам:

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

Полупрецизионность по сравнению со смежными понятиями

Важно отличать FP16 от других числовых форматов и техник:

  • Одиночная точность (FP32): Формат по умолчанию во многих фреймворках машинного обучения (ML), таких как PyTorch и TensorFlow. Обеспечивает хороший баланс между диапазоном и точностью для большинства задач, но более ресурсоемкий, чем FP16.
  • Двойная точность (FP64): Обеспечивает очень высокую точность, но требует вдвое больше памяти и вычислительных ресурсов, чем FP32. Используется в основном в научных вычислениях, реже - в глубоком обучении.
  • Смешанная точность: Это наиболее распространенный способ использования FP16 в глубоком обучении. Он подразумевает стратегическое использование FP16 и FP32 в процессе обучения или вывода. Как правило, операции, требующие больших вычислений, такие как свертки и умножения матриц, выполняются на FP16 для повышения скорости, в то время как критические операции, такие как обновление веса или определенные сокращения, выполняются на FP32 для поддержания численной стабильности и точности. Такие техники, как масштабирование потерь, помогают смягчить проблемы с переполнением. См. оригинальный документ Mixed-Precision Training или руководства PyTorch AMP и TensorFlow Mixed Precision. Модели Ultralytics часто используют смешанную точность; см. советы по обучению моделей.
  • BFloat16 (BF16): Еще один 16-битный формат, разработанный в основном компанией Google. Он использует 8 битов экспоненты (как и FP32, что обеспечивает широкий диапазон), но только 7 битов сигнификата (более низкая точность, чем у FP16). Он особенно полезен для обучения больших языковых моделей (LLM). Узнайте больше о BFloat16.
  • Квантование модели: Методы, которые еще больше снижают точность модели, часто до 8-битных целых чисел (INT8) или меньше. Это обеспечивает максимальную эффективность при развертывании на граничных устройствах, но обычно требует тщательной калибровки или обучения с учетом квантования (QAT) для поддержания точности. См. введение в квантование на PyTorch.

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

Широко используется полуточная точность, в основном с помощью методов смешанной точности:

  1. Ускорение обучения моделей: Обучение больших моделей глубокого обучения, например, для классификации изображений или обработки естественного языка (NLP), можно значительно ускорить с помощью смешанной точности, сократив время и стоимость обучения. Платформы, подобные Ultralytics HUB, часто используют эти оптимизации.
  2. Оптимизация выводов при обнаружении объектов: Такие модели, как Ultralytics YOLO11, можно экспортировать (с помощью инструментов, описанных в документации по режиму экспорта) в форматы ONNX или TensorRT с точностью FP16 для более быстрого вычисления. Это очень важно для приложений, требующих производительности в реальном времени, таких как автономные транспортные средства или системы видеонаблюдения в реальном времени.
  3. Развертывание на устройствах с ограниченными ресурсами: Уменьшение объема памяти и вычислительных затрат моделей FP16 делает их пригодными для развертывания на платформах для граничных вычислений, таких как NVIDIA Jetson, или на мобильных устройствах с использованием таких фреймворков, как TensorFlow Lite или Core ML.
  4. Обучение больших языковых моделей (LLM): Огромный размер таких моделей, как GPT-3 и более новые архитектуры, требует использования 16-битных форматов (FP16 или BF16) для размещения моделей в памяти и завершения обучения в разумные сроки.

Подводя итог, можно сказать, что полуточность (FP16) является важным инструментом в наборе средств оптимизации глубокого обучения, позволяющим ускорить вычисления и снизить потребление памяти. Хотя у него есть ограничения по диапазону и точности, они часто эффективно решаются с помощью методов смешанной точности, что делает его незаменимым для обучения больших моделей и развертывания эффективных приложений ИИ.

Присоединяйтесь к сообществу Ultralytics

Присоединяйтесь к будущему искусственного интеллекта. Общайтесь, сотрудничайте и развивайтесь вместе с мировыми новаторами

Присоединяйтесь сейчас
Ссылка копируется в буфер обмена