Saltar al contenido

Optimizaci贸n de la inferencia OpenVINO para modelos Ultralytics YOLO : Una gu铆a completa

OpenVINO Ecosistema

Introducci贸n

Cuando se despliegan modelos de aprendizaje profundo, en particular los destinados a la detecci贸n de objetos, como los modelos Ultralytics YOLO , es crucial conseguir un rendimiento 贸ptimo. Esta gu铆a profundiza en el aprovechamiento del conjunto de herramientas Intel's OpenVINO para optimizar la inferencia, centr谩ndose en la latencia y el rendimiento. Tanto si trabajas en aplicaciones de consumo como en despliegues a gran escala, comprender y aplicar estas estrategias de optimizaci贸n garantizar谩 que tus modelos funcionen eficazmente en diversos dispositivos.

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.



Creado 2024-03-17, Actualizado 2024-07-05
Autores: glenn-jocher (5)

Comentarios