Integração do Huawei Ascend com Ultralytics YOLO#
A implantação de modelos de visão computacional em processadores de IA Huawei Ascend exige compilá-los no formato de modelo offline .om, executado pelo Ascend AI Core. Exportar modelos Ultralytics YOLO para Ascend permite executar inferência rápida e de baixo consumo de energia em placas de desenvolvimento Atlas e dispositivos OrangePi AIPro usados em robótica, inspeção industrial e implantação de câmeras inteligentes.
O que é o Huawei Ascend?#
Huawei Ascend é uma família de processadores de IA que utiliza CANN (Arquitetura de Computação para Redes Neurais), a pilha de computação heterogênea da Huawei. O CANN inclui o ATC (Compilador de Tensores Ascend), uma ferramenta executada no host que converte um grafo ONNX padrão em um modelo offline .om específico para o hardware e destinado ao Ascend AI Core.
Como o ATC é executado inteiramente no host, podes compilar modelos em uma máquina Linux x86-64 ou ARM64 comum, sem hardware Ascend conectado, e depois copiar o .om resultante para o dispositivo de destino para executar a inferência.
Treina em NPUs Ascend#
O Ultralytics é compatível com treinamento em uma ou várias NPUs com torch_npu, incluindo AMP, validação, criação de checkpoints, retomada e AutoBatch. Seleciona uma NPU com device=npu:0 ou várias NPUs com device=npu:0,1; o treinamento distribuído usa HCCL. Instala versões compatíveis do CANN, PyTorch e torch_npu e carrega primeiro o ambiente CANN. Consulta a seção de treinamento em NPU Ascend para ver exemplos de instalação e uso.
Formato de exportação Ascend#
O exportador do Ultralytics primeiro grava um grafo ONNX intermediário e, em seguida, invoca o ATC para compilá-lo para o SoC de destino indicado pelo argumento name. O resultado é um diretório de modelo independente que contém o binário .om e os metadados do Ultralytics.
Principais recursos dos modelos Ascend#
- AI Core dedicado: os modelos compilados são executados no Ascend AI Core, e não na CPU do host, proporcionando uma taxa de transferência muito maior para pipelines de câmeras em tempo real.
- Compilação no host: o ATC não precisa de uma NPU conectada, então a exportação pode ser executada em CI, em contêineres ou em um laptop.
- ONNX como formato principal: a exportação ONNX padrão do Ultralytics alimenta diretamente o conjunto de ferramentas CANN, sem nenhum formato intermediário proprietário.
- Formas estáticas: a forma da entrada é incorporada ao
.omdurante a compilação, eliminando a sobrecarga da negociação de formas em tempo de execução. - Compatibilidade com vários dispositivos: o mesmo grafo ONNX é compilado para qualquer SoC compatível ao alterar
name.
Tarefas suportadas#
A exportação Huawei Ascend é compatível com todas as sete tarefas do Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas no YOLO26, a única família que inclui essas cabeças.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detetar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Dispositivos compatíveis#
Passa o SoC de destino por meio de name; o ATC o incorpora ao .om como --soc_version, portanto ele precisa corresponder à placa usada na implantação. Localmente, podes compilar para qualquer SoC cujos kernels estejam disponíveis na tua instalação CANN. A Ultralytics Platform é compatível com 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 8T, Atlas 200I A2 (8 TOPS) | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 20T, Atlas 200I A2 (20 TOPS) | ✅ | ✅ |
Exportar para Ascend: convertendo o teu modelo YOLO#
A exportação para Ascend exige o kit de ferramentas CANN, disponível apenas para Linux. O compilador atc precisa estar no teu PATH — carrega o script de ambiente CANN antes de exportar, por exemplo, source /usr/local/Ascend/ascend-toolkit/set_env.sh.
Instalação#
Instala o Ultralytics e, em seguida, instala o CANN separadamente, obtendo-o da Huawei.
# Install the required package for YOLO
pip install ultralyticsO kit de ferramentas CANN é distribuído pela Huawei e não é instalado automaticamente. Baixa-o na página de downloads da comunidade Ascend ou usa uma das imagens de contêiner oficiais ascendai/cann, que incluem o ATC e as respetivas dependências.
O ATC só pode compilar para famílias de SoC cujos kernels de operadores estejam instalados. Um kit de ferramentas que contenha apenas kernels ascend310p falha com No supported Ops kernel and engine are found for ... Conv2D quando recebe como destino Ascend310B4. Instala o pacote Ascend-cann-kernels-<soc> correspondente ao dispositivo usado na implantação.
Uso#
O formato Ascend é compatível com os modos Export, Predict e Validate. A inferência e a validação são executadas em hardware Ascend. Exporta o modelo e, em seguida, carrega o modelo exportado para executar inferência ou validar a precisão.
from ultralytics import YOLO
# Carrega um modelo YOLO26
model = YOLO("yolo26n.pt")
# # Exporta o modelo para o formato Ascend para uma placa Atlas 200I / OrangePi AIPro
model.export(format="ascend", name="Ascend310B4")
# Carrega o modelo Ascend exportado e executa a inferência no dispositivo
ascend_model = YOLO("yolo26n_ascend_model")
results = ascend_model("https://ultralytics.com/images/bus.jpg")Argumentos de exportação#
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
format | str | 'ascend' | Formato de destino do modelo exportado, que define a compatibilidade com os processadores de IA Ascend. |
name | str | 'Ascend310B4' | SoC de destino passado ao ATC como --soc_version, por exemplo, Ascend310P3. Qualquer SoC para o qual a tua instalação do CANN tenha kernels é válido; consulta Dispositivos compatíveis. Deve corresponder ao teu dispositivo de implantação. |
imgsz | int ou tuple | 640 | Tamanho de imagem desejado para a entrada do modelo, incorporado ao .om como forma estática. |
batch | int | 1 | Tamanho de lote estático compilado no modelo offline. |
quantize | int | 16 | Precisão da quantização. A exportação para Ascend usa apenas FP16 e ativa automaticamente 16 se não for especificado. Substitui as flags obsoletas half/int8. |
opset | int | 17 | Opset ONNX do 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, opcional | None | Seleciona a saída bruta (None, padrão), NMS incorporado (True) ou a cabeça sem NMS (False). |
device | str | None | Dispositivo para a etapa intermediária de exportação ONNX, CPU por padrão (device=cpu). A compilação do ATC não o utiliza. |
O Ascend AI Core aceita apenas entradas DT_FLOAT16 e DT_INT8 para convoluções, portanto, um modelo offline FP32 não pode ser executado no hardware. Solicitar quantize=32 gera um erro, em vez de produzir silenciosamente um modelo que não funcionará.
Para mais detalhes sobre o processo de exportação, visita a página da documentação da Ultralytics sobre exportação.
Estrutura de saída#
Após uma exportação bem-sucedida, é criado um diretório do modelo com a seguinte estrutura:
yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml # Model metadata (classes, image size, task, etc.)O arquivo .om é o modelo offline compilado que o runtime do CANN carrega no dispositivo. O nome inclui o SoC de destino para que o artefato seja autoexplicativo; mantém um .om por diretório, pois o carregador seleciona o único modelo encontrado nele. O metadata.yaml contém nomes de classes, tamanho da imagem e outras informações usadas pelo pipeline de inferência do Ultralytics.
Implantação de modelos YOLO Ascend exportados#
Depois de exportares com sucesso o teu modelo Ultralytics YOLO para o formato Ascend, o próximo passo é implantá-lo no hardware Ascend.
Instalação do runtime#
A inferência requer o runtime do CANN no dispositivo, além do pacote Python ais_bench, que encapsula as associações pyACL do CANN. Compila e instala-o a partir do repositório de ferramentas Ascend da 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 o diretório yolo26n_ascend_model exportado para o dispositivo e 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 com um checkpoint pré-treinado.
- Exporta para Ascend em qualquer host Linux com o CANN instalado, passando o
nameque corresponde ao teu SoC de destino. - Copia o diretório do modelo exportado para o dispositivo Ascend.
- Implanta com o runtime do CANN e
ais_benchpara inferência no dispositivo.
Aplicações no mundo real#
Os modelos YOLO executados em hardware Ascend são adequados para uma ampla variedade de aplicações de visão computacional industriais e embarcadas:
- Automação industrial: inspeção de qualidade em alta velocidade e deteção de defeitos nas linhas de produção.
- Vigilância inteligente: deteção de objetos em tempo real com várias câmaras em gateways de borda, sem um servidor central.
- Robótica: perceção integrada para robôs móveis autónomos e braços colaborativos.
- Cidades inteligentes: monitorização do trânsito e análise de peões em unidades rodoviárias de baixo consumo.
Resumo#
Neste guia, aprendeste a treinar o Ultralytics YOLO em NPUs Huawei Ascend e a exportar modelos para o formato .om do Ascend usando o compilador CANN ATC. A exportação é executada inteiramente no host, produz um diretório de modelo independente e tem como destino qualquer SoC Ascend compatível através de um único argumento name.
Para mais detalhes sobre a utilização, consulta 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ções para encontrares muitos recursos úteis.
Perguntas frequentes#
Instala o Ultralytics e o toolkit CANN, carrega o ambiente CANN para que
atcesteja no teuPATHe, em seguida, exporta commodel.export(format="ascend", name="Ascend310B4")em Python ouyolo export model=yolo26n.pt format=ascend name=Ascend310B4pela CLI. Definenamecomo o SoC do teu dispositivo de implantação.Não. O compilador ATC é executado inteiramente no host, por isso a compilação funciona numa máquina Linux x86-64 ou ARM64 padrão sem uma NPU ligada. Só precisas de hardware Ascend para executar a inferência com o
.omexportado.A tua instalação do CANN não inclui kernels de operadores para o SoC solicitado. Cada toolkit inclui kernels para famílias específicas de SoC, por isso 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 FP32 não seria 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 toolkit CANN instalado forneça kernels, selecionado através do argumento
name. Consulta Dispositivos compatíveis para ver os quatro destinos validados e a respetiva disponibilidade na Ultralytics Platform.