Saltar al contenido

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

OpenVINO Ecosistema

Introducci贸n

Al desplegar modelos de aprendizaje profundo, en particular los destinados a la detecci贸n de objetos, como los modelos Ultralytics YOLO , es crucial lograr un rendimiento 贸ptimo. Esta gu铆a profundiza en el aprovechamiento del conjunto de herramientas OpenVINO de Intel 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 AUTO del dispositivo: Este modo comienza la inferencia en la CPU, cambiando a un acelerador una vez 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 as props
import openvino.properties.hint as hints

config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)
  1. 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.



Creado 2024-03-17, Actualizado 2024-03-17
Autores: glenn-jocher (1)

Comentarios