Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Tích hợp

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

Triển khai Ultralytics YOLOv5 với DeepSparse của Neural Magic để suy luận CPU đạt hiệu năng tương đương GPU bằng các model thưa, đã lượng tử hóa, kèm ví dụ code và benchmark.

Nuvola LadiNuvola Ladi8 phút đọc
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? Xin giới thiệu đối tác mới nhất của chúng tôi, Neural Magic. Neural Magic cung cấp các công cụ phần mềm chú trọng hiệu năng tối đa của model và sự đơn giản trong quy trình làm việc, vì vậy việc hợp tác để mang đến giải pháp cải thiện hơn nữa quy trình triển khai YOLOv5 là điều hết sức tự nhiên.

Cập nhật: Neural Magic được Red Hat mua lại vào tháng 1 năm 2025 và sau đó đã ngừng phát hành các phiên bản cộng đồng của DeepSparse, SparseML và SparseZoo. Các bước bên dưới được giữ lại để tham khảo; xem hướng dẫn YOLOv5 DeepSparse được liên kết ở trên để biết tình trạng hiện tại.

DeepSparse là runtime suy luận CPU của Neural Magic, tận dụng tính thưa và phép tính độ chính xác thấp trong mạng neural để mang lại hiệu năng vượt trội trên phần cứng phổ thông. Ví dụ, so với mốc tham chiếu ONNX Runtime, DeepSparse giúp YOLOv5s chạy nhanh hơn 5.8 lần trên cùng một máy!

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

Lần đầu tiên, workload deep learning của bạn có thể đáp ứng yêu cầu hiệu năng trong môi trường production mà không cần đến sự phức tạp và chi phí của bộ tăng tốc phần cứng. Nói đơn giản, DeepSparse mang lại 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: Vận hành nhất quán trên đám mây, trung tâm dữ liệu và thiết bị biên với mọi nhà cung cấp phần cứng
  2. Khả năng mở rộng không giới hạn: Mở rộng quy mô bằng Kubernetes tiêu chuẩn, mở rộng theo chiều dọc lên đến hàng trăm lõi hoặc trừu tượng hóa hoàn toàn bằng serverless
  3. Tích hợp dễ dàng: Sử dụng API rõ ràng để tích hợp model vào ứng dụng và giám sát model trong môi trường production

Đạt hiệu năng tương đương GPU trên CPU phổ thông#

DeepSparse tận dụng tính thưa của model để tăng tốc hiệu năng.

Phương pháp làm thưa thông qua pruning và lượng tử hóa cho phép giảm quy mô và lượng tính toán cần thiết để thực thi một mạng xuống nhiều bậc độ lớn mà vẫn duy trì độ chính xác cao. DeepSparse nhận biết độ thưa, bỏ qua các phép nhân-cộng có giá trị 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 bị giới hạn bởi bộ nhớ, DeepSparse thực thi mạng theo chiều sâu, chia bài toán thành các cột tensor, tức các dải tính toán dọc vừa với bộ nhớ đệm.

Mạng DeepSparse và Ultralytics YOLOv5

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

Tạo phiên bản thưa của Ultralytics YOLOv5 được huấn luyện trên dữ liệu tùy chỉnh#

Kho model mã nguồn mở SparseZoo của Neural Magic chứa các checkpoint đã được làm thưa sẵn cho từng model YOLOv5. Với SparseML được tích hợp cùng Ultralytics, bạn có thể fine-tune một checkpoint thưa trên dữ liệu của mình chỉ bằng một lệnh CLI.

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 nghị sử dụng môi trường ảo với Python.

pip install deepsparse[server,yolo,onnxruntime]

Thu thập tệp ONNX#

DeepSparse nhận model ở định dạng ONNX, được cung cấp theo một trong các cách sau:

  • Đường dẫn cục bộ đến một model ONNX
  • Stub SparseZoo xác định một model trong SparseZoo

Chúng ta sẽ so sánh YOLOv5s dense tiêu chuẩn với YOLOv5s đã cắt tỉa và lượng tử hóa, được xác định bằng các stub SparseZoo 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 model#

DeepSparse cung cấp các API tiện lợi để tích hợp model vào ứng dụng.

Để thử các ví dụ triển khai bên dưới, hãy tải ả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#

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

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

from deepsparse import Pipeline

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

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

# chạy suy luận trên ảnh, nhận bounding box + lớp
pipeline_outputs = yolo_pipeline(images=images, iou_thres=0.6, conf_thres=0.001)
print(pipeline_outputs)

Nếu chạy trên đám mây, bạn có thể gặp lỗi OpenCV không tìm thấy libGL.so.1. Chạy lệnh sau trên Ubuntu để cài đặt thư viện này:

apt-get install libgl1-mesa-glx

HTTP Server#

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

Khởi chạy Server với YOLOv5s đã cắt 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

Ví dụ về một request sử dụng package requests của Python:

import requests, json

# danh sách ảnh dùng để suy luận (tệp cục bộ ở phía client)
path = ['basilica.jpg']
files = [('request', open(img, 'rb')) for img in path]

# gửi request qua HTTP đến endpoint /predict/from_files
url = 'http://0.0.0.0:5543/predict/from_files'
resp = requests.post(url=url, files=files)

# response được trả về dưới dạng JSON
annotations = json.loads(resp.text)  # dictionary chứa kết quả chú giải
bounding_boxes = annotations["boxes"]
labels = annotations["labels"]

CLI chú giải#

Bạn cũng có thể dùng lệnh annotate để yêu cầu engine lưu ảnh đã chú giải vào đĩa. Hãy thử --source 0 để chú giải luồng 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 thư mục annotation-results và lưu ảnh đã chú giải vào đó.

Basilica được chú giải bằng Ultralytics YOLOv5

Đánh giá hiệu năng#

Sử dụng script 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 với batch 32#

Baseline ONNX Runtime#

Ở batch 32, ONNX Runtime đạt 42 ảnh/giây với YOLOv5s dense 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 model gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Kích thước batch: 32 Kịch bản: sync Thông lượng (mục/giây): 41.9025

Hiệu năng dense của DeepSparse#

DeepSparse đạt hiệu năng tốt nhất với các model thưa đã tối ưu, nhưng cũng hoạt động tốt với YOLOv5s dense tiêu chuẩn.

Ở batch 32, DeepSparse đạt 70 ảnh/giây với YOLOv5s dense tiêu chuẩn—hiệu năng cải thiện 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 model gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Kích thước batch: 32 Kịch bản: sync Thông lượng (mục/giây): 69.5546

Hiệu năng sparse của DeepSparse#

Khi áp dụng sparsity cho model, mức tăng hiệu năng của DeepSparse so với ONNX Runtime còn rõ rệt hơn.

Ở batch 32, DeepSparse đạt 241 ảnh/giây với YOLOv5s đã cắt tỉa và lượng tử hóa—hiệu năng cải thiện 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 model gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Kích thước batch: 32 Kịch bản: sync Thông lượng (mục/giây): 241.2452

So sánh hiệu năng với batch 1#

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

Baseline ONNX Runtime#

Ở batch 1, ONNX Runtime đạt 48 ảnh/giây với YOLOv5s dense 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 model gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Kích thước batch: 1 Kịch bản: sync Thông lượng (mục/giây): 48.0921

Hiệu năng sparse của DeepSparse#

Khi áp dụng sparsity cho model, mức tăng hiệu năng của DeepSparse so với ONNX Runtime còn rõ rệt hơn.

Ở batch 1, DeepSparse đạt 135 ảnh/giây với YOLOv5s đã cắt tỉa và lượng tử hóa—hiệu năng cải thiện 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 model gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Kích thước batch: 1 Kịch bản: sync Thông lượng (mục/giây): 134.9468

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

Ở batch 1, DeepSparse đạt 180 mục/giây với YOLOv5s đã cắt tỉa theo khối 4 và lượng tử hóa—hiệu năng tă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 model gốc: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni Kích thước batch: 1 Kịch bản: sync Thông lượng (mục/giây): 179.7375

Vậy là xong! Bạn đã sẵn sàng tối ưu hóa quá trình triển khai YOLOv5 bằng 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 và gửi câu hỏi cùng nhận xét. Khám phá repository Ultralytics YOLOv5 và tài liệu đầy đủ của Neural Magic về 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 để hỗ trợ tài trợ cho hoạt động nghiên cứu và phát triển những công cụ mã nguồn mở hữu ích như YOLOv5, giúp mọi người đều có thể sử dụng miễn phí. Bài viết này có thể chứa các liên kết liên kết đến những đối tác đó.

Được viết bởi

Nuvola Ladi
Nuvola Ladi

Quản lý Nội dung Số · Ultralytics

Nuvola Ladi là Quản lý Nội dung Số tại Ultralytics, nơi cô sáng tạo nội dung về vision AI và Ultralytics YOLO, đồng thời đại diện công ty tại các sự kiện trong ngành như PyTorch Conference 2025. Cô sống tại Tây Ban Nha và có bằng Thạc sĩ về Truyền thông Thị giác và Kỹ thuật số của IE University. Trước khi gia nhập Ultralytics, cô từng đảm nhiệm các vị trí tại những tổ chức như XVA Gallery & Hotel và Rolex.

Bình luận

Đặt câu hỏi, chia sẻ kết quả hoặc giúp đỡ người khác.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế 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
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng 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
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

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