Ir para o conteúdo

Open Neural Network Exchange

Origem: Wikipédia, a enciclopédia livre.

O Open Neural Network Exchange (ONNX, ˈɒnɪks, Troca de Redes Neurais Abertas) [1] é um formato de arquivo de código aberto de modelo de aprendizado de máquina intercambiável[2] - multi framework e multi plataformas[3] - implementado por empresas de tecnologia e organizações de pesquisa que estabelecem padrões abertos para representar um algoritmo de aprendizado de máquina e ferramenta de software em um formato padrão para representar modelos de aprendizado de máquina, que podem ser usadas em diferentes estágios do processo de desenvolvimento.

História

[editar | editar código]

O ONNX foi inicialmente chamado de Toffee,[4] e foi desenvolvido pela equipe do PyTorch e do Facebook.[5] Em setembro de 2017, foi renomeado para ONNX e anunciado pelo Facebook e pelaMicrosoft.[6][7] Posteriormente a: IBM, Huawei, Intel, AMD, Arm e Qualcomm anunciaram suporte à esta iniciativa.[2]

Em outubro de 2017, a Microsoft anunciou que iria adicionar o seu Cognitive Toolkit e a plataforma Project Brainwave à iniciativa.[2] O Cognitive Toolkit é uma estrutura de código aberto usada para construir redes neurais do tipo profunda.[7]

Em novembro de 2019, o ONNX foi aceito como projeto de pós-graduação na Linux Foundation AI.[8]

Em outubro de 2020, a Zetane Systems tornou-se membro do ecossistema ONNX.[9]

A Microsoft desenvolveu a biblioteca ONNX Runtime, uma biblioteca de inferência e treinamento de código aberto que implementa o modelo no formato ONNX, com inferência até 17 vezes mais rápida e treinamento até 1,4 vezes mais rápido em CPUs, GPUs e, aceleradores de hardware personalizados.[10] O ONNX Runtime é escalável e multiplataforma plataformas: Windows, Linux e MacOS.[10]

Características

[editar | editar código]

O ONNX é um formato intercambiável permite os desenvolvedores de IA usar o mesmo modelo com vários tipos de frameworks, estruturas de treinamento e, ferramentas de learning.[3][11] E também permite usar o mesmo modelo em várias plataformas (nuvem, dispositivo móvel, desktop, etc).[3] O modelo será integrado ao código fonte de programação, que permite usar o machine learning em seus aplicativos.[11]

Interoperabilidade da estrutura

[editar | editar código]

Permitir que os desenvolvedores movam modelos de aprendizado de máquina entre diferentes estruturas, que podem ser usadas em diferentes estágios do processo de desenvolvimento, como treinamento, projeto de arquitetura ou implantação em dispositivos móveis.[7] Este formato de arquivo é compatível com Cognitive, Caffe2, PyTorch,[7] TensorFlow e, scikit-learn.[10]

Otimização compartilhada

[editar | editar código]

Fornecer uma representação comum que possa ser usada por fornecedores de hardware e outros desenvolvedores para aplicar otimizações a modelos de redes neurais artificiais em várias estruturas de aprendizado de máquina.[7]

Conteúdo

[editar | editar código]

O ONNX fornece definições de um modelo de grafo de computação extensível, operadores integrados e tipos de dados padrão, com foco na inferência (avaliação lógica).[7] O formato do contêiner é o Protocol Buffers/protobuf (intercâmbio de informações estruturadas).[12]

Cada grafo de fluxo de dados de computação é uma lista de nós que formam um grafo acíclico . Os nós têm entradas e saídas. Cada nó é uma chamada a um operador. Os metadados documentam o grafo. Os operadores integrados devem estar disponíveis em cada framework compatível com ONNX. [7]

Os modelos podem ser treinados em uma única estrutura, como PyTorch ou TensorFlow, e então exportados para o formato ONNX. Esse formato permite que os modelos sejam transferidos de uma estrutura de treinamento para outros ambientes para teste ou implantação. Uma vez que um modelo neste formato pode ser executado em diferentes sistemas de tempo de execução ou em várias plataformas de hardware, como GPU ou aceleradores de IA especializados. O uso de um formato comum permite que a mesma representação do modelo seja usada em vários sistemas e estruturas.[13]

MODEL = onnxruntime.InferenceSession("/home/models/my_model.onnx")[3]

MODEL.run(None, {"image": image_np, "text": text_np})[3]

  • Q-learning
  • Agente inteligente
  • PicklingTools — uma coleção de ferramentas de código aberto que permite que sistemas C++ e Python compartilhem informações de forma rápida e fácil.

Referências

[editar | editar código]
  1. ↑ @onnxai. «Hi Hu, it's not spelled the same, but pronounced the same as Onyx.» (Tweet) – via Twitter Em falta ou vazio |data= (ajuda)
  2. 1 2 3 «Microsoft and Facebook's open AI ecosystem gains more support». Engadget (em inglês). Consultado em 11 de outubro de 2017
  3. 1 2 3 4 5 Pacheco, Andre (31 de janeiro de 2024). «Como converter e usar o seu modelo com ONNX». Laboratório de Inteligência Artificial em Saúde (Life). Consultado em 6 de abril de 2026
  4. ↑ «Codemod Toffee -> ONNX, toffee -> onnx. Change file names to match · pytorch/pytorch@6d8d5ba». GitHub (em inglês). Consultado em 12 de outubro de 2021
  5. ↑ «A model exporter for PyTorch by ezyang · Pull Request #2565 · pytorch/pytorch». GitHub (em inglês). Consultado em 12 de outubro de 2021
  6. ↑ Boyd, Eric (7 de setembro de 2017). «Microsoft and Facebook create open ecosystem for AI model interoperability». Microsoft Azure Blog (em inglês). Consultado em 6 de abril de 2026
  7. 1 2 3 4 5 6 7 «Microsoft and Facebook create open ecosystem for AI model interoperability – Microsoft Cognitive Toolkit». Microsoft Cognitive Toolkit (em inglês). 7 de setembro de 2017. Consultado em 11 de outubro de 2017. Cópia arquivada em 30 de março de 2019
  8. ↑ «LF AI & Data Day – ONNX Community Meetup – Silicon Valley». LF Online Community (em inglês). Cópia arquivada em 10 de setembro de 2025
  9. ↑ «Zetane Systems Joins the ONNX Community to Accelerate Open-Source Innovation and Universal…». 14 outubro 2020
  10. 1 2 3 Braga, Pedro Henrique Spinosa (2023). «Implantação de modelos de aprendizado de máquina no formato onnx utilizando diferentes frameworks»
  11. 1 2 stevewhims. «Modelos ONNX». Microsoft Learn. Consultado em 6 de abril de 2026
  12. ↑ Geel, Patrick. Neural Network Partitioning for Resource-Limited Environments (Tese). p. 10
  13. ↑ Zhang (2019). «ONNX: Model interoperability for machine learning». arXiv

Ligações externas

[editar | editar código]