Tích hợp Huawei Ascend cho Ultralytics YOLO#
Triển khai model computer vision trên bộ xử lý AI Huawei Ascend đòi hỏi biên dịch model sang định dạng model offline .om để Ascend AI Core thực thi. Export model Ultralytics YOLO sang Ascend cho phép chạy inference nhanh, tiết kiệm điện trên các bo mạch phát triển Atlas và thiết bị OrangePi AIPro dùng trong robot, kiểm tra công nghiệp và hệ thống camera thông minh.
Huawei Ascend là gì?#
Huawei Ascend là dòng bộ xử lý AI đi kèm CANN (Kiến trúc tính toán cho mạng nơ-ron), một nền tảng đ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ụ chạy trên host để chuyển đổi đồ thị 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á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 thu được sang thiết bị mục tiêu để chạy inference.
Huấn luyện trên NPU Ascend#
Ultralytics hỗ trợ huấn luyện trên một hoặc nhiều NPU bằng torch_npu, bao gồm AMP, validation, lưu checkpoint, tiếp tục huấn luyện 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, sau đó nạp môi trường CANN trước. Xem phần huấn luyện trên NPU Ascend để biết ví dụ cài đặt và cách sử dụng.
Định dạng export Ascend#
Trước tiên, exporter của Ultralytics ghi đồ thị ONNX trung gian, sau đó gọi ATC để biên dịch cho SoC được chỉ định bằng đối số name. Kết quả là một thư mục model độc lập, chứa tệp nhị phân .om và metadata Ultralytics.
Các tính năng chính của model Ascend#
- AI Core chuyên dụng: Model đã biên dịch chạy trên Ascend AI Core thay vì CPU của host, mang lại thông lượng cao hơn đáng kể cho pipeline camera thời gian thực.
- Biên dịch trên 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.
- Ưu tiên ONNX: Tính năng export ONNX tiêu chuẩn của Ultralytics đưa trực tiếp model vào chuỗi công cụ CANN mà không cần định dạng trung gian độc quyền.
- Shape tĩnh: Shape input được cố định trong
.omtại thời điểm biên dịch, loại bỏ phần overhead thương lượng shape khi runtime. - Hỗ trợ nhiều thiết bị: Cùng một đồ thị ONNX có thể được biên dịch cho mọi SoC được hỗ trợ bằng cách thay đổi
name.
Các tác vụ được hỗ trợ#
Tính năng export Huawei Ascend hỗ trợ cả bảy tác vụ của Ultralytics. Semantic segmentation và ước lượng độ sâu chỉ khả dụng với YOLO26, họ model duy nhất có các head này.
Thiết bị được hỗ trợ#
Truyền SoC mục tiêu bằng name; ATC tích hợp SoC đó vào .om dưới dạng --soc_version, vì vậy phải chọn đúng SoC cho bo mạch triển khai. Khi biên dịch cục bộ, bạn có thể chọn bất kỳ SoC nào có kernel trong bản cài đặt CANN. Ultralytics Platform hỗ trợ các mục tiêu 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 8T, Atlas 200I A2 (8 TOPS) | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 20T, Atlas 200I A2 (20 TOPS) | ✅ | ✅ |
Export sang Ascend: Chuyển đổi model YOLO#
Export Ascend yêu cầu bộ công cụ CANN, chỉ chạy trên Linux. Compiler atc phải có trong PATH của bạn — hãy nạp 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 riêng CANN từ Huawei.
# Install the required package for YOLO
pip install ultralyticsBộ công cụ CANN do Huawei phân phối và không được cài đặt tự động. Tải bộ công cụ từ trang tải xuống của cộng đồng Ascend, hoặc sử dụng một trong các image container ascendai/cann chính thức, vốn tích hợp ATC và các dependency cần thiết.
ATC chỉ có thể biên dịch cho các dòng SoC đã cài kernel toán tử. Bộ công cụ chỉ có kernel ascend310p sẽ báo lỗi No supported Ops kernel and engine are found for ... Conv2D khi được yêu cầu biên dịch cho mục tiêu Ascend310B4. Hãy cài 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 chế độ Export, Predict và Validate. Inference và validation chạy trên phần cứng Ascend. Hãy export model, sau đó tải model đã export để chạy inference hoặc xác thực độ chính xác.
from ultralytics import YOLO
# Nạp model YOLO26
model = YOLO("yolo26n.pt")
# Export model sang định dạng Ascend cho bo mạch Atlas 200I / OrangePi AIPro
model.export(format="ascend", name="Ascend310B4")
# Tải model Ascend đã xuất và chạy inference trên thiết bị
ascend_model = YOLO("yolo26n_ascend_model")
results = ascend_model("https://ultralytics.com/images/bus.jpg")Các tham số xuất model#
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
format | str | 'ascend' | Định dạng đích của model đã xuất, 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. Mọi SoC 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 của bạn. |
imgsz | int hoặc tuple | 640 | Kích thước ảnh mong muốn cho đầu vào của model, được cố định thành shape tĩnh trong .om. |
batch | int | 1 | Kích thước batch tĩnh được biên dịch vào model offline. |
quantize | int | 16 | Độ chính xác lượng tử hóa. Xuất 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 đã lỗi thời. |
opset | int | 17 | ONNX opset cho graph trung gian. Giới hạn ở phiên bản 17, phiên bản cao nhất mà parser ONNX của CANN chấp nhận. |
simplify | bool | True | Đơn giản hóa đồ thị ONNX trung gian bằng onnxslim. |
nms | bool, không bắt buộc | None | Chọn đầu ra thô (None, mặc định), NMS nhúng (True) hoặc head không có NMS (False). |
device | str | None | Thiết bị dùng cho bước xuất ONNX trung gian, mặc định là CPU (device=cpu). Biên dịch ATC không sử dụng thiết bị này. |
Ascend AI Core chỉ chấp nhận đầu vào DT_FLOAT16 và DT_INT8 cho các phép tích chập, vì vậy model offline FP32 không thể chạy trên phần cứng. Yêu cầu quantize=32 sẽ gây lỗi thay vì âm thầm tạo ra một model không thể chạy.
Để biết thêm chi tiết về quy trình xuất, hãy truy cập trang tài liệu Ultralytics về xuất model.
Cấu trúc đầu ra#
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.)Tệp .om là model offline đã biên dịch mà runtime CANN tải lên thiết bị. Tên tệp chứa SoC đích để artifact có thể 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 ở đó. 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 đã xuất#
Sau khi xuất model Ultralytics YOLO sang định dạng Ascend thành công, 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 với package Python ais_bench, package này bao bọc các binding pyACL của CANN. Hãy 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 đã xuất sang thiết bị, sau đó chạy inference giống hệt như với mọi định dạng Ultralytics khác.
Quy trình được khuyến nghị#
- Huấn luyện model bằng Chế độ Train của Ultralytics hoặc bắt đầu từ một checkpoint đã huấn luyện trước.
- Xuất sang Ascend trên bất kỳ host Linux nào đã cài CANN, truyền
namephù hợp với SoC đích. - Sao chép thư mục model đã xuất sang thiết bị Ascend.
- Triển khai bằng 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: Phát hiện đối tượng theo thời gian thực từ nhiều camera trên gateway biên mà không cần máy chủ trung tâm.
- Robot: Nhận thức trên thiết bị cho robot di động tự hành và cánh tay robot cộng tác.
- Thành phố thông minh: Giám sát giao thông và phân tích người đi bộ trên các thiết bị ven đường tiêu thụ điện năng thấp.
Tóm tắt#
Trong hướng dẫn này, bạn đã tìm hiểu cách huấn luyện Ultralytics YOLO trên NPU Huawei Ascend và xuất model sang định dạng Ascend .om bằng trình biên dịch CANN ATC. Quá trình xuất chạy hoàn toàn trên host, tạo ra một thư mục model độc lập và hỗ trợ mọi SoC Ascend được hỗ trợ thông qua một đối 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.
Câu hỏi thường gặp#
Cài đặt Ultralytics và bộ công cụ CANN, nạp môi trường CANN để
atcnằm trênPATH, sau đó xuất 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. Trình biên dịch ATC chạy hoàn toàn trên host, vì vậy có thể biên dịch trên máy Linux x86-64 hoặc ARM64 tiêu chuẩn mà không cần gắn NPU. Bạn chỉ cần phần cứng Ascend để chạy inference với
.omđã xuất.Bản cài đặt CANN của bạn không có kernel toán tử cho SoC được yêu cầu. Mỗi bộ công cụ đi kèm kernel dành cho các dòng SoC cụ thể, vì vậy hãy cài package
Ascend-cann-kernels-<soc>phù hợp với thiết bị đích hoặc dùng image container đượ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 chạy được trên phần cứng, vì vậy trình xuất biên dịch với--precision_mode=force_fp16và từ chối yêu cầuquantize=32được chỉ định rõ.Mọi SoC có kernel trong bộ công cụ CANN đã cài đặt đều được hỗ trợ và có thể chọn thông qua đối số
name. Xem Thiết bị được hỗ trợ để biết bốn thiết bị đích đã được xác thực và khả năng sử dụng trên Ultralytics Platform.