Al hacer clic en “Aceptar todas las cookies”, aceptas el almacenamiento de cookies en tu dispositivo para mejorar la navegación del sitio, analizar el uso del sitio y ayudar en nuestros esfuerzos de marketing. Más información
Configuración de cookies
Al hacer clic en “Aceptar todas las cookies”, aceptas el almacenamiento de cookies en tu dispositivo para mejorar la navegación del sitio, analizar el uso del sitio y ayudar en nuestros esfuerzos de marketing. Más información
Potencie la formación y el despliegue de modelos Ultralytics YOLOv5 con DeepSparse de Neural Magic Magic para obtener un rendimiento GPU en CPU. Consiga implantaciones de YOLOv5 más rápidas y escalables.
¿Quiere acelerar la formación y el despliegue de su YOLOv5 de YOLOv5? Estamos aquí para ayudarle. Presentamos a nuestro socio más reciente, Neural Magic. Como Neural Magic proporciona herramientas de software que hacen hincapié en el máximo rendimiento de los modelos y la simplicidad del flujo de trabajo, es natural que nos hayamos unido para ofrecer una solución que mejore aún más el proceso de despliegue deYOLOv5 .
DeepSparse es el tiempo de ejecución de inferencia CPU de Neural MagicMagic, que aprovecha la dispersión y la aritmética de baja precisión de las redes neuronales para ofrecer un rendimiento excepcional en hardware básico. Por ejemplo, en comparación con el tiempo de ejecución de ONNX , DeepSparse ofrece una velocidad 5,8 veces superior para YOLOv5 ejecutándose en la misma máquina.
Por primera vez, sus cargas de trabajo de deep learning pueden satisfacer las demandas de rendimiento de la producción sin la complejidad y los costes de los aceleradores de hardware. En pocas palabras, DeepSparse le ofrece el rendimiento de las GPU y la simplicidad del software:
Implementaciones flexibles: Se ejecuta de manera consistente en la nube, el centro de datos y el borde con cualquier proveedor de hardware
Escalabilidad infinita: Escale horizontalmente con Kubernetes estándar, verticalmente a cientos de núcleos o totalmente abstraído con serverless.
Fácil integración: Utilice API limpias para integrar su modelo en una aplicación y supervisarlo en producción
Alcanza GPU en una CPU básica
DeepSparse aprovecha la dispersión del modelo para obtener su aceleración de rendimiento.
La sparsificación a través de la poda y la cuantización permite reducciones de orden de magnitud en el tamaño y el cálculo necesarios para ejecutar una red, manteniendo al mismo tiempo una alta precisión. DeepSparse tiene en cuenta la dispersión, omitiendo las multiplicaciones por cero y reduciendo la cantidad de cálculo en una pasada hacia delante. Dado que el cálculo disperso está limitado por la memoria, DeepSparse ejecuta el grafo en profundidad, dividiendo el problema en columnas Tensor , que son franjas verticales de cálculo que caben en la caché.
Las redes dispersas con cálculo comprimido, ejecutadas en profundidad en la caché, permiten a DeepSparse ofrecer un rendimiento GPU en las CPU.
Crear una versión dispersa de YOLOv5 entrenada con datos personalizados
El repositorio de modelos de código abierto de Neural Magic Magic, SparseZoo, contiene puntos de control preespaciados de cada modelo YOLOv5 . Mediante SparseML, que está integrado con Ultralytics, puede ajustar un punto de control disperso a sus datos con un único comando CLI .
Despliegue de YOLOv5 con DeepSparse
Instalar DeepSparse
Ejecute lo siguiente para instalar DeepSparse. Le recomendamos que utilice un entorno virtual con Python.
pip install deepsparse[servidoryolo,onnxruntime]
Recopilar un archivo ONNX
DeepSparse acepta un modelo en formato ONNX , pasado como:
Una ruta local a un modelo ONNX
Un stub de SparseZoo que identifica un modelo en SparseZoo
Compararemos el YOLOv5s denso estándar con el YOLOv5s podado y cuantificado, identificados por los siguientes stubs de SparseZoo:
zoo:ultralytics zoo:ultralytics
Implementar un modelo
DeepSparse ofrece APIs convenientes para integrar su modelo en una aplicación.
Para probar los ejemplos de despliegue que se muestran a continuación, extraiga una imagen de muestra del ejemplo y guárdela como basilica.jpg con el siguiente comando:
wget -O basilicabasilicajpg
API de Python
Los pipelines envuelven el preprocesamiento y el postprocesamiento de salida alrededor del tiempo de ejecución, proporcionando una interfaz limpia para añadir DeepSparse a una aplicación. La integración Ultralytics incluye un pipeline listo para usar que acepta imágenes sin procesar y genera los cuadros delimitadores.
Crear un Pipeline y ejecutar la inferencia:
from deepsparse import Pipeline
# lista de imágenes en el sistema de archivos local images = [basilica.jpg"]
Si se está ejecutando en la nube, puede recibir un error que indica que open-cv no puede encontrar libGL.so.1. Ejecutar lo siguiente en Ubuntu lo instala:
apt-get install libgl1-mesa-glx
Servidor HTTP
DeepSparse Server se ejecuta sobre el popular framework web FastAPI y el servidor web Uvicorn. Con un solo comando CLI , puede configurar fácilmente un punto final de servicio de modelo con DeepSparse. El servidor admite cualquier canalización de DeepSparse, incluida la detección de objetos con YOLOv5, lo que permite enviar imágenes sin procesar al punto final y recibir los cuadros delimitadores.
Poner en marcha el servidor con el YOLOv5s podado y cuantificado:
Una petición de ejemplo, utilizando el paquete requests de Python:
import requests, json
# lista de imágenes para la inferencia (archivos locales en el lado del cliente) ruta = [basilica.jpg'] archivos = [('request', open(img, 'rb')) for img in ruta]
# enviar la solicitud a través de HTTP al endpoint /predict/from_files url = 'http://0.0.0.0:5543/predict/from_files' resp = requests.post(url=url, files=files)
# la respuesta se devuelve en JSON annotations = json.loads(resp.text) # diccionario de resultados de anotación bounding_boxes = annotations["boxes"] labels = annotations["labels"]
Anotar CLI
También puede utilizar el comando annotate para que el motor guarde una foto anotada en el disco. ¡Pruebe --source 0 para anotar la transmisión en vivo de su cámara web!
> Ruta del modelo original: zoo:ultralytics > Tamaño del lote: 1 > Escenario: sync > Rendimiento (ítems/seg): 48.0921
Rendimiento disperso de DeepSparse
Cuando se aplica sparsity al modelo, el rendimiento de DeepSparse es aún mayor que el de ONNX Runtime.
En el lote 1, DeepSparse alcanza 135 imágenes por segundo con el YOLOv5 cuantificado y podado, lo que supone unamejora de 2,8 veces el rendimiento de ONNX Runtime.
> Ruta del modelo original: zoo:ultralytics > Tamaño del lote: 1 > Escenario: sync > Rendimiento (ítems/seg): 134.9468
Dado que las instancias c6i.8xlarge tienen instrucciones VNNI, el rendimiento de DeepSparse puede aumentar aún más si los pesos se podan en bloques de 4.
En el lote 1, DeepSparse alcanza 180 ítems/segundo con un YOLOv5 cuantificado y podado en 4 bloques, lo que suponeun aumento del rendimiento de 3,7 veces con respecto a ONNX Runtime.
En Ultralytics, nos asociamos comercialmente con otras startups para que nos ayuden a financiar la investigación y el desarrollo de nuestras increíbles herramientas de código abierto, como YOLOv5, para que sigan siendo gratuitas para todo el mundo. Este artículo puede contener enlaces de afiliación a dichos socios.