Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Inference Engine

Движок инференса запускает обученные модели на целевом оборудовании, используя объединённые слои, пониженную точность и оптимизированные ядра. Как он работает и какие движки распространены.

Движок инференса — это программное обеспечение, которое выполняет обученную нейронную сеть, чтобы получать предсказания на новых данных. Он принимает экспортированную модель из фреймворка обучения, обычно в виде вычислительного графа, например файла ONNX, оптимизирует граф для конкретного процессора и выполняет его с минимально возможными задержкой инференса и расходом памяти. Движки существуют для всех типов оборудования — от GPU центров обработки данных до телефонов и микроконтроллеров, а при развёртывании модели именно движок вычисляет каждое предсказание.

Как движки инференса ускоряют модели#

Развёрнутая модель не обновляет свои веса, поэтому движок может отбросить всё необходимое для обучения, например сохранённые активации для обратного распространения ошибки, и свободно переписать граф. Он предварительно вычисляет все части, зависящие только от констант, объединяет цепочки слоёв, например свёртку, нормализацию и активацию, в отдельные ядра, чтобы промежуточные результаты оставались в быстрой встроенной памяти, и планирует использование памяти, чтобы повторно задействовать буферы. Движок может снизить числовую точность до FP16 или INT8 с помощью квантования модели; для INT8 диапазоны активаций измеряются на примерах данных. Такие движки, как TensorRT, затем замеряют время выполнения нескольких возможных ядер для каждого слоя на целевом устройстве и выбирают самое быстрое — поэтому результат зависит от конкретного оборудования:

Свёртка пакетной нормализации с предшествующей свёрткой — один из самых распространённых способов переписывания графа. При инференсе нормализация лишь масштабирует и смещает каждый канал на фиксированные величины, поэтому эти значения можно объединить с весами и смещением свёртки. PyTorch предоставляет такое же преобразование через fuse_conv_bn_eval:

import torch
from torch.nn.utils.fusion import fuse_conv_bn_eval

torch.manual_seed(0)

# A trained convolution followed by batch normalization (random statistics here)
conv = torch.nn.Conv2d(16, 32, kernel_size=3, padding=1).eval()
bn = torch.nn.BatchNorm2d(32).eval()
bn.running_mean.uniform_(-1, 1)
bn.running_var.uniform_(0.5, 2.0)

# Fold the normalization's scale and shift into the convolution's weights and bias
fused = fuse_conv_bn_eval(conv, bn)

# One layer now replaces two and produces the same output
x = torch.randn(1, 16, 64, 64)
with torch.inference_mode():
    diff = (bn(conv(x)) - fused(x)).abs().max().item()
print(f"Max difference after fusing: {diff:.1e}")

Выводится максимальная разница 2.1e-06 — это погрешность округления с плавающей точкой: один объединённый слой вычисляет ту же функцию, что и два исходных слоя, но за один проход по памяти вместо двух.

Распространённые движки инференса#

  • TensorRT: Движок NVIDIA для GPU центров обработки данных и модулей Jetson. Он создаёт план для конкретной модели GPU и версии TensorRT, поэтому при изменении любого из них движок нужно собрать заново.
  • OpenVINO: Набор инструментов Intel для CPU, интегрированных и дискретных GPU и NPU.
  • ONNX Runtime: Кроссплатформенный движок Microsoft для моделей ONNX. Он передаёт задачи аппаратным бэкендам, называемым провайдерами выполнения, включая CUDA, TensorRT, OpenVINO и Core ML.
  • LiteRT: Среда выполнения Google, ранее TensorFlow Lite, для Android, встроенного Linux и микроконтроллеров; поддерживает делегаты для мобильных GPU и NPU.
  • Core ML: Фреймворк Apple для выполнения на устройстве, распределяющий задачи между CPU, GPU и Neural Engine.
  • vLLM: Движок с открытым исходным кодом для больших языковых моделей. Он добавляет планирование запросов и постраничное управление памятью для кэша внимания, чтобы одновременно обслуживать много пользователей.

Ultralytics YOLO API выбирает движок по загружаемому файлу, поэтому один и тот же вызов predict выполняет контрольную точку .pt в PyTorch, файл .onnx в ONNX Runtime, файл .engine в TensorRT или папку OpenVINO в OpenVINO. Экспорт Ultralytics YOLO26 в OpenVINO и загрузка результата переключают движки без других изменений кода:

from ultralytics import YOLO

# Экспортируй модель PyTorch в формат OpenVINO
model = YOLO("yolo26n.pt")
path = model.export(format="openvino")  # creates 'yolo26n_openvino_model/'

# Загрузи экспортированную папку, чтобы выполнять предсказания с помощью движка OpenVINO
ov_model = YOLO(path)
results = ov_model("https://ultralytics.com/images/bus.jpg")
results[0].save(filename="bus_openvino.jpg")
  • PyTorch и другие фреймворки обучения: Оставляют граф гибким и записывают операции для вычисления градиентов, чтобы проектировать и обучать модели. Они также выполняют инференс, но с большими накладными расходами, чем движок, оптимизированный для одного устройства.
  • ONNX: Формат файла, описывающий граф и веса модели. ONNX Runtime и TensorRT — движки, которые его читают.
  • Обслуживание моделей: один или несколько движков оборачиваются в сетевой сервис с API, пакетной обработкой запросов и управлением версиями. Так работает NVIDIA Dynamo-Triton, ранее называвшийся Triton Inference Server, для моделей TensorRT, ONNX Runtime и PyTorch.
  • Механизм вывода экспертной системы: Более раннее значение этого термина из области ИИ на основе правил: механизм вывода применяет правила «если — то» к базе знаний, используя прямой или обратный вывод.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

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

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения