Tích hợp Huawei Ascend cho Ultralytics YOLO#
Việc triển khai các model thị giác máy tính trên Bộ xử lý AI Huawei Ascend yêu cầu biên dịch chúng sang định dạng model offline .om được thực thi bởi Ascend AI Core. Xuất các model Ultralytics YOLO sang Ascend cho phép chạy inference nhanh, tiết kiệm năng lượng trên các board phát triển Atlas và thiết bị OrangePi AIPro được sử dụng trong robot, kiểm tra công nghiệp và các hệ thống camera thông minh.
Huawei Ascend là gì?#
Huawei Ascend là một dòng Bộ xử lý AI đi kèm với CANN (Kiến trúc Điện toán cho Mạng Nơ-ron), stack điện toán không đồng nhất của Huawei. CANN cung cấp ATC (Trình biên dịch Tensor Ascend), một công cụ phía host chuyển đổi graph ONNX tiêu chuẩn thành model offline .om dành riêng cho phần cứng, nhắm đến Ascend AI Core.
Vì ATC chạy hoàn toàn trên host, bạn có thể biên dịch model trên một máy Linux x86-64 hoặc ARM64 thông thường mà không cần kết nối phần cứng Ascend, sau đó sao chép .om tạo ra sang thiết bị đích để chạy inference.
Huấn luyện trên NPU Ascend#
Ultralytics hỗ trợ huấn luyện đơn NPU và đa NPU với torch_npu, bao gồm AMP, validation, checkpointing, resume và
AutoBatch. Chọn một NPU bằng device=npu:0 hoặc nhiều NPU bằng device=npu:0,1; huấn luyện phân tán sử dụng HCCL.
Cài đặt các phiên bản CANN, PyTorch và torch_npu tương thích, đồng thời source môi trường CANN trước. Xem
phần huấn luyện Ascend NPU để biết ví dụ cài đặt và cách sử dụng.
Định dạng xuất Ascend#
Exporter của Ultralytics trước tiên ghi một graph ONNX trung gian, sau đó gọi ATC để biên dịch graph cho SoC đích bằng tham số name. Kết quả là một thư mục model độc lập chứa binary .om và metadata của Ultralytics.
Các tính năng chính của model Ascend#
- AI Core chuyên dụng: Các model đã biên dịch được thực thi trên Ascend AI Core thay vì CPU của host, mang lại throughput cao hơn đáng kể cho các pipeline camera thời gian thực.
- Biên dịch phía host: ATC không cần NPU được kết nối, vì vậy quá trình export có thể chạy trong CI, container hoặc trên laptop.
- ONNX trước tiên: Ultralytics ONNX export tiêu chuẩn được đưa trực tiếp vào toolchain CANN mà không cần định dạng trung gian độc quyền.
- Shape tĩnh: Shape đầu vào được cố định trong
.omtại thời điểm biên dịch, loại bỏ overhead thương lượng shape khi runtime. - Nhắm mục tiêu đa thiết bị: Cùng một graph ONNX có thể được biên dịch cho mọi SoC được hỗ trợ bằng cách thay đổi
name.
Các Task được hỗ trợ#
Export Huawei Ascend hỗ trợ cả bảy tác vụ của Ultralytics. Phân đoạn ngữ nghĩa và ước lượng độ sâu chỉ khả dụng với YOLO26, dòng duy nhất cung cấp các head đó.
Thiết bị được hỗ trợ#
Truyền SoC đích bằng name; ATC tích hợp thông tin này vào .om dưới dạng --soc_version, vì vậy giá trị này phải khớp với board triển khai. Cục bộ, bạn có thể biên dịch cho bất kỳ SoC nào mà bản cài đặt CANN của bạn cung cấp kernel. Ultralytics Platform hỗ trợ các target Ascend310P1, Ascend310P3, Ascend310B1 và Ascend310B4.
name | Thiết bị | Export cục bộ | Platform |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro, Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T, Atlas 200I A2 | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 8T | ✅ | ✅ |
Export sang Ascend: Chuyển đổi model YOLO của bạn#
Export Ascend yêu cầu bộ toolkit CANN, chỉ hỗ trợ Linux. Compiler atc phải có trên PATH — hãy source script môi trường CANN trước khi export, ví dụ: source /usr/local/Ascend/ascend-toolkit/set_env.sh.
Cài đặt#
Cài đặt Ultralytics, sau đó cài đặt CANN riêng từ Huawei.
# Install the required package for YOLO
pip install ultralyticsBộ toolkit CANN do Huawei phân phối và không được cài đặt tự động. Tải xuống từ trang tải xuống cộng đồng Ascend, hoặc sử dụng một trong các image container ascendai/cann chính thức, vốn đã đóng gói ATC và các dependency của nó.
ATC chỉ có thể biên dịch cho các dòng SoC đã cài đặt kernel toán tử tương ứng. Một toolkit chỉ chứa kernel ascend310p sẽ thất bại với No supported Ops kernel and engine are found for ... Conv2D khi được yêu cầu target Ascend310B4. Hãy cài đặt package Ascend-cann-kernels-<soc> tương ứng với thiết bị triển khai.
Cách sử dụng#
Định dạng Ascend hỗ trợ các mode Export, Predict và Validate. Inference và validation chạy trên phần cứng Ascend. Export model, sau đó load model đã export để chạy inference hoặc validation độ chính xác.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to Ascend format for an Atlas 200I / OrangePi AIPro board
model.export(format="ascend", name="Ascend310B4")
# Load the exported Ascend model and run inference on the device
ascend_model = YOLO("yolo26n_ascend_model")
results = ascend_model("https://ultralytics.com/images/bus.jpg")Đối số Export#
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
format | str | 'ascend' | Định dạng đích cho model đã export, xác định khả năng tương thích với Bộ xử lý AI Ascend. |
name | str | 'Ascend310B4' | SoC đích được truyền cho ATC dưới dạng --soc_version, ví dụ Ascend310P3. Bất kỳ SoC nào có kernel trong bản cài đặt CANN của bạn đều hợp lệ; xem Thiết bị được hỗ trợ. Phải khớp với thiết bị triển khai. |
imgsz | int hoặc tuple | 640 | Kích thước ảnh mong muốn cho input của model, được cố định trong .om dưới dạng shape tĩnh. |
batch | int | 1 | Batch size tĩnh được biên dịch vào model offline. |
quantize | int | 16 | Độ chính xác lượng tử hóa. Export Ascend chỉ hỗ trợ FP16 và tự động bật 16 nếu không được chỉ định. Thay thế các flag half/int8 đã deprecated. |
opset | int | 17 | Opset ONNX cho graph trung gian. Bị giới hạn ở 17, là phiên bản cao nhất mà trình phân tích cú pháp ONNX của CANN chấp nhận. |
simplify | bool | True | Đơn giản hóa graph ONNX trung gian bằng onnxslim. |
nms | bool | False | Thêm Non-Maximum Suppression vào các model detection, segmentation, pose và OBB được hỗ trợ. |
Ascend AI Core chỉ chấp nhận input DT_FLOAT16 và DT_INT8 cho các phép tích chập, vì vậy model offline FP32 không thể thực thi trên phần cứng. Yêu cầu quantize=32 sẽ tạo ra lỗi thay vì âm thầm tạo một model không thể chạy.
Để biết thêm chi tiết về quy trình export, hãy truy cập trang tài liệu Ultralytics về export.
Cấu trúc Output#
Sau khi export thành công, một thư mục model sẽ được tạo với cấu trúc sau:
yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml # Model metadata (classes, image size, task, etc.)File .om là model offline đã biên dịch mà runtime CANN load trên thiết bị. Tên file chứa SoC đích để artifact tự mô tả; chỉ giữ một .om trong mỗi thư mục, vì loader sẽ chọn model duy nhất tìm thấy tại đó. metadata.yaml chứa tên class, kích thước ảnh và các thông tin khác được pipeline inference của Ultralytics sử dụng.
Triển khai model YOLO Ascend đã export#
Sau khi export thành công model Ultralytics YOLO sang định dạng Ascend, bước tiếp theo là triển khai model trên phần cứng Ascend.
Cài đặt runtime#
Inference yêu cầu runtime CANN trên thiết bị cùng package Python ais_bench, package này bọc các binding pyACL của CANN. Build và cài đặt package từ repository công cụ Ascend của Huawei:
# On the Ascend device, with CANN installed and sourced
source /usr/local/Ascend/ascend-toolkit/set_env.sh
# Build and install the ais_bench inference wheel
git clone https://gitee.com/ascend/tools.git
cd tools/ais-bench_workload/tool/ais_bench
pip3 wheel ./backend -v
pip3 install ./aclruntime-*.whl
pip3 wheel ./ -v
pip3 install ./ais_bench-*.whlSao chép thư mục yolo26n_ascend_model đã export sang thiết bị, sau đó chạy inference בדיוק như với bất kỳ định dạng Ultralytics nào khác.
Workflow Khuyến nghị#
- Huấn luyện model bằng Train Mode của Ultralytics, hoặc bắt đầu từ một checkpoint pre-trained.
- Export sang Ascend trên bất kỳ host Linux nào đã cài đặt CANN, truyền
namekhớp với SoC đích. - Sao chép thư mục model đã export sang thiết bị Ascend.
- Triển khai với runtime CANN và
ais_benchđể chạy inference trên thiết bị.
Ứng dụng thực tế#
Các model YOLO chạy trên phần cứng Ascend phù hợp với nhiều ứng dụng thị giác nhúng và công nghiệp:
- Tự động hóa công nghiệp: Kiểm tra chất lượng tốc độ cao và phát hiện lỗi trên dây chuyền sản xuất.
- Giám sát thông minh: Detection đối tượng thời gian thực từ nhiều camera trên các edge gateway mà không cần server trung tâm.
- Robot: Nhận thức trên thiết bị cho robot di động tự hành và cánh tay cộng tác.
- Đô thị thông minh: Giám sát giao thông và phân tích người đi bộ trên các unit ven đường công suất thấp.
Tóm tắt#
Trong hướng dẫn này, bạn đã học cách huấn luyện Ultralytics YOLO trên NPU Huawei Ascend và export model sang định dạng Ascend .om bằng compiler CANN ATC. Export chạy hoàn toàn trên host, tạo ra một thư mục model độc lập và nhắm đến mọi SoC Ascend được hỗ trợ thông qua một tham số name duy nhất.
Để biết thêm chi tiết về cách sử dụng, hãy truy cập tài liệu CANN chính thức.
Ngoài ra, nếu muốn tìm hiểu thêm về các tích hợp Ultralytics YOLO khác, hãy truy cập trang hướng dẫn tích hợp của chúng tôi để tìm nhiều tài nguyên hữu ích.
FAQ#
Cài đặt Ultralytics và bộ toolkit CANN, source môi trường CANN để
atccó trênPATH, sau đó export bằngmodel.export(format="ascend", name="Ascend310B4")trong Python hoặcyolo export model=yolo26n.pt format=ascend name=Ascend310B4từ CLI. Đặtnamethành SoC của thiết bị triển khai.Không. Compiler ATC chạy hoàn toàn trên host, vì vậy quá trình biên dịch hoạt động trên máy Linux x86-64 hoặc ARM64 tiêu chuẩn mà không cần kết nối NPU. Bạn chỉ cần phần cứng Ascend để chạy inference trên
.omđã export.Bản cài đặt CANN của bạn không chứa kernel toán tử cho SoC đã yêu cầu. Mỗi toolkit đóng gói kernel cho các dòng SoC cụ thể, vì vậy hãy cài đặt package
Ascend-cann-kernels-<soc>khớp với target hoặc sử dụng container image được build cho dòng thiết bị đó.Các phép tích chập của Ascend AI Core chỉ chấp nhận tensor
DT_FLOAT16vàDT_INT8. Model offline FP32 sẽ không thể thực thi trên phần cứng, vì vậy exporter biên dịch bằng--precision_mode=force_fp16và từ chối yêu cầuquantize=32được chỉ định rõ ràng.Bất kỳ SoC nào mà bộ toolkit CANN đã cài đặt của bạn cung cấp kernel, được chọn thông qua tham số
name. Xem Thiết bị được hỗ trợ để biết bốn target đã được xác thực và khả năng sử dụng của chúng trên Ultralytics Platform.