Saltar al contenido

Optimización de la inferencia OpenVINO para modelos Ultralytics YOLO : Una guía completa

OpenVINO Ecosistema

Introducción

When deploying deep learning models, particularly those for object detection such as Ultralytics YOLO models, achieving optimal performance is crucial. This guide delves into leveraging Intel's OpenVINO toolkit to optimize inference, focusing on latency and throughput. Whether you're working on consumer-grade applications or large-scale deployments, understanding and applying these optimization strategies will ensure your models run efficiently on various devices.

Optimización de la latencia

La optimización de la latencia es vital para las aplicaciones que requieren una respuesta inmediata de un único modelo dada una única entrada, algo típico en los escenarios de consumo. El objetivo es minimizar el retraso entre la entrada y el resultado de la inferencia. Sin embargo, lograr una baja latencia implica una cuidadosa consideración, especialmente cuando se ejecutan inferencias concurrentes o se gestionan múltiples modelos.

Estrategias clave para la optimización de la latencia:

  • Una sola inferencia por dispositivo: La forma más sencilla de conseguir una latencia baja es limitarse a una inferencia a la vez por dispositivo. La concurrencia adicional suele provocar un aumento de la latencia.
  • Aprovechar los subdispositivos: Dispositivos como CPUs multi-socket o GPUs multi-tile pueden ejecutar múltiples peticiones con un mínimo incremento de latencia utilizando sus sub-dispositivos internos.
  • OpenVINO Consejos de actuación: Utilizando OpenVINO's ov::hint::PerformanceMode::LATENCY para la ov::hint::performance_mode durante la compilación del modelo simplifica el ajuste del rendimiento, ofreciendo un enfoque independiente del dispositivo y preparado para el futuro.

Gestionar la latencia de la primera inferencia:

  • Almacenamiento en caché del modelo: Para mitigar los tiempos de carga y compilación del modelo que afectan a la latencia, utiliza el almacenamiento en caché del modelo siempre que sea posible. En los casos en que el almacenamiento en caché no es viable, las CPU suelen ofrecer los tiempos de carga de modelos más rápidos.
  • Mapeo de Modelos vs. Lectura: Para reducir los tiempos de carga, OpenVINO ha sustituido la lectura del modelo por el mapeo. Sin embargo, si el modelo está en una unidad extraíble o de red, considera la posibilidad de utilizar ov::enable_mmap(false) para volver a la lectura.
  • Selección automática del dispositivo: Este modo comienza la inferencia en el CPU, cambiando a un acelerador una vez que está listo, reduciendo sin problemas la latencia de la primera inferencia.

Optimizar el rendimiento

La optimización del rendimiento es crucial para los escenarios que atienden numerosas peticiones de inferencia simultáneamente, maximizando la utilización de los recursos sin sacrificar significativamente el rendimiento de las peticiones individuales.

Enfoques para la optimización del rendimiento:

  1. OpenVINO Sugerencias de rendimiento: Un método de alto nivel y a prueba de futuro para mejorar el rendimiento de los dispositivos mediante sugerencias de rendimiento.

    import openvino.properties.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
    
  2. Procesamiento por lotes explícito y secuencias: Un enfoque más granular que implica la dosificación explícita y el uso de flujos para un ajuste avanzado del rendimiento.

Diseño de aplicaciones orientadas al rendimiento:

Para maximizar el rendimiento, las aplicaciones deben

  • Procesa las entradas en paralelo, aprovechando al máximo las capacidades del aparato.
  • Descomponer el flujo de datos en peticiones de inferencia concurrentes, programadas para su ejecución en paralelo.
  • Utiliza la API Async con devoluciones de llamada para mantener la eficacia y evitar la inanición del dispositivo.

Ejecución Multidispositivo:

OpenVINOsimplifica el escalado del rendimiento equilibrando automáticamente las solicitudes de inferencia entre dispositivos, sin necesidad de gestionar los dispositivos a nivel de aplicación.

Conclusión

Optimizar los modelos Ultralytics YOLO para la latencia y el rendimiento con OpenVINO puede mejorar significativamente el rendimiento de tu aplicación. Aplicando cuidadosamente las estrategias descritas en esta guía, los desarrolladores pueden asegurarse de que sus modelos se ejecutan con eficacia, satisfaciendo las demandas de diversos escenarios de despliegue. Recuerda que la elección entre optimizar la latencia o el rendimiento depende de las necesidades específicas de tu aplicación y de las características del entorno de despliegue.

Para obtener información técnica más detallada y las últimas actualizaciones, consulta la documentación deOpenVINO y el repositorioUltralytics YOLO . Estos recursos proporcionan guías detalladas, tutoriales y apoyo de la comunidad para ayudarte a sacar el máximo partido de tus modelos de aprendizaje profundo.


Garantizar que tus modelos alcancen un rendimiento óptimo no consiste sólo en ajustar las configuraciones; se trata de comprender las necesidades de tu aplicación y tomar decisiones informadas. Tanto si estás optimizando respuestas en tiempo real como maximizando el rendimiento para el procesamiento a gran escala, la combinación de los modelos de Ultralytics YOLO y OpenVINO ofrece un potente conjunto de herramientas para que los desarrolladores desplieguen soluciones de IA de alto rendimiento.

PREGUNTAS FRECUENTES

¿Cómo optimizo los modelos Ultralytics YOLO para una baja latencia utilizando OpenVINO?

Optimizar los modelos Ultralytics YOLO para una baja latencia implica varias estrategias clave:

  1. Una sola inferencia por dispositivo: Limita las inferencias a una cada vez por dispositivo para minimizar los retrasos.
  2. Aprovechar los subdispositivos: Utiliza dispositivos como CPUs multi-socket o GPUs multi-tile que puedan manejar múltiples peticiones con un aumento mínimo de la latencia.
  3. OpenVINO Consejos de actuación: Utiliza OpenVINO's ov::hint::PerformanceMode::LATENCY durante la compilación del modelo para un ajuste simplificado e independiente del dispositivo.

Para obtener más consejos prácticos sobre la optimización de la latencia, consulta la sección Optimización de la latencia de nuestra guía.

¿Por qué debería utilizar OpenVINO para optimizar el rendimiento de Ultralytics YOLO ?

OpenVINO mejora el rendimiento del modelo Ultralytics YOLO maximizando la utilización de los recursos del dispositivo sin sacrificar el rendimiento. Las principales ventajas son:

  • Sugerencias de rendimiento: Ajuste sencillo y de alto nivel del rendimiento en todos los dispositivos.
  • Batching explícito y flujos: Ajuste fino para un rendimiento avanzado.
  • Ejecución multidispositivo: Equilibrio automatizado de la carga de inferencia, facilitando la gestión a nivel de aplicación.

Ejemplo de configuración:

import openvino.properties.hint as hints

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

Obtén más información sobre la optimización del rendimiento en la sección Optimización del rendimiento de nuestra guía detallada.

¿Cuál es la mejor práctica para reducir la latencia de la primera inferencia en OpenVINO?

Para reducir la latencia de la primera inferencia, ten en cuenta estas prácticas:

  1. Caché de modelos: Utiliza el caché de modelos para reducir los tiempos de carga y compilación.
  2. Mapeo de Modelos vs. Lectura: Utiliza la asignación (ov::enable_mmap(true)) por defecto, pero cambia a lectura (ov::enable_mmap(false)) si el modelo está en una unidad extraíble o de red.
  3. Selección AUTO del dispositivo: Utiliza el modo AUTO para empezar con la inferencia CPU y pasar a un acelerador sin problemas.

Para conocer estrategias detalladas sobre la gestión de la latencia de primera inferencia, consulta la sección Gestión de la latencia de primera inferencia.

¿Cómo puedo equilibrar la optimización de la latencia y el rendimiento con Ultralytics YOLO y OpenVINO?

Equilibrar la optimización de la latencia y el rendimiento requiere comprender las necesidades de tu aplicación:

  • Optimización de la latencia: Ideal para aplicaciones en tiempo real que requieren respuestas inmediatas (por ejemplo, aplicaciones de consumo).
  • Optimización del rendimiento: Lo mejor para escenarios con muchas inferencias concurrentes, maximizando el uso de recursos (por ejemplo, despliegues a gran escala).

Utilizar las sugerencias de rendimiento de alto nivel de OpenVINO y los modos multidispositivo puede ayudarte a encontrar el equilibrio adecuado. Elige las sugerencias de rendimiento adecuadas de OpenVINO en función de tus necesidades específicas.

¿Puedo utilizar los modelos de Ultralytics YOLO con otros marcos de IA además de OpenVINO?

Sí, los modelos de Ultralytics YOLO son muy versátiles y pueden integrarse con varios marcos de IA. Las opciones incluyen:

Explora más integraciones en la páginaUltralytics Integraciones.

📅 Created 7 months ago ✏️ Updated 1 month ago

Comentarios