Интеграция Huawei Ascend с Ultralytics YOLO#
Для развертывания моделей компьютерного зрения на процессорах Huawei Ascend AI их необходимо скомпилировать в офлайн-формат модели .om, который выполняется на Ascend AI Core. Экспорт моделей Ultralytics YOLO в Ascend позволяет запускать быстрый и энергоэффективный инференс на платах для разработчиков Atlas и устройствах OrangePi AIPro, используемых в робототехнике, промышленной инспекции и системах умных камер.
Что такое Huawei Ascend?#
Huawei Ascend — это семейство AI-процессоров в сочетании с CANN (вычислительная архитектура для нейронных сетей), гетерогенным вычислительным стеком Huawei. В состав CANN входит ATC (компилятор тензоров Ascend) — инструмент на стороне хоста, который преобразует стандартный граф ONNX в аппаратно-ориентированную офлайн-модель .om для Ascend AI Core.
Поскольку ATC полностью работает на хосте, ты можешь компилировать модели на обычной машине x86-64 или ARM64 под Linux без подключенного оборудования Ascend, а затем скопировать полученную .om на целевое устройство для инференса.
Обучение на NPU Ascend#
Ultralytics поддерживает обучение на одном и нескольких NPU с помощью torch_npu, включая AMP, валидацию, сохранение контрольных точек, возобновление обучения и
AutoBatch. Выбери один NPU с помощью device=npu:0 или несколько NPU с помощью device=npu:0,1; распределенное обучение использует HCCL.
Установи совместимые версии CANN, PyTorch и torch_npu, а затем сначала активируй окружение CANN. Подробнее об установке и примерах использования см. в разделе об обучении на NPU Ascend.
Формат экспорта Ascend#
Сначала экспортер Ultralytics записывает промежуточный граф ONNX, а затем вызывает ATC для его компиляции под целевой SoC с аргументом name. В результате создается автономный каталог модели, содержащий бинарный файл .om и метаданные Ultralytics.
Ключевые особенности моделей Ascend#
- Выделенное AI Core: скомпилированные модели выполняются на Ascend AI Core, а не на CPU хоста, обеспечивая значительно более высокую пропускную способность для конвейеров обработки изображений с камер в реальном времени.
- Компиляция на стороне хоста: ATC не требует подключенного NPU, поэтому экспорт можно выполнять в CI, контейнерах или на ноутбуке.
- Сначала ONNX: стандартный экспорт Ultralytics в ONNX напрямую передает модель в цепочку инструментов CANN без проприетарного промежуточного формата.
- Статические формы: форма входных данных встраивается в
.omво время компиляции, что устраняет накладные расходы на согласование формы во время выполнения. - Ориентация на несколько устройств: один и тот же граф ONNX компилируется для любого поддерживаемого SoC путем изменения
name.
Поддерживаемые задачи#
Экспорт Huawei Ascend поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26 — единственном семействе, поставляемом с такими головами.
| Задача | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Детекция | ✅ | ✅ | ✅ |
| Сегментация | ✅ | ✅ | ✅ |
| Семантическая сегментация | ❌ | ❌ | ✅ |
| Оценка глубины | ❌ | ❌ | ✅ |
| Классификация | ✅ | ✅ | ✅ |
| Поза | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Поддерживаемые устройства#
Передай целевой SoC с помощью name; ATC встраивает его в .om как --soc_version, поэтому он должен соответствовать плате, на которую ты выполняешь развертывание. Локально ты можешь компилировать модели для любого SoC, для которого в установленном CANN доступны ядра. Ultralytics Platform поддерживает цели Ascend310P1, Ascend310P3, Ascend310B1 и Ascend310B4.
name | Устройства | Локальный экспорт | Platform |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro, Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T, Atlas 200I A2 | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 8T | ✅ | ✅ |
Экспорт в Ascend: преобразование твоей модели YOLO#
Для экспорта в Ascend требуется инструментарий CANN, доступный только в Linux. Компилятор atc должен находиться в твоем PATH — перед экспортом активируй скрипт окружения CANN, например source /usr/local/Ascend/ascend-toolkit/set_env.sh.
Установка#
Установи Ultralytics, а затем отдельно установи CANN от Huawei.
# Install the required package for YOLO
pip install ultralyticsИнструментарий CANN распространяется Huawei и не устанавливается автоматически. Скачай его со страницы загрузки сообщества Ascend или используй один из официальных образов контейнеров ascendai/cann, в которые входят ATC и его зависимости.
ATC может компилировать модели только для семейств SoC, для которых установлены ядра операторов. Инструментарий, содержащий только ядра ascend310p, завершится ошибкой No supported Ops kernel and engine are found for ... Conv2D при запросе цели Ascend310B4. Установи пакет Ascend-cann-kernels-<soc>, соответствующий устройству, на которое ты выполняешь развертывание.
Использование#
Формат Ascend поддерживает режимы экспорта, предсказания и валидации. Инференс и валидация выполняются на оборудовании Ascend. Экспортируй модель, а затем загрузи экспортированную модель для запуска инференса или проверки ее точности.
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")Аргументы экспорта#
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'ascend' | Целевой формат экспортированной модели, определяющий совместимость с AI-процессорами Ascend. |
name | str | 'Ascend310B4' | Целевой SoC, передаваемый в ATC как --soc_version, например Ascend310P3. Допустим любой SoC, для которого в установленном CANN есть ядра; см. раздел «Поддерживаемые устройства». Он должен соответствовать устройству развертывания. |
imgsz | int или tuple | 640 | Желаемый размер изображения на входе модели, который встраивается в .om как статическая форма. |
batch | int | 1 | Статический размер пакета, скомпилированный в офлайн-модель. |
quantize | int | 16 | Точность квантования. Экспорт в Ascend поддерживает только FP16 и автоматически включает 16, если параметр не указан. Заменяет устаревшие флаги half/int8. |
opset | int | 17 | Набор операций ONNX для промежуточного графа. Ограничен значением 17 — максимальной версией, которую принимает парсер ONNX в CANN. |
simplify | bool | True | Упрощает промежуточный граф ONNX с помощью onnxslim. |
nms | bool | False | Добавляет подавление немаксимумов в поддерживаемые модели обнаружения, сегментации, позы и OBB. |
Ascend AI Core принимает для сверточных операций только входы DT_FLOAT16 и DT_INT8, поэтому офлайн-модель FP32 не может выполняться на оборудовании. Запрос quantize=32 вызывает ошибку, а не приводит к незаметному созданию модели, которая не будет работать.
Подробнее о процессе экспорта см. на странице документации Ultralytics об экспорте.
Структура выходных данных#
После успешного экспорта создается каталог модели со следующей структурой:
yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml # Model metadata (classes, image size, task, etc.)Файл .om — это скомпилированная офлайн-модель, которую среда выполнения CANN загружает на устройстве. В его имени содержится целевой SoC, поэтому артефакт сам описывает себя; храни по одному .om в каждом каталоге, поскольку загрузчик выбирает единственную найденную там модель. Файл metadata.yaml содержит имена классов, размер изображения и другие данные, используемые конвейером инференса Ultralytics.
Развертывание экспортированных моделей YOLO для Ascend#
После успешного экспорта модели Ultralytics YOLO в формат Ascend следующим шагом будет ее развертывание на оборудовании Ascend.
Установка среды выполнения#
Для инференса на устройстве необходимы среда выполнения CANN и пакет ais_bench для Python, который оборачивает привязки pyACL из CANN. Собери и установи его из репозитория инструментов Ascend от 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Скопируй экспортированный каталог yolo26n_ascend_model на устройство, а затем запусти инференс так же, как для любого другого формата Ultralytics.
Рекомендуемый рабочий процесс#
- Обучи модель с помощью режима обучения Ultralytics или начни с предварительно обученной контрольной точки.
- Экспортируй модель в Ascend на любом хосте Linux с установленным CANN, передав
name, соответствующий целевому SoC. - Скопируй каталог экспортированной модели на устройство Ascend.
- Разверни модель с помощью среды выполнения CANN и
ais_benchдля инференса на устройстве.
Практические применения#
Модели YOLO, работающие на оборудовании Ascend, подходят для широкого спектра встраиваемых и промышленных задач компьютерного зрения:
- Промышленная автоматизация: высокоскоростной контроль качества и обнаружение дефектов на производственных линиях.
- Умное видеонаблюдение: обнаружение объектов с нескольких камер в реальном времени на периферийных шлюзах без центрального сервера.
- Робототехника: бортовое восприятие для автономных мобильных роботов и коллаборативных манипуляторов.
- Умные города: мониторинг дорожного движения и анализ пешеходов на маломощных придорожных устройствах.
Итоги#
В этом руководстве ты узнал, как обучать Ultralytics YOLO на NPU Huawei Ascend и экспортировать модели в формат Ascend .om с помощью компилятора CANN ATC. Экспорт полностью выполняется на хосте, создает автономный каталог модели и позволяет выбрать любой поддерживаемый SoC Ascend с помощью одного аргумента name.
Подробнее об использовании см. в официальной документации CANN.
Если ты хочешь больше узнать о других интеграциях Ultralytics YOLO, перейди на нашу страницу руководства по интеграциям, где ты найдешь множество полезных ресурсов.
Часто задаваемые вопросы#
Установи Ultralytics и инструментарий CANN, активируй окружение CANN, чтобы
atcнаходился в твоемPATH, а затем выполни экспорт с помощьюmodel.export(format="ascend", name="Ascend310B4")в Python илиyolo export model=yolo26n.pt format=ascend name=Ascend310B4из CLI. Укажи вnameSoC устройства, на котором будет выполняться развертывание.Нет. Компилятор ATC полностью работает на хосте, поэтому компиляция выполняется на стандартной машине x86-64 или ARM64 под Linux без подключенного NPU. Оборудование Ascend понадобится только для запуска инференса экспортированной
.om.В установленном CANN отсутствуют ядра операторов для запрошенного SoC. Каждый инструментарий содержит ядра для определенных семейств SoC, поэтому установи пакет
Ascend-cann-kernels-<soc>, соответствующий твоей цели, или используй образ контейнера, созданный для этого семейства устройств.Сверточные операции Ascend AI Core принимают тензоры только
DT_FLOAT16иDT_INT8. Офлайн-модель FP32 не сможет выполняться на оборудовании, поэтому экспортер компилирует модель с помощью--precision_mode=force_fp16и отклоняет явный запросquantize=32.Любой SoC, для которого установленный инструментарий CANN предоставляет ядра, выбранный с помощью аргумента
name. Список четырех проверенных целей и информацию об их доступности на Ultralytics Platform см. в разделе «Поддерживаемые устройства».