Neural Magic의 DeepSparse를 통해 Ultralytics YOLOv5 모델 학습 및 배포를 강화하여 CPU에서 GPU급 성능을 구현하십시오. 더 빠르고 확장 가능한 YOLOv5 배포를 달성하십시오.

Neural Magic의 DeepSparse를 통해 Ultralytics YOLOv5 모델 학습 및 배포를 강화하여 CPU에서 GPU급 성능을 구현하십시오. 더 빠르고 확장 가능한 YOLOv5 배포를 달성하십시오.

YOLOv5 모델의 학습 및 배포를 가속화하고 싶으십니까? Neural Magic과의 새로운 파트너십을 소개합니다. Neural Magic은 최고의 모델 성능과 워크플로 단순성을 강조하는 소프트웨어 도구를 제공하므로 YOLOv5 배포 프로세스를 더욱 개선하기 위한 솔루션을 함께 제공하는 것은 당연한 수순입니다.
DeepSparse는 Neural Magic의 CPU 추론 런타임으로, 신경망 내에서 희소성과 저정밀 연산을 활용하여 일반 하드웨어에서 뛰어난 성능을 제공합니다. 예를 들어, ONNX 런타임 기준선과 비교하여 DeepSparse는 동일한 시스템에서 실행되는 YOLOv5s에 대해 5.8배의 속도 향상을 제공합니다!

이제 하드웨어 가속기의 복잡성과 비용 없이 딥 러닝 워크로드가 프로덕션의 성능 요구 사항을 충족할 수 있습니다. 간단히 말해서 DeepSparse는 GPU의 성능과 소프트웨어의 단순성을 제공합니다.
DeepSparse는 모델 희소성을 활용하여 성능 향상을 얻습니다.
가지치기 및 양자화를 통한 희소화는 높은 정확도를 유지하면서 네트워크를 실행하는 데 필요한 크기와 계산량을 획기적으로 줄여줍니다. DeepSparse는 희소성을 인식하여 0으로 곱하기-더하기를 건너뛰고 순방향 패스에서 계산량을 줄입니다. 희소 계산은 메모리 바운드이므로 DeepSparse는 네트워크를 깊이별로 실행하여 문제를 캐시에 맞는 계산의 수직 스트라이프인 텐서 열로 나눕니다.

압축된 계산을 사용하는 희소 네트워크는 캐시에서 깊이별로 실행되어 DeepSparse가 CPU에서 GPU급 성능을 제공할 수 있습니다!
Neural Magic의 오픈 소스 모델 저장소인 SparseZoo에는 각 YOLOv5 모델의 사전 희소화된 체크포인트가 포함되어 있습니다. Ultralytics와 통합된 SparseML을 사용하면 단일 CLI 명령으로 희소 체크포인트를 데이터에 미세 조정할 수 있습니다.
DeepSparse를 설치하려면 다음을 실행하십시오. Python 가상 환경을 사용하는 것이 좋습니다.
pip install deepsparse[server,yolo,onnxruntime]
DeepSparse는 ONNX 형식의 모델을 다음 중 하나로 전달받습니다.
다음 SparseZoo 스텁으로 식별되는 표준 Dense YOLOv5s와 Pruned-Quantized YOLOv5s를 비교합니다.
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
파이프라인은 런타임 전후 처리 과정을 래핑하여 DeepSparse를 애플리케이션에 추가하기 위한 깔끔한 인터페이스를 제공합니다. DeepSparse-Ultralytics 통합에는 원시 이미지를 허용하고 경계 상자를 출력하는 즉시 사용 가능한 파이프라인이 포함되어 있습니다.
파이프라인을 생성하고 추론을 실행합니다.
from deepsparse import Pipeline
# 로컬 파일 시스템의 이미지 목록
images = ["basilica.jpg"]
# 파이프라인 생성
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)
클라우드에서 실행하는 경우 open-cv에서 libGL.so.1을 찾을 수 없다는 오류가 발생할 수 있습니다. Ubuntu에서 다음을 실행하면 설치됩니다.
apt-get install libgl1-mesa-glx
DeepSparse 서버는 널리 사용되는 FastAPI 웹 프레임워크 및 Uvicorn 웹 서버를 기반으로 실행됩니다. 단 하나의 CLI 명령으로 DeepSparse를 사용하여 모델 서비스 엔드포인트를 쉽게 설정할 수 있습니다. 이 서버는 YOLOv5를 사용한 객체 감지를 포함하여 DeepSparse의 모든 파이프라인을 지원하므로, 엔드포인트로 원시 이미지를 보내 바운딩 박스를 받을 수 있습니다.
가지치기 및 양자화된 YOLOv5s로 서버를 시작합니다:
deepsparse.server \
--task yolo \
--model_path zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none
Python의 requests 패키지를 사용한 요청 예시:
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"]
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 폴더가 생성되고 어노테이션이 추가된 이미지가 그 안에 저장됩니다.

DeepSparse의 벤치마킹 스크립트를 사용하여 DeepSparse의 처리량을 YOLOv5s에서 ONNX Runtime의 처리량과 비교합니다.
벤치마크는 AWS c6i.8xlarge 인스턴스(16 코어)에서 실행되었습니다.
배치 크기 32에서 ONNX Runtime은 표준 Dense YOLOv5s로 42 images/sec를 달성합니다.
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1 -e onnxruntime
> Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Batch Size: 32
> Scenario: sync
> Throughput (items/sec): 41.9025
DeepSparse는 최적화된 희소 모델에서 최고의 성능을 제공하지만, 표준 Dense YOLOv5s에서도 뛰어난 성능을 보입니다.
배치 크기 32에서 DeepSparse는 표준 Dense YOLOv5s로 70 images/sec를 달성합니다. 이는 ORT보다 1.7배 향상된 성능입니다!
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
> 처리량 (items/sec): 69.5546
모델에 희소성이 적용되면 ONNX Runtime 대비 DeepSparse의 성능 향상은 훨씬 더 두드러집니다.
배치 크기 32에서 DeepSparse는 가지치기 및 양자화된 YOLOv5s로 초당 241개의 이미지를 처리하며, 이는 ORT 대비 5.8배 향상된 성능입니다!
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
> 처리량 (items/sec): 241.2452
DeepSparse는 지연 시간에 민감한 배치 1 시나리오에서도 ONNX Runtime 대비 속도 향상을 얻을 수 있습니다.
배치 크기 1에서 ONNX Runtime은 표준 밀집 YOLOv5s로 초당 48개의 이미지를 처리합니다.
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
> 처리량 (items/sec): 48.0921
모델에 희소성이 적용되면 ONNX Runtime 대비 DeepSparse의 성능 향상은 훨씬 더 두드러집니다.
배치 크기 1에서 DeepSparse는 가지치기 및 양자화된 YOLOv5s로 초당 135개의 이미지를 처리하며, 이는 ONNX Runtime 대비 2.8배 향상된 성능입니다!
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
> 배치 크기: 1
> 시나리오: sync
> 처리량 (items/sec): 134.9468
c6i.8xlarge 인스턴스에는 VNNI 명령어가 있으므로, 가중치가 4개 블록으로 가지치기되면 DeepSparse의 처리량을 더욱 늘릴 수 있습니다.
배치 크기 1에서 DeepSparse는 4-블록 가지치기 및 양자화된 YOLOv5s로 초당 180개의 항목을 처리하며, 이는 ONNX Runtime 대비 3.7배 향상된 성능입니다!
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
> 처리량 (items/sec): 179.7375
자, 이제 DeepSparse를 사용하여 YOLOv5 배포를 최적화할 준비가 되었습니다.
문의 사항이 있으시면 커뮤니티에 참여하여 질문과 의견을 남겨주세요. Ultralytics YOLOv5 저장소와 YOLOv5 배포에 대한 전체 Neural Magic 문서를 확인해 보세요.
Ultralytics는 YOLOv5와 같은 멋진 오픈 소스 도구를 모든 사람이 무료로 사용할 수 있도록 연구 개발 자금을 지원하기 위해 다른 스타트업과 상업적으로 협력합니다. 이 기사에는 해당 파트너에 대한 제휴 링크가 포함될 수 있습니다.