Нажав кнопку "Принять все файлы cookie", вы соглашаетесь с сохранением файлов cookie на вашем устройстве для улучшения навигации по сайту, анализа его использования и помощи в наших маркетинговых усилиях. Дополнительная информация
Настройки файлов cookie
Нажав кнопку "Принять все файлы cookie", вы соглашаетесь с сохранением файлов cookie на вашем устройстве для улучшения навигации по сайту, анализа его использования и помощи в наших маркетинговых усилиях. Дополнительная информация
Расширьте возможности обучения и развертывания моделей Ultralytics YOLOv5 с помощью DeepSparse от Neural Magic для производительности класса GPU на центральных процессорах. Более быстрое и масштабируемое развертывание YOLOv5.
Хотите ускорить процесс обучения и внедрения моделей YOLOv5? Мы поможем вам! Представляем вам нашего нового партнера, компанию Neural Magic. Поскольку Neural Magic предоставляет программные инструменты, в которых особое внимание уделяется максимальной производительности моделей и простоте рабочего процесса, вполне естественно, что мы объединились, чтобы предложить решение, которое сделает процесс развертывания YOLOv5 еще лучше.
DeepSparse - это процессорная среда выполнения выводов Neural Magic, которая использует преимущества разреженности и низкоточной арифметики в нейронных сетях для обеспечения исключительной производительности на аппаратном обеспечении. Например, по сравнению с базовой версией ONNX Runtime, DeepSparse обеспечивает 5,8-кратное ускорение для YOLOv5s, работающих на той же машине!
Впервые ваши рабочие нагрузки глубокого обучения могут соответствовать требованиям производительности в производстве без сложностей и затрат на аппаратные ускорители. Проще говоря, DeepSparse обеспечивает производительность GPU и простоту программного обеспечения:
Гибкость развертывания: Последовательная работа в облаке, центре обработки данных и на границе с любым поставщиком оборудования
Бесконечная масштабируемость: Масштабирование с помощью стандартного Kubernetes, вертикальное масштабирование до 100 тысяч ядер или полная абстракция с помощью бессерверных технологий.
Простая интеграция: Используйте чистые API для интеграции вашей модели в приложение и ее мониторинга в производстве
Достигайте производительности класса GPU на центральных процессорах.
DeepSparse использует преимущества разреженности модели для ускорения работы.
Разрежение с помощью обрезки и квантования позволяет на порядок сократить размер и количество вычислений, необходимых для выполнения сети, при сохранении высокой точности. DeepSparse ориентируется на разреженность, пропуская умножение-добавление на ноль и сокращая объем вычислений в прямом проходе. Поскольку разреженные вычисления занимают много памяти, DeepSparse выполняет сеть в глубину, разбивая задачу на тензорные столбцы, которые представляют собой вертикальные полосы вычислений, помещающиеся в кэш.
Разреженные сети со сжатыми вычислениями, выполняемые в кэше по глубине, позволяют DeepSparse обеспечить производительность класса GPU на CPU!
Создание разреженной версии YOLOv5, обученной на пользовательских данных
Репозиторий моделей Neural Magic с открытым исходным кодом, SparseZoo, содержит предварительно спарсированные контрольные точки каждой модели YOLOv5. Используя SparseML, интегрированный с Ultralytics, вы можете точно настроить разреженную контрольную точку на ваши данные с помощью одной команды CLI.
Развертывание YOLOv5 с помощью DeepSparse
Установите DeepSparse
Выполните следующие действия, чтобы установить DeepSparse. Мы рекомендуем использовать виртуальную среду с Python.
pip install deepsparse[server,yolo,onnxruntime]
Соберите файл ONNX
DeepSparse принимает модель в формате ONNX, переданную либо как:
Локальный путь к модели ONNX
Заглушка SparseZoo, которая идентифицирует модель в SparseZoo
Мы сравним стандартные плотные YOLOv5 с обрезанными квантованными YOLOv5, обозначенными следующими шлейфами SparseZoo:
DeepSparse предлагает удобные API для интеграции вашей модели в приложение.
Чтобы опробовать приведенные ниже примеры развертывания, извлеките изображение для примера и сохраните его как basilica.jpg с помощью следующей команды:
Конвейеры оборачивают предварительную обработку и выходную постобработку вокруг среды выполнения, обеспечивая чистый интерфейс для добавления DeepSparse в приложение. Интеграция DeepSparse-Ultralytics включает в себя готовый конвейер, который принимает необработанные изображения и выводит ограничительные рамки.
Создайте конвейер и запустите вывод:
из deepsparse import Pipeline
# список изображений в локальной файловой системе images = ["basilica.jpg"]
Если вы работаете в облаке, вы можете получить ошибку, что open-cv не может найти libGL.so.1. Выполнение следующей команды на Ubuntu устанавливает его:
apt-get install libgl1-mesa-glx
HTTP-сервер
DeepSparse Server работает на базе популярного веб-фреймворка FastAPI и веб-сервера Uvicorn. С помощью всего одной команды CLI вы можете легко настроить конечную точку сервиса моделирования с DeepSparse. Сервер поддерживает любые конвейеры DeepSparse, включая обнаружение объектов с помощью YOLOv5, позволяя отправлять необработанные изображения на конечную точку и получать ограничивающие рамки.
Раскрутите сервер с обрезанными квантованными YOLOv5s:
Пример запроса с использованием пакета requests в Python:
импорт запросов, 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"]
Annotate CLI
Вы также можете использовать команду annotate, чтобы движок сохранил аннотированную фотографию на диск. Попробуйте использовать команду --source 0 для аннотирования прямой трансляции с веб-камеры!
> Путь к исходной модели: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none > Размер партии: 32 > Сценарий: sync > Пропускная способность (элементов/сек): 41.9025
Производительность DeepSparse Dense
Хотя DeepSparse демонстрирует наилучшие результаты при работе с оптимизированными разреженными моделями, он также хорошо справляется со стандартными плотными моделями YOLOv5.
При партии 32 DeepSparse достигает 70 изображений/с со стандартной плотностью YOLOv5, чтов 1,7 раза превышает производительность ORT!
> Путь к исходной модели: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none > Размер партии: 32 > Сценарий: sync > Пропускная способность (элементов/сек): 69.5546
Производительность DeepSparse Sparse
Когда к модели применяется разреженность, прирост производительности DeepSparse по сравнению с ONNX Runtime становится еще более значительным.
В партии 32 DeepSparse достигает скорости 241 изображение/с с обрезанным и квантованным YOLOv5, чтов 5,8 раза выше, чем у ORT!
> Путь к исходной модели: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none > Размер партии: 32 > Сценарий: sync > Пропускная способность (элементов/сек): 241.2452
Сравнение производительности партии 1
DeepSparse также способен увеличить скорость по сравнению с ONNX Runtime для сценария пакетной обработки 1, чувствительного к задержкам.
Базовый уровень времени выполнения ONNX
В партии 1 ONNX Runtime достигает 48 изображений в секунду со стандартными плотными YOLOv5s.
> Путь к исходной модели: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none > Размер партии: 1 > Сценарий: sync > Пропускная способность (элементов/сек): 48.0921
Производительность DeepSparse Sparse
Когда к модели применяется разреженность, прирост производительности DeepSparse по сравнению с ONNX Runtime становится еще более значительным.
В партии 1 DeepSparse достигает скорости 135 изображений/с с обрезанным и квантованным YOLOv5, чтов 2,8 раза превышает производительность ONNX Runtime!
> Путь к исходной модели: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none > Размер партии: 1 > Сценарий: sync > Пропускная способность (элементов/сек): 134.9468
Поскольку экземпляры c6i.8xlarge имеют инструкции VNNI, пропускная способность DeepSparse может быть увеличена, если веса обрезаются блоками по 4.
В партии 1 DeepSparse достигает 180 элементов/с с 4-блочным обрезанно-квантованным YOLOv5 -прирост производительности в 3,7 раза по сравнению с ONNX Runtime!
> Путь к исходной модели: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni > Размер партии: 1 > Сценарий: sync > Пропускная способность (элементов/сек): 179.7375
В Ultralytics мы на коммерческой основе сотрудничаем с другими стартапами, которые помогают нам финансировать исследования и разработку наших замечательных инструментов с открытым исходным кодом, таких как YOLOv5, чтобы они оставались бесплатными для всех. Эта статья может содержать партнерские ссылки на этих партнеров.