YOLO Vision 2026:

Integración de Huawei Ascend para Ultralytics YOLO#

Desplegar modelos de visión artificial en procesadores de IA Huawei Ascend requiere compilarlos al formato de modelo offline .om que ejecuta el Ascend AI Core. Exportar modelos de Ultralytics YOLO a Ascend te permite ejecutar inferencias rápidas y de bajo consumo en placas de desarrollo Atlas y dispositivos OrangePi AIPro utilizados en robótica, inspección industrial y despliegues de cámaras inteligentes.

¿Qué es Huawei Ascend?#

Huawei Ascend es una familia de procesadores de IA combinada con CANN (Compute Architecture for Neural Networks), la pila de computación heterogénea de Huawei. CANN incluye el ATC (Ascend Tensor Compiler), una herramienta del lado del host que convierte un gráfico ONNX estándar en un modelo offline .om específico de hardware dirigido al Ascend AI Core.

Debido a que ATC se ejecuta completamente en el host, puedes compilar modelos en una máquina Linux x86-64 o ARM64 normal sin ningún hardware Ascend conectado, y luego copiar el .om resultante al dispositivo de destino para la inferencia.

Entrena en NPU de Ascend#

Ultralytics admite entrenamiento con una y múltiples NPU con torch_npu, incluyendo AMP, validación, creación de puntos de control, reanudación y AutoBatch. Selecciona una NPU con device=npu:0 o múltiples NPU con device=npu:0,1; el entrenamiento distribuido utiliza HCCL. Instala versiones compatibles de CANN, PyTorch y torch_npu y carga primero el entorno CANN. Consulta la sección de entrenamiento de NPU Ascend para ver ejemplos de instalación y uso.

Formato de exportación a Ascend#

El exportador de Ultralytics primero escribe un gráfico ONNX intermedio y luego invoca a ATC para compilarlo para el SoC al que apuntas con el argumento name. El resultado es un directorio de modelos independiente que contiene el binario .om y sus metadatos de Ultralytics.

Características principales de los modelos Ascend#

  • AI Core dedicado: Los modelos compilados se ejecutan en el Ascend AI Core en lugar de en la CPU del host, lo que ofrece un rendimiento sustancialmente mayor para flujos de trabajo de cámaras en tiempo real.
  • Compilación en el host: ATC no necesita una NPU conectada, por lo que la exportación se ejecuta en CI, en contenedores o en un ordenador portátil.
  • Primero ONNX: La exportación a ONNX de Ultralytics estándar se alimenta directamente en la cadena de herramientas CANN sin ningún formato intermedio propietario.
  • Formas estáticas: La forma de entrada se integra en el .om en el momento de la compilación, eliminando la sobrecarga de negociación de formas en tiempo de ejecución.
  • Orientación a múltiples dispositivos: El mismo gráfico ONNX se compila para cualquier SoC compatible cambiando name.

Tareas compatibles#

La exportación a Huawei Ascend es compatible con las siete tareas de Ultralytics. La segmentación semántica y la estimación de profundidad solo están disponibles en YOLO26, la única familia que incluye esas cabezas.

TareaYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Dispositivos compatibles#

Pasa el SoC de destino con name; ATC lo integra en el .om como --soc_version, por lo que debe coincidir con la placa en la que realizas el despliegue. Localmente puedes compilar para cualquier SoC para el cual tu instalación de CANN proporcione núcleos. Ultralytics Platform es compatible con los destinos Ascend310P1, Ascend310P3, Ascend310B1 y Ascend310B4.

nameDispositivosExportación localPlataforma
Ascend310P3Atlas 300I Pro, Atlas 300V Pro
Ascend310P1Atlas 300I
Ascend310B4OrangePi AIPro 20T, Atlas 200I A2
Ascend310B1OrangePi AIPro 8T

Exportar a Ascend: Convierte tu modelo YOLO#

Nota

La exportación a Ascend requiere el kit de herramientas CANN, que es exclusivo de Linux. El compilador atc debe estar en tu PATH; carga el script de entorno de CANN antes de exportar, por ejemplo, source /usr/local/Ascend/ascend-toolkit/set_env.sh.

Instalación#

Instala Ultralytics y luego instala CANN por separado desde Huawei.

Instalación
# Install the required package for YOLO
pip install ultralytics

El kit de herramientas CANN es distribuido por Huawei y no se instala automáticamente. Descárgalo desde la página de descargas de la comunidad Ascend, o utiliza una de las imágenes de contenedores ascendai/cann oficiales, que incluyen ATC y sus dependencias.

Haz coincidir el kit de herramientas con tu SoC de destino

ATC solo puede compilar para familias de SoC cuyos núcleos de operadores estén instalados. Un kit de herramientas que solo contenga núcleos de ascend310p falla con No supported Ops kernel and engine are found for ... Conv2D cuando se le solicita un destino Ascend310B4. Instala el paquete Ascend-cann-kernels-<soc> correspondiente para el dispositivo en el que realizas el despliegue.

Uso#

El formato Ascend admite los modos Exportar, Predecir y Validar. La inferencia y la validación se ejecutan en hardware Ascend. Exporta tu modelo, luego carga el modelo exportado para ejecutar la inferencia o validar su precisión.

Exportar
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")

Argumentos de exportación#

ArgumentoTipoPredeterminadoDescripción
formatstr'ascend'Formato de destino para el modelo exportado, que define la compatibilidad con los procesadores de IA Ascend.
namestr'Ascend310B4'SoC de destino pasado a ATC como --soc_version, por ejemplo, Ascend310P3. Cualquier SoC para el cual tu instalación de CANN tenga núcleos es válido; consulta Dispositivos compatibles. Debe coincidir con tu dispositivo de despliegue.
imgszint o tuple640Tamaño de imagen deseado para la entrada del modelo, integrado en el .om como una forma estática.
batchint1Tamaño de lote estático compilado en el modelo offline.
quantizeint16Precisión de cuantización. La exportación a Ascend es exclusiva de FP16 y habilita automáticamente 16 si no se especifica. Reemplaza los indicadores obsoletos half/int8.
opsetint17Conjunto de operadores ONNX para el grafo intermedio. Limitado a 17, la versión más alta que acepta el analizador ONNX de CANN.
simplifyboolTrueSimplifica el grafo ONNX intermedio con onnxslim.
nmsboolFalseAgrega supresión de no máximos (NMS) a los modelos compatibles de detección, segmentación, pose y OBB.
¿Por qué no está disponible FP32?

El Ascend AI Core acepta únicamente entradas DT_FLOAT16 y DT_INT8 para convoluciones, por lo que un modelo offline en FP32 no puede ejecutarse en el hardware. Solicitar quantize=32 genera un error en lugar de producir silenciosamente un modelo que no se ejecutará.

Para más detalles sobre el proceso de exportación, visita la página de documentación de Ultralytics sobre exportación.

Estructura de salida#

Tras una exportación exitosa, se crea un directorio de modelo con la siguiente estructura:

yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om  # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml           # Model metadata (classes, image size, task, etc.)

El archivo .om es el modelo offline compilado que el tiempo de ejecución de CANN carga en el dispositivo. Su nombre lleva el SoC de destino para que el artefacto sea autodescriptivo; mantén un .om por directorio, ya que el cargador selecciona el único modelo que encuentra allí. El metadata.yaml contiene los nombres de las clases, el tamaño de la imagen y otra información utilizada por el pipeline de inferencia de Ultralytics.

Despliegue de modelos YOLO Ascend exportados#

Una vez que hayas exportado con éxito tu modelo Ultralytics YOLO al formato Ascend, el siguiente paso es desplegarlo en hardware Ascend.

Instalación del entorno de ejecución#

La inferencia requiere el tiempo de ejecución de CANN en el dispositivo más el paquete de Python ais_bench, que envuelve los enlaces pyACL de CANN. Compílalo e instálalo desde el repositorio de herramientas de Ascend de 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

Copia el directorio yolo26n_ascend_model exportado al dispositivo, luego ejecuta la inferencia exactamente como lo harías con cualquier otro formato de Ultralytics.

Flujo de trabajo recomendado#

  1. Entrena tu modelo utilizando el Modo de entrenamiento de Ultralytics, o comienza desde un punto de control preentrenado.
  2. Exporta a Ascend en cualquier host Linux con CANN instalado, pasando el name que coincida con tu SoC de destino.
  3. Copia el directorio del modelo exportado al dispositivo Ascend.
  4. Despliega con el tiempo de ejecución de CANN y ais_bench para la inferencia en el dispositivo.

Aplicaciones en el mundo real#

Los modelos YOLO que se ejecutan en hardware Ascend se adaptan a una amplia gama de aplicaciones de visión integrada e industrial:

  • Automatización industrial: Inspección de calidad de alta velocidad y detección de defectos en líneas de producción.
  • Videovigilancia inteligente: Detección de objetos con múltiples cámaras en tiempo real en pasarelas de borde sin un servidor central.
  • Robótica: Percepción a bordo para robots móviles autónomos y brazos colaborativos.
  • Ciudades inteligentes: Monitoreo de tráfico y análisis de peatones en unidades de borde de baja potencia.

Resumen#

En esta guía, has aprendido a entrenar Ultralytics YOLO en NPU Huawei Ascend y a exportar modelos al formato Ascend .om utilizando el compilador CANN ATC. La exportación se ejecuta completamente en el host, produce un directorio de modelos independiente y apunta a cualquier SoC Ascend compatible a través de un único argumento name.

Para obtener más detalles sobre el uso, visita la documentación oficial de CANN.

Además, si deseas saber más sobre otras integraciones de Ultralytics YOLO, visita nuestra página de guía de integración para encontrar una gran cantidad de recursos útiles.

FAQ#

  • Instala Ultralytics y el kit de herramientas CANN, carga el entorno CANN para que atc esté en tu PATH, y luego exporta con model.export(format="ascend", name="Ascend310B4") en Python o yolo export model=yolo26n.pt format=ascend name=Ascend310B4 desde la CLI. Configura name con el SoC de tu dispositivo de despliegue.

  • No. El compilador ATC se ejecuta completamente en el host, por lo que la compilación funciona en una máquina Linux x86-64 o ARM64 estándar sin ninguna NPU conectada. Solo necesitas hardware Ascend para ejecutar la inferencia en el .om exportado.

  • Tu instalación de CANN no contiene núcleos de operadores para el SoC que solicitaste. Cada kit de herramientas incluye núcleos para familias de SoC específicas, así que instala el paquete Ascend-cann-kernels-<soc> que coincida con tu destino, o usa una imagen de contenedor creada para esa familia de dispositivos.

  • Las convoluciones del Ascend AI Core aceptan únicamente tensores DT_FLOAT16 y DT_INT8. Un modelo offline en FP32 fallaría al ejecutarse en el hardware, por lo que el exportador compila con --precision_mode=force_fp16 y rechaza una solicitud explícita de quantize=32.

  • Cualquier SoC para el cual tu kit de herramientas CANN instalado proporcione núcleos, seleccionado a través del argumento name. Consulta Dispositivos compatibles para conocer los cuatro destinos validados y su disponibilidad en Ultralytics Platform.

Colaboradores

Comentarios