Meet YOLO26: next-gen vision AI.

Link to this sectionОптимизация инференса YOLO с помощью OpenVINO#

OpenVINO Ecosystem

Link to this sectionВведение#

При развертывании моделей глубокого обучения, особенно тех, что предназначены для детектирования объектов, как в случае с моделями Ultralytics YOLO, достижение оптимальной производительности критически важно. Это руководство посвящено использованию инструментария Intel OpenVINO для оптимизации инференса с акцентом на задержку (latency) и пропускную способность (throughput). Независимо от того, работаешь ли ты над потребительскими приложениями или масштабными системами развертывания, понимание и применение этих стратегий оптимизации обеспечит эффективную работу твоих моделей на различных устройствах.

Link to this sectionОптимизация задержки#

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

Link to this sectionКлючевые стратегии оптимизации задержки:#

  • Один инференс на устройство: Самый простой способ добиться низкой задержки — ограничиться одним инференсом за раз на одно устройство. Дополнительная параллельность часто приводит к увеличению задержки.
  • Использование под-устройств: Устройства вроде многопроцессорных CPU или многочиповых GPU могут выполнять несколько запросов с минимальным ростом задержки за счет использования своих внутренних под-устройств.
  • Подсказки производительности OpenVINO: Использование свойства ov::LATENCY для ov::performance_mode во время компиляции модели упрощает настройку производительности, предлагая универсальный и перспективный подход, не зависящий от конкретного устройства.

Link to this sectionУправление задержкой первого инференса:#

  • Кэширование моделей: Чтобы уменьшить влияние времени загрузки и компиляции модели на задержку, используй кэширование модели, где это возможно. В сценариях, где кэширование нецелесообразно, CPU обычно обеспечивают самое быстрое время загрузки модели.
  • Маппинг vs Чтение модели: Чтобы сократить время загрузки, OpenVINO заменил чтение модели на маппинг. Однако, если модель находится на съемном или сетевом диске, рассмотри использование ov::enable_mmap(false), чтобы вернуться к чтению.
  • Выбор устройства AUTO: Этот режим начинает инференс на CPU и переключается на ускоритель, как только тот будет готов, бесшовно снижая задержку первого инференса.

Link to this sectionОптимизация пропускной способности#

Оптимизация пропускной способности важна для сценариев, обслуживающих множество запросов инференса одновременно, максимизируя использование ресурсов без существенного ущерба для производительности отдельного запроса.

Link to this sectionПодходы к оптимизации пропускной способности:#

  1. Подсказки производительности OpenVINO: Высокоуровневый и перспективный метод для повышения пропускной способности на разных устройствах с использованием подсказок производительности.

    import openvino.properties.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
  2. Явное пакетирование и потоки: Более детальный подход, включающий явное пакетирование (batching) и использование потоков для глубокой настройки производительности.

Link to this sectionПроектирование приложений, ориентированных на пропускную способность:#

Чтобы максимизировать пропускную способность, приложения должны:

  • Параллельно обрабатывать входные данные, максимально используя возможности устройства.
  • Разбивать поток данных на параллельные запросы инференса, запланированные для параллельного выполнения.
  • Использовать Async API с колбэками для поддержания эффективности и предотвращения простоя устройства.

Link to this sectionВыполнение на нескольких устройствах:#

Мульти-девайс режим OpenVINO упрощает масштабирование пропускной способности, автоматически распределяя запросы инференса между устройствами без необходимости управления устройствами на уровне приложения.

Link to this sectionРеальные показатели производительности#

Внедрение оптимизаций OpenVINO с моделями Ultralytics YOLO может дать значительный прирост производительности. Как показано в бенчмарках, пользователи могут получить до 3 раз более высокую скорость инференса на CPU Intel, с еще большими ускорениями, возможными для всего спектра оборудования Intel, включая интегрированные GPU, дискретные GPU и VPU.

Например, при запуске моделей YOLOv8 на процессорах Intel Xeon версии, оптимизированные для OpenVINO, неизменно превосходят свои аналоги PyTorch по времени инференса на изображение без ущерба для точности.

Link to this sectionПрактическая реализация#

Чтобы экспортировать и оптимизировать твою модель Ultralytics YOLO для OpenVINO, ты можешь использовать функцию export:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Export the model to OpenVINO format
model.export(format="openvino", half=True)  # Export with FP16 precision

После экспорта ты можешь запустить инференс с оптимизированной моделью:

# Load the OpenVINO model
ov_model = YOLO("yolo26n_openvino_model/")

# Run inference with performance hints for latency
results = ov_model("path/to/image.jpg", verbose=True)

Link to this sectionЗаключение#

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

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


Обеспечение оптимальной производительности моделей — это не просто настройка конфигураций; это понимание потребностей твоего приложения и принятие обоснованных решений. Оптимизируешь ли ты систему для ответов в реальном времени или максимизируешь пропускную способность для масштабной обработки, комбинация моделей Ultralytics YOLO и OpenVINO предлагает разработчикам мощный инструментарий для развертывания высокопроизводительных AI-решений.

Link to this sectionЧасто задаваемые вопросы (FAQ)#

Link to this sectionКак мне оптимизировать модели Ultralytics YOLO для низкой задержки с помощью OpenVINO?#

Оптимизация моделей Ultralytics YOLO для низкой задержки включает несколько ключевых стратегий:

  1. Один инференс на устройство: Ограничь инференсы одним за раз для каждого устройства, чтобы минимизировать задержки.
  2. Использование под-устройств: Задействуй устройства, такие как многопроцессорные CPU или многочиповые GPU, которые могут обрабатывать несколько запросов с минимальным ростом задержки.
  3. Подсказки производительности OpenVINO: Используй ov::LATENCY в OpenVINO при компиляции модели для упрощенной, универсальной настройки.

Для получения практических советов по оптимизации задержки ознакомься с разделом Оптимизация задержки нашего руководства.

Link to this sectionПочему мне стоит использовать OpenVINO для оптимизации пропускной способности Ultralytics YOLO?#

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

  • Подсказки производительности: Простая высокоуровневая настройка производительности для разных устройств.
  • Явное пакетирование и потоки: Тонкая настройка для продвинутой производительности.
  • Выполнение на нескольких устройствах: Автоматическая балансировка нагрузки инференса, упрощающая управление на уровне приложения.

Пример конфигурации:

import openvino.properties.hint as hints

config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)

Узнай больше об оптимизации пропускной способности в разделе Оптимизация пропускной способности нашего подробного руководства.

Link to this sectionКакова лучшая практика для снижения задержки первого инференса в OpenVINO?#

Чтобы снизить задержку первого инференса, рассмотри следующие практики:

  1. Кэширование моделей: Используй кэширование, чтобы сократить время загрузки и компиляции.
  2. Маппинг vs Чтение модели: Используй маппинг (ov::enable_mmap(true)) по умолчанию, но переключайся на чтение (ov::enable_mmap(false)), если модель находится на съемном или сетевом диске.
  3. Выбор устройства AUTO: Задействуй режим AUTO, чтобы начать инференс на CPU и бесшовно перейти к ускорителю.

Подробные стратегии по управлению задержкой первого инференса смотри в разделе Управление задержкой первого инференса.

Link to this sectionКак сбалансировать оптимизацию задержки и пропускной способности для Ultralytics YOLO и OpenVINO?#

Балансировка оптимизации задержки и пропускной способности требует понимания потребностей твоего приложения:

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

Использование высокоуровневых подсказок производительности и режимов мульти-девайс в OpenVINO поможет найти правильный баланс. Выбирай соответствующие подсказки производительности OpenVINO исходя из твоих специфических требований.

Link to this sectionМогу ли я использовать модели Ultralytics YOLO с другими AI-фреймворками, кроме OpenVINO?#

Да, модели Ultralytics YOLO очень универсальны и могут быть интегрированы с различными AI-фреймворками. Варианты включают:

Изучи другие интеграции на странице интеграций Ultralytics.

Контрибьюторы

Комментарии