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. Essa interoperabilidade agiliza o caminho da pesquisa à produção.
Relevância de ONNX
O valor central do ONNX reside na promoção da portabilidade e da interoperabilidade no ecossistema de IA. Em vez de ficarem presos ao ecossistema de uma estrutura específica, os programadores podem tirar partido do ONNX para mover os modelos livremente. Ao definir um conjunto comum de operadores e um formato de ficheiro padrão, ONNX garante que a estrutura de um modelo e os parâmetros aprendidos(pesos) são representados de forma consistente. 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 o YOLOv8 ou YOLO11 e implementá-los numa grande variedade de plataformas de hardware e software, utilizando frequentemente motores de inferência optimizados para um melhor desempenho.
Como funciona o ONNX
ONNX consegue a interoperabilidade através de várias caraterísticas fundamentais:
- Representação de modelo comum: Define um conjunto padrão de operadores (como camadas de convolução ou funções de ativação) e tipos de dados. Quando um modelo é convertido para ONNX, a sua arquitetura é traduzida para esta linguagem partilhada.
- Estrutura baseada em gráficos: Os modelos são representados como gráficos computacionais, em que os nós são operações e as arestas representam o fluxo de dados (tensores). Esta é uma estrutura comum utilizada pela maioria das estruturas de aprendizagem profunda.
- Extensibilidade: Embora ONNX defina um conjunto central de operadores, permite a utilização de operadores personalizados, possibilitando o suporte de novas arquitecturas de modelos.
- Controlo de versões: ONNX mantém as versões do operador para garantir a compatibilidade com versões anteriores, o que significa que os modelos criados com versões mais antigas podem continuar a ser utilizados à medida que a norma evolui.
Aplicações de ONNX
ONNX é amplamente utilizado para colmatar a lacuna entre os ambientes de treino de modelos e os objectivos de implementação. Eis dois exemplos:
- Implantação otimizada em dispositivos de borda: Um programador treina um modelo de deteção de objectos utilizando o Ultralytics YOLO num servidor potente com GPUs. Para implantar esse modelo em dispositivos de borda com recursos limitados, exporta o modelo para o ONNX. O modelo ONNX pode então ser otimizado usando ferramentas como NVIDIA TensorRT para hardware NVIDIA ou o OpenVINO daIntel para CPUs/VPUs Intel , obtendo uma inferência em tempo real mais rápida e eficiente. Para mais informações, consulta o nosso guia sobre as opções de implementação de modelos.
- Colaboração entre estruturas: Uma equipa de investigação desenvolve um novo componente de modelo em PyTorch. Outra equipa, responsável pela integração deste componente numa aplicação maior criada com o TensorFlow, pode receber o componente como um ficheiro ONNX . Isso evita a necessidade de tradução de códigos complexos ou de manter versões de modelos separadas para diferentes frameworks, promovendo uma colaboração mais fácil dentro de organizações como as listadas na nossa página de clientes.
Conceitos relacionados
A compreensão da ONNX envolve frequentemente tecnologias relacionadas:
- Tempo de execuçãoONNX : Este é um motor de inferência de alto desempenho especificamente concebido para executar modelos ONNX de forma eficiente em vários hardwaresCPU, GPUetc.). Enquanto ONNX define o formato, ONNX Runtime fornece o ambiente de execução.
- TensorRT: Um SDK da NVIDIA para inferência de aprendizagem profunda de alto desempenho, que pode importar modelos ONNX para otimização em GPUs NVIDIA . Ultralytics oferece integração comTensorRT .
- OpenVINO: um conjunto de ferramentas Intel para otimizar e implementar a inferência de IA, suportando modelos ONNX para execução em hardware Intel .
- Exportação de modelos: O processo de conversão de um modelo treinado do seu formato de estrutura original (por exemplo, PyTorch
.pt
) num formato normalizado como o ONNX. - Implementação de modelos: O processo geral de pegar num modelo treinado e torná-lo disponível para utilização num ambiente de produção, em que ONNX desempenha um papel fundamental na simplificação da compatibilidade entre plataformas. Podes gerir a implementação dos teus modelos ONNX utilizando plataformas como o Ultralytics HUB.
Ao facilitar a troca e a implementação de modelos, ONNX desempenha um papel vital para tornar o ciclo de vida do desenvolvimento da IA mais flexível e eficiente.