Ultralytics YOLO27:
Get Started

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

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

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

Huawei Ascend — это семейство ИИ-процессоров, работающих с CANN (архитектура вычислений для нейронных сетей), гетерогенной вычислительной платформой Huawei. В CANN входит ATC (компилятор тензоров Ascend) — инструмент для хост-системы, который преобразует стандартный граф ONNX в автономную модель .om для конкретного оборудования, предназначенную для ядра Ascend AI Core.

Поскольку ATC полностью работает на хосте, модели можно компилировать на обычной машине Linux с архитектурой x86-64 или ARM64 без подключённого оборудования Ascend, а затем скопировать полученную .om на целевое устройство для инференса.

Обучение на Ascend NPU#

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, а не на CPU хоста, обеспечивая значительно более высокую пропускную способность для конвейеров обработки видео с камер в реальном времени.
  • Компиляция на хосте: для работы ATC не требуется подключённый NPU, поэтому экспорт можно выполнять в CI, контейнерах или на ноутбуке.
  • Сначала ONNX: стандартный экспорт Ultralytics в ONNX напрямую передаётся в инструментарий CANN без промежуточного проприетарного формата.
  • Статические формы: форма входных данных встраивается в .om во время компиляции, что устраняет накладные расходы на согласование форм во время выполнения.
  • Поддержка нескольких устройств: один и тот же граф ONNX компилируется для любой поддерживаемой SoC при изменении name.

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

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

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

Укажи целевую 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 8T, Atlas 200I A2 (8 TOPS)✅✅
Ascend310B1OrangePi AIPro 20T, Atlas 200I A2 (20 TOPS)✅✅

Экспорт для 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, при запросе цели Ascend310B4 произойдёт сбой с ошибкой No supported Ops kernel and engine are found for ... Conv2D. Установи подходящий пакет Ascend-cann-kernels-<soc> для устройства, на которое выполняется развёртывание.

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

Формат Ascend поддерживает режимы Экспорт, Предсказание и Валидация. Инференс и валидация выполняются на оборудовании Ascend. Экспортируй модель, затем загрузи экспортированную модель для инференса или проверки её точности.

Экспорт
from ultralytics import YOLO

# Загрузи модель YOLO26
model = YOLO("yolo26n.pt")

# # Экспорт модели в формат Ascend для платы Atlas 200I / OrangePi AIPro
model.export(format="ascend", name="Ascend310B4")

# Загрузи экспортированную модель Ascend и запусти инференс на устройстве
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 есть ядра; см. раздел Поддерживаемые устройства. SoC должна соответствовать устройству, на которое ты выполняешь развёртывание.
imgszint или tuple640Требуемый размер изображения на входе модели, заданный в .om как статическая форма тензора.
batchint1Статический размер пакета, скомпилированный в автономную модель.
quantizeint16Точность квантования. Экспорт для Ascend поддерживает только FP16 и автоматически включает 16, если параметр не задан. Заменяет устаревшие флаги half/int8.
opsetint17Версия ONNX opset для промежуточного графа. Ограничена значением 17 — максимальной версией, которую принимает парсер CANN ONNX.
simplifyboolTrueУпрощает промежуточный граф ONNX с помощью onnxslim.
nmsbool, необязательноNoneВыбери необработанный выход (None, по умолчанию), встроенный NMS (True) или голову без NMS (False).
devicestrNoneУстройство для промежуточного этапа экспорта ONNX; по умолчанию используется CPU (device=cpu). Компиляция ATC его не использует.
Почему 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. Обучи модель с помощью режима обучения Ultralytics или начни с предварительно обученного чекпойнта.
  2. Экспортируй модель для Ascend на любом хосте Linux с установленным CANN, указав name, соответствующую целевой SoC.
  3. Скопируй каталог экспортированной модели на устройство Ascend.
  4. Разверни модель с помощью среды выполнения 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. Укажи в name SoC целевого устройства.

  • Нет. Компилятор ATC полностью работает на хосте, поэтому компиляция выполняется на обычной машине Linux с архитектурой x86-64 или ARM64 без подключённого NPU. Оборудование Ascend нужно только для инференса с экспортированной .om.

  • В установленном CANN нет ядер операторов для запрошенной SoC. Каждый пакет инструментария содержит ядра для определённых семейств SoC, поэтому установи пакет Ascend-cann-kernels-<soc>, соответствующий целевой SoC, или используй образ контейнера, собранный для этого семейства устройств.

  • Свёртки Ascend AI Core принимают тензоры только в форматах DT_FLOAT16 и DT_INT8. Автономная модель FP32 не сможет выполняться на оборудовании, поэтому экспортёр компилирует её с --precision_mode=force_fp16 и отклоняет явный запрос quantize=32.

  • Подойдёт любая SoC, для которой установленный инструментарий CANN предоставляет ядра; выбери её с помощью аргумента name. Список четырёх проверенных целевых устройств и сведения об их доступности на платформе Ultralytics см. в разделе Поддерживаемые устройства.

Комментарии