Bằng cách nhấp vào “Chấp nhận tất cả Cookie”, bạn đồng ý với việc lưu trữ cookie trên thiết bị của mình để tăng cường khả năng điều hướng trang web, phân tích việc sử dụng trang web và hỗ trợ các nỗ lực tiếp thị của chúng tôi. Thêm thông tin
Cài đặt Cookie
Bằng cách nhấp vào “Chấp nhận tất cả Cookie”, bạn đồng ý với việc lưu trữ cookie trên thiết bị của mình để tăng cường khả năng điều hướng trang web, phân tích việc sử dụng trang web và hỗ trợ các nỗ lực tiếp thị của chúng tôi. Thêm thông tin
Tăng cường huấn luyện & triển khai mô hình Ultralytics YOLOv5 với DeepSparse của Neural Magic để có hiệu suất cấp GPU trên CPU. Đạt được khả năng triển khai YOLOv5 nhanh hơn, có thể mở rộng.
Bạn muốn tăng tốc quá trình huấn luyện và triển khai các mô hình YOLOv5 của mình? Chúng tôi sẽ hỗ trợ bạn! Xin giới thiệu đối tác mới nhất của chúng tôi, Neural Magic. Vì 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, nên việc chúng tôi hợp tác để cung cấp một giải pháp giúp quy trình triển khai YOLOv5 trở nên tốt hơn nữa là điều đương nhiên.
DeepSparse là runtime suy luận CPU của Neural Magic, tận dụng lợi thế của tính thưa thớt (sparsity) và số học độ chính xác thấp trong mạng nơ-ron để mang lại hiệu suất vượt trội trên phần cứng thông thường. Ví dụ: so với baseline ONNX Runtime, DeepSparse cung cấp khả năng tăng tốc 5,8 lần cho YOLOv5s chạy trên cùng một máy!
Lần đầu tiên, khối lượng công việc học sâu của bạn có thể đáp ứng nhu cầu hiệu suất của sản xuất mà không gặp 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 mang lại cho bạn hiệu suất của GPU và sự đơn giản của phần mềm:
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
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 hàng trăm lõi hoặc được trừu tượng hóa hoàn toàn với serverless
Dễ dàng tích hợp: Sử dụng các API rõ ràng để 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 quá trình sản xuất.
Đạt được Hiệu suất Cấp GPU trên CPU Thông thường
DeepSparse tận dụng tính thưa thớt của mô hình để đạt được tốc độ hiệu suất.
Việc làm thưa thông qua tỉa bớt và lượng tử hóa cho phép giảm đáng kể về kích thước và tính toán cần thiết để thực thi một mạng trong khi vẫn duy trì độ chính xác cao. DeepSparse nhận biết được độ thưa thớt, bỏ qua các phép nhân-cộng bằng không và giảm lượng tính toán trong một lượt truyền xuôi. Vì tính toán thưa thớt bị giới hạn bởi bộ nhớ, DeepSparse thực thi mạng theo chiều sâu, chia nhỏ vấn đề thành các Cột Tensor, là các dải tính toán dọc phù hợp với bộ nhớ cache.
Mạng lưới 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 mang lại hiệu suất cấp GPU trên CPU!
Tạo phiên bản thưa thớt của YOLOv5 được huấn luyện trên dữ liệu tùy chỉnh
Kho lưu trữ mô hình mã nguồn mở SparseZoo của Neural Magic chứa các điểm kiểm tra đã được làm thưa trước của mỗi mô hình YOLOv5. 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 trên dữ liệu của mình bằng một lệnh CLI duy nhất.
Triển khai YOLOv5 với DeepSparse
Cài đặt DeepSparse
Chạy lệ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 install deepsparse[server,yolo,onnxruntime]
Thu thập Tệp ONNX
DeepSparse chấp nhận mô hình ở định dạng ONNX, được truyền dưới dạng:
Một đường dẫn cục bộ đến một mô hình ONNX
Một stub SparseZoo xác định một mô hình trong SparseZoo
Chúng tôi sẽ so sánh YOLOv5s dày đặc tiêu chuẩn với YOLOv5s được tỉa-lượng tử hóa, được xác định bởi các stub SparseZoo sau:
Pipelines bao bọc quá trình tiền xử lý và hậu xử lý đầu ra xung quanh thời gian chạy, cung cấp một giao diện rõ ràng để thêm DeepSparse vào một ứng dụng. Tích hợp DeepSparse-Ultralytics bao gồm một Pipeline có sẵn, 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:
from deepsparse import Pipeline
# danh sách hình ảnh trong hệ thống tệp cục bộ images = ["basilica.jpg"]
# chạy suy luận trên hình ảnh, nhận bounding box + các lớp pipeline_outputs = yolo_pipeline(images=images, iou_thres=0.6, conf_thres=0.001) print(pipeline_outputs)
Nếu bạn đang chạy trên cloud, bạn có thể gặp lỗi open-cv không tìm thấy libGL.so.1. Chạy lệnh sau trên Ubuntu sẽ cài đặt nó:
apt-get install libgl1-mesa-glx
Máy chủ HTTP
DeepSparse Server chạy trên nền tảng web framework FastAPI phổ biến và máy chủ web Uvicorn. Chỉ với một lệnh CLI duy nhất, bạn có thể dễ dàng thiết lập một điểm cuối dịch vụ mô hình với DeepSparse. Server hỗ trợ mọi Pipeline từ DeepSparse, bao gồm cả phát hiện đối tượng với YOLOv5, cho phép bạn gửi hình ảnh thô đến điểm cuối và nhận các bounding box.
Khởi động máy chủ với YOLOv5s đã được tỉa và lượng tử hóa:
Một yêu cầu ví dụ, sử dụng gói requests của Python:
import requests, json
# danh sách hình ảnh để suy luận (các tệp cục bộ ở phía máy khách) path = ['basilica.jpg'] files = [('request', open(img, 'rb')) for img in path]
# gửi yêu cầu qua HTTP đến endpoint /predict/from_files url = 'http://0.0.0.0:5543/predict/from_files' resp = requests.post(url=url, files=files)
# phản hồi được trả về ở định dạng JSON annotations = json.loads(resp.text) # từ điển các kết quả chú thích bounding_boxes = annotations["boxes"] labels = annotations["labels"]
Annotate CLI
Bạn cũng có thể sử dụng lệnh annotate để engine lưu ảnh đã được chú thích trên ổ cứng. Hãy thử --source 0 để chú thích trực tiếp từ webcam của bạn!
> Đường dẫn mô hình gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none > Kích thước lô: 32 > Tình huống: đồng bộ > Thông lượng (items/giây): 41.9025
Hiệu suất dày đặc của DeepSparse
Mặc dù DeepSparse mang lại hiệu suất tốt nhất với các mô hình sparse được tối ưu hóa, nhưng nó cũng hoạt động tốt với YOLOv5s dense tiêu chuẩn.
Ở batch 32, DeepSparse đạt được 70 ả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!
> Đường dẫn mô hình gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none > Kích thước lô: 32 > Tình huống: đồng bộ > Thông lượng (items/giây): 69.5546
Hiệu suất thưa thớt của DeepSparse
Khi độ thưa được áp dụng cho mô hình, hiệu suất của DeepSparse so với ONNX Runtime thậm chí còn mạnh hơn.
Ở batch 32, DeepSparse đạt được 241 ảnh/giây với YOLOv5s đã được tỉa-lượng tử hóa—cải thiện hiệu suất gấp 5,8 lần so với ORT!
> Đường dẫn mô hình gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none > Kích thước lô: 32 > Tình huống: đồng bộ > Thông lượng (items/giây): 241.2452
So sánh hiệu suất Batch 1
DeepSparse cũng có thể tăng tốc so với ONNX Runtime cho trường hợp độ trễ nhạy cảm, batch 1.
ONNX Runtime Baseline
Ở batch 1, ONNX Runtime đạt được 48 ảnh/giây với YOLOv5s tiêu chuẩn, dày đặc.
> Đường dẫn mô hình gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none > Kích thước lô: 1 > Tình huống: đồng bộ > Thông lượng (items/giây): 48.0921
Hiệu suất thưa thớt của DeepSparse
Khi độ thưa được áp dụng cho mô hình, hiệu suất của DeepSparse so với ONNX Runtime thậm chí còn mạnh hơn.
Ở batch 1, DeepSparse đạt được 135 ảnh/giây với YOLOv5s đã được tỉa-lượng tử hóa—cải thiện hiệu suất gấp 2,8 lần so với ONNX Runtime!
> Đường dẫn mô hình gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none > Kích thước lô: 1 > Tình huống: đồng bộ > Thông lượng (items/giây): 134.9468
Vì các phiên bản c6i.8xlarge có các chỉ lệnh VNNI, thông lượng của DeepSparse có thể được đẩy mạnh hơn nữa nếu trọng số được tỉa theo các khối 4.
Ở batch 1, DeepSparse đạt được 180 mục/giây với YOLOv5s đã được tỉa-lượng tử hóa 4 khối—mức tăng hiệu suất gấp 3,7 lần so với ONNX Runtime!
> Đường dẫn mô hình gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni > Kích thước lô: 1 > Tình huống: đồng bộ > Thông lượng (items/giây): 179.7375
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 nghiên cứu và phát triển các công cụ mã nguồn mở tuyệt vời của chúng tôi, như YOLOv5, để giữ cho 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 đó.