Integración de Huawei Ascend con Ultralytics YOLO#
Implementar modelos de visión artificial en procesadores de IA Huawei Ascend requiere compilarlos en el formato de modelo sin conexión .om, ejecutado por 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 junto con CANN (Arquitectura de Computación para Redes Neuronales), la pila de computación heterogénea de Huawei. CANN incluye ATC (Compilador de Tensores de Ascend), una herramienta del lado del host que convierte un grafo ONNX estándar en un modelo sin conexión .om específico del hardware y dirigido al Ascend AI Core.
Como ATC se ejecuta completamente en el host, puedes compilar modelos en una máquina Linux x86-64 o ARM64 normal sin conectar ningún hardware Ascend y, después, copiar el .om resultante al dispositivo de destino para realizar inferencias.
Entrena en NPUs Ascend#
Ultralytics admite el entrenamiento con una o varias NPUs mediante torch_npu, incluidos AMP, la validación, los puntos de control, la reanudación y
AutoBatch. Selecciona una NPU con device=npu:0 o varias NPUs con device=npu:0,1; el entrenamiento distribuido utiliza HCCL.
Instala versiones compatibles de CANN, PyTorch y torch_npu, y carga primero el entorno de CANN. Consulta la
sección sobre entrenamiento en NPU Ascend para ver ejemplos de instalación y uso.
Formato de exportación de Ascend#
El exportador de Ultralytics escribe primero un grafo ONNX intermedio y, después, invoca ATC para compilarlo para el SoC de destino mediante el argumento name. El resultado es un directorio de modelo autónomo 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 proporciona un rendimiento considerablemente mayor para canalizaciones de cámaras en tiempo real.
- Compilación en el host: ATC no necesita ninguna NPU conectada, por lo que la exportación se ejecuta en CI, en contenedores o en un portátil.
- ONNX como formato principal: la exportación ONNX estándar de Ultralytics se integra directamente en la cadena de herramientas de CANN sin ningún formato intermedio propietario.
- Formas estáticas: la forma de entrada se integra en
.omdurante la compilación, eliminando la sobrecarga de negociar la forma en tiempo de ejecución. - Compatibilidad con varios dispositivos: el mismo grafo ONNX se compila para cualquier SoC compatible cambiando
name.
Tareas compatibles#
La exportación de Huawei Ascend admite las siete tareas de Ultralytics. La segmentación semántica y la estimación de profundidad solo están disponibles con YOLO26, la única familia que incluye esas cabezas.
| Tarea | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detección | ✅ | ✅ | ✅ |
| Segmentación | ✅ | ✅ | ✅ |
| Semántica | ❌ | ❌ | ✅ |
| Profundidad | ❌ | ❌ | ✅ |
| Clasificación | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Dispositivos compatibles#
Pasa el SoC de destino mediante name; ATC lo integra en .om como --soc_version, por lo que debe coincidir con la placa en la que realices el despliegue. Localmente puedes compilar para cualquier SoC para el que tu instalación de CANN proporcione kernels. Ultralytics Platform admite los destinos Ascend310P1, Ascend310P3, Ascend310B1 y Ascend310B4.
name | Dispositivos | Exportación local | Plataforma |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro, Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T, Atlas 200I A2 | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 8T | ✅ | ✅ |
Exportar a Ascend: convierte tu modelo YOLO#
La exportación a Ascend requiere el kit de herramientas CANN, que solo está disponible para Linux. El compilador atc debe estar en tu PATH; carga el script del entorno de CANN antes de exportar, por ejemplo, source /usr/local/Ascend/ascend-toolkit/set_env.sh.
Instalación#
Instala Ultralytics y, después, instala CANN por separado desde Huawei.
# Install the required package for YOLO
pip install ultralyticsHuawei distribuye el kit de herramientas CANN y no se instala automáticamente. Descárgalo desde la página de descargas de la comunidad de Ascend o utiliza una de las imágenes de contenedor oficiales de ascendai/cann, que incluyen ATC y sus dependencias.
ATC solo puede compilar para familias de SoC cuyos kernels de operadores estén instalados. Un kit de herramientas que solo incluya kernels 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 al dispositivo en el que realizarás 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 y, después, carga el modelo exportado para ejecutar inferencias o validar su precisión.
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#
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'ascend' | Formato de destino del modelo exportado, que define la compatibilidad con los procesadores de IA Ascend. |
name | str | 'Ascend310B4' | SoC de destino pasado a ATC como --soc_version, por ejemplo, Ascend310P3. Es válido cualquier SoC para el que tu instalación de CANN tenga kernels; consulta Dispositivos compatibles. Debe coincidir con tu dispositivo de despliegue. |
imgsz | int o tuple | 640 | Tamaño de imagen deseado para la entrada del modelo, integrado en .om como una forma estática. |
batch | int | 1 | Tamaño de lote estático compilado en el modelo sin conexión. |
quantize | int | 16 | Precisión de cuantización. La exportación a Ascend solo admite FP16 y activa automáticamente 16 si no se especifica. Sustituye a las opciones obsoletas half/int8. |
opset | int | 17 | Conjunto de operaciones de ONNX para el grafo intermedio. Está limitado a 17, la versión más alta que acepta el analizador ONNX de CANN. |
simplify | bool | True | Simplifica el grafo ONNX intermedio con onnxslim. |
nms | bool | False | Añade la supresión de no máximos a los modelos compatibles de detección, segmentación, pose y OBB. |
El Ascend AI Core solo acepta entradas DT_FLOAT16 y DT_INT8 para las convoluciones, por lo que un modelo sin conexión FP32 no puede ejecutarse en el hardware. Solicitar quantize=32 genera un error en lugar de producir silenciosamente un modelo que no funcionará.
Para obtener más información sobre el proceso de exportación, visita la página de la documentación de Ultralytics sobre exportación.
Estructura de salida#
Tras una exportación correcta, 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 sin conexión compilado que el entorno de ejecución de CANN carga en el dispositivo. Su nombre incluye el SoC de destino para que el artefacto se describa por sí mismo; conserva un único .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 imagen y otra información utilizada por la canalización de inferencia de Ultralytics.
Implementación de modelos YOLO Ascend exportados#
Una vez que hayas exportado correctamente tu modelo Ultralytics YOLO al formato Ascend, el siguiente paso es implementarlo en hardware Ascend.
Instalación del tiempo de ejecución#
La inferencia requiere el entorno de ejecución de CANN en el dispositivo y el paquete de Python ais_bench, que encapsula 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-*.whlCopia el directorio yolo26n_ascend_model exportado al dispositivo y, después, ejecuta la inferencia exactamente igual que con cualquier otro formato de Ultralytics.
Flujo de trabajo recomendado#
- Entrena tu modelo mediante el modo Entrenar de Ultralytics o parte de un punto de control preentrenado.
- Exporta a Ascend en cualquier host Linux con CANN instalado, pasando el
nameque corresponda a tu SoC de destino. - Copia el directorio del modelo exportado al dispositivo Ascend.
- Implementa el modelo con el entorno de ejecución de CANN y
ais_benchpara realizar inferencias en el dispositivo.
Aplicaciones en el mundo real#
Los modelos YOLO que se ejecutan en hardware Ascend son adecuados para una amplia variedad de aplicaciones de visión integradas e industriales:
- Automatización industrial: inspección de calidad y detección de defectos a alta velocidad en líneas de producción.
- Videovigilancia inteligente: detección de objetos en tiempo real con varias cámaras en gateways periféricos sin un servidor central.
- Robótica: percepción integrada para robots móviles autónomos y brazos colaborativos.
- Ciudades inteligentes: monitorización del tráfico y análisis de peatones en unidades periféricas viales de bajo consumo.
Resumen#
En esta guía has aprendido a entrenar Ultralytics YOLO en NPUs Huawei Ascend y a exportar modelos al formato Ascend .om mediante el compilador CANN ATC. La exportación se ejecuta completamente en el host, genera un directorio de modelo autónomo y permite usar cualquier SoC Ascend compatible mediante un único argumento name.
Para obtener más información sobre el uso, visita la documentación oficial de CANN.
Además, si quieres obtener más información sobre otras integraciones de Ultralytics YOLO, visita nuestra página de guías de integración para encontrar muchos recursos útiles.
Preguntas frecuentes#
Instala Ultralytics y el kit de herramientas CANN, carga el entorno de CANN para que
atcesté en tuPATHy, después, exporta conmodel.export(format="ascend", name="Ascend310B4")en Python o conyolo export model=yolo26n.pt format=ascend name=Ascend310B4desde la CLI. Definenamecon 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 inferencias en el
.omexportado.Tu instalación de CANN no incluye kernels de operadores para el SoC que has solicitado. Cada kit de herramientas incluye kernels para familias de SoC específicas, así que instala el paquete
Ascend-cann-kernels-<soc>que corresponda a tu destino o utiliza una imagen de contenedor creada para esa familia de dispositivos.Las convoluciones del Ascend AI Core solo aceptan tensores
DT_FLOAT16yDT_INT8. Un modelo sin conexión FP32 no podría ejecutarse en el hardware, por lo que el exportador compila con--precision_mode=force_fp16y rechaza una solicitud explícita dequantize=32.Cualquier SoC para el que tu kit de herramientas CANN instalado proporcione kernels, seleccionado mediante el argumento
name. Consulta Dispositivos compatibles para ver los cuatro destinos validados y su disponibilidad en Ultralytics Platform.