YOLO Vision 2026:
Tích hợp

Triển khai Ultralytics YOLOv5 với DeepSparse của Neural Magic để đạt hiệu suất cấp GPU trên CPU

Nâng cao hiệu suất đào tạo & triển khai mô hình YOLOv5 của Ultralytics với DeepSparse của Neural Magic để đạt hiệu suất cấp GPU trên CPU. Đạt được triển khai YOLOv5 nhanh hơn và có khả năng mở rộng.

NUNuvola Ladi5 min read
Triển khai Ultralytics YOLOv5 với DeepSparse của Neural Magic trên CPU

Bạn muốn tăng tốc quá trình huấn luyện và triển khai các model YOLOv5 của mình? Chúng tôi có giải pháp dành cho 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 đề cao hiệu suất model tối ưu và sự đơn giản trong quy trình làm việc, việc chúng tôi hợp tác cùng nhau để cung cấp giải pháp làm cho quá trình triển khai YOLOv5 trở nên tuyệt vời hơn nữa là điều hiển nhiên.

DeepSparse là runtime suy luận trên CPU của Neural Magic, tận dụng tính thưa (sparsity) và phép toán độ chính xác thấp bên trong các neural network để mang lại hiệu suất vượt trội trên phần cứng thông thường. Chẳng hạn, so với ONNX Runtime cơ sở, DeepSparse mang lại tốc độ nhanh hơn 5.8 lần đối với YOLOv5s chạy trên cùng một máy!

So sánh thông lượng của Ultralytics YOLOv5 với DeepSparse

Lần đầu tiên, các workload deep learning của bạn có thể đáp ứng các yêu cầu về hiệu năng trong production mà không cần đến sự phức tạp và chi phí của các bộ tăng tốc phần cứng. Đơn giản mà nói, DeepSparse mang lại cho bạn hiệu năng của GPU cùng 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 cloud, trung tâm dữ liệu và thiết bị 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 ra ngoài với Kubernetes tiêu chuẩn, theo chiều dọc lên tới hàng trăm 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 gọn gàng để tích hợp mô hình vào ứng dụng và giám sát nó trong môi trường production.

Đạt hiệu năng cấp GPU trên CPU thông thường#

DeepSparse tận dụng tính thưa của mô hình để đạt được sự tăng tốc hiệu năng.

Việc làm thưa hóa (sparsification) thông qua tỉa (pruning) và lượng tử hóa (quantization) cho phép giảm đáng kể quy mô và khối lượng tính toán cần thiết để thực thi một mạng thần kinh trong khi vẫn duy trì độ chính xác cao. DeepSparse nhận biết được tính thưa, bỏ qua các phép nhân-cộng với số không và giảm khối lượng tính toán trong một lần truyền xuôi (forward pass). Vì tính toán thưa 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 Tensor Columns, là các dải tính toán dọc vừa vặn trong bộ nhớ đệm (cache).

DeepSparse and Ultralytics YOLOv5 Network

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

Tạo phiên bản thưa (Sparse) của Ultralytics 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ở của Neural Magic, SparseZoo, chứa các checkpoint đã được thưa hóa sẵn của mỗi mô hình YOLOv5. Sử dụng SparseML, vốn được tích hợp với Ultralytics, bạn có thể tinh chỉnh (fine-tune) một checkpoint thưa trên dữ liệu của mình bằng một lệnh CLI duy nhất.

Triển khai Ultralytics 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 (virtual environment) 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:

  • Đường dẫn cục bộ đến mô hình ONNX
  • Một SparseZoo stub định danh mô hình trong SparseZoo

Chúng ta sẽ so sánh YOLOv5s dày (dense) tiêu chuẩn với YOLOv5s đã được tỉa và lượng tử hóa, được định danh bởi các SparseZoo stub sau:

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

Triển khai mô hình#

DeepSparse cung cấp các API tiện lợi để 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 tải xuống một ảnh mẫu cho ví dụ và lưu thành 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#

Các Pipeline bao bọc quá trình tiền xử lý và hậu xử lý đầu ra xung quanh runtime, cung cấp một giao diện gọn gàng để thêm DeepSparse vào ứng dụng. Tích hợp DeepSparse-Ultralytics bao gồm một Pipeline có sẵn (out-of-the-box) chấp nhận ảnh thô và xuất ra các bounding box.

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

from deepsparse import Pipeline

# list of images in local filesystem
images = ["basilica.jpg"]

# create Pipeline
model_stub = "zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none"
yolo_pipeline = Pipeline.create(
    task="yolo",
    model_path=model_stub,
)

# run inference on images, receive bounding boxes + classes
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 để cài đặt nó:

apt-get install libgl1-mesa-glx

HTTP Server#

DeepSparse Server chạy trên nền tảng web framework phổ biến FastAPI và web server Uvicorn. Chỉ với một câu lệnh CLI duy nhất, bạn có thể dễ dàng thiết lập một endpoint dịch vụ mô hình với DeepSparse. Server hỗ trợ bất kỳ Pipeline nào từ DeepSparse, bao gồm phát hiện đối tượng với Ultralytics YOLOv5, cho phép bạn gửi các hình ảnh thô đến endpoint và nhận lại các bounding box.

Khởi chạy Server với YOLOv5s đã được tỉa và lượng tử hóa:

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

Một ví dụ yêu cầu, sử dụng gói requests của Python:

import requests, json

# list of images for inference (local files on client side)
path = ['basilica.jpg']
files = [('request', open(img, 'rb')) for img in path]

# send request over HTTP to /predict/from_files endpoint
url = 'http://0.0.0.0:5543/predict/from_files'
resp = requests.post(url=url, files=files)

# response is returned in JSON
annotations = json.loads(resp.text)  # dictionary of annotation results
bounding_boxes = annotations["boxes"]
labels = annotations["labels"]

Annotate CLI#

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

deepsparse.object_detection.annotate --model_filepath zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none --source basilica.jpg

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

Basilica được chú thích bằng Ultralytics YOLOv5

Benchmark hiệu năng#

Sử dụng tập lệnh benchmark của DeepSparse, chúng ta sẽ so sánh thông lượng của DeepSparse với thông lượng của ONNX Runtime trên YOLOv5s.

Các benchmark được chạy trên một instance AWS c6i.8xlarge (16 lõi).

So sánh hiệu năng Batch 32#

Baseline ONNX Runtime#

Tại batch 32, ONNX Runtime đạt 42 ảnh/giây với YOLOv5s dày tiêu chuẩn:

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1 -e onnxruntime

Đường dẫn mô hình gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Kích thước lô (Batch Size): 32 Kịch bản: sync Thông lượng (mục/giây): 41.9025

Hiệu năng DeepSparse Dense#

Trong khi DeepSparse mang lại hiệu năng tốt nhất với các mô hình thưa được tối ưu hóa, nó cũng hoạt động tốt với các mô hình YOLOv5s dày tiêu chuẩn.

Tại batch 32, DeepSparse đạt 70 ảnh/giây với YOLOv5s dày tiêu chuẩn—cải thiện hiệu năng 1.7 lần so với ORT!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1

Đường dẫn mô hình gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Kích thước lô (Batch Size): 32 Kịch bản: sync Thông lượng (mục/giây): 69.5546

Hiệu năng DeepSparse Sparse#

Khi tính thưa được áp dụng vào mô hình, mức tăng hiệu năng của DeepSparse so với ONNX Runtime thậm chí còn mạnh mẽ hơn.

Tại batch 32, DeepSparse đạt 241 ảnh/giây với YOLOv5s đã được tỉa và lượng tử hóa—cải thiện hiệu năng 5.8 lần so với ORT!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 32 -nstreams 1

Đường dẫn mô hình gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Kích thước lô (Batch Size): 32 Kịch bản: sync Thông lượng (mục/giây): 241.2452

So sánh hiệu năng Batch 1#

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

Baseline ONNX Runtime#

Tại batch 1, ONNX Runtime đạt 48 ảnh/giây với YOLOv5s dày tiêu chuẩn.

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 1 -nstreams 1 -e onnxruntime

Đường dẫn mô hình gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Kích thước lô (Batch Size): 1 Kịch bản: sync Thông lượng (mục/giây): 48.0921

Hiệu năng DeepSparse Sparse#

Khi tính thưa được áp dụng vào mô hình, mức tăng hiệu năng của DeepSparse so với ONNX Runtime thậm chí còn mạnh mẽ hơn.

Tại batch 1, DeepSparse đạt 135 ảnh/giây với YOLOv5s đã được tỉa và lượng tử hóa—cải thiện hiệu năng 2.8 lần so với ONNX Runtime!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 1 -nstreams 1

Đường dẫn mô hình gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Kích thước lô (Batch Size): 1 Kịch bản: sync Thông lượng (mục/giây): 134.9468

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

Tại batch 1, DeepSparse đạt 180 items/giây với YOLOv5s đã được tỉa 4-block và lượng tử hóa—mức tăng hiệu năng 3.7 lần so với ONNX Runtime!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni -s sync -b 1 -nstreams 1

Đườ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ô (Batch Size): 1 Kịch bản: sync Thông lượng (mục/giây): 179.7375

Và thế là xong! Bạn đã sẵn sàng để tối ưu hóa việc triển khai YOLOv5 của mình với DeepSparse.

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

Để liên hệ với chúng tôi, hãy tham gia cộng đồng của chúng tôi và để lại câu hỏi cũng như bình luận của bạn. Hãy xem repository Ultralytics YOLOv5tài liệu đầy đủ của Neural Magic về cách triển khai YOLOv5.

Tại Ultralytics, chúng tôi hợp tác thương mại với các startup khác để giúp tài trợ cho việc 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 mọi người. Bài viết này có thể chứa các liên kết tiếp thị liên kết (affiliate links) đến những đối tác đó.

Explore solutions

Real-time AI that works with your team

AI trong ngành Robot

Tăng cường sức mạnh cho các cỗ máy thông minh hơn với các model Ultralytics YOLO. AI thị giác trong lĩnh vực robot thúc đẩy khả năng điều hướng tự hành, nhận thức, theo dõi đối tượng và điều khiển thời gian thực.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong Logistics

Tối ưu hóa logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra hàng hóa, phân loại, theo dõi phương tiện và giám sát an toàn kho bãi trong thời gian thực.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong ngành Bán lẻ

Tái định hình bán lẻ với các model Ultralytics YOLO. Vision AI thúc đẩy theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng đợi và thông tin chi tiết thông minh hơn về khách hàng.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong chăm sóc sức khỏe

Xây dựng các giải pháp y tế với các model Ultralytics YOLO. AI thị giác trong y tế hỗ trợ chẩn đoán hình ảnh y khoa nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong sản xuất

Tối ưu hóa sản xuất với các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Real-time AI that works with your operation

AI trong Ô tô

Áp dụng thị giác máy tính trong ô tô với các model Ultralytics YOLO. AI thị giác nâng cao an toàn đường bộ, hỗ trợ người lái và tự động hóa phương tiện cho những con đường thông minh hơn.
Tìm hiểu thêm
Real-time AI tailored to your operation

AI trong Nông nghiệp

Mang AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Tăng cường giám sát mùa màng, theo dõi vật nuôi và canh tác chính xác để đạt năng suất cao hơn, thông minh hơn.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong ngành Robot

Tăng cường sức mạnh cho các cỗ máy thông minh hơn với các model Ultralytics YOLO. AI thị giác trong lĩnh vực robot thúc đẩy khả năng điều hướng tự hành, nhận thức, theo dõi đối tượng và điều khiển thời gian thực.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong Logistics

Tối ưu hóa logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra hàng hóa, phân loại, theo dõi phương tiện và giám sát an toàn kho bãi trong thời gian thực.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong ngành Bán lẻ

Tái định hình bán lẻ với các model Ultralytics YOLO. Vision AI thúc đẩy theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng đợi và thông tin chi tiết thông minh hơn về khách hàng.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong chăm sóc sức khỏe

Xây dựng các giải pháp y tế với các model Ultralytics YOLO. AI thị giác trong y tế hỗ trợ chẩn đoán hình ảnh y khoa nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong sản xuất

Tối ưu hóa sản xuất với các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Real-time AI that works with your operation

AI trong Ô tô

Áp dụng thị giác máy tính trong ô tô với các model Ultralytics YOLO. AI thị giác nâng cao an toàn đường bộ, hỗ trợ người lái và tự động hóa phương tiện cho những con đường thông minh hơn.
Tìm hiểu thêm
Real-time AI tailored to your operation

AI trong Nông nghiệp

Mang AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Tăng cường giám sát mùa màng, theo dõi vật nuôi và canh tác chính xác để đạt năng suất cao hơn, thông minh hơn.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong ngành Robot

Tăng cường sức mạnh cho các cỗ máy thông minh hơn với các model Ultralytics YOLO. AI thị giác trong lĩnh vực robot thúc đẩy khả năng điều hướng tự hành, nhận thức, theo dõi đối tượng và điều khiển thời gian thực.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong Logistics

Tối ưu hóa logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra hàng hóa, phân loại, theo dõi phương tiện và giám sát an toàn kho bãi trong thời gian thực.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong ngành Bán lẻ

Tái định hình bán lẻ với các model Ultralytics YOLO. Vision AI thúc đẩy theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng đợi và thông tin chi tiết thông minh hơn về khách hàng.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong chăm sóc sức khỏe

Xây dựng các giải pháp y tế với các model Ultralytics YOLO. AI thị giác trong y tế hỗ trợ chẩn đoán hình ảnh y khoa nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Real-time AI that works with your team

AI trong sản xuất

Tối ưu hóa sản xuất với các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Real-time AI that works with your operation

AI trong Ô tô

Áp dụng thị giác máy tính trong ô tô với các model Ultralytics YOLO. AI thị giác nâng cao an toàn đường bộ, hỗ trợ người lái và tự động hóa phương tiện cho những con đường thông minh hơn.
Tìm hiểu thêm
Real-time AI tailored to your operation

AI trong Nông nghiệp

Mang AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Tăng cường giám sát mùa màng, theo dõi vật nuôi và canh tác chính xác để đạt năng suất cao hơn, thông minh hơn.
Tìm hiểu thêm

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

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