Встречай YOLO26: ИИ компьютерного зрения нового поколения.
Ultralytics
Интеграции

Развертывание Ultralytics YOLOv5 с помощью DeepSparse от Neural Magic для достижения производительности уровня GPU на CPU

Усиль обучение и развертывание модели Ultralytics YOLOv5 с помощью DeepSparse от Neural Magic для достижения производительности уровня GPU на CPU. Получи более быстрое и масштабируемое развертывание YOLOv5.

КОКоманда Ultralytics
5 min read
Развертывание Ultralytics YOLOv5 с помощью DeepSparse от Neural Magic на CPU

Хочешь ускорить обучение и развертывание своих моделей YOLOv5? Мы поможем! Представляем нашего нового партнера — Neural Magic. Поскольку Neural Magic предоставляет программные инструменты, ориентированные на максимальную производительность моделей и простоту рабочих процессов, наше сотрудничество для создания решения, улучшающего процесс развертывания YOLOv5, было вполне естественным.

DeepSparse — это среда выполнения для инференса на CPU от Neural Magic, которая использует разреженность (sparsity) и вычисления с низкой точностью в нейронных сетях для обеспечения исключительной производительности на обычном оборудовании. Например, по сравнению с базовым ONNX Runtime, DeepSparse обеспечивает ускорение YOLOv5s в 5.8 раза на той же машине!

Сравнение пропускной способности YOLOv5 с DeepSparse

Впервые твои рабочие нагрузки глубокого обучения могут соответствовать производственным требованиям к производительности без сложности и затрат на аппаратные ускорители. Проще говоря, DeepSparse дает тебе производительность GPU и простоту программного обеспечения:

  1. Гибкое развертывание: Стабильная работа в облаке, центрах обработки данных и на периферийных устройствах с любым аппаратным обеспечением
  2. Бесконечная масштабируемость: Масштабируйся с помощью стандартного Kubernetes, вертикально до сотен ядер или полностью абстрактно с использованием serverless
  3. Простая интеграция: Используй понятные API для встраивания модели в приложение и её мониторинга в продакшене

Link to this sectionДостигай производительности уровня GPU на обычных CPU#

DeepSparse использует разреженность модели для достижения ускорения.

Разреживание (sparsification) за счет прунинга (pruning) и квантования (quantization) позволяет на порядки сократить объем и вычислительную мощность, необходимые для выполнения сети, сохраняя при этом высокую точность. DeepSparse учитывает разреженность, пропуская операции умножения-сложения с нулями и уменьшая объем вычислений в проходе forward. Поскольку разреженные вычисления ограничены скоростью памяти, DeepSparse выполняет сеть по глубине, разбивая задачу на «столбцы тензоров» (Tensor Columns) — вертикальные полосы вычислений, которые помещаются в кэш.

Сеть DeepSparse и Ultralytics YOLOv5

Разреженные сети со сжатыми вычислениями, выполняемые по глубине в кэше, позволяют DeepSparse обеспечить производительность уровня GPU на CPU!

Link to this sectionСоздай разреженную версию YOLOv5, обученную на твоих данных#

В репозитории моделей с открытым исходным кодом от Neural Magic, SparseZoo, содержатся предварительно разреженные чекпоинты каждой модели YOLOv5. Используя SparseML, который интегрирован с Ultralytics, ты можешь дообучить (fine-tune) разреженный чекпоинт на своих данных с помощью одной команды CLI.

Link to this sectionРазвертывание YOLOv5 с помощью DeepSparse#

Link to this sectionУстановка DeepSparse#

Выполни следующую команду для установки DeepSparse. Мы рекомендуем использовать виртуальное окружение с Python.

pip install deepsparse[server,yolo,onnxruntime]

Link to this sectionПолучи файл ONNX#

DeepSparse принимает модель в формате ONNX, передаваемую как:

  • Локальный путь к модели ONNX
  • Заглушка (stub) SparseZoo, которая идентифицирует модель в SparseZoo

Мы сравним стандартную плотную (dense) YOLOv5s с прунинг-квантованной YOLOv5s, идентифицируемой следующими заглушками 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 sectionРазвертывание модели#

DeepSparse предлагает удобные API для интеграции твоей модели в приложение.

Чтобы попробовать примеры развертывания ниже, скачай пример изображения и сохрани его как basilica.jpg с помощью следующей команды:

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

Link to this sectionPython API#

Пайплайны (Pipelines) объединяют предобработку и пост-обработку вывода вокруг среды выполнения, предоставляя понятный интерфейс для добавления DeepSparse в приложение. Интеграция DeepSparse-Ultralytics включает готовый к использованию Пайплайн, который принимает «сырые» изображения и выводит ограничивающие рамки (bounding boxes).

Создай Пайплайн и запусти инференс:

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)

Если ты запускаешь код в облаке, ты можешь столкнуться с ошибкой, что open-cv не может найти libGL.so.1. Запуск следующей команды в Ubuntu устранит проблему:

apt-get install libgl1-mesa-glx

Link to this sectionHTTP сервер#

DeepSparse Server работает поверх популярного веб-фреймворка FastAPI и веб-сервера Uvicorn. С помощью всего одной команды CLI ты можешь легко настроить конечную точку сервиса модели с DeepSparse. Сервер поддерживает любой Пайплайн от DeepSparse, включая детекцию объектов с помощью YOLOv5, позволяя отправлять изображения на конечную точку и получать ограничивающие рамки.

Запусти сервер с прунинг-квантованной YOLOv5s:

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

Пример запроса с использованием пакета requests в 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 sectionAnnotate CLI#

Ты также можешь использовать команду annotate, чтобы движок сохранил аннотированное фото на диске. Попробуй --source 0 для аннотирования видеопотока с твоей веб-камеры в реальном времени!

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

Запуск этой команды создаст папку annotation-results и сохранит в ней аннотированное изображение.

Аннотированная базилика с использованием YOLOv5

Link to this sectionБенчмаркинг производительности#

Используя скрипт бенчмаркинга DeepSparse, мы сравним пропускную способность DeepSparse с ONNX Runtime на YOLOv5s.

Бенчмарки были запущены на инстансе AWS c6i.8xlarge (16 ядер).

Link to this sectionСравнение производительности на батче 32#

Link to this sectionБазовая линия ONNX Runtime#

При батче 32, ONNX Runtime достигает 42 изображений/сек со стандартной плотной YOLOv5s:

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

Путь к исходной модели: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Размер батча: 32 Сценарий: sync Пропускная способность (элементов/сек): 41.9025

Link to this sectionПроизводительность плотной модели в DeepSparse#

Хотя DeepSparse показывает свою лучшую производительность с оптимизированными разреженными моделями, он также хорошо работает со стандартной плотной YOLOv5s.

При батче 32, DeepSparse достигает 70 изображений/сек со стандартной плотной YOLOv5s — улучшение производительности в 1.7 раза по сравнению с ORT!

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

Путь к исходной модели: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Размер батча: 32 Сценарий: sync Пропускная способность (элементов/сек): 69.5546

Link to this sectionПроизводительность разреженной модели в DeepSparse#

Когда к модели применяется разреженность, прирост производительности DeepSparse по сравнению с ONNX Runtime становится еще существеннее.

При батче 32, DeepSparse достигает 241 изображения/сек с прунинг-квантованной YOLOv5s — улучшение производительности в 5.8 раза по сравнению с ORT!

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

Путь к исходной модели: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Размер батча: 32 Сценарий: sync Пропускная способность (элементов/сек): 241.2452

Link to this sectionСравнение производительности на батче 1#

DeepSparse также способен получить преимущество в скорости по сравнению с ONNX Runtime для чувствительного к задержкам сценария с батчем 1.

Link to this sectionБазовая линия ONNX Runtime#

При батче 1, ONNX Runtime достигает 48 изображений/сек со стандартной плотной YOLOv5s.

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

Путь к исходной модели: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Размер батча: 1 Сценарий: sync Пропускная способность (элементов/сек): 48.0921

Link to this sectionПроизводительность разреженной модели в DeepSparse#

Когда к модели применяется разреженность, прирост производительности DeepSparse по сравнению с ONNX Runtime становится еще существеннее.

При батче 1, DeepSparse достигает 135 изображений/сек с прунинг-квантованной YOLOv5s — улучшение производительности в 2.8 раза по сравнению с ONNX Runtime!

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

Путь к исходной модели: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Размер батча: 1 Сценарий: sync Пропускная способность (элементов/сек): 134.9468

Поскольку инстансы c6i.8xlarge имеют инструкции VNNI, пропускную способность DeepSparse можно еще больше увеличить, если веса прунятся блоками по 4.

При батче 1, DeepSparse достигает 180 элементов/сек с блочно-прунированной (4 блока) квантованной YOLOv5s — прирост производительности в 3.7 раза по сравнению с ONNX Runtime!

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

Путь к исходной модели: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni Размер батча: 1 Сценарий: sync Пропускная способность (элементов/сек): 179.7375

И вуаля! Ты готов оптимизировать развертывание YOLOv5 с помощью DeepSparse.

Link to this sectionНачни работу с YOLOv5 и DeepSparse#

Чтобы связаться с нами, присоединяйся к нашему сообществу и оставляй свои вопросы и комментарии. Ознакомься с репозиторием Ultralytics YOLOv5 и полной документацией Neural Magic по развертыванию YOLOv5.

В Ultralytics мы сотрудничаем с другими стартапами, чтобы финансировать исследования и разработку наших потрясающих инструментов с открытым исходным кодом, таких как YOLOv5, и поддерживать их бесплатными для всех. Эта статья может содержать партнерские ссылки на этих партнеров.

Explore solutions

Real-time AI that works with your team

ИИ в робототехнике

Делай свои машины умнее с помощью моделей Ultralytics YOLO. ИИ машинного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Узнать больше
Real-time AI that works with your team

ИИ в логистике

Оптимизируй логистику с помощью моделей Ultralytics YOLO. Vision AI позволяет инспектировать посылки, сортировать их, отслеживать транспортные средства и контролировать безопасность на складе в реальном времени.
Узнать больше
Real-time AI that works with your team

ИИ в розничной торговле

Переосмысли ритейл с помощью моделей Ultralytics YOLO. Vision AI расширяет возможности отслеживания запасов, мониторинга полок, управления очередями и более глубокого понимания клиентов.
Узнать больше
Real-time AI that works with your team

ИИ в здравоохранении

Создавай решения для здравоохранения с помощью моделей Ultralytics YOLO. ИИ для зрения в медицине ускоряет анализ медицинских изображений, делает диагностику более точной, а мониторинг пациентов — эффективнее.
Узнать больше
Real-time AI that works with your team

ИИ в производстве

Оптимизируй производство с помощью моделей Ultralytics YOLO. Vision AI управляет контролем качества, обнаружением дефектов, соблюдением СИЗ и автоматизацией сборочных линий.
Узнать больше
Real-time AI that works with your operation

ИИ в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. ИИ для зрения повышает безопасность дорожного движения, помогает водителю и способствует автоматизации транспортных средств для создания более «умных» дорог.
Узнать больше
Real-time AI tailored to your operation

ИИ в сельском хозяйстве

Внедряй ИИ в «умное» сельское хозяйство с помощью моделей Ultralytics YOLO. Оптимизируй мониторинг посевов, отслеживание скота и точное земледелие для получения более высоких и «умных» урожаев.
Узнать больше
Real-time AI that works with your team

ИИ в робототехнике

Делай свои машины умнее с помощью моделей Ultralytics YOLO. ИИ машинного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Узнать больше
Real-time AI that works with your team

ИИ в логистике

Оптимизируй логистику с помощью моделей Ultralytics YOLO. Vision AI позволяет инспектировать посылки, сортировать их, отслеживать транспортные средства и контролировать безопасность на складе в реальном времени.
Узнать больше
Real-time AI that works with your team

ИИ в розничной торговле

Переосмысли ритейл с помощью моделей Ultralytics YOLO. Vision AI расширяет возможности отслеживания запасов, мониторинга полок, управления очередями и более глубокого понимания клиентов.
Узнать больше
Real-time AI that works with your team

ИИ в здравоохранении

Создавай решения для здравоохранения с помощью моделей Ultralytics YOLO. ИИ для зрения в медицине ускоряет анализ медицинских изображений, делает диагностику более точной, а мониторинг пациентов — эффективнее.
Узнать больше
Real-time AI that works with your team

ИИ в производстве

Оптимизируй производство с помощью моделей Ultralytics YOLO. Vision AI управляет контролем качества, обнаружением дефектов, соблюдением СИЗ и автоматизацией сборочных линий.
Узнать больше
Real-time AI that works with your operation

ИИ в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. ИИ для зрения повышает безопасность дорожного движения, помогает водителю и способствует автоматизации транспортных средств для создания более «умных» дорог.
Узнать больше
Real-time AI tailored to your operation

ИИ в сельском хозяйстве

Внедряй ИИ в «умное» сельское хозяйство с помощью моделей Ultralytics YOLO. Оптимизируй мониторинг посевов, отслеживание скота и точное земледелие для получения более высоких и «умных» урожаев.
Узнать больше
Real-time AI that works with your team

ИИ в робототехнике

Делай свои машины умнее с помощью моделей Ultralytics YOLO. ИИ машинного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Узнать больше
Real-time AI that works with your team

ИИ в логистике

Оптимизируй логистику с помощью моделей Ultralytics YOLO. Vision AI позволяет инспектировать посылки, сортировать их, отслеживать транспортные средства и контролировать безопасность на складе в реальном времени.
Узнать больше
Real-time AI that works with your team

ИИ в розничной торговле

Переосмысли ритейл с помощью моделей Ultralytics YOLO. Vision AI расширяет возможности отслеживания запасов, мониторинга полок, управления очередями и более глубокого понимания клиентов.
Узнать больше
Real-time AI that works with your team

ИИ в здравоохранении

Создавай решения для здравоохранения с помощью моделей Ultralytics YOLO. ИИ для зрения в медицине ускоряет анализ медицинских изображений, делает диагностику более точной, а мониторинг пациентов — эффективнее.
Узнать больше
Real-time AI that works with your team

ИИ в производстве

Оптимизируй производство с помощью моделей Ultralytics YOLO. Vision AI управляет контролем качества, обнаружением дефектов, соблюдением СИЗ и автоматизацией сборочных линий.
Узнать больше
Real-time AI that works with your operation

ИИ в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. ИИ для зрения повышает безопасность дорожного движения, помогает водителю и способствует автоматизации транспортных средств для создания более «умных» дорог.
Узнать больше
Real-time AI tailored to your operation

ИИ в сельском хозяйстве

Внедряй ИИ в «умное» сельское хозяйство с помощью моделей Ultralytics YOLO. Оптимизируй мониторинг посевов, отслеживание скота и точное земледелие для получения более высоких и «умных» урожаев.
Узнать больше

Давай строить будущее ИИ вместе!

Начни свой путь в будущее машинного обучения