YOLO Vision 2026:

Tích hợp Huawei Ascend cho Ultralytics YOLO#

Việc triển khai các mô hình thị giác máy tính trên Bộ xử lý AI Huawei Ascend đòi hỏi phải biên dịch chúng thành định dạng mô hình ngoại tuyến .om được thực thi bởi Ascend AI Core. Xuất các mô hình Ultralytics YOLO sang Ascend cho phép bạn chạy suy luận nhanh, tiêu thụ ít điện năng trên các bo mạch nhà phát triển Atlas và thiết bị OrangePi AIPro được sử dụng trong các hệ thống robotics, kiểm tra công nghiệp và triển khai camera thông minh.

Huawei Ascend là gì?#

Huawei Ascend là dòng Bộ xử lý AI đi kèm với CANN (Compute Architecture for Neural Networks), ngăn xếp điện toán dị thể của Huawei. CANN tích hợp ATC (Ascend Tensor Compiler), một công cụ phía máy chủ chuyển đổi đồ thị ONNX tiêu chuẩn thành mô hình ngoại tuyến .om dành riêng cho phần cứng mục tiêu nhắm tới Ascend AI Core.

Vì ATC chạy hoàn toàn trên máy chủ (host), bạn có thể biên dịch các mô hình trên một máy Linux x86-64 hoặc ARM64 thông thường mà không cần gắn bất kỳ phần cứng Ascend nào, sau đó sao chép tệp .om kết quả sang thiết bị đích để thực hiện suy luận.

Huấn luyện trên NPU Ascend#

Ultralytics hỗ trợ huấn luyện đơn và đa NPU với torch_npu, bao gồm AMP, kiểm tra tính hợp lệ (validation), lưu điểm kiểm tra (checkpointing), tiếp tục huấn luyện (resume) và AutoBatch. Chọn một NPU với device=npu:0 hoặc nhiều NPU với 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 NPU Ascend để biết ví dụ về cách cài đặt và sử dụng.

Định dạng xuất Ascend#

Trình xuất của Ultralytics trước tiên ghi một đồ thị ONNX trung gian, sau đó gọi ATC để biên dịch nó cho SoC mà bạn nhắm tới với đối số name. Kết quả là một thư mục mô hình khép kín chứa tệp nhị phân .om và các siêu dữ liệu (metadata) của Ultralytics.

Các tính năng chính của mô hình Ascend#

  • AI Core chuyên dụng: Các mô hình đã biên dịch được thực thi trên Ascend AI Core thay vì CPU của máy chủ, mang lại thông lượng cao hơn đáng kể cho các đường ống xử lý camera thời gian thực.
  • Biên dịch phía máy chủ: ATC không cần NPU đính kèm, do đó quá trình xuất chạy được trong CI, trong các container hoặc trên máy tính xách tay.
  • Ưu tiên ONNX: Quá trình xuất ONNX của Ultralytics tiêu chuẩn truyền trực tiếp vào chuỗi công cụ CANN mà không cần định dạng trung gian độc quyền nào.
  • Hình dạng tĩnh (Static shapes): Kích thước đầu vào được gán cứng vào .om tại thời điểm biên dịch, loại bỏ độ trễ thương lượng hình dạng khi chạy (runtime shape negotiation).
  • Nhắm mục tiêu đa thiết bị: Cùng một đồ thị ONNX có thể được biên dịch cho bất kỳ SoC được hỗ trợ nào bằng cách thay đổi name.

Các tác vụ được hỗ trợ#

Tính năng xuất Huawei Ascend hỗ trợ tất cả bảy tác vụ Ultralytics. Phân đoạn ngữ nghĩa và ước tính chiều sâu chỉ khả dụng với YOLO26, dòng duy nhất tích hợp các phần đầu (head) này.

Tác vụYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Thiết bị được hỗ trợ#

Truyền SoC đích bằng name; ATC sẽ nhúng nó vào .om dưới dạng --soc_version, do đó nó phải khớp với bo mạch bạn triển khai lên. Tại máy 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 mục tiêu Ascend310P1, Ascend310P3, Ascend310B1 và Ascend310B4.

nameThiết bịXuất cục bộNền tảng
Ascend310P3Atlas 300I Pro, Atlas 300V Pro
Ascend310P1Atlas 300I
Ascend310B4OrangePi AIPro 20T, Atlas 200I A2
Ascend310B1OrangePi AIPro 8T

Xuất sang Ascend: Chuyển đổi mô hình YOLO của bạn#

Lưu ý

Quá trình xuất sang Ascend yêu cầu bộ công cụ CANN, chỉ chạy trên Linux. Trình biên dịch atc phải nằm trên biến môi trường PATH của bạn — hãy nạp tập lệnh môi trường CANN trước khi xuất, ví dụ: source /usr/local/Ascend/ascend-toolkit/set_env.sh.

Cài đặt#

Cài đặt Ultralytics, sau đó cài đặt riêng CANN từ Huawei.

Cài đặt
# Install the required package for YOLO
pip install ultralytics

Bộ công cụ CANN được phân phối bởi Huawei và không được cài đặt tự động. Hãy tải xuống từ trang tải xuống cộng đồng Ascend, hoặc sử dụng một trong các [hình ảnh vùng chứa (container images) ascendai/cann chính thức, tích hợp sẵn ATC và các phụ thuộc của nó.

Khớp bộ công cụ với SoC mục tiêu của bạn

ATC chỉ có thể biên dịch cho các dòng SoC có sẵn kernel toán tử được cài đặt. Một bộ công cụ chỉ chứa các kernel ascend310p sẽ thất bại với lỗi No supported Ops kernel and engine are found for ... Conv2D khi được yêu cầu mục tiêu Ascend310B4. Hãy cài đặt gói Ascend-cann-kernels-<soc> tương ứng cho thiết bị bạn triển khai.

Cách sử dụng#

Định dạng Ascend hỗ trợ các chế độ Xuất (Export), Dự đoán (Predict)Kiểm tra (Validate). Suy luận và kiểm tra chạy trên phần cứng Ascend. Hãy xuất mô hình của bạn, sau đó tải mô hình đã xuất để chạy suy luận hoặc kiểm tra độ chính xác của nó.

Xuất (Export)
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ố xuất#

Đối sốLoạiMặc địnhMô tả
formatstr'ascend'Định dạng mục tiêu cho mô hình đã xuất, xác định tính tương thích với Bộ xử lý AI Ascend.
namestr'Ascend310B4'SoC đích được truyền vào ATC dưới dạng --soc_version, ví dụ: Ascend310P3. Bất kỳ SoC nào mà bản cài đặt CANN của bạn có kernel đều hợp lệ; xem phần Thiết bị được hỗ trợ. Phải khớp với thiết bị triển khai của bạn.
imgszint hoặc tuple640Kích thước ảnh mong muốn cho đầu vào mô hình, được gán cứng vào .om dưới dạng hình dạng tĩnh.
batchint1Kích thước batch tĩnh được biên dịch vào mô hình ngoại tuyến.
quantizeint16Độ chính xác lượng tử hóa. Quá trình xuất Ascend chỉ hỗ trợ FP16 và tự động bật 16 nếu không được chỉ định. Thay thế các cờ half/int8 đã lỗi thời.
opsetint17ONNX opset cho biểu đồ trung gian. Giới hạn ở 17, 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.
simplifyboolTrueĐơn giản hóa đồ thị ONNX trung gian với onnxslim.
nmsboolFalseThêm Non-Maximum Suppression vào các mô hình phát hiện, phân đoạn, tư thế và OBB được hỗ trợ.
Tại sao FP32 không khả dụng?

Ascend AI Core chỉ chấp nhận đầu vào DT_FLOAT16DT_INT8 cho các phép tích chập (convolution), do đó một mô hình ngoại tuyến FP32 không thể thực thi trên phần cứng. Việc yêu cầu quantize=32 sẽ gây ra lỗi thay vì âm thầm tạo ra một mô hình không thể chạy.

Để biết thêm chi tiết về quá trình xuất, hãy truy cập trang tài liệu của Ultralytics về việc xuất model.

Cấu trúc đầu ra#

Sau khi xuất thành công, một thư mục mô hình sẽ được tạo với bố cụ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à mô hình ngoại tuyến đã được biên dịch mà thời gian chạy (runtime) CANN tải lên thiết bị. Tên của nó chứa SoC đích để tạo tác phẩm tự mô tả; hãy giữ lại một .om cho mỗi thư mục, vì trình tải sẽ chọn mô hình duy nhất mà nó tìm thấy ở đó. Tệp metadata.yaml chứa tên lớp, kích thước ảnh và các thông tin khác được sử dụng bởi chuỗi suy luận Ultralytics.

Triển khai các mô hình YOLO Ascend đã xuất#

Khi bạn đã xuất thành công mô hình Ultralytics YOLO sang định dạng Ascend, bước tiếp theo là triển khai nó trên phần cứng Ascend.

Cài đặt Runtime#

Suy luận yêu cầu thời gian chạy CANN trên thiết bị cùng với gói Python ais_bench, bao bọc các liên kết pyACL của CANN. Xây dựng và cài đặt nó từ kho lưu trữ 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-*.whl

Sao chép thư mục yolo26n_ascend_model đã xuất sang thiết bị, sau đó chạy suy luận chính xác như bạn làm với bất kỳ định dạng Ultralytics nào khác.

Quy trình làm việc được đề xuất#

  1. Huấn luyện (Train) mô hình của bạn bằng Chế độ Huấn luyện (Train Mode) của Ultralytics, hoặc bắt đầu từ một điểm kiểm tra đã được huấn luyện trước.
  2. Xuất (Export) sang Ascend trên bất kỳ máy chủ Linux nào đã cài đặt CANN, truyền đối số name khớp với SoC đích của bạn.
  3. Sao chép thư mục mô hình đã xuất sang thiết bị Ascend.
  4. Triển khai (Deploy) với thời gian chạy CANN và ais_bench để thực hiện suy luận trên thiết bị.

Ứng dụng trong thực tế#

Các mô hình 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 các dây chuyền sản xuất.
  • Giám sát thông minh: Phát hiện đối tượng đa camera thời gian thực trên các cổng biên (edge gateway) mà không cần máy chủ trung tâm.
  • Robot: Nhận thức trên bo mạch cho các robot di động tự hành và cánh tay 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 đã học cách huấn luyện Ultralytics YOLO trên các NPU Huawei Ascend và xuất các mô hình 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 máy chủ, tạo ra một thư mục mô hình khép kín và nhắm mục tiêu đến bất kỳ SoC Ascend nào đượ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 chính thức của CANN.

Ngoài ra, nếu bạn muốn tìm hiểu thêm về các tích hợp khác của Ultralytics YOLO, hãy truy cập trang hướng dẫn tích hợp của chúng tôi để tìm kiếm vô số 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 để atc nằm trong biến môi trường PATH của bạn, sau đó xuất bằng model.export(format="ascend", name="Ascend310B4") trong Python hoặc yolo export model=yolo26n.pt format=ascend name=Ascend310B4 từ CLI. Đặt name thành SoC của thiết bị triển khai của bạn.

  • Không. Trình biên dịch ATC chạy hoàn toàn trên máy chủ, do đó việc biên dịch hoạt động trên một 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 suy luận trên .om đã xuất.

  • Bản cài đặt CANN của bạn không chứa kernel toán tử cho SoC mà bạn yêu cầu. Mỗi bộ công cụ tích hợp sẵn các kernel cho các dòng SoC cụ thể, vì vậy hãy cài đặt gói Ascend-cann-kernels-<soc> khớp với mục tiêu của bạn, hoặc sử dụng hình ảnh vùng chứa được xây dựng cho dòng thiết bị đó.

  • Các phép tích chập của Ascend AI Core chỉ chấp nhận các tensor DT_FLOAT16DT_INT8. Một mô hình ngoại tuyến FP32 sẽ không thể thực thi trên phần cứng, vì vậy trình xuất sẽ biên dịch với --precision_mode=force_fp16 và từ chối yêu cầu quantize=32 rõ ràng.

  • Bất kỳ SoC nào mà bộ công cụ CANN đã cài đặt của bạn cung cấp kernel, được chọn thông qua đối số name. Xem mục Thiết bị được hỗ trợ để biết bốn mục tiêu đã được kiểm chứng và tính khả dụng của chúng trên Ultralytics Platform.

Những người đóng góp

Bình luận