OpenVINO Optimizaci贸n de la inferencia para modelos Ultralytics YOLO : Una gu铆a completa
Introducci贸n
A la hora de implementar modelos de aprendizaje profundo, en particular aquellos para la detecci贸n de objetos como los modelos Ultralytics YOLO , es crucial lograr un rendimiento 贸ptimo. Esta gu铆a profundiza en el aprovechamiento de Intel's OpenVINO toolkit para optimizar la inferencia, centr谩ndose en la latencia y el rendimiento. Tanto si trabajas en aplicaciones de consumo como en implementaciones a gran escala, comprender y aplicar estas estrategias de optimizaci贸n garantizar谩 que tus modelos funcionen de forma eficiente en distintos 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, para conseguir una latencia baja hay que tener mucho cuidado, sobre todo cuando se realizan inferencias simult谩neas o se gestionan varios modelos.
Estrategias clave para optimizar la latencia:
- Una 煤nica inferencia por dispositivo: La forma m谩s sencilla de lograr una baja latencia es limitarse a una inferencia a la vez por dispositivo. La concurrencia adicional suele aumentar la latencia.
- Aprovechamiento de 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 rendimiento: Utilizando OpenVINO's
ov::hint::PerformanceMode::LATENCY
para laov::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.
Gesti贸n de la latencia de la primera inferencia:
- Almacenamiento en cach茅 de modelos: Para mitigar los tiempos de carga y compilaci贸n de modelos que afectan a la latencia, utilice el almacenamiento en cach茅 de modelos siempre que sea posible. En los casos en los 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 frente a lectura: Para reducir los tiempos de carga, OpenVINO ha sustituido la lectura de modelos por el mapeo. Sin embargo, si el modelo se encuentra en una unidad extra铆ble o de red, considere la posibilidad de utilizar
ov::enable_mmap(false)
para volver a la lectura. - Selecci贸n autom谩tica de dispositivos: Este modo comienza la inferencia en CPU, cambiando a un acelerador una vez que est谩 listo, reduciendo sin problemas la latencia de la primera inferencia.
Optimizaci贸n del rendimiento
La optimizaci贸n del rendimiento es crucial para los escenarios que atienden numerosas solicitudes de inferencia simult谩neamente, maximizando la utilizaci贸n de los recursos sin sacrificar significativamente el rendimiento de las solicitudes individuales.
Enfoques para la optimizaci贸n del rendimiento:
-
OpenVINO Sugerencias de rendimiento: Un m茅todo de alto nivel y a prueba de futuro para mejorar el rendimiento entre dispositivos mediante sugerencias de rendimiento.
-
Batching expl铆cito y flujos: Un enfoque m谩s granular que implica la dosificaci贸n expl铆cita y el uso de flujos para el 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 dispositivo.
- Descomponer el flujo de datos en solicitudes de inferencia concurrentes, programadas para su ejecuci贸n en paralelo.
- Utiliza la API Async con callbacks para mantener la eficiencia 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
La optimizaci贸n de los modelos Ultralytics YOLO para la latencia y el rendimiento con OpenVINO puede mejorar significativamente el rendimiento de su aplicaci贸n. Mediante la aplicaci贸n cuidadosa de las estrategias descritas en esta gu铆a, los desarrolladores pueden garantizar que sus modelos se ejecuten de manera eficiente, satisfaciendo las demandas de diversos escenarios de despliegue. Recuerde que la elecci贸n entre optimizar la latencia o el rendimiento depende de las necesidades espec铆ficas de su aplicaci贸n y de las caracter铆sticas del entorno de despliegue.
Para obtener informaci贸n t茅cnica m谩s detallada y las 煤ltimas actualizaciones, consulte la documentaci贸n deOpenVINO y el repositorioUltralytics YOLO . Estos recursos ofrecen gu铆as detalladas, tutoriales y apoyo de la comunidad para ayudarle a sacar el m谩ximo partido de sus modelos de aprendizaje profundo.
Garantizar que sus modelos alcancen un rendimiento 贸ptimo no consiste 煤nicamente en ajustar las configuraciones, sino en comprender las necesidades de su aplicaci贸n y tomar decisiones con conocimiento de causa. Tanto si desea optimizar las respuestas en tiempo real como maximizar el rendimiento del procesamiento a gran escala, la combinaci贸n de los modelos de Ultralytics YOLO y OpenVINO ofrece a los desarrolladores un potente conjunto de herramientas para implantar soluciones de IA de alto rendimiento.
PREGUNTAS FRECUENTES
驴C贸mo se optimizan los modelos Ultralytics YOLO para una baja latencia utilizando OpenVINO?
La optimizaci贸n de los modelos Ultralytics YOLO para una baja latencia implica varias estrategias clave:
- Una 煤nica inferencia por dispositivo: Limita las inferencias a una cada vez por dispositivo para minimizar los retrasos.
- Aprovechamiento de subdispositivos: Utilizar dispositivos como CPUs multi-socket o GPUs multi-tile que puedan manejar m煤ltiples peticiones con un m铆nimo incremento de latencia.
- OpenVINO Consejos de rendimiento: Utilice 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, consulte 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, lo que facilita 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)
Obtenga 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, tenga en cuenta estas pr谩cticas:
- Almacenamiento en cach茅 de modelos: Utilice el almacenamiento en cach茅 de modelos para reducir los tiempos de carga y compilaci贸n.
- Mapeo de modelos frente a lectura: Utilice 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. - Selecci贸n AUTO de dispositivos: Utilice 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, consulte 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 su aplicaci贸n:
- Optimizaci贸n de la latencia: Ideal para aplicaciones en tiempo real que requieren respuestas inmediatas (por ejemplo, apps 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).
El uso de las sugerencias de alto rendimiento y los modos multidispositivo de OpenVINO puede ayudarle a encontrar el equilibrio adecuado. Elija las sugerencias de rendimiento adecuadas de OpenVINO en funci贸n de sus 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 diversos marcos de IA. Las opciones incluyen:
- TensorRT: Para la optimizaci贸n de NVIDIA GPU , siga la gu铆a de integraci贸nTensorRT .
- CoreML: Para dispositivos Apple, consulta nuestras instrucciones de exportaci贸n enCoreML .
- TensorFlow.js: Para aplicaciones web y Node.js, consulte la gu铆a de conversi贸nTF.js.
Explore m谩s integraciones en la p谩ginaUltralytics Integrations.