Yolo Vision Shenzhen
Шэньчжэнь
Присоединиться сейчас
Глоссарий

Половинная точность

Узнайте, как полуточная точность (FP16) ускоряет работу ИИ. Узнайте, как оптимизировать Ultralytics для более быстрого вывода и сокращения объема памяти на графических процессорах и периферийных устройствах.

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

Механика форматов с плавающей запятой

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

Переход к полуточной точности сокращает потребность в пропускной способности памяти вдвое. Это позволяет использовать более крупные пакеты данных во время обучения, что может стабилизировать обновления градиента и ускорить общий процесс обучения. Современные аппаратные ускорители, такие как Tensor NVIDIA, специально оптимизированы для выполнения матричных умножений в FP16 со значительно более высокой скоростью, чем в FP32.

Основные преимущества в рабочих процессах с использованием ИИ

Применение полуточной точности дает ряд ощутимых преимуществ для специалистов в области искусственного интеллекта:

  • Уменьшенный объем памяти: модели требуют в два раза меньше VRAM (видеопамяти), что позволяет разработчикам обучать более крупные сети или использовать обучающие данные с более высоким разрешением на том же оборудовании.
  • Более быстрое вычисление: для приложений, работающих в режиме реального времени, таких как автономные транспортные средства или видеоаналитика, FP16 может удвоить пропускную способность (количество кадров в секунду), сокращая задержку вычислений.
  • Энергоэффективность: для обработки меньшего количества битов требуется меньше энергии, что имеет решающее значение для периферийных устройств искусственного интеллекта и мобильных телефонов, где срок службы батареи является ограничивающим фактором.
  • Обучение со смешанной точностью: многие современные фреймворки используют смешанную точность, при которой модель хранит основную копию весов в FP32 для обеспечения стабильности, но выполняет сложные вычисления в FP16. Это обеспечивает «лучшее из обоих миров» — скорость и стабильность сходимости.

Применение в реальном мире

Полуточная точность повсеместно используется в производственных системах искусственного интеллекта. Вот два конкретных примера:

  1. Обнаружение объектов в реальном времени на периферийных устройствах:рассмотрим систему видеонаблюдения, в которой используется Ultralytics YOLO26 для detect . Развертывание модели в FP16 позволяет ей бесперебойно работать на встроенном чипе, таком как NVIDIA Jetson или Raspberry Pi AI Kit. Сниженная вычислительная нагрузка гарантирует, что система может обрабатывать видеопотоки в режиме вывода в реальном времени без задержек, что жизненно важно для своевременного оповещения.

  2. Развертывание крупных языковых моделей (LLM):Генеративные модели ИИ, такие как GPT-4 или варианты Llama, имеют миллиарды параметров. Загрузка этих моделей с полной точностью (FP32) потребовала бы огромного количества серверной памяти, что зачастую неприемлемо с точки зрения затрат. Преобразуя эти модели в FP16 (или даже более низкие форматы), поставщики облачных услуг могут одновременно обслуживать тысячи пользователей , что делает такие услуги, как чат-боты и автоматическое создание контента, экономически выгодными.

Полуточная точность против квантования

Хотя обе техники направлены на уменьшение размера модели, важно отличать «полуточность» от квантования модели.

  • Полуточная точность (FP16): уменьшает разрядность с 32 до 16, но сохраняет данные в виде числа с плавающей запятой. Она сохраняет разумный динамический диапазон и часто является выбором по умолчанию для GPU и инференса GPU .
  • Квантование (INT8): преобразует числа с плавающей запятой в целые числа (обычно 8-битные). Это обеспечивает еще большую скорость и экономию памяти, но иногда может привести к более заметной потере точности, если не делать это осторожно (например, с помощью обучения с учетом квантования). FP16 обычно более безопасно для сохранения производительности модели, а INT8 используется для экстремальной оптимизации.

Реализация полуточности с помощью Ultralytics

Сайт ultralytics библиотека упрощает использование полуточной точности. Во время прогнозирования модель может автоматически переключиться на полуточную точность, если аппаратное обеспечение поддерживает ее, или это можно явно запросить.

Here is a Python example demonstrating how to load a YOLO26 модель и выполняйте вывод с использованием полуточной точности. Обратите внимание, что при запуске в half=True обычно требует наличия GPU CUDA.

import torch
from ultralytics import YOLO

# Check if CUDA (GPU) is available, as FP16 is primarily for GPU acceleration
device = "cuda" if torch.cuda.is_available() else "cpu"

# Load the latest YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on an image with half-precision enabled
# The 'half=True' argument tells the engine to use FP16
results = model.predict("https://ultralytics.com/images/bus.jpg", device=device, half=True)

# Print the device and precision status
print(f"Inference device: {results[0].orig_img.shape}, Speed: {results[0].speed}")

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

Дополнительное чтение и ресурсы

Чтобы узнать больше о числовых форматах и их влиянии на ИИ, ознакомьтесь с документациейNVIDIA по производительностиNVIDIA обучения в отношении Tensor . Для более широкого понимания того, как эти оптимизации вписываются в жизненный цикл разработки, прочитайте о операциях машинного обучения (MLOps).

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

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

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

Присоединиться сейчас