X
Ultralytics YOLOv8.2 Phát hànhUltralytics YOLOv8.2 Phát hànhUltralytics YOLOv8.2 Mũi tên thả
Kiểm tra màu xanh lá cây
Liên kết được sao chép vào khay nhớ tạm

Triển khai YOLOv5 Với Neural Magic'DeepSparse cho hiệu suất cấp GPU trên CPU

Empower YOLOv5 Đào tạo & triển khai mô hình với Neural MagicDeepSparse của DeepSparse cho hiệu suất cấp GPU trên CPU. Đạt được nhanh hơn, có thể mở rộng YOLOv5 Triển khai.

Logo FacebookBiểu trưng TwitterBiểu trưng LinkedInBiểu tượng sao chép liên kết

Muốn đẩy nhanh việc đào tạo và triển khai YOLOv5 Mô hình? Chúng tôi luôn sẵn sàng hỗ trợ bạn! Giới thiệu đối tác mới nhất của chúng tôi, Neural Magic. Như Neural Magic Cung cấp các công cụ phần mềm nhấn mạnh hiệu suất mô hình cao nhất và sự đơn giản của quy trình làm việc, điều tự nhiên là chúng tôi đã cùng nhau đưa ra giải pháp để tạo ra YOLOv5 Quá trình triển khai thậm chí còn tốt hơn.

DeepSparse là Neural MagicThời gian chạy suy luận CPU của nó, tận dụng lợi thế của số học thưa thớt và độ chính xác thấp trong các mạng thần kinh để cung cấp hiệu suất vượt trội trên phần cứng hàng hóa. Ví dụ, so với ONNX Đường cơ sở thời gian chạy, DeepSparse cung cấp tốc độ tăng gấp 5,8 lần cho YOLOv5 chạy trên cùng một máy!

YOLOv5 So sánh thông lượng với DeepSparse

Lần đầu tiên, khối lượng công việc deep learning của bạn có thể đáp ứng nhu cầu hiệu năng của sản xuất mà không cần sự phức tạp và chi phí của bộ tăng tốc phần cứng. Nói một cách đơn giản, DeepSparse cung cấp cho bạn hiệu suất của GPU và sự đơn giản của phần mềm:

  1. Triển khai linh hoạt: Chạy nhất quán trên đám mây, trung tâm dữ liệu và biên với bất kỳ nhà cung cấp phần cứng nào
  2. Khả năng mở rộng vô hạn: Mở rộng quy mô với Kubernetes tiêu chuẩn, theo chiều dọc đến 100 lõi hoặc được trừu tượng hóa hoàn toàn với serverless
  3. Tích hợp dễ dàng: Sử dụng các API sạch để tích hợp mô hình của bạn vào một ứng dụng và giám sát nó trong sản xuất

Đạt được hiệu suất cấp GPU trên CPU hàng hóa

DeepSparse tận dụng sự thưa thớt của mô hình để tăng tốc hiệu suất của nó.

Thưa thớt hóa thông qua cắt tỉa và lượng tử hóa cho phép giảm kích thước và tính toán cần thiết để thực thi mạng trong khi vẫn duy trì độ chính xác cao. DeepSparse nhận biết thưa thớt, bỏ qua phép nhân cộng bằng 0 và thu hẹp lượng tính toán trong một đường chuyền về phía trước. Vì tính toán thưa thớt bị ràng buộc bộ nhớ, DeepSparse thực thi độ sâu mạng, chia nhỏ vấn đề thành Tensor Cột, là các sọc tính toán dọc phù hợp với bộ nhớ cache.

DeepSparse và Ultralytics YOLOv5 Mạng lưới

Các mạng thưa thớt với tính toán nén, được thực thi theo chiều sâu trong bộ nhớ cache, cho phép DeepSparse cung cấp hiệu suất cấp GPU trên CPU!

Tạo một phiên bản thưa thớt của YOLOv5 Được đào tạo về dữ liệu tùy chỉnh

Neural MagicKho lưu trữ mô hình mã nguồn mở của SparseZoo, chứa các điểm kiểm tra thưa thớt trước của mỗi YOLOv5 mẫu. Sử dụng SparseML, được tích hợp với Ultralytics, bạn có thể tinh chỉnh một điểm kiểm tra thưa thớt trên dữ liệu của mình bằng một điểm kiểm tra duy nhất CLI lệnh.

Kiểm tra lại Neural Magic's YOLOv5 Tài liệu để biết thêm chi tiết.

Triển khai YOLOv5 Với DeepSparse

Cài đặt DeepSparse

Chạy như sau để cài đặt DeepSparse. Chúng tôi khuyên bạn nên sử dụng môi trường ảo với Python.

pip cài đặt deepsparse[máy chủ,yolo,onnxruntime]

Thu thập một ONNX Tệp

DeepSparse chấp nhận một mô hình trong ONNX định dạng, được thông qua dưới dạng:

  • Một con đường địa phương đến một ONNX mẫu
  • Sơ khai SparseZoo xác định một mô hình trong SparseZoo

Chúng tôi sẽ so sánh YOLOv5 dày đặc tiêu chuẩn với YOLOv5 lượng tử hóa được cắt tỉa, được xác định bởi các sơ khai SparseZoo sau:

Sở thú: CV / Phát hiện /yolov5-s/pytorch/ultralytics/coco/base-none
Sở thú: CV / Phát hiện /yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none

Triển khai mô hình

DeepSparse cung cấp các API thuận tiện để tích hợp mô hình của bạn vào một ứng dụng.

Để thử các ví dụ triển khai bên dưới, hãy kéo xuống một hình ảnh mẫu cho ví dụ và lưu dưới dạng basilica.jpg bằng lệnh sau:

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

Python API

Pipeline bọc tiền xử lý và xử lý hậu kỳ đầu ra trong suốt thời gian chạy, cung cấp giao diện sạch để thêm DeepSparse vào ứng dụng. The DeepSparse-Ultralytics tích hợp bao gồm một Pipeline out-of-the-box chấp nhận hình ảnh thô và xuất ra các hộp giới hạn.

Tạo Pipeline và chạy suy luận:

từ đường ống nhập khẩu thưa thớt

# Danh sách hình ảnh trong hệ thống tệp cục bộ
hình ảnh = ["basilica.jpg"]

# tạo Pipeline
model_stub = "sở thú:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none"
yolo_pipeline = Pipeline.create(
nhiệm vụ = "yolo",
model_path=model_stub,
)

# Chạy suy luận trên hình ảnh, nhận hộp giới hạn + lớp
pipeline_outputs = yolo_pipeline(hình ảnh = hình ảnh, iou_thres = 0,6, conf_thres = 0,001)
in(pipeline_outputs)

Nếu bạn đang chạy trên đám mây, bạn có thể gặp lỗi open-cv không thể tìm thấy libGL.so.1. Chạy phần sau trên Ubuntu sẽ cài đặt nó:

apt-get cài đặt libgl1-mesa-glx

Máy chủ HTTP

DeepSparse Server chạy trên khung web FastAPI phổ biến và máy chủ web Uvicorn. Chỉ với một đĩa đơn CLI lệnh, bạn có thể dễ dàng thiết lập điểm cuối dịch vụ mô hình với DeepSparse. Máy chủ hỗ trợ bất kỳ Pipeline nào từ DeepSparse, bao gồm phát hiện đối tượng với YOLOv5, cho phép bạn gửi ảnh thô đến điểm cuối và nhận các hộp giới hạn.

Quay Máy chủ với YOLOv5s lượng tử hóa được cắt tỉa:

deepsparse.server \
--nhiệm vụ yolo \
--model_path sở thú: CV / phát hiện /yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none

Một yêu cầu ví dụ, sử dụng PythonGói yêu cầu:

import requests, JSON

# danh sách hình ảnh để suy luận (tệp cục bộ ở phía máy khách)
đường dẫn = ['basilica.jpg']
files = [('request', open(img, 'rb')) cho img trong đường dẫn]

# gửi yêu cầu qua HTTP đến điểm cuối /predict/from_files
URL = 'http://0.0.0.0:5543/predict/from_files'
resp = requests.post (url = url, tệp = tệp)

# response được trả về trong JSON
Chú thích = json.loads(resp.text) # Từ điển kết quả chú thích
bounding_boxes = chú thích["hộp"]
labels = chú thích["labels"]

Chú thích CLI

Bạn cũng có thể sử dụng lệnh annotate để công cụ lưu ảnh có chú thích trên đĩa. Hãy thử --source 0 để chú thích nguồn cấp dữ liệu webcam trực tiếp của bạn!

deepsparse.object_detection.chú thích --model_filepath sở thú:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none --nguồn basilica.jpg

Chạy lệnh trên sẽ tạo một thư mục annotation-results và lưu hình ảnh được chú thích vào bên trong.

Chú thích Basilica với YOLOv5

Hiệu suất điểm chuẩn

Sử dụng tập lệnh đo điểm chuẩn của DeepSparse, chúng ta sẽ so sánh thông lượng của DeepSparse với ONNX Thông lượng thời gian chạy trên YOLOv5s.

Điểm chuẩn được chạy trên phiên bản AWS c6i.8xlarge (16 lõi).

So sánh hiệu suất Batch 32

ONNX Đường cơ sở thời gian chạy

Tại đợt 32, ONNX Thời gian chạy đạt được 42 hình ảnh / giây với YOLOv5s dày đặc tiêu chuẩn:

deepsparse.benchmark sở thú: cv / phát hiện /yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1 -e onnxruntime

> Đường dẫn mô hình ban đầu: zoo: cv / detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Kích thước lô: 32
> Kịch bản: đồng bộ hóa
> Thông lượng (mục/giây): 41,9025

Hiệu suất dày đặc DeepSparse

Mặc dù DeepSparse cung cấp hiệu suất tốt nhất với các mô hình thưa thớt được tối ưu hóa, nhưng nó cũng hoạt động tốt với YOLOv5 dày đặc tiêu chuẩn.

Ở lô 32, DeepSparse đạt được 70 hình ảnh / giây với YOLOv5s dày đặc tiêu chuẩn — cải thiện hiệu suất gấp 1,7 lần so với ORT!

deepsparse.benchmark sở thú: cv / phát hiện /yolov5-s/pytorch/ultralytics/coco/base-none -s đồng bộ hóa -b 32 -nstreams 1

> Đường dẫn mô hình ban đầu: zoo: cv / detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Kích thước lô: 32
> Kịch bản: đồng bộ hóa
> Thông lượng (mục/giây): 69,5546

Hiệu suất thưa thớt DeepSparse

Khi sự thưa thớt được áp dụng cho mô hình, hiệu suất của DeepSparse sẽ tăng lên ONNX Thời gian chạy thậm chí còn mạnh hơn.

Ở lô 32, DeepSparse đạt được 241 hình ảnh / giây với YOLOv5s lượng tử hóa được cắt tỉa — cải thiện hiệu suất gấp 5,8 lần so với ORT!

deepsparse.benchmark sở thú: cv / phát hiện /yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s đồng bộ hóa -b 32 -nstreams 1

> Đường dẫn mô hình ban đầu: zoo: cv / detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none
> Kích thước lô: 32
> Kịch bản: đồng bộ hóa
> Thông lượng (mục/giây): 241,2452

So sánh hiệu suất đợt 1

DeepSparse cũng có thể tăng tốc ONNX Thời gian chạy cho kịch bản lô 1, nhạy cảm với độ trễ.

ONNX Đường cơ sở thời gian chạy

Ở đợt 1, ONNX Thời gian chạy đạt được 48 hình ảnh / giây với YOLOv5s tiêu chuẩn, dày đặc.

deepsparse.benchmark sở thú: cv / phát hiện /yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 1 -nstreams 1 -e onnxruntime

> Đường dẫn mô hình ban đầu: zoo: cv / detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Kích thước lô: 1
> Kịch bản: đồng bộ hóa
> Thông lượng (mục/giây): 48,0921

Hiệu suất thưa thớt DeepSparse

Khi sự thưa thớt được áp dụng cho mô hình, hiệu suất của DeepSparse sẽ tăng lên ONNX Thời gian chạy thậm chí còn mạnh hơn.

Ở đợt 1, DeepSparse đạt được 135 hình ảnh / giây với YOLOv5s lượng tử hóa được cắt tỉa—Cải thiện hiệu suất gấp 2,8 lần so với ONNX Runtime!

deepsparse.benchmark sở thú: cv / phát hiện /yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s đồng bộ hóa -b 32 -nstreams 1

> Đường dẫn mô hình ban đầu: zoo: cv / detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none
> Kích thước lô: 1
> Kịch bản: đồng bộ hóa
> Thông lượng (mục/giây): 134,9468

Vì các phiên bản c6i.8xlarge có lệnh VNNI, thông lượng của DeepSparse có thể được đẩy xa hơn nếu trọng số được cắt tỉa theo khối 4.

Ở đợt 1, DeepSparse đạt được 180 vật phẩm / giây với YOLOv5s được cắt tỉa 4 khối—Tăng hiệu suất gấp 3,7 lần ONNX Runtime!

deepsparse.benchmark sở thú: cv / phát hiện /yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni -s sync -b 1 -nstreams 1

> Đường dẫn mô hình ban đầu: zoo: cv / detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni
> Kích thước lô: 1
> Kịch bản: đồng bộ hóa
> Thông lượng (mục/giây): 179,7375

Và thì đấy! Bạn đã sẵn sàng Tối ưu hóa YOLOv5 triển khai với DeepSparse.

Bắt đầu với YOLOv5 và DeepSparse

Để liên lạc với chúng tôi, hãy tham gia cộng đồng của chúng tôi và để lại cho chúng tôi câu hỏi và nhận xét của bạn. Kiểm tra các Ultralytics YOLOv5 kho lưu trữ và đầy đủ Neural Magic Tài liệu để triển khai YOLOv5.

Tại Ultralytics, chúng tôi hợp tác thương mại với các công ty khởi nghiệp khác để giúp chúng tôi tài trợ cho việc nghiên cứu và phát triển các công cụ nguồn mở tuyệt vời của chúng tôi, như YOLOv5, để giữ chúng miễn phí cho tất cả mọi người. Bài viết này có thể chứa các liên kết liên kết đến các đối tác đó.

Hãy xây dựng tương lai
của AI cùng nhau!

Bắt đầu hành trình của bạn với tương lai của machine learning

Đọc thêm trong danh mục này