Integración de Huawei Ascend para Ultralytics YOLO#
Para desplegar modelos de visión artificial en procesadores de IA Huawei Ascend, es necesario compilarlos al formato de modelo sin conexión .om, que ejecuta el núcleo de IA de Ascend. Exportar modelos 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 sistemas de cámaras inteligentes.
¿Qué es Huawei Ascend?#
Huawei Ascend es una familia de procesadores de IA que se combina con CANN (Arquitectura de computación para redes neuronales), la pila de computación heterogénea de Huawei. CANN incluye ATC (Compilador de tensores Ascend), una herramienta del host que convierte un grafo ONNX estándar en un modelo sin conexión .om específico para el hardware y destinado al núcleo de IA de Ascend.
Como ATC se ejecuta íntegramente en el host, puedes compilar modelos en una máquina Linux x86-64 o ARM64 convencional sin conectar ningún hardware Ascend y, después, copiar el .om resultante al dispositivo de destino para ejecutar la inferencia.
Entrena en NPU Ascend#
Ultralytics admite el entrenamiento con una o varias NPU mediante torch_npu, incluido AMP, la validación, los puntos de control, la reanudación y AutoBatch. Selecciona una NPU con device=npu:0 o varias con device=npu:0,1; el entrenamiento distribuido usa 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 primero genera 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 clave de los modelos Ascend#
- Núcleo de IA dedicado: los modelos compilados se ejecutan en el núcleo de IA de Ascend en lugar de la CPU del host, lo que ofrece un rendimiento considerablemente mayor para canalizaciones de cámaras en tiempo real.
- Compilación en el host: ATC no requiere una NPU conectada, por lo que puedes exportar en CI, en contenedores o en un portátil.
- ONNX como formato de partida: la exportación estándar de Ultralytics a ONNX se integra directamente en la cadena de herramientas CANN, sin formatos intermedios propietarios.
- Formas estáticas: la forma de entrada queda integrada en
.omdurante la compilación, lo que elimina 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 |
|---|---|---|---|
| Detectar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semántica | ❌ | ❌ | ✅ |
| Profundidad | ❌ | ❌ | ✅ |
| Clasificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Dispositivos compatibles#
Pasa el SoC de destino con name; ATC lo integra en .om como --soc_version, por lo que debe coincidir con la placa de destino. En local, 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 8T, Atlas 200I A2 (8 TOPS) | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 20T, Atlas 200I A2 (20 TOPS) | ✅ | ✅ |
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 de 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 Ascend o usa 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. Si un kit de herramientas solo incluye kernels ascend310p, se produce un error No supported Ops kernel and engine are found for ... Conv2D al solicitar un destino Ascend310B4. Instala el paquete Ascend-cann-kernels-<soc> correspondiente al dispositivo de destino.
Uso#
El formato Ascend admite los modos de exportación, predicción y validación. La inferencia y la validación se ejecutan en hardware Ascend. Exporta el modelo y, después, carga el modelo exportado para ejecutar inferencias o validar su precisión.
from ultralytics import YOLO
# Carga un modelo YOLO26
model = YOLO("yolo26n.pt")
# # Exporta el modelo al formato Ascend para una placa Atlas 200I / OrangePi AIPro
model.export(format="ascend", name="Ascend310B4")
# Carga el modelo Ascend exportado y ejecuta la inferencia en el dispositivo
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 Ascend AI. |
name | str | 'Ascend310B4' | SoC de destino que se pasa 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 el dispositivo de despliegue. |
imgsz | int o tuple | 640 | Tamaño de imagen deseado para la entrada del modelo, integrado en .om como forma estática. |
batch | int | 1 | Tamaño de lote estático compilado en el modelo offline. |
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 | Versión de ONNX opset para el grafo intermedio. Limitada 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, opcional | None | Selecciona la salida sin procesar (None, predeterminada), NMS integrada (True) o el cabezal sin NMS (False). |
device | str | None | Dispositivo para el paso de exportación ONNX intermedio, CPU de forma predeterminada (device=cpu). La compilación ATC no lo utiliza. |
Ascend AI Core solo acepta entradas DT_FLOAT16 y DT_INT8 para las convoluciones, por lo que el hardware no puede ejecutar un modelo offline FP32. Si solicitas quantize=32, se produce un error en lugar de generar silenciosamente un modelo que no se ejecutará.
Para obtener más información 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 correcta, se crea un directorio del 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 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í. metadata.yaml contiene los nombres de las clases, el tamaño de imagen y otra información que utiliza el flujo de inferencia de Ultralytics.
Despliegue de modelos YOLO Ascend exportados#
Cuando hayas exportado correctamente 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 entorno de ejecución CANN en el dispositivo y el paquete Python ais_bench, que envuelve los enlaces pyACL de CANN. Compílalo e instálalo desde el repositorio de herramientas Ascend de Huawei Ascend tools repository:
# 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, a continuación, ejecuta la inferencia exactamente igual que con cualquier otro formato de Ultralytics.
Flujo de trabajo recomendado#
- Entrena tu modelo con el modo de entrenamiento de Ultralytics o empieza con un punto de control preentrenado.
- Exporta a Ascend desde cualquier equipo Linux con CANN instalado, pasando el
nameque corresponda a tu SoC de destino. - Copia el directorio del modelo exportado al dispositivo Ascend.
- Despliega con el entorno de ejecución CANN y
ais_benchpara ejecutar la inferencia 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 de alta velocidad y detección de defectos en líneas de producción.
- Videovigilancia inteligente: detección de objetos en tiempo real con varias cámaras en pasarelas de borde, sin servidor central.
- Robótica: percepción a bordo para robots móviles autónomos y brazos colaborativos.
- Ciudades inteligentes: supervisión del tráfico y análisis de peatones en unidades viales de bajo consumo.
Resumen#
En esta guía, has aprendido a entrenar Ultralytics YOLO en NPU Huawei Ascend y a exportar modelos al formato Ascend .om con el compilador CANN ATC. La exportación se ejecuta íntegramente en el equipo anfitrión, 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 saber más sobre otras integraciones de Ultralytics YOLO, visita nuestra página de guías de integración, donde encontrarás 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 oyolo export model=yolo26n.pt format=ascend name=Ascend310B4desde la CLI. Establecenameen el SoC de tu dispositivo de despliegue.No. El compilador ATC se ejecuta íntegramente en el equipo anfitrión, por lo que puedes compilar en una máquina Linux x86-64 o ARM64 estándar sin NPU conectada. Solo necesitas hardware Ascend para ejecutar la inferencia con el
.omexportado.Tu instalación de CANN no incluye kernels de operadores para el SoC 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 dispositivo de destino o utiliza una imagen de contenedor creada para esa familia de dispositivos.Las convoluciones de Ascend AI Core solo aceptan tensores
DT_FLOAT16yDT_INT8. El hardware no podría ejecutar un modelo offline FP32, así que el exportador compila con--precision_mode=force_fp16y rechaza una solicitud explícita dequantize=32.Cualquier SoC para el que el kit de herramientas CANN instalado proporcione kernels, seleccionado mediante el argumento
name. Consulta Dispositivos compatibles para ver los cuatro dispositivos de destino validados y su disponibilidad en Ultralytics Platform.