Triển khai YOLO26 trên thiết bị di động và edge với ExecuTorch#
Việc triển khai các model thị giác máy tính trên thiết bị edge như smartphone, tablet và hệ thống nhúng đòi hỏi một runtime được tối ưu, cân bằng giữa hiệu năng và các giới hạn tài nguyên. ExecuTorch, giải pháp điện toán edge của PyTorch, cho phép thực hiện inference hiệu quả trên thiết bị với các model Ultralytics YOLO.
Hướng dẫn này trình bày cách export các model Ultralytics YOLO sang định dạng ExecuTorch, cho phép bạn triển khai model trên thiết bị di động và edge với hiệu năng được tối ưu.
Tại sao nên export sang ExecuTorch?#
ExecuTorch là giải pháp end-to-end của PyTorch để hỗ trợ inference trên thiết bị di động và edge. Được xây dựng với mục tiêu có tính portable và hiệu quả, ExecuTorch có thể chạy các chương trình PyTorch trên nhiều nền tảng điện toán khác nhau.
Các tính năng chính của ExecuTorch#
ExecuTorch cung cấp nhiều tính năng mạnh mẽ để triển khai các model Ultralytics YOLO trên thiết bị edge:
-
Định dạng Model Portable: ExecuTorch sử dụng định dạng
.pte(PyTorch ExecuTorch), được tối ưu về kích thước và tốc độ tải trên các thiết bị hạn chế tài nguyên. -
Backend XNNPACK: Tích hợp XNNPACK mặc định cung cấp inference được tối ưu cao trên CPU di động, mang lại hiệu năng xuất sắc mà không yêu cầu phần cứng chuyên dụng.
-
Sẵn sàng cho Quantization: Hệ sinh thái ExecuTorch hỗ trợ các kỹ thuật quantization để giảm kích thước model và cải thiện tốc độ inference; hiện tại Ultralytics export các model FP32 thông qua backend XNNPACK.
-
Hiệu quả Bộ nhớ: Quản lý bộ nhớ được tối ưu giúp giảm footprint bộ nhớ runtime, phù hợp với các thiết bị có RAM hạn chế.
-
Metadata của Model: Các model đã export bao gồm metadata (kích thước ảnh, tên class, v.v.) trong một file YAML riêng để dễ dàng tích hợp.
Các tùy chọn triển khai với ExecuTorch#
Các model ExecuTorch có thể được triển khai trên nhiều nền tảng edge và di động khác nhau:
-
Ứng dụng di động: Triển khai trên ứng dụng iOS và Android với hiệu năng native, cho phép phát hiện đối tượng theo thời gian thực trong ứng dụng di động.
-
Hệ thống nhúng: Chạy trên các thiết bị Linux nhúng như Raspberry Pi, NVIDIA Jetson và các hệ thống dựa trên ARM khác với hiệu năng được tối ưu.
-
Thiết bị Edge AI: Triển khai trên phần cứng edge AI chuyên dụng với các delegate tùy chỉnh để tăng tốc inference.
-
Thiết bị IoT: Tích hợp vào các thiết bị IoT để thực hiện inference trên thiết bị mà không yêu cầu kết nối cloud.
Các Task được hỗ trợ#
Export ExecuTorch hỗ trợ toàn bộ bảy task của Ultralytics. Phân đoạn ngữ nghĩa và ước tính độ sâu chỉ khả dụng với YOLO26, dòng duy nhất được cung cấp các head này.
Export các Model Ultralytics YOLO26 sang ExecuTorch#
Việc chuyển đổi các model Ultralytics YOLO26 sang định dạng ExecuTorch cho phép triển khai hiệu quả trên thiết bị di động và edge.
Cài đặt#
Export ExecuTorch yêu cầu Python 3.10-3.13 và PyTorch >= 2.9.0 cùng với package executorch:
# Install Ultralytics package
pip install ultralyticsĐể xem hướng dẫn chi tiết và các best practice liên quan đến quá trình cài đặt, hãy tham khảo hướng dẫn Cài đặt YOLO26 của chúng tôi. Trong quá trình cài đặt các package cần thiết cho YOLO26, nếu gặp khó khăn, hãy tham khảo hướng dẫn Các vấn đề thường gặp để tìm giải pháp và mẹo xử lý.
Cách sử dụng#
Export model YOLO26 sang ExecuTorch rất đơn giản:
Định dạng ExecuTorch hỗ trợ các mode Export, Predict và Validate. Hãy export model, sau đó load model đã export để chạy inference hoặc xác thực độ chính xác.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ExecuTorch format
model.export(format="executorch") # creates 'yolo26n_executorch_model'from ultralytics import YOLO
# Load the exported ExecuTorch model
model = YOLO("yolo26n_executorch_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported ExecuTorch model
model = YOLO("yolo26n_executorch_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Các bản export ExecuTorch tạo một thư mục bao gồm file .pte và metadata. Sử dụng runtime ExecuTorch trong ứng dụng di động hoặc nhúng để load model .pte và thực hiện inference.
Đối số Export#
Khi export sang định dạng ExecuTorch, bạn có thể chỉ định các đối số sau:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
format | str | 'executorch' | Định dạng đích của model đã export, xác định khả năng tương thích với nhiều môi trường triển khai. |
imgsz | int hoặc tuple | 640 | Kích thước ảnh mong muốn cho input của model. Có thể là một số nguyên đối với ảnh vuông hoặc một tuple (height, width) cho các kích thước cụ thể. |
quantize | int hoặc str | None | Export FP32 cố định. Export ExecuTorch không hỗ trợ chuyển đổi độ chính xác FP16, INT8 hoặc W8A16 trong thời điểm export. |
batch | int | 1 | Chỉ định batch inference size của model export hoặc số image tối đa mà model đã export sẽ xử lý đồng thời trong mode predict. |
device | str | None | Chỉ định thiết bị dùng để export: GPU (device=0), CPU (device=cpu), MPS cho Apple silicon (device=mps). |
Cấu trúc Output#
Bản export ExecuTorch tạo một thư mục chứa model và metadata:
yolo26n_executorch_model/
├── model.pte # ExecuTorch model file
└── metadata.yaml # Model metadata (classes, image size, etc.)Sử dụng Model ExecuTorch đã Export#
Sau khi export model, bạn cần tích hợp model vào ứng dụng đích bằng runtime ExecuTorch.
Tích hợp trên thiết bị di động#
Đối với ứng dụng di động (iOS/Android), bạn cần:
- Thêm Runtime ExecuTorch: Include thư viện runtime ExecuTorch vào project di động của bạn
- Load Model: Load file
.ptetrong ứng dụng của bạn - Chạy Inference: Xử lý ảnh và nhận các prediction
iOS#
Ví dụ tích hợp iOS (Objective-C/C++):
// iOS uses C++ APIs for model loading and inference
// See https://pytorch.org/executorch/stable/using-executorch-ios.html for complete examples
#include <executorch/extension/module/module.h>
using namespace ::executorch::extension;
// Load the model
Module module("/path/to/model.pte");
// Create input tensor
float input[1 * 3 * 640 * 640];
auto tensor = from_blob(input, {1, 3, 640, 640});
// Run inference
const auto result = module.forward(tensor);Android#
Thêm ExecuTorch Android AAR từ Maven Central:
dependencies {
implementation("org.pytorch:executorch-android:<version>")
}Ví dụ tích hợp Android (Kotlin):
import org.pytorch.executorch.EValue
import org.pytorch.executorch.Module
import org.pytorch.executorch.Tensor
// Load the model
val module = Module.load("/path/to/model.pte")
// Prepare input tensor
val inputTensor = Tensor.fromBlob(floatData, longArrayOf(1, 3, 640, 640))
val inputEValue = EValue.from(inputTensor)
// Run inference
val outputs = module.forward(inputEValue)
val scores = outputs[0].toTensor().dataAsFloatArrayLinux nhúng#
Đối với các hệ thống Linux nhúng, sử dụng API C++ của ExecuTorch:
#include <executorch/extension/module/module.h>
#include <executorch/extension/tensor/tensor.h>
using namespace ::executorch::extension;
// Load model
Module module("model.pte");
// Prepare input
std::vector<float> input_data = preprocessImage(image);
auto input_tensor = from_blob(input_data.data(), {1, 3, 640, 640});
// Run inference
const auto outputs = module.forward(input_tensor);Để biết thêm chi tiết về cách tích hợp ExecuTorch vào ứng dụng, hãy truy cập Tài liệu ExecuTorch.
Tối ưu hiệu năng#
Tối ưu kích thước Model#
Để giảm kích thước model khi triển khai:
- Sử dụng Model nhỏ hơn: Bắt đầu với YOLO26n (nano) để có footprint nhỏ nhất
- Giảm Độ phân giải Đầu vào: Sử dụng kích thước ảnh nhỏ hơn (ví dụ:
imgsz=320hoặcimgsz=416) - Quantization: Áp dụng các kỹ thuật quantization (được hỗ trợ trong các phiên bản ExecuTorch tương lai)
Tối ưu tốc độ Inference#
Để inference nhanh hơn:
- Backend XNNPACK: Backend XNNPACK mặc định cung cấp inference CPU được tối ưu
- Tăng tốc Phần cứng: Sử dụng các delegate dành riêng cho nền tảng (ví dụ: CoreML cho iOS)
- Xử lý Batch: Xử lý nhiều ảnh khi có thể
Benchmark#
Đội ngũ Ultralytics đã benchmark các model YOLO26, so sánh tốc độ và độ chính xác giữa PyTorch và ExecuTorch.
| Model | Định dạng | Trạng thái | Kích thước (MB) | metrics/mAP50-95(B) | Thời gian suy luận (ms/im) |
|---|---|---|---|---|---|
| YOLO26n | PyTorch | ✅ | 5.3 | 0.4790 | 314.80 |
| YOLO26n | ExecuTorch | ✅ | 9.4 | 0.4800 | 142 |
| YOLO26s | PyTorch | ✅ | 19.5 | 0.5730 | 930.90 |
| YOLO26s | ExecuTorch | ✅ | 36.5 | 0.5780 | 376.1 |
Thời gian suy luận không bao gồm bước tiền xử lý/hậu xử lý.
Khắc phục sự cố#
Các sự cố thường gặp#
Vấn đề: Python version error
Giải pháp: ExecuTorch yêu cầu Python 3.10 đến 3.13. Hãy tạo một môi trường với phiên bản được hỗ trợ:
# Using conda
conda create -n executorch python=3.10
conda activate executorchVấn đề: Export fails during first run
Giải pháp: Đảm bảo bạn đã cài đặt wheel executorch dựng sẵn mới nhất:
pip install --upgrade executorchVấn đề: Import errors for ExecuTorch modules
Giải pháp: Đảm bảo ExecuTorch được cài đặt đúng cách:
pip install executorch --force-reinstallĐể được hỗ trợ khắc phục sự cố, hãy truy cập GitHub Issues của Ultralytics hoặc Tài liệu ExecuTorch.
Tóm tắt#
Export model YOLO26 sang định dạng ExecuTorch cho phép triển khai hiệu quả trên thiết bị di động và edge. Với khả năng tích hợp native với PyTorch, hỗ trợ đa nền tảng và hiệu năng được tối ưu, ExecuTorch là lựa chọn xuất sắc cho các ứng dụng edge AI.
Các điểm chính:
- ExecuTorch cung cấp khả năng triển khai edge native với PyTorch cùng hiệu năng xuất sắc
- Export đơn giản với tham số
format='executorch' - Các model được tối ưu cho CPU di động thông qua backend XNNPACK
- Hỗ trợ các nền tảng iOS, Android và Linux nhúng
- Yêu cầu Python 3.10-3.13 và PyTorch >= 2.9.0
FAQ#
Export model YOLO26 sang ExecuTorch bằng Python hoặc CLI:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="executorch")hoặc
yolo export model=yolo26n.pt format=executorchExport ExecuTorch yêu cầu:
- Python 3.10 đến 3.13
- Package
executorch(cài đặt quapip install executorch) - PyTorch (được cài đặt tự động cùng với ultralytics)
Lưu ý: Package
executorchcung cấp các wheel dựng sẵn (với backend XNNPACK), vì vậy không cần thêm bước biên dịch nào trong quá trình export.Có thể load trực tiếp các model ExecuTorch bằng
YOLO()để thực hiện inference và validation trong Python (xem các ví dụ Predict/Validate ở trên); đồng thời, các model này cũng có thể được triển khai trên thiết bị di động và edge bằng các thư viện runtime ExecuTorch.ExecuTorch hỗ trợ:
- Di động: iOS và Android
- Linux nhúng: Raspberry Pi, NVIDIA Jetson và các thiết bị ARM khác
- Desktop: Linux, macOS và Windows (dành cho phát triển)
Cả ExecuTorch và LiteRT đều phù hợp để triển khai trên thiết bị di động:
- ExecuTorch: Tích hợp PyTorch tốt hơn, workflow PyTorch native và hệ sinh thái đang phát triển
- LiteRT: Trưởng thành hơn, hỗ trợ phần cứng rộng hơn, có nhiều ví dụ triển khai hơn và chạy cùng một model trên Android, iOS và trình duyệt
Hãy chọn ExecuTorch nếu bạn đã sử dụng PyTorch và muốn một lộ trình triển khai native. Hãy chọn LiteRT để có khả năng tương thích tối đa và bộ công cụ trưởng thành.
Có! ExecuTorch hỗ trợ tăng tốc phần cứng thông qua nhiều backend khác nhau:
- GPU di động: Thông qua các delegate Vulkan, Metal hoặc OpenCL
- NPU/DSP: Thông qua các delegate dành riêng cho nền tảng
- Mặc định: XNNPACK cho inference CPU được tối ưu
Tham khảo Tài liệu ExecuTorch để biết cách thiết lập dành riêng cho từng backend.