Integração Huawei Ascend para Ultralytics YOLO#
Implantar modelos de visão computacional em Processadores de IA Huawei Ascend requer compilá-los para o formato de modelo offline .om executado pelo Ascend AI Core. Exportar modelos do Ultralytics YOLO para o Ascend permite que executes inferência rápida e de baixo consumo de energia em placas de desenvolvedor Atlas e dispositivos OrangePi AIPro usados em robótica, inspeção industrial e implantações de câmeras inteligentes.
O que é o Huawei Ascend?#
O Huawei Ascend é uma família de Processadores de IA combinada com o CANN (Compute Architecture for Neural Networks), a pilha de computação heterogênea da Huawei. O CANN inclui o ATC (Ascend Tensor Compiler), uma ferramenta do lado do host que converte um grafo ONNX padrão em um modelo offline .om específico de hardware direcionado ao Ascend AI Core.
Como o ATC é executado inteiramente no host, podes compilar modelos numa máquina Linux x86-64 ou ARM64 comum, sem nenhum hardware Ascend conectado, e depois copiar o .om resultante para o dispositivo de destino para inferência.
Treina em NPU da Ascend#
O Ultralytics suporta treino de NPU única e múltipla com torch_npu, incluindo AMP, validação, criação de pontos de controlo (checkpointing), retoma (resume) e
AutoBatch. Seleciona uma NPU com device=npu:0 ou várias NPUs com device=npu:0,1; o treino distribuído usa o HCCL.
Instala versões compatíveis do CANN, PyTorch e torch_npu e configura o ambiente CANN primeiro. Consulta a
seção de treino de NPU Ascend para exemplos de instalação e uso.
Formato de Exportação Ascend#
O exportador do Ultralytics primeiro escreve um grafo ONNX intermediário, depois invoca o ATC para compilá-lo para o SoC que defines com o argumento name. O resultado é um diretório de modelo autossuficiente contendo o binário .om e seus metadados do Ultralytics.
Principais Recursos dos Modelos Ascend#
- AI Core Dedicado: Modelos compilados são executados no Ascend AI Core em vez da CPU do host, oferecendo uma taxa de transferência substancialmente maior para pipelines de câmera em tempo real.
- Compilação no lado do host: O ATC não precisa de nenhuma NPU conectada, portanto a exportação é executada em CI, em contêineres ou em um laptop.
- ONNX em primeiro lugar: A exportação ONNX do Ultralytics padrão alimenta diretamente a cadeia de ferramentas do CANN, sem nenhum formato intermediário proprietário.
- Formas estáticas: A forma (shape) de entrada é integrada ao
.omno momento da compilação, eliminando a sobrecarga de negociação de formas em tempo de execução. - Direcionamento para múltiplos dispositivos: O mesmo grafo ONNX é compilado para qualquer SoC suportado alterando o
name.
Tarefas Suportadas#
A exportação para o Huawei Ascend suporta todas as sete tarefas do Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas com o YOLO26, a única família que possui esses cabeçotes.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detectar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Dispositivos Compatíveis#
Passa o SoC de destino com name; o ATC o incorpora no .om como --soc_version, portanto, deve corresponder à placa em que fazes a implantação. Localmente, podes compilar para qualquer SoC para o qual a tua instalação do CANN forneça kernels. A Ultralytics Platform suporta os destinos Ascend310P1, Ascend310P3, Ascend310B1 e Ascend310B4.
name | Dispositivos | Exportação local | Plataforma |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro, Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T, Atlas 200I A2 | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 8T | ✅ | ✅ |
Exportando para o Ascend: Convertendo o Seu Modelo YOLO#
A exportação para o Ascend requer o kit de ferramentas CANN, que é exclusivo para Linux. O compilador atc deve estar no teu PATH — executa o script de ambiente do CANN antes de exportar, por exemplo, source /usr/local/Ascend/ascend-toolkit/set_env.sh.
Instalação#
Instale o Ultralytics e, em seguida, instale o CANN separadamente a partir da Huawei.
# Install the required package for YOLO
pip install ultralyticsO kit de ferramentas CANN é distribuído pela Huawei e não é instalado automaticamente. Transfere-o da página de transferência da comunidade Ascend ou usa uma das imagens de contentor oficiais do ascendai/cann, que incluem o ATC e suas dependências.
O ATC só pode compilar para famílias de SoC cujos kernels de operador estejam instalados. Um kit de ferramentas que contenha apenas kernels ascend310p falha com No supported Ops kernel and engine are found for ... Conv2D quando solicitado um destino Ascend310B4. Instala o pacote Ascend-cann-kernels-<soc> correspondente para o dispositivo em que vais fazer a implantação.
Uso#
O formato Ascend suporta os modos Exportar, Prever e Validar. A inferência e a validação são executadas em hardware Ascend. Exporta o teu modelo e, em seguida, carrega o modelo exportado para executar a inferência ou validar a sua precisão.
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 Exportação#
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
format | str | 'ascend' | Formato de destino para o modelo exportado, definindo a compatibilidade com Processadores de IA Ascend. |
name | str | 'Ascend310B4' | SoC de destino passado para o ATC como --soc_version, por exemplo, Ascend310P3. Qualquer SoC para o qual a tua instalação do CANN tenha kernels é válido; consulta Dispositivos Suportados. Deve corresponder ao teu dispositivo de implantação. |
imgsz | int ou tuple | 640 | Tamanho de imagem desejado para a entrada do modelo, incorporado no .om como uma forma estática. |
batch | int | 1 | Tamanho de lote estático compilado no modelo offline. |
quantize | int | 16 | Precisão de quantização. A exportação para o Ascend é apenas em FP16 e ativa automaticamente o 16 se não for especificado. Substitui os sinalizadores (flags) obsoletos half/int8. |
opset | int | 17 | Opset ONNX para o grafo intermediário. Limitado a 17, a versão mais alta aceita pelo analisador ONNX do CANN. |
simplify | bool | True | Simplifica o grafo ONNX intermediário com onnxslim. |
nms | bool | False | Adiciona a Supressão de Não-Máximos (NMS) a modelos compatíveis de detecção, segmentação, pose e OBB. |
O Ascend AI Core aceita apenas entradas DT_FLOAT16 e DT_INT8 para convoluções, portanto, um modelo offline em FP32 não pode ser executado no hardware. Solicitar quantize=32 gera um erro em vez de produzir silenciosamente um modelo que não será executado.
Para mais detalhes sobre o processo de exportação, visita a página de documentação do Ultralytics sobre exportação.
Estrutura de Saída#
Após uma exportação bem-sucedida, um diretório de modelo é criado com o seguinte layout:
yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml # Model metadata (classes, image size, task, etc.)O ficheiro .om é o modelo offline compilado que o runtime do CANN carrega no dispositivo. O seu nome carrega o SoC de destino para que o artefato seja autodescritivo; mantém um .om por diretório, já que o carregador escolhe o único modelo que encontra lá. O metadata.yaml contém nomes de classes, tamanho da imagem e outras informações usadas pelo pipeline de inferência do Ultralytics.
Implantando Modelos YOLO Ascend Exportados#
Assim que você exportar com sucesso o seu modelo Ultralytics YOLO para o formato Ascend, o próximo passo será implantá-lo em hardware Ascend.
Instalação do Runtime#
A inferência requer o runtime do CANN no dispositivo mais o pacote Python ais_bench, que encapsula as ligações pyACL do CANN. Compila e instala-o a partir do repositório de ferramentas Ascend da 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 o diretório yolo26n_ascend_model exportado para o dispositivo e, em seguida, executa a inferência exatamente como farias com qualquer outro formato do Ultralytics.
Fluxo de Trabalho Recomendado#
- Treina o teu modelo usando o Modo de Treino do Ultralytics ou começa a partir de um ponto de controlo pré-treinado.
- Exporta para o Ascend em qualquer anfitrião (host) Linux com o CANN instalado, passando o
nameque corresponde ao teu SoC de destino. - Copie o diretório do modelo exportado para o dispositivo Ascend.
- Implanta com o runtime do CANN e o
ais_benchpara inferência no próprio dispositivo.
Aplicações do Mundo Real#
Modelos YOLO executados em hardware Ascend adequam-se a uma ampla gama de aplicações de visão embarcada e industrial:
- Automação Industrial: Inspeção de qualidade em alta velocidade e detecção de defeitos em linhas de produção.
- Vigilância Inteligente: Detecção de objetos em tempo real com múltiplas câmeras em gateways de borda, sem a necessidade de um servidor central.
- Robótica: Percepção embarcada para robôs móveis autônomos e braços colaborativos.
- Cidades Inteligentes: Monitoramento de tráfego e análise de pedestres em unidades de borda de baixo consumo.
Resumo#
Neste guia, aprendeste a treinar o Ultralytics YOLO em NPUs Huawei Ascend e a exportar modelos para o formato Ascend .om usando o compilador CANN ATC. A exportação é executada inteiramente no host, produz um diretório de modelo autossuficiente e direciona qualquer SoC Ascend suportado por meio de um único argumento name.
Para mais detalhes sobre o uso, visita a documentação oficial do CANN.
Além disso, se quiseres saber mais sobre outras integrações do Ultralytics YOLO, visita a nossa página do guia de integração para encontrar vários recursos úteis.
FAQ#
Instala o Ultralytics e o kit de ferramentas CANN, configura o ambiente CANN para que o
atcesteja no teuPATHe, em seguida, exporta commodel.export(format="ascend", name="Ascend310B4")em Python ouyolo export model=yolo26n.pt format=ascend name=Ascend310B4a partir da CLI. Definenamepara o SoC do teu dispositivo de implantação.Não. O compilador ATC é executado inteiramente no host, portanto a compilação funciona numa máquina Linux x86-64 ou ARM64 padrão, sem nenhuma NPU conectada. Só precisas de hardware Ascend para executar a inferência no
.omexportado.A tua instalação do CANN não contém kernels de operador para o SoC que solicitaste. Cada kit de ferramentas agrupa kernels para famílias de SoC específicas, portanto, instala o pacote
Ascend-cann-kernels-<soc>correspondente ao teu destino ou usa uma imagem de contentor criada para essa família de dispositivos.As convoluções do Ascend AI Core aceitam apenas tensores
DT_FLOAT16eDT_INT8. Um modelo offline em FP32 falharia ao ser executado no hardware, por isso o exportador compila com--precision_mode=force_fp16e rejeita um pedido explícito dequantize=32.Qualquer SoC para o qual o teu kit de ferramentas CANN instalado forneça kernels, selecionado através do argumento
name. Consulta Dispositivos Suportados para os quatro destinos validados e a sua disponibilidade na Ultralytics Platform.