Meet YOLO26: next-gen vision AI.

Link to this sectionОптимизация инференса OpenVINO для YOLO#

OpenVINO Ecosystem

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

При развертывании моделей deep learning, особенно тех, которые предназначены для object detection, таких как модели Ultralytics YOLO, достижение оптимальной производительности имеет решающее значение. Это руководство поможет тебе использовать Intel's OpenVINO toolkit для оптимизации инференса, фокусируясь на задержке (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Оптимизация пропускной способности#

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

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 с обратными вызовами (callbacks) для поддержания эффективности и предотвращения простоя устройства.

Link to this sectionМногоустройственное выполнение:#

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

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

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

Например, при запуске моделей YOLO26 на CPU Intel Xeon версии, оптимизированные для OpenVINO, неизменно превосходят свои аналоги на PyTorch по времени инференса на изображение, не жертвуя при этом accuracy.

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", quantize=16)  # Export with FP16 precision

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

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

# Run inference (Ultralytics auto-selects OpenVINO LATENCY mode for batch=1)
results = ov_model("https://ultralytics.com/images/bus.jpg", verbose=True)

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

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

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


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

Link to this sectionFAQ#

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

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

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

Больше практических советов по оптимизации задержки ты найдешь в Latency Optimization section нашего руководства.

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)

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

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

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

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

Подробные стратегии управления задержкой первого инференса представлены в Managing First-Inference Latency section.

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

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

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

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

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

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

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

Комментарии