Glossário

ONNX (Intercâmbio aberto de redes neurais)

Descobre como o ONNX melhora a portabilidade e a interoperabilidade dos modelos de IA, permitindo uma implementação perfeita dos modelos Ultralytics YOLO em diversas plataformas.

Treina os modelos YOLO simplesmente
com Ultralytics HUB

Aprende mais

No domínio em rápida evolução da inteligência artificial (IA) e da aprendizagem automática (ML), é crucial mover modelos entre diferentes ferramentas e plataformas de forma eficiente. ONNX (Open Neural Network Exchange) aborda este desafio fornecendo um formato de código aberto concebido especificamente para modelos de IA. Funciona como um tradutor universal, permitindo aos programadores treinar um modelo num quadro, como PyTorche, em seguida, implementá-lo utilizando outra estrutura ou motor de inferência, como o TensorFlow ou tempos de execução especializados, como o ONNX Runtime. Esta interoperabilidade simplifica o caminho da investigação para a produção, promovendo a colaboração e a flexibilidade no ecossistema de IA. ONNX foi inicialmente desenvolvido pela Facebook AI Research e pela Microsoft Research e é agora um projeto comunitário próspero.

Relevância de ONNX

O valor central da ONNX consiste em promover portabilidade e interoperabilidade no ciclo de vida do desenvolvimento da IA. Em vez de ficarem presos ao ecossistema de uma estrutura específica, os programadores podem aproveitar o ONNX para mover modelos livremente entre diferentes ferramentas e plataformas de hardware. Ao definir um conjunto comum de operadores (os blocos de construção do redes neuronais) e um formato de ficheiro normalizado (.onnx), ONNX garante que a estrutura de um modelo e os parâmetros aprendidos (pesos) são representados de forma coerente. Isto é particularmente benéfico para os utilizadores de Ultralytics YOLO pois Ultralytics fornece métodos simples para exportar modelos para o formato ONNX. Esta capacidade de exportação permite aos utilizadores utilizar modelos como YOLOv8 ou a mais recente YOLO11 e implementa-os numa grande variedade de plataformas de hardware e software, utilizando frequentemente motores de inferência para um melhor desempenho e aceleração de hardware.

Como funciona o ONNX

ONNX consegue a interoperabilidade através de várias caraterísticas técnicas fundamentais:

  • Representação comum de modelos: ONNX define um conjunto padrão de operadores de gráficos computacionais, como funções de convolução ou ativação, e um sistema comum de tipos de dados. Quando um modelo de aprendizagem profunda é convertido para ONNX, a sua arquitetura e parâmetros são traduzidos para esta representação partilhada.
  • Estrutura baseada em gráficos: Os modelos em ONNX são representados como gráficos computacionais. Os nós do gráfico representam operações (como a multiplicação de matrizes ou a aplicação de uma função ReLU), enquanto as arestas representam o fluxo de dados (tensores) entre estas operações. Esta estrutura gráfica é comum em muitas estruturas de ML, facilitando a conversão.
  • Sistema de controlo de versões: ONNX mantém versões para os seus conjuntos de operadores (opsets). Isto assegura a compatibilidade com versões anteriores, permitindo que os modelos criados com opsets mais antigos continuem a funcionar em tempos de execução mais recentes que suportem essas versões.
  • Extensibilidade: Embora ONNX defina um conjunto básico de operadores, também permite operadores personalizados, permitindo que as estruturas e os fornecedores de hardware suportem funcionalidades especializadas.
  • Ecossistema e ferramentas: Um ecossistema rico rodeia ONNX, incluindo bibliotecas para converter modelos de várias estruturas (como PyTorch ou TensorFlow), ferramentas para visualizar e depurar gráficos ONNX , e tempos de execução como o ONNX Runtime optimizado para inferência de alto desempenho em diferentes hardwares (CPU, GPU, aceleradores especializados).

Aplicações de ONNX

ONNX serve como uma ponte crucial entre os ambientes de treino modelo e os diversos objectivos de implementação. Eis dois exemplos concretos:

  1. Implementação de modelos de visão computacional em dispositivos de borda: Um programador treina um modelo de deteção de objectos, como um modelo Ultralytics YOLO , utilizando PyTorch em um servidor poderoso com GPUs. Para implantação em dispositivos de borda com recursos limitados (como uma câmera inteligente ou um drone), exporta o modelo para o formato ONNX . Este ficheiro ONNX pode então ser optimizado utilizando ferramentas como a NVIDIA TensorRT ou o OpenVINO daIntel e implementado para uma inferência eficiente e em tempo real diretamente no dispositivo. Esta flexibilidade é destacada em várias opções de implementação de modelos. Podes explorar as soluçõesUltralytics para exemplos em diferentes indústrias.
  2. Colaboração e implementação entre estruturas: Uma equipa de investigação desenvolve uma nova arquitetura de modelo utilizando TensorFlow. Outra equipa pretende integrar este modelo numa aplicação existente construída com PyTorch. Ao exportar o modelo TensorFlow para ONNX, a segunda equipa pode facilmente carregá-lo e utilizá-lo no seu ambiente PyTorch ou implementá-lo utilizando o ONNX Runtime normalizado em diferentes configurações de servidor(na nuvem ou no local) sem necessitar da estrutura TensorFlow original. Isto promove um serviço e uma integração de modelos mais fáceis.

ONNX vs. Conceitos relacionados

É importante distinguir ONNX de termos relacionados:

  • Formatos específicos do quadro: Formatos como o do PyTorch .pt/.pth ou SavedModel do TensorFlow são nativos dos seus respectivos quadros. ONNX actua como um intermediário, permitindo a conversão entre estes formatos ou a implementação através de um tempo de execução comum. TorchScript é outro formato para a serialização de modelos PyTorch , por vezes utilizado como alternativa ou precursor da exportação ONNX .
  • Motores de inferência/tempos de execução: Ferramentas como o ONNX Runtime, TensorRTe OpenVINO são bibliotecas de software concebidas para executar modelos de ML de forma eficiente. Muitos destes motores podem consumir modelos ONNX , aplicando frequentemente optimizações adicionais (como quantização ou fusão de gráficos) para alvos de hardware específicos. ONNX fornece a entrada de modelo padronizada para estes motores.

Em resumo, ONNX é um padrão vital para garantir flexibilidade e interoperabilidade no pipeline de operações de aprendizado de máquina (MLOps), permitindo que os desenvolvedores escolham as melhores ferramentas para treinamento e implantação sem serem restringidos por limitações de estrutura. Plataformas como o Ultralytics HUB aproveitam esses formatos para simplificar a jornada desde o desenvolvimento do modelo até a aplicação no mundo real.

Lê tudo