Gặp gỡ YOLO26: AI tầm nhìn thế hệ tiếp theo.
Ultralytics
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.

ĐỘĐội ngũ Ultralytics
5 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 mô hình YOLOv5 của mình? Chúng tôi đã có giải pháp 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 chú trọng vào hiệu năng mô hình đỉnh cao và sự đơn giản trong quy trình làm việc, việc chúng tôi hợp tác để đưa ra giải pháp giúp quá trình triển khai YOLOv5 trở nên tốt hơn nữa là điều hoàn toàn tự 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à số học độ chính xác thấp trong các mạng thần kinh để mang lại hiệu năng vượt trội trên phần cứng thương mại thông thường. Ví dụ, so với baseline ONNX Runtime, DeepSparse mang lại tốc độ nhanh hơn 5.8 lần cho YOLOv5s khi chạy trên cùng một máy!

So sánh thông lượng 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.

Link to this sectionĐạ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).

Mạng DeepSparse và Ultralytics YOLOv5

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!

Link to this sectionTạo phiên bản thưa 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ở 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.

Link to this sectionTriển khai YOLOv5 với DeepSparse#

Link to this sectionCà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]

Link to this sectionThu 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

Link to this sectionTriể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

Link to this sectionPython 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

Link to this sectionHTTP Server#

DeepSparse Server chạy trên framework web 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 endpoint dịch vụ mô hình với DeepSparse. Server hỗ trợ bất kỳ Pipeline nào từ DeepSparse, bao gồm nhận diện vật thể với YOLOv5, cho phép bạn gửi ả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"]

Link to this sectionAnnotate 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 với YOLOv5

Link to this sectionBenchmark 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).

Link to this sectionSo sánh hiệu năng Batch 32#

Link to this sectionBaseline 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 Batch Size: 32 Kịch bản: sync Thông lượng (items/sec): 41.9025

Link to this sectionHiệ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 Batch Size: 32 Kịch bản: sync Thông lượng (items/sec): 69.5546

Link to this sectionHiệ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 Batch Size: 32 Kịch bản: sync Thông lượng (items/sec): 241.2452

Link to this sectionSo 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ễ.

Link to this sectionBaseline 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 Batch Size: 1 Kịch bản: sync Thông lượng (items/sec): 48.0921

Link to this sectionHiệ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 Batch Size: 1 Kịch bản: sync Thông lượng (items/sec): 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 Batch Size: 1 Kịch bản: sync Thông lượng (items/sec): 179.7375

Và 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.

Link to this sectionBắt đầu với 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ác câu hỏi cũng như nhận xét của bạn. Hãy xem kho lưu trữ Ultralytics YOLOv5 và toàn bộ tài liệu 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 để 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