YOLO Vision 2026:

Интеграция Huawei Ascend для Ultralytics YOLO#

Развертывание моделей компьютерного зрения на процессорах Huawei Ascend AI Processors требует их компиляции в формат автономной модели .om, выполняемой на Ascend AI Core. Экспорт моделей Ultralytics YOLO на Ascend позволяет запускать быстрый инференс с низким энергопотреблением на плате разработчика Atlas и устройствах OrangePi AIPro, используемых в робототехнике, промышленном контроле и системах умных камер.

Что такое Huawei Ascend?#

Huawei Ascend — это семейство процессоров искусственного интеллекта, поставляемых в комплекте с CANN (Compute Architecture for Neural Networks), гетерогенным вычислительным стеком Huawei. CANN включает в себя ATC (Ascend Tensor Compiler), инструмент для хост-машины, который преобразует стандартный граф ONNX в автономную модель .om, специфичную для оборудования и нацеленную на Ascend AI Core.

Поскольку ATC работает полностью на хосте, ты можешь компилировать модели на обычной машине Linux x86-64 или ARM64 без какого-либо подключенного оборудования 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. См. раздел обучения на Ascend NPU для примеров установки и использования.

Формат экспорта Ascend#

Экспортер Ultralytics сначала записывает промежуточный граф ONNX, а затем вызывает ATC для его компиляции под целевой SoC, указанный в аргументе name. Результатом является автономный каталог модели, содержащий бинарный файл .om и его метаданные Ultralytics.

Ключевые особенности моделей Ascend#

  • Выделенный AI Core: Скомпилированные модели выполняются на Ascend AI Core, а не на хост-процессоре, что обеспечивает существенно более высокую пропускную способность для конвейеров работы с камерами в реальном времени.
  • Компиляция на хосте: Для ATC не требуется подключенный NPU, поэтому экспорт можно запускать в CI, контейнерах или на ноутбуке.
  • С акцентом на ONNX: Стандартный экспорт ONNX в Ultralytics поступает напрямую в тулчейн CANN без каких-либо проприетарных промежуточных форматов.
  • Статические формы: Форма входных данных встраивается в .om во время компиляции, что устраняет накладные расходы на согласование форм во время выполнения.
  • Мультиустройственная ориентация: Один и тот же граф ONNX компилируется для любого поддерживаемого SoC путем изменения name.

Поддерживаемые задачи#

Экспорт Huawei Ascend поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26, единственном семействе, в котором поставляются эти «головные» модули.

ЗадачаYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Поддерживаемые устройства#

Передай целевой SoC с помощью name; ATC встраивает его в .om как --soc_version, поэтому он должен соответствовать плате, на которую ты производишь развертывание. Локально ты можешь компилировать для любого SoC, для которого твоя установка CANN предоставляет ядра. Ultralytics Platform поддерживает цели Ascend310P1, Ascend310P3, Ascend310B1 и Ascend310B4.

nameУстройстваЛокальный экспортПлатформа
Ascend310P3Atlas 300I Pro, Atlas 300V Pro
Ascend310P1Atlas 300I
Ascend310B4OrangePi AIPro 20T, Atlas 200I A2
Ascend310B1OrangePi 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 и его зависимости.

Сопоставь инструментарий с целевой SoC

ATC может компилировать только для семейств SoC, операционные ядра которых установлены. Инструментарий, содержащий только ядра ascend310p, завершается с ошибкой No supported Ops kernel and engine are found for ... Conv2D при запросе цели Ascend310B4. Установи соответствующий пакет Ascend-cann-kernels-<soc> для устройства, на которое ты выполняешь развертывание.

Использование#

Формат Ascend поддерживает режимы Export, Predict и Validate. Инференс и валидация выполняются на оборудовании 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")

Аргументы экспорта#

АргументТипПо умолчаниюОписание
formatstr'ascend'Целевой формат для экспортированной модели, определяющий совместимость с процессорами Ascend AI.
namestr'Ascend310B4'Целевой SoC передается в ATC как --soc_version, например Ascend310P3. Любой SoC, для которого в твоей установке CANN есть ядра, является действительным; см. Поддерживаемые устройства. Должен соответствовать твоему устройству развертывания.
imgszint или tuple640Желаемый размер изображения для входа модели, зашитый в .om как статический тензор.
batchint1Статический размер батча, скомпилированный в офлайн-модель.
quantizeint16Точность квантования. Экспорт в Ascend поддерживает только FP16 и автоматически включает 16, если не указано иное. Заменяет устаревшие флаги half/int8.
opsetint17Набор операций ONNX для промежуточного графа. Ограничен версией 17 — это наивысшая версия, которую принимает парсер ONNX в CANN.
simplifyboolTrueУпрощает промежуточный граф ONNX с помощью onnxslim.
nmsboolFalseДобавляет подавление не максимальных предсказаний (NMS) в поддерживаемые модели обнаружения, сегментации, позы и OBB.
Почему FP32 недоступен?

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 на устройстве плюс пакета Python ais_bench, который обертывает привязки 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.

Рекомендуемый рабочий процесс#

  1. Обучай (Train) свою модель с помощью режима обучения Ultralytics или начни с предобученного чекпоинта.
  2. Экспортируй (Export) в Ascend на любом хосте Linux с установленным CANN, передав name, который соответствует твоему целевому SoC.
  3. Скопируй экспортированный каталог модели на устройство Ascend.
  4. Развертывай (Deploy) со средой выполнения CANN и ais_bench для инференса на устройстве.

Применение в реальных условиях#

Модели YOLO, работающие на оборудовании Ascend, подходят для широкого спектра встроенных и промышленных приложений компьютерного зрения:

  • Промышленная автоматизация: Высокоскоростной контроль качества и обнаружение дефектов на производственных линиях.
  • Умное видеонаблюдение: Многокамерное обнаружение объектов в реальном времени на периферийных шлюзах без центрального сервера.
  • Робототехника: Бортовая система восприятия для автономных мобильных роботов и коллаборативных манипуляторов.
  • Умные города: Мониторинг дорожного движения и анализ пешеходов на маломощных придорожных модулях.

Резюме#

В этом руководстве ты узнал, как обучать Ultralytics YOLO на NPU Huawei Ascend и экспортировать модели в формат Ascend .om с помощью компилятора CANN ATC. Экспорт выполняется полностью на хосте, создает автономный каталог модели и нацелен на любой поддерживаемый SoC Ascend через один аргумент name.

Для получения более подробной информации об использовании посети официальную документацию CANN.

Кроме того, если ты хочешь узнать больше о других интеграциях Ultralytics YOLO, посети нашу страницу руководства по интеграции, чтобы найти множество полезных ресурсов.

FAQ#

  • Установи Ultralytics и инструментарий CANN, инициализируй окружение CANN так, чтобы atc находился в твоем PATH, а затем выполни экспорт с помощью model.export(format="ascend", name="Ascend310B4") в Python или yolo export model=yolo26n.pt format=ascend name=Ascend310B4 из CLI. Установи name в качестве SoC твоего устройства развертывания.

  • Нет. Компилятор ATC работает полностью на хосте, поэтому компиляция работает на стандартной машине Linux x86-64 или ARM64 без подключенного 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.

Участники

Комментарии