Conoce YOLO26: IA de visión de nueva generación.
Ultralytics
Integraciones

Despliega YOLOv5 de Ultralytics con DeepSparse de Neural Magic para un rendimiento de clase GPU en CPUs

Potencia el entrenamiento y despliegue del modelo YOLOv5 de Ultralytics con DeepSparse de Neural Magic para obtener un rendimiento de clase GPU en CPUs. Logra despliegues de YOLOv5 más rápidos y escalables.

NUNuvola Ladi5 min read
Despliegue de YOLOv5 de Ultralytics con DeepSparse de Neural Magic en CPUs

¿Quieres acelerar el entrenamiento y el despliegue de tus modelos YOLOv5? ¡Estamos aquí para ayudarte! Presentamos a nuestro nuevo socio, Neural Magic. Como Neural Magic ofrece herramientas de software que destacan por el máximo rendimiento de los modelos y la simplicidad en el flujo de trabajo, es natural que nos hayamos unido para ofrecer una solución que mejore aún más el proceso de despliegue de YOLOv5.

DeepSparse es el motor de inferencia en CPU de Neural Magic, que aprovecha la dispersión y la aritmética de baja precisión en las redes neuronales para ofrecer un rendimiento excepcional en hardware comercial. Por ejemplo, en comparación con la referencia de ONNX Runtime, ¡DeepSparse ofrece una aceleración de 5.8x para YOLOv5s ejecutándose en la misma máquina!

Comparativa de rendimiento de YOLOv5 con DeepSparse

Por primera vez, tus cargas de trabajo de deep learning pueden satisfacer las exigencias de rendimiento de producción sin la complejidad y los costes de los aceleradores de hardware. En resumen, DeepSparse te ofrece el rendimiento de las GPUs y la sencillez del software:

  1. Despliegues flexibles: Ejecuta de forma consistente en la nube, en centros de datos y en el edge con cualquier proveedor de hardware.
  2. Escalabilidad infinita: Escala horizontalmente con Kubernetes estándar, verticalmente hasta cientos de núcleos, o mediante una abstracción total con serverless.
  3. Integración sencilla: Utiliza APIs limpias para integrar tu modelo en una aplicación y supervisarlo en producción.

Link to this sectionConsigue un rendimiento de clase GPU en CPUs comerciales#

DeepSparse aprovecha la dispersión del modelo para obtener su mejora de rendimiento.

La dispersión mediante poda y cuantización permite reducir a órdenes de magnitud el tamaño y el cómputo necesarios para ejecutar una red, manteniendo una alta precisión. DeepSparse es consciente de la dispersión, omitiendo las multiplicaciones y sumas por cero y reduciendo la cantidad de cómputo en un paso hacia adelante. Dado que el cómputo disperso está limitado por la memoria, DeepSparse ejecuta la red en profundidad, dividiendo el problema en columnas de tensores, que son franjas verticales de cómputo que caben en la caché.

Red de DeepSparse y Ultralytics YOLOv5

¡Las redes dispersas con cómputo comprimido, ejecutadas en profundidad en la caché, permiten a DeepSparse ofrecer un rendimiento de clase GPU en CPUs!

Link to this sectionCrea una versión dispersa de YOLOv5 entrenada con datos personalizados#

SparseZoo, el repositorio de modelos de código abierto de Neural Magic, contiene puntos de control pre-dispersados de cada modelo YOLOv5. Usando SparseML, que está integrado con Ultralytics, puedes ajustar un punto de control disperso con tus datos mediante un solo comando de CLI.

Link to this sectionDespliega YOLOv5 con DeepSparse#

Link to this sectionInstala DeepSparse#

Ejecuta lo siguiente para instalar DeepSparse. Te recomendamos usar un entorno virtual con Python.

pip install deepsparse[server,yolo,onnxruntime]

Link to this sectionObtén un archivo ONNX#

DeepSparse acepta un modelo en formato ONNX, proporcionado de una de estas formas:

  • Una ruta local a un modelo ONNX
  • Un stub de SparseZoo que identifica un modelo en SparseZoo

Vamos a comparar el YOLOv5s denso estándar con el YOLOv5s podado y cuantizado, identificados por los siguientes stubs de SparseZoo:

zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none
zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none

Link to this sectionDespliega un modelo#

DeepSparse ofrece APIs convenientes para integrar tu modelo en una aplicación.

Para probar los ejemplos de despliegue a continuación, descarga una imagen de muestra para el ejemplo y guárdala como basilica.jpg con el siguiente comando:

wget -O basilica.jpg https://raw.githubusercontent.com/neuralmagic/deepsparse/main/src/deepsparse/yolo/sample_images/basilica.jpg

Link to this sectionAPI de Python#

Las canalizaciones (pipelines) envuelven el preprocesamiento y el posprocesamiento de resultados alrededor del tiempo de ejecución, proporcionando una interfaz limpia para añadir DeepSparse a una aplicación. La integración de DeepSparse con Ultralytics incluye una canalización lista para usar que acepta imágenes sin procesar y genera los cuadros delimitadores.

Crea una canalización y ejecuta la inferencia:

from deepsparse import Pipeline

# list of images in local filesystem
images = ["basilica.jpg"]

# create Pipeline
model_stub = "zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none"
yolo_pipeline = Pipeline.create(
    task="yolo",
    model_path=model_stub,
)

# run inference on images, receive bounding boxes + classes
pipeline_outputs = yolo_pipeline(images=images, iou_thres=0.6, conf_thres=0.001)
print(pipeline_outputs)

Si estás ejecutando en la nube, es posible que recibas un error indicando que open-cv no encuentra libGL.so.1. Ejecutar lo siguiente en Ubuntu lo instala:

apt-get install libgl1-mesa-glx

Link to this sectionServidor HTTP#

DeepSparse Server se ejecuta sobre el popular framework web FastAPI y el servidor web Uvicorn. Con un solo comando de CLI, puedes configurar fácilmente un punto de enlace de servicio de modelo con DeepSparse. El servidor admite cualquier canalización de DeepSparse, incluida la detección de objetos con YOLOv5, lo que te permite enviar imágenes sin procesar al punto de enlace y recibir los cuadros delimitadores.

Inicia el servidor con el YOLOv5s podado y cuantizado:

deepsparse.server \
  --task yolo \
  --model_path zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none

Un ejemplo de solicitud, usando el paquete requests de Python:

import requests, json

# list of images for inference (local files on client side)
path = ['basilica.jpg']
files = [('request', open(img, 'rb')) for img in path]

# send request over HTTP to /predict/from_files endpoint
url = 'http://0.0.0.0:5543/predict/from_files'
resp = requests.post(url=url, files=files)

# response is returned in JSON
annotations = json.loads(resp.text)  # dictionary of annotation results
bounding_boxes = annotations["boxes"]
labels = annotations["labels"]

Link to this sectionCLI de anotación#

También puedes usar el comando annotate para que el motor guarde una foto anotada en el disco. ¡Prueba --source 0 para anotar la señal de tu cámara web en vivo!

deepsparse.object_detection.annotate --model_filepath zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none --source basilica.jpg

Ejecutar el comando anterior creará una carpeta annotation-results y guardará la imagen anotada dentro.

Basílica anotada con YOLOv5

Link to this sectionRendimiento de referencia#

Usando el script de benchmarking de DeepSparse, compararemos el rendimiento de DeepSparse con el de ONNX Runtime en YOLOv5s.

Las pruebas se realizaron en una instancia AWS c6i.8xlarge (16 núcleos).

Link to this sectionComparativa de rendimiento con lote 32#

Link to this sectionReferencia de ONNX Runtime#

Con un tamaño de lote 32, ONNX Runtime alcanza 42 imágenes/seg con el YOLOv5s denso estándar:

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1 -e onnxruntime

Ruta del modelo original: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Tamaño de lote: 32 Escenario: sync Rendimiento (elementos/seg): 41.9025

Link to this sectionRendimiento denso de DeepSparse#

Aunque DeepSparse ofrece su mejor rendimiento con modelos dispersos optimizados, también funciona bien con los YOLOv5s densos estándar.

Con un tamaño de lote 32, DeepSparse alcanza 70 imágenes/seg con el YOLOv5s denso estándar—¡una mejora de rendimiento de 1.7x respecto a ORT!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1

Ruta del modelo original: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Tamaño de lote: 32 Escenario: sync Rendimiento (elementos/seg): 69.5546

Link to this sectionRendimiento disperso de DeepSparse#

Cuando se aplica dispersión al modelo, las mejoras de rendimiento de DeepSparse sobre ONNX Runtime son aún mayores.

Con un tamaño de lote 32, DeepSparse alcanza 241 imágenes/seg con el YOLOv5s podado y cuantizado—¡una mejora de rendimiento de 5.8x respecto a ORT!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 32 -nstreams 1

Ruta del modelo original: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Tamaño de lote: 32 Escenario: sync Rendimiento (elementos/seg): 241.2452

Link to this sectionComparativa de rendimiento con lote 1#

DeepSparse también es capaz de obtener una aceleración sobre ONNX Runtime para el escenario de lote 1, sensible a la latencia.

Link to this sectionReferencia de ONNX Runtime#

Con lote 1, ONNX Runtime alcanza 48 imágenes/seg con el YOLOv5s denso estándar.

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 1 -nstreams 1 -e onnxruntime

Ruta del modelo original: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Tamaño de lote: 1 Escenario: sync Rendimiento (elementos/seg): 48.0921

Link to this sectionRendimiento disperso de DeepSparse#

Cuando se aplica dispersión al modelo, las mejoras de rendimiento de DeepSparse sobre ONNX Runtime son aún mayores.

Con lote 1, DeepSparse alcanza 135 imágenes/seg con el YOLOv5s podado y cuantizado—¡una mejora de rendimiento de 2.8x respecto a ONNX Runtime!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 1 -nstreams 1

Ruta del modelo original: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Tamaño de lote: 1 Escenario: sync Rendimiento (elementos/seg): 134.9468

Dado que las instancias c6i.8xlarge tienen instrucciones VNNI, el rendimiento de DeepSparse puede aumentarse aún más si los pesos se podan en bloques de 4.

Con lote 1, DeepSparse alcanza 180 elementos/seg con un YOLOv5s podado y cuantizado en bloques de 4—¡una ganancia de rendimiento de 3.7x respecto a ONNX Runtime!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni -s sync -b 1 -nstreams 1

Ruta del modelo original: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni Tamaño de lote: 1 Escenario: sync Rendimiento (elementos/seg): 179.7375

¡Y voilà! Ya estás listo para optimizar tu despliegue de YOLOv5 con DeepSparse.

Link to this sectionEmpieza con YOLOv5 y DeepSparse#

Para ponerte en contacto con nosotros, únete a nuestra comunidad y déjanos tus preguntas y comentarios. Echa un vistazo al repositorio de Ultralytics YOLOv5 y a la documentación completa de Neural Magic para desplegar YOLOv5.

En Ultralytics, nos asociamos comercialmente con otras startups para ayudarnos a financiar la investigación y el desarrollo de nuestras increíbles herramientas de código abierto, como YOLOv5, para mantenerlas gratuitas para todos. Este artículo puede contener enlaces de afiliados a esos socios.

Explore solutions

Real-time AI that works with your team

IA en robótica

Potencia máquinas más inteligentes con modelos Ultralytics YOLO. La IA de visión en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Real-time AI that works with your team

IA en logística

Optimiza la logística con los modelos de Ultralytics YOLO. La visión artificial por IA permite la inspección de paquetes, clasificación, seguimiento de vehículos y monitoreo de seguridad en almacenes en tiempo real.
Más información
Real-time AI that works with your team

IA en el sector minorista

Reimagina el comercio minorista con los modelos de Ultralytics YOLO. La visión artificial por IA potencia el seguimiento de inventario, el monitoreo de estantes, la gestión de colas y mejores perspectivas sobre los clientes.
Más información
Real-time AI that works with your team

IA en la atención sanitaria

Crea soluciones de salud con los modelos de Ultralytics YOLO. La IA de visión en la sanidad potencia imágenes médicas más rápidas, diagnósticos más inteligentes y supervisión de pacientes.
Más información
Real-time AI that works with your team

IA en la fabricación

Optimiza la fabricación con los modelos de Ultralytics YOLO. La visión artificial por IA impulsa el control de calidad, la detección de defectos, el cumplimiento del uso de PPE y la automatización de la línea de montaje.
Más información
Real-time AI that works with your operation

IA en automoción

Aplica la visión artificial en el sector automotriz con los modelos de Ultralytics YOLO. La IA de visión mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para carreteras más inteligentes.
Más información
Real-time AI tailored to your operation

IA en agricultura

Lleva la visión artificial a la agricultura inteligente con los modelos de Ultralytics YOLO. Potencia el seguimiento de cultivos, el control del ganado y la agricultura de precisión para obtener rendimientos mayores y más inteligentes.
Más información
Real-time AI that works with your team

IA en robótica

Potencia máquinas más inteligentes con modelos Ultralytics YOLO. La IA de visión en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Real-time AI that works with your team

IA en logística

Optimiza la logística con los modelos de Ultralytics YOLO. La visión artificial por IA permite la inspección de paquetes, clasificación, seguimiento de vehículos y monitoreo de seguridad en almacenes en tiempo real.
Más información
Real-time AI that works with your team

IA en el sector minorista

Reimagina el comercio minorista con los modelos de Ultralytics YOLO. La visión artificial por IA potencia el seguimiento de inventario, el monitoreo de estantes, la gestión de colas y mejores perspectivas sobre los clientes.
Más información
Real-time AI that works with your team

IA en la atención sanitaria

Crea soluciones de salud con los modelos de Ultralytics YOLO. La IA de visión en la sanidad potencia imágenes médicas más rápidas, diagnósticos más inteligentes y supervisión de pacientes.
Más información
Real-time AI that works with your team

IA en la fabricación

Optimiza la fabricación con los modelos de Ultralytics YOLO. La visión artificial por IA impulsa el control de calidad, la detección de defectos, el cumplimiento del uso de PPE y la automatización de la línea de montaje.
Más información
Real-time AI that works with your operation

IA en automoción

Aplica la visión artificial en el sector automotriz con los modelos de Ultralytics YOLO. La IA de visión mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para carreteras más inteligentes.
Más información
Real-time AI tailored to your operation

IA en agricultura

Lleva la visión artificial a la agricultura inteligente con los modelos de Ultralytics YOLO. Potencia el seguimiento de cultivos, el control del ganado y la agricultura de precisión para obtener rendimientos mayores y más inteligentes.
Más información
Real-time AI that works with your team

IA en robótica

Potencia máquinas más inteligentes con modelos Ultralytics YOLO. La IA de visión en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Real-time AI that works with your team

IA en logística

Optimiza la logística con los modelos de Ultralytics YOLO. La visión artificial por IA permite la inspección de paquetes, clasificación, seguimiento de vehículos y monitoreo de seguridad en almacenes en tiempo real.
Más información
Real-time AI that works with your team

IA en el sector minorista

Reimagina el comercio minorista con los modelos de Ultralytics YOLO. La visión artificial por IA potencia el seguimiento de inventario, el monitoreo de estantes, la gestión de colas y mejores perspectivas sobre los clientes.
Más información
Real-time AI that works with your team

IA en la atención sanitaria

Crea soluciones de salud con los modelos de Ultralytics YOLO. La IA de visión en la sanidad potencia imágenes médicas más rápidas, diagnósticos más inteligentes y supervisión de pacientes.
Más información
Real-time AI that works with your team

IA en la fabricación

Optimiza la fabricación con los modelos de Ultralytics YOLO. La visión artificial por IA impulsa el control de calidad, la detección de defectos, el cumplimiento del uso de PPE y la automatización de la línea de montaje.
Más información
Real-time AI that works with your operation

IA en automoción

Aplica la visión artificial en el sector automotriz con los modelos de Ultralytics YOLO. La IA de visión mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para carreteras más inteligentes.
Más información
Real-time AI tailored to your operation

IA en agricultura

Lleva la visión artificial a la agricultura inteligente con los modelos de Ultralytics YOLO. Potencia el seguimiento de cultivos, el control del ganado y la agricultura de precisión para obtener rendimientos mayores y más inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Comienza tu viaje con el futuro del aprendizaje automático