Exportação e implementação com Axelera AI#
A Ultralytics estabelece parcerias com a Axelera AI para permitir inferência de alto desempenho e eficiência energética em dispositivos de IA de borda. Exporta e implementa modelos Ultralytics YOLO diretamente na AIPU Metis® com o Voyager SDK.
A Axelera AI oferece aceleração de hardware dedicada para visão computacional na borda, usando uma arquitetura proprietária de fluxo de dados e computação em memória para fornecer até 856 TOPS com baixo consumo de energia.
Escolher o hardware certo#
A Axelera AI oferece vários formatos para atender a diferentes restrições de implementação. O gráfico abaixo ajuda a identificar o hardware ideal para a tua implementação do Ultralytics YOLO.
Portefólio de hardware#
A linha de hardware da Axelera está otimizada para executar Ultralytics YOLO26 e versões anteriores com alta eficiência de FPS por watt.
Placas aceleradoras#
Estas placas permitem acelerar a IA em dispositivos host existentes, facilitando implementações em instalações existentes.
| Produto | Formato | Computação | Desempenho (INT8) | Aplicação-alvo |
|---|---|---|---|---|
| Metis PCIe x4 | PCIe Gen3 x16 | 4x AIPUs Metis | 856 TOPS | Análise de vídeo de alta densidade, cidades inteligentes |
| Metis PCIe x1 | PCIe Gen3 x1 | 1x AIPU Metis | 214 TOPS | PCs industriais, gestão de filas no retalho |
| Metis M.2 | M.2 2280 M-Key | 1x AIPU Metis | 214 TOPS | Drones, robótica, dispositivos médicos portáteis |
| Metis M.2 MAX | M.2 2280 | 1x AIPU Metis | 214 TOPS | Ambientes que exigem gestão térmica avançada |
Sistemas integrados#
Para soluções prontas a utilizar, a Axelera estabelece parcerias com fabricantes para fornecer sistemas previamente validados para a AIPU Metis.
- Placa de computação Metis: dispositivo de borda autónomo que combina a AIPU Metis com uma CPU ARM Rockchip RK3588.
- Estações de trabalho: torres empresariais da Dell (Precision 3460XE) e da Lenovo (ThinkStation P360 Ultra).
- PCs industriais: sistemas robustos da Advantech e da Aetina, concebidos para a automação industrial.
Tarefas suportadas#
A exportação para Axelera é compatível com todas as sete tarefas da Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas com YOLO26, a única família que inclui essas cabeças.
Por padrão, os modelos YOLO26 de detecção, segmentação de instâncias, pose e OBB exportam sua cabeça um-para-um sem NMS, e o runtime da Axelera a decodifica no host. Passar nms=True exporta a cabeça um-para-muitos, que tem pontuação inferior no Metis: a detecção YOLO26n alcança mAP50-95 de 0.212 no COCO128 dessa forma, contra 0.453 com a cabeça sem NMS.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detetar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Os intervalos de quantização vêm das imagens de calibração, e o valor padrão para profundidade, depth8.yaml, contém quatro frames internos. Na divisão de validação de 654 imagens do NYU Depth V2, YOLO26n para profundidade calibrado com esse valor padrão alcança delta1 de 0.742 no Metis, contra 0.783 para o modelo PyTorch, enquanto 100 frames de treino do NYU dão 0.780. Passa data= com um YAML de conjunto de dados cuja divisão val contenha pelo menos 100 imagens das cenas que o modelo vai encontrar; a calibração lê a divisão val.
Instalação#
A exportação para o formato Axelera requer:
- Sistema operativo: apenas Linux (recomenda-se Ubuntu 22.04/24.04)
- Hardware: acelerador Axelera AI (dispositivos Metis)
- Python: versões 3.10, 3.11, 3.12 e 3.13
- PyTorch:
torch>=2.8,<2.15 - Voyager SDK: 1.9.0; a exportação instala esta versão do devkit e a inferência instala esta versão do runtime
- Driver de kernel Metis:
metis-dkms1.7.0 ou mais recente, instalado separadamente depip - Dependência do sistema:
sudo apt install libgl1(necessário para o OpenCV, não incluído através depip)
Instalação da Ultralytics#
pip install ultralyticsPara instruções detalhadas, consulta o nosso guia de instalação da Ultralytics. Se tiveres dificuldades, consulta o nosso guia de problemas comuns.
Instalação do controlador Axelera#
-
Adiciona a chave do repositório Axelera:
sudo sh -c "curl -fsSL https://software.axelera.ai/artifactory/api/security/keypair/axelera/public | gpg --dearmor -o /etc/apt/keyrings/axelera.gpg" -
Adiciona o repositório ao apt:
Escolhe o fragmento apropriado abaixo, de acordo com o sistema operativo utilizado.
# Ubuntu 22.04 sudo sh -c "echo 'deb [signed-by=/etc/apt/keyrings/axelera.gpg] https://software.axelera.ai/artifactory/axelera-apt-source ubuntu22 main' > /etc/apt/sources.list.d/axelera.list"# Ubuntu 24.04 sudo sh -c "echo 'deb [signed-by=/etc/apt/keyrings/axelera.gpg] https://software.axelera.ai/artifactory/axelera-apt-source ubuntu24 main' > /etc/apt/sources.list.d/axelera.list" -
Instala o driver e carrega-o. O SDK 1.9 requer
metis-dkms1.7.0 ou mais recente; por isso, a versão mais recente é instalada aqui:sudo apt update sudo apt install -y metis-dkms sudo modprobe metis
O driver de kernel é instalado separadamente dos pacotes do SDK Python; por isso, depois de atualizar o SDK, também tens de atualizar o driver para a versão mínima exigida por esse SDK — 1.7.0 para o SDK 1.9. Nada verifica isso durante a instalação, e um driver abaixo da versão mínima deixa o dispositivo indisponível: axdevice informa a versão necessária e falha ao abrir o dispositivo.
[libaxldev.c:285] Found kernel driver version 1.6.2, but at least version 1.7.0 is required. Please update the kernel driver
ERROR: AXR_ERROR_CONNECTION_ERROR: Failed to open device metis-0:4:0Consulta também Passo 3: Instalar o controlador do kernel Metis. Se já estiveres a executar uma versão anterior do SDK no Ubuntu, atualiza o controlador e recarrega o módulo do kernel (não é necessário reiniciar):
sudo apt update
sudo apt install -y metis-dkms
sudo rmmod metis
sudo modprobe metisEm seguida, volta a executar axdevice para confirmar que o dispositivo foi detetado.
Na primeira execução de yolo export format=axelera ou yolo predict com um modelo Axelera, os pacotes do SDK Axelera são transferidos e instalados automaticamente. Isto pode demorar vários minutos, dependendo da velocidade da ligação, e não é apresentado qualquer progresso durante a transferência. Para instalar manualmente de antemão:
pip install axelera-devkit==1.9.0 --extra-index-url https://software.axelera.ai/artifactory/api/pypi/axelera-pypi/simple
pip install axelera-rt==1.9.0 --extra-index-url https://software.axelera.ai/artifactory/api/pypi/axelera-pypi/simpleO SDK 1.9 não aumenta a versão do formato do modelo compilado .axm; por isso, um diretório _axelera_model exportado com a versão 1.8 é carregado e executado sem alterações. Volta a exportar apenas para aproveitar as melhorias do compilador.
Um SDK que aumenta a versão do formato rejeita diretórios mais antigos ao carregá-los, como acontece ao atualizar da versão 1.7 ou anterior:
Error: Unsupported model version: 4.0, expected at least 5.0
Please re-deploy or re-download the model.Exportar modelos YOLO para Axelera#
O formato Axelera suporta os modos Exportar, Prever e Validar. A inferência e a validação são executadas no hardware AIPU Metis da Axelera. Exporta o teu modelo e, em seguida, carrega o modelo exportado para executar a inferência ou validar a respetiva precisão.
from ultralytics import YOLO
# Carrega um modelo YOLO26
model = YOLO("yolo26n.pt")
# Exportar o modelo para o formato Axelera
model.export(format="axelera") # creates 'yolo26n_axelera_model'from ultralytics import YOLO
# Carregar o modelo Axelera exportado
model = YOLO("yolo26n_axelera_model")
# Executar inferência
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Carregar o modelo Axelera exportado
model = YOLO("yolo26n_axelera_model")
# Validar a precisão no conjunto de dados COCO8
metrics = model.val(data="coco8.yaml")Argumentos de exportação#
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
format | str | 'axelera' | Formato de destino para o hardware AIPU Metis da Axelera. |
imgsz | int ou tuple | 640 | Tamanho da imagem de entrada do modelo. |
batch* | int | 1 | Tamanho do lote de calibração. O modelo compilado processa uma imagem de cada vez. |
quantize | int ou str | 8/auto | Precisão da quantização. 8 (INT8) é obrigatório e ativado automaticamente para a AIPU Axelera. Substitui as flags obsoletas half/int8. Consulta Quantização INT8. |
data | str | None | YAML do conjunto de dados de calibração; para classificação, aceita-se um diretório de conjunto de dados ou o nome de um conjunto de dados integrado. Se não for especificado, a Ultralytics seleciona um conjunto de dados de calibração específico para a tarefa. |
fraction | float, int ou list | 1.0 | Subconjunto de calibração indicado como proporção, número de imagens ou proporções/contagens [train, val, test]. As listas com dois elementos deixam test completo, enquanto 0 o ignora (recomendam-se 100-400 imagens). |
device | str | None | Dispositivo de exportação: GPU (device=0) ou CPU (device=cpu). |
* Os modelos são compilados para uma única imagem, por isso a exportação batch define apenas o tamanho do lote de calibração. Em vez disso, passa batch para predict para enviar várias imagens de uma só vez ao escalonador da Axelera (Voyager SDK 1.8.0 ou mais recente): consulta Desempenho máximo.
Para consultar todas as opções de exportação, vê a documentação do modo Exportar.
Estrutura de saída#
yolo26n_axelera_model/
├── yolo26n.axm # Axelera model file
├── compiler_config_final.toml # Compiler configuration used for the build
└── metadata.yaml # Model metadata (classes, image size, etc.)Benchmarks da Axelera AI#
A AIPU Metis maximiza a capacidade de processamento e minimiza o consumo de energia.
| Modelo | FPS da Metis PCIe (fotogramas por segundo) | FPS da Metis M.2 (fotogramas por segundo) |
|---|---|---|
| YOLOv8n | 847 | 771 |
| YOLO11n | 746 | 574 |
| YOLO26n | 648.6 | 484.9 |
Benchmarks baseados em dados da Axelera AI. O FPS real depende do tamanho do modelo, do agrupamento em lotes e da resolução de entrada.
Estes são valores de capacidade de processamento do host, medidos pelo zoo de modelos com o pipeline de streaming do Voyager SDK sobre um ficheiro de vídeo de 720p. Uma única chamada predict indica a latência por imagem, que é uma medida diferente.
Aplicações no mundo real#
O Ultralytics YOLO em hardware Axelera possibilita soluções avançadas de computação de borda:
- Retalho inteligente: Contagem de objetos e análise de mapas de calor em tempo real para otimizar lojas.
- Segurança industrial: Deteção de EPI com baixa latência em ambientes de produção.
- Análise com drones: Deteção de objetos a alta velocidade em UAVs para agricultura e operações de busca e salvamento.
- Sistemas de trânsito: Reconhecimento de matrículas e estimativa de velocidade na borda.
Fluxo de trabalho recomendado#
- Treina o teu modelo com o Modo de Treino da Ultralytics
- Exporta para o formato Axelera com
model.export(format="axelera") - Valida a precisão com
yolo valpara verificar se a perda de quantização é mínima - Faz previsões com
yolo predictpara validação qualitativa - Implementa um pipeline de ponta a ponta de alto desempenho sem dependência do PyTorch — consulta os exemplos do YOLO no Voyager SDK para ver pipelines Python compostos com
axelera-rt
Verificação do estado do dispositivo#
Verifica se o teu dispositivo Axelera está a funcionar corretamente:
# if axdevice cannot be found, please run at least one inference (see above) to ensure the required packages are installed
axdevicePara obter diagnósticos detalhados, consulta a documentação do AxDevice.
Desempenho máximo#
Os modelos são compilados para uma única imagem, e uma única imagem é executada num núcleo AIPU. Passar várias imagens para Predict envia-as juntas ao escalonador da Axelera, que as distribui pelos núcleos do dispositivo:
yolo predict model=yolo26n_axelera_model source=path/to/images batch=32yolo26n em imgsz=640 nas 128 imagens do COCO128 num diretório, Metis PCIe, mediana de três execuções:
| Voyager SDK | Dispositivos | batch=1 | batch=8 | batch=32 |
|---|---|---|---|---|
| 1.8.0 | 1 | 36 img/s | 45 img/s | 40 img/s |
| 1.8.0 | 2 | 39 img/s | 41 img/s | 41 img/s |
| 1.9.0 | 1 | 41 img/s | 85 img/s | 109 img/s |
| 1.9.0 | 2 | 35 img/s | 83 img/s | 113 img/s |
No SDK 1.9, é o lote que aumenta a taxa de processamento, 2,7 vezes em batch=32, enquanto a versão 1.8 se mantém perto de 40 img/s com qualquer tamanho de lote. Usa um lote grande para maximizar a taxa de processamento offline e batch=1 quando a latência por imagem for importante. Um segundo dispositivo acrescenta pouco a predict: em batch=32, cada imagem já passa cerca de 4 ms no pré-processamento no host, o mesmo tempo que passa no dispositivo.
Além de predict#
Para produção que exige capacidade de processamento máxima, o Axelera Voyager SDK oferece:
- Pipelines de inferência em streaming que mantêm vários fotogramas em processamento
- Compilação de um modelo em vários núcleos
- Inferência em mosaicos para câmaras de maior resolução
Esses caminhos ignoram o pré-processamento e o pós-processamento PyTorch que predict executa no host. Consulta o zoológico de modelos para ver os benchmarks de FPS ou contacta a Axelera para obter suporte à produção.
Problemas conhecidos#
- Limitações de energia do M.2: Modelos grandes ou extragrandes podem apresentar erros em tempo de execução em aceleradores M.2 devido a limitações da fonte de alimentação.
Para obter suporte, visita a comunidade Axelera.
Perguntas frequentes#
O Voyager SDK permite exportar modelos YOLOv8, YOLO11 e YOLO26. Consulta Tarefas compatíveis para ver a disponibilidade de tarefas por modelo.
Sim. Qualquer modelo treinado com o Modo de Treino da Ultralytics pode ser exportado para o formato Axelera, desde que utilize camadas e operações compatíveis.
O Voyager SDK da Axelera quantiza automaticamente os modelos para a arquitetura AIPU de precisão mista. Na maioria das tarefas de deteção de objetos, os ganhos de desempenho (FPS mais elevado e menor consumo de energia) compensam largamente o impacto mínimo no mAP. A quantização demora entre alguns segundos e várias horas, dependendo do tamanho do modelo. Executa
yolo valapós a exportação para verificar a precisão.Recomendamos entre 100 e 400 imagens. Mais de 400 não traz benefícios adicionais e aumenta o tempo de quantização. Experimenta com 100, 200 e 400 imagens para encontrar o equilíbrio ideal.
O SDK, os controladores e as ferramentas do compilador estão disponíveis no Portal de programadores da Axelera.