Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Интеграции

Развёртывай Ultralytics YOLOv5 с DeepSparse от Neural Magic и добивайся на CPU производительности уровня GPU

Разверни Ultralytics YOLOv5 с DeepSparse от Neural Magic и получи инференс на CPU уровня GPU с разреженными квантованными моделями, примерами кода и бенчмарками.

Nuvola LadiNuvola Ladi6 мин. чтения
Развёртывание Ultralytics YOLOv5 с помощью DeepSparse от Neural Magic на CPU

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

Обновление: в январе 2025 года Red Hat приобрела Neural Magic, после чего компания прекратила поддержку версий DeepSparse, SparseML и SparseZoo для сообщества. Инструкции ниже сохранены для справки; актуальную информацию см. в руководстве по YOLOv5 DeepSparse, ссылка на которое приведена выше.

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

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

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

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

Производительность уровня GPU на обычных CPU#

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

Разреживание с помощью прунинга и квантования позволяет на порядок уменьшить размер сети и вычислительные затраты на ее запуск, сохраняя высокую точность. DeepSparse учитывает разреженность, пропуская операции умножения и сложения с нулем и сокращая объем вычислений при прямом проходе. Поскольку разреженные вычисления ограничены пропускной способностью памяти, DeepSparse выполняет сеть послойно по глубине, разбивая задачу на столбцы тензоров — вертикальные полосы вычислений, помещающиеся в кэш.

Сеть DeepSparse и Ultralytics YOLOv5

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

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

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

Развертывание Ultralytics YOLOv5 с DeepSparse#

Установка DeepSparse#

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

pip install deepsparse[server,yolo,onnxruntime]

Получение файла ONNX#

DeepSparse принимает модель в формате ONNX, которую можно передать одним из следующих способов:

  • Локальный путь к модели ONNX
  • Идентификатор SparseZoo, указывающий на модель в SparseZoo

Мы сравним стандартную плотную модель YOLOv5s с прореженной и квантованной моделью YOLOv5s, указанной следующими идентификаторами SparseZoo:

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

Развертывание модели#

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

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

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

API Python#

Pipeline объединяют предварительную обработку и постобработку результатов со средой выполнения, предоставляя удобный интерфейс для интеграции DeepSparse в приложение. Интеграция DeepSparse с Ultralytics включает готовый Pipeline, который принимает исходные изображения и возвращает ограничивающие рамки.

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

from deepsparse import Pipeline

# список изображений в локальной файловой системе
images = ["basilica.jpg"]

# создать Pipeline
model_stub = "zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none"
yolo_pipeline = Pipeline.create(
    task="yolo",
    model_path=model_stub,
)

# запустить инференс для изображений, получить ограничивающие рамки и классы
pipeline_outputs = yolo_pipeline(images=images, iou_thres=0.6, conf_thres=0.001)
print(pipeline_outputs)

При запуске в облаке может появиться ошибка о том, что OpenCV не удается найти libGL.so.1. Чтобы установить эту библиотеку в Ubuntu, выполни следующую команду:

apt-get install libgl1-mesa-glx

HTTP-сервер#

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

Запусти Server с прореженной и квантованной моделью YOLOv5s:

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

Пример запроса с использованием пакета requests для Python:

import requests, json

# список изображений для инференса (локальные файлы на стороне клиента)
path = ['basilica.jpg']
files = [('request', open(img, 'rb')) for img in path]

# отправить запрос по HTTP на конечную точку /predict/from_files
url = 'http://0.0.0.0:5543/predict/from_files'
resp = requests.post(url=url, files=files)

# ответ возвращается в формате JSON
annotations = json.loads(resp.text)  # словарь результатов аннотирования
bounding_boxes = annotations["boxes"]
labels = annotations["labels"]

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 и сохранит в ней аннотированное изображение.

Аннотированная базилика с Ultralytics YOLOv5

Сравнение производительности#

С помощью скрипта для тестирования производительности DeepSparse мы сравним пропускную способность DeepSparse и ONNX Runtime на YOLOv5s.

Тесты проводились на инстансе AWS c6i.8xlarge (16 ядер).

Сравнение производительности при размере пакета 32#

Базовый результат 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

Производительность 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

Производительность 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

Сравнение производительности при размере пакета 1#

DeepSparse также может превзойти ONNX Runtime по скорости в сценариях с размером пакета 1, чувствительных к задержке.

Базовый результат 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

Производительность 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 элементов/с с прореженной и квантованной моделью YOLOv5s с блоками по 4 — производительность в 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.

Начни работу с Ultralytics YOLOv5 и DeepSparse#

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

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

Автор

Nuvola Ladi
Nuvola Ladi

Менеджер по цифровому контенту · Ultralytics

Nuvola Ladi — менеджер по цифровому контенту в Ultralytics. Она создает материалы о Vision AI и Ultralytics YOLO, а также представляет компанию на отраслевых мероприятиях, таких как PyTorch Conference 2025. Она живет в Испании и получила степень магистра визуальных и цифровых медиа в IE University. До прихода в Ultralytics она работала в таких организациях, как XVA Gallery & Hotel и Rolex.

Комментарии

Задай вопрос, поделись результатами или помоги кому-нибудь.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

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

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

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

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