Aprendendo ONNX para negociação - página 14

 

ONNX e ONNX Runtime com Vinitra Swamy e Pranav Sharma da Microsoft



ONNX e ONNX Runtime com Vinitra Swamy e Pranav Sharma da Microsoft

O vídeo aborda o formato Open Neural Network Exchange (ONNX), criado para tornar os modelos interoperáveis e eficientes na serialização e versionamento. O ONNX consiste em uma camada de representação intermediária, especificações do operador e suporta diferentes tipos de dados. O ONNX Runtime, implementado em C++ e assembler, oferece compatibilidade com versões anteriores e é extensível por meio de provedores de execução, operadores personalizados e otimizadores de gráfico. A API oferece suporte para plataformas, linguagens de programação e provedores de execução. Os usuários podem criar sessões, otimizar modelos e serializá-los para uso futuro. Os alto-falantes fornecem uma demonstração da versatilidade e eficiência do ONNX Runtime, com capacidade para rodar em dispositivos Android.

  • 00:00:00 Nesta seção, Venetra, da equipe de engenharia do ONNX, apresenta o ONNX, o Open Neural Network Exchange, que é um padrão interoperável para modelos de IA. Ela explica que a Microsoft integrou o aprendizado de máquina em quase todos os aspectos de seu conjunto de produtos, do HoloLens ao Xbox e ao Skype, o que levou a vários desafios de implantação em escala. O ONNX foi criado para otimizar a inferência eficiente, padronizando o processo de implantação do modelo para diferentes estruturas e destinos de implantação. O objetivo é oferecer suporte a modelos de várias estruturas implementando um padrão e fornecer uma experiência consistente para todos os usuários, sejam eles cientistas de dados, fornecedores de hardware, autores de serviços ou engenheiros de ML.

  • 00:05:00 Nesta seção, Vinitra Swamy e Pranav Sharma discutem o ONNX, um consórcio de parceiros fundadores que inclui Microsoft, Facebook, Amazon, NVIDIA e Intel, entre outros. O ONNX consiste em uma camada de representação intermediária e uma especificação completa do operador que define os operadores de maneira padrão, apesar dos diferentes conjuntos de operadores que cada estrutura possui. O código para converter modelos para ONNX não é longo e a conversão pode economizar muito para os usuários em termos de inferência e interoperabilidade. Além disso, o ONNX possui princípios de design que permitem a interoperabilidade para modelos de aprendizado profundo e aprendizado de máquina. Os usuários podem começar a usar o ONNX acessando o zoológico de modelos ONNX, serviços de criação de modelos ou conversores.

  • A seção 00:10:00 discute os componentes e o design do ONNX, um formato de modelo criado para torná-lo interoperável e compatível com versões anteriores, ao mesmo tempo em que suporta serialização e controle de versão eficientes. O formato consiste em um modelo, um gráfico computacional com nós e uma especificação do operador. Os tipos de dados suportados incluem os tipos tensores padrão e dois tipos não tensores, sequências e mapas. As especificações do operador apresentam entradas, saídas, restrições e exemplos. Um exemplo de uma especificação de operador é fornecido para o operador relu.

  • 00:15:00 Nesta seção do vídeo, Vinitra Swamy e Pranav Sharma discutem as diferentes versões e operadores suportados no formato Open Neural Network Exchange (ONNX). Eles explicam que o ONNX tem mais de 156 operações específicas de aprendizado profundo e 18 operações tradicionais de aprendizado de máquina que são interoperáveis entre os diferentes operadores. Além disso, os usuários podem criar operações personalizadas para seus modelos usando a estrutura ONNX. Eles também destacam a importância do controle de versão, que é feito em três níveis diferentes - camada de representação intermediária, deslocamentos e operadores individuais. Por fim, eles discutem o ONNX Runtime, que é um mecanismo de inferência de código aberto e de alto desempenho para o ONNX. É multiplataforma e projetado para ser compatível com versões anteriores, tornando-o adequado para implantação em ambientes de produção.

  • 00:20:00 Nesta seção, o foco está na arquitetura do ONNX Runtime e como um modelo é executado dentro dele. A compatibilidade com versões anteriores e o desempenho foram as principais preocupações do ONNX Runtime, que é implementado em C++ e algumas partes em assembler. O ONNX Runtime tem suporte para aceleradores de hardware usando algo chamado "provedores de execução". O algoritmo de particionamento permite que o modelo seja executado em um estágio de execução híbrido, e os provedores de execução individuais podem otimizar ainda mais os subgrafos para obter melhor desempenho. Por fim, o ONNX Runtime atua como um interpretador percorrendo todos os nós do grafo para executar o modelo.

  • 00:25:00 Nesta seção, os palestrantes discutem os modos de execução em ONNX e ONNX Runtime, que são sequenciais e paralelos. Os usuários podem controlar o número de threads que desejam configurar para cada modo de execução e os resultados são enviados por meio da API. Os alto-falantes observam que dispositivos diferentes podem não compartilhar a mesma memória, portanto, os nós de cópia de memória são inseridos com base nas otimizações realizadas. Eles também falam sobre o processo de particionamento do grafo, onde os usuários devem especificar uma lista priorizada de provedores de execução onde o grafo deve ser executado. No entanto, no próximo lançamento, haverá uma nova fase chamada particionamento inteligente, onde o ONNX descobrirá a melhor maneira de colocar o grafo e como executá-lo de forma eficiente. Os palestrantes também abordam provedores de execução, que são abstrações de software sobre aceleradores de hardware. Dois tipos de provedores de execução são baseados em kernel e baseados em tempo de execução, e o último é uma caixa preta onde o provedor de execução executa partes do gráfico para nós.

  • 00:30:00 Nesta seção, os palestrantes discutem os princípios de design do ONNX Runtime, enfatizando sua extensibilidade por meio de opções como provedores de execução, operadores personalizados e otimizadores de gráficos. Eles também fornecem uma matriz de plataformas suportadas, linguagens de programação e provedores de execução, incluindo Tensor RT, Direct ML e OpenVINO. Os palestrantes explicam as construções de alto nível de uma sessão e a maneira thread-safe de criar o objeto de sessão antes de chamar a função run. Eles também discutem como o tempo necessário para otimizar um modelo depende do tamanho do modelo e de suas oportunidades de otimização.

  • 00:35:00 Nesta seção, os palestrantes discutem a criação de sessões e o uso de opções de execução e opções de sessão, com a possibilidade de serializar o modelo otimizado para uso futuro. Eles também explicam o processo de registro de operadores personalizados, com a opção de usar Python para quem prefere não usar C#. A versão ONNX Runtime 1.0 foi lançada, garantindo a não quebra de APIs daqui para frente, com
    compatibilidade desde o CentOS 7.6. A ferramenta ONNX Go Live, uma ferramenta de código aberto para converter e ajustar modelos para desempenho ideal, também é discutida. A seção termina com exemplos de serviços da Microsoft que utilizam ONNX, incluindo um ganho de desempenho de 14x no modelo de determinador ausente do Office e um ganho de desempenho de 3x no modelo de reconhecimento óptico de caracteres usado em serviços cognitivos.

  • 00:40:00 Nesta seção, os palestrantes discutem a API de tempo de execução ONNX, que está em modo de visualização e permite executar o tempo de execução ONNX em dispositivos Android. Eles também mencionam o suporte de treinamento, que atualmente é exploratório e visa ver se o tempo de execução do ONNX pode ser usado para ajustar modelos já criados. Os palestrantes fazem uma demonstração do uso do tempo de execução ONNX em um modelo de detecção de objetos YOLOv3, mostrando que o tempo de execução ONNX é versátil, eficiente e útil para casos que exigem bom desempenho ou precisam oferecer suporte a um modelo em diferentes estruturas.

  • 00:45:00 Nesta seção do vídeo, os apresentadores demonstram o ONNX Runtime identificando imagens e suas respectivas classes com um modelo grande e complicado. Eles também apresentam uma demonstração rápida do Onnx Ecosystem Converter, permitindo que os usuários carreguem e convertam modelos de diferentes estruturas no Jupyter Notebook. Eles convertem um modelo de classificação de documentos do CoreML, a estrutura de aprendizado de máquina da Apple, para ONNX e validam sua precisão. Eles observam que é um custo único converter um modelo para ONNX e é um processo eficiente.

  • 00:50:00 Nesta seção, os palestrantes resumem o que abordaram no vídeo, incluindo os benefícios de usar ONNX e ONNX Runtime, as várias maneiras de converter de diferentes estruturas para ONNX e a crescente adoção de ONNX em seus 26 empresas. Eles agradecem ao público por ouvir e expressam seu entusiasmo para continuar com a sessão de perguntas e respostas.
 

Jan-Benedikt Jagusch Christian Bourjau: Making Machine Learning Applications Fast and Simple with ONNX



Jan-Benedikt Jagusch Christian Bourjau: Making Machine Learning Applications Fast and Simple with ONNX

In this video about machine learning and deployment, the speakers discuss the challenges of putting models into production, particularly the difficulty of pickling and deploying models. They introduce ONNX, a universal file format for exporting machine learning models, and explain how it can help decouple training and inference, making deployment faster and more efficient. They provide a live demo using scikit-learn, explaining how to convert a machine learning pipeline to ONNX format. They also discuss the limitations of Docker containers for deploying machine learning models and highlight the benefits of using ONNX instead. They touch on the topic of encrypting models for additional security and address the usability issue of ONNX, which is still a young ecosystem with some cryptic error messages.

  • 00:00:00 In this section of the video, the presenters discuss the importance of decoupling model training from inference using ONNX. The presenters note that 55% of companies who have started with machine learning have failed to put their models into production, and argue that automating business processes by putting models into production is where the majority of value lies. However, they also note that deploying models is more complicated than it may initially seem, which is why they will be discussing how ONNX can help overcome this challenge. They also walk through the process of how a machine learning project typically starts, develops, and then collides with deployment requirements.

  • 00:05:00 In this section, the speakers discuss the challenges of putting machine learning models into production, specifically focusing on the difficulties of pickling and deploying the model. They explore the issues that arise in using an unfinished package, such as a pickle, to transfer the model, and how the correct environments and dependencies must be installed to successfully load the model in production. They also address the problem of models being too slow for use in production, leading to changes and optimizations to the model. Finally, they discuss the need for a universal file format to export the model, making it easy to use any runtime for deployment.

  • 00:10:00 In this section, the speakers discuss the concept of decoupling training from prediction time using tools for training to export a machine learning model to a universal file format, such as ONNX , in order to free up the tools used for deployment. They explain that ONNX is "the standardized way to describe your entire model, including your feature engineering and to store it into a binary format." They also note that ONNX is a good option for those with different types of machine learning models, not just neural networks. However, they emphasize that to use ONNX , a machine learning model must be described as a computational graph with nodes that are operators and edges that are data flowing through the graph, and that ONNX is strongly typed with type information and shape.

  • 00:15:00 In this section, the speakers discuss the specifics of ONNX , which defines a set of operators that must be used to ensure compatibility with the format. At the time of this talk, there were 175 operators, including more complicated ones like linear regressors and true ensemble regressors. ONNX also specifies the data needed to store each operator, making the entire file self-contained with no other dependencies needed. The speakers stress that anything representable in a directed acyclic graph can be converted to ONNX , not just machine learning models. Additionally, the entire pipeline can be converted to ONNX , as long as each step can be represented as its own directed acyclic graph.

  • 00:20:00 In this section, the speakers demonstrate how to create a simple imputer and regressor using numpy operations, which can easily be defined as a graph of onyx operators. By replacing every node in the scikit-learn graph with a graph itself, scikit-learn can be converted to an onix format. While established machine learning frameworks such as PyTorch, TensorFlow, Light GBM, and XGBoost already have converters available, custom converters must be written for custom estimators and transformers. However, the learning curve is steep but feasible, and it is crucial that the custom code fits into a deck. The speakers also provide a live demo using training data and a pipeline from scikit-learn, which is then converted to an onix format.

  • 00:25:00 In this section, Jan-Benedikt Jagusch and Christian Bourjau explain that ONNX is strongly typed and requires initial information from the data that is being provided. To simplify this process, they convert the types easily from a pandas data frame by mapping pandas data types to ONNX data types. The ONNX model is then fully self-contained, extracted from the prediction logic of the pipeline. The data engineering team only needs to dump this into a file and use the ONNX runtime to analyze the data, which is the only dependency regardless of the data model being serialized from TensorFlow, Python, or elsewhere. The ONNX runtime provides Python bindings that improve prediction speed up to a factor of ten. Single-row prediction speed is also a priority since it is essential in online environments, taking only 170 milliseconds, which is similar to Scikit-learn.

  • 00:30:00 In this section, the speakers discuss the benefits of using onyx to decouple the training environment from the deployment environment. They explain that by exporting models to the universal file format of ONNX , users can interpret their models using a runtime that provides the necessary performance characteristics for real-world deployment. The speakers also address a question about using Docker containers, highlighting the limitations in terms of scalability and flexibility. They recommend looking into onyx for its ability to provide both performance and flexibility, with the potential to archive models in addition to improving deployment.

  • 00:35:00 In this section, the speakers discuss the limitations of using Docker for deploying machine learning models, and highlight the benefits of serializing models to ONNX instead. While Docker may work for providing a REST API and in certain cases, the artifact produced includes many layers, making it difficult to load the mathematical formulation of the model. On the other hand, serializing the model to ONNX provides a pure essence of the model that is human-readable and easy to load. The speakers caution that while ONNX has many benefits, it is not a perfect solution for all use cases and requires some overhead to convert custom estimators and transformers. Additionally, the ecosystem is still relatively new, and users may need to spend time fixing issues or reading through GitHub issues. Finally, the speakers briefly mention the possibility of deploying ONNX models on GPUs, which is technically possible with the default ONNX runtime.

  • 00:40:00 In this section, the speakers discuss the possibility of encrypting ONNX models to protect against unintended use or reverse engineering. They mention that while it is possible to read the coefficients out of the model, if it is complex, it becomes difficult as ONNX does not preserve the operator and pipeline information. ONNX provides security by obfuscation to some extent, but it is not encrypted. However, they mention that it is possible to compile the file down to machine code for obfuscation and further security. The speakers also address the issue of putting preprocessing steps that have I/O against the database, which would require all the data to be in the database for the instantiator inside of the ONNX graph. Lastly, they discuss the usability issue of Onyx, as the error messages can be cryptic, but they are optimistic that the ecosystem will improve, given its young age and corporate backing.
 

ONNX Runtime Azure EP para inferência híbrida no Edge e na nuvem



ONNX Runtime Azure EP para inferência híbrida no Edge e na nuvem

A equipe ONNX Runtime lançou seu primeiro passo para o mundo híbrido de permitir que os desenvolvedores usem uma única API para computação de borda e nuvem com o Azure EP, que elimina as preocupações com a conectividade do dispositivo e permite que os desenvolvedores mudem para o modelo de nuvem que otimizaram , economizando custos e reduzindo a latência. Esse novo recurso permite que os desenvolvedores atualizem a lógica do aplicativo e escolham qual caminho seguir por meio do Azure EP, oferecendo mais capacidade e poder. A equipe demonstra a implantação de servidores infantis e modelos de detecção de objetos, além de como testar o endpoint e configurar o Onnx Runtime Azure de forma simples. Os apresentadores também discutem a capacidade de alternar entre processamento local e remoto e casos de uso em potencial, incluindo modelos de baixo desempenho versus modelos de alto desempenho. O ONNX Runtime Azure EP pode ser pré-carregado e configurado facilmente com os pacotes necessários para implantação, contribuindo para a facilidade de uso do software.

  • 00:00:00 Nesta seção, o Azure EP é apresentado como o primeiro passo da equipe de tempo de execução ONNX para o mundo híbrido de permitir que os desenvolvedores usem uma única API para computação de ponta e nuvem. Ao fazer isso, os desenvolvedores não precisam se preocupar com a conectividade do dispositivo e podem mudar para o modelo de nuvem que otimizaram e estão usando lá, economizando custos e latência. Esse novo recurso permite que os desenvolvedores atualizem a lógica do aplicativo e escolham qual caminho seguir por meio do Azure EP, dando a eles mais capacidade e poder. No geral, a equipe de tempo de execução do ONNX está animada para ver o que vem da comunidade de desenvolvedores e como esse novo recurso é implementado.

  • 00:05:00 Nesta seção, Randy Schrey, um colaborador da nova versão 1.14 do ONNX Runtime (ORT), demonstra alguns dos recursos interessantes que vêm com a versão. Primeiro, ele mostra um endpoint chamado Azure Machine Learning, que serve como servidor para os modelos. Ele também discute o servidor Triton que é utilizado para fornecer endpoints, dividido pela Nvidia, e seu impressionante desempenho e estabilidade. Schrey mostra como implantar um servidor infantil e fornece uma visão geral de como ele se parece, incluindo a especificação do nome, versão e localização do modelo. Ele também destaca a estrutura de pastas que deve ser seguida ao implantar um servidor Triton e mostra o arquivo de configuração que descreve como o modelo obtém a entrada e a saída.

  • 00:10:00 Nesta seção, o palestrante discute a estrutura de sua pasta para implantar modelos de detecção de objetos e explica como o servidor Triton pode encontrar o modelo para implantação. Eles também respondem a uma pergunta sobre modelos de consumo servidos no Azure e mencionam as limitações atuais do Trtis sobre o Azure, afirmando que ele oferece suporte apenas ao servidor Triton como seu lado do servidor. O palestrante discute o teste do endpoint, o processo de instalação simples do Onnx Runtime Azure e como eles podem usar o Onnx Runtime Azure para inferência híbrida no Edge e na nuvem para trabalhar com o endpoint online do lado do cliente. O palestrante fornece um script e explica algumas das configurações necessárias para carregar e consumir um modelo usando o Onnx Runtime Azure.

  • 00:15:00 Nesta seção, os apresentadores demonstram como usar o ONNX Runtime Azure EP para inferência híbrida na borda e na nuvem. Eles mostram como configurar a chave de autenticação e executar a inferência, com a capacidade de alternar entre processamento local e remoto alterando um único parâmetro no código. Eles discutem possíveis casos de uso, como escolher entre modelos de baixo e alto desempenho, e observam que, embora a versão de visualização atual exija o servidor de inferência Triton, o plano é oferecer suporte a todos os tipos de servidores de implantação no futuro.

  • 00:20:00 Nesta seção, é explicado que o ONNX Runtime Azure EP pode ser pré-carregado e facilmente configurado com os pacotes necessários para implantação. Esse recurso contribui para a facilidade de implantação e uso do software.
 

Inferência INT8 de modelos treinados com reconhecimento de quantização usando ONNX-TensorRT




Inferência INT8 de modelos treinados com reconhecimento de quantização usando ONNX-TensorRT

Dheeraj Peri, engenheiro de software de aprendizado profundo da NVIDIA, explica os fundamentos da quantização e como o TensorRT oferece suporte a redes quantizadas por meio de várias fusões. Eles se concentram em modelos treinados usando a estrutura do TensorFlow 2.0 e como realizar a quantização pós-treinamento (PTQ) e o treinamento com reconhecimento de quantização (QAT). O processo de implantação de um modelo treinado usando o kit de ferramentas de quantização Nvidia TF2 com ONNX-TensorRT é explicado e os resultados de precisão e latência são apresentados para vários modelos ResNet. No geral, é demonstrado o fluxo de trabalho QAT de ponta a ponta do TensorFlow para a implantação do TensorRT via ONNX-TensorRT.

  • 00:00:00 Nesta seção, Dheeraj, engenheiro de software de aprendizado profundo da NVIDIA, discute os fundamentos da quantização e como o TensorRT oferece suporte a redes quantizadas por meio de várias fusões. Ele explica que a quantização é o processo de conversão de valores contínuos em um conjunto discreto de valores usando técnicas de escalonamento lineares ou não lineares. Eles se concentram em modelos que são treinados usando a estrutura do TensorFlow 2.0 e como realizar a quantização pós-treinamento (PTQ) e o treinamento com reconhecimento de quantização (QAT). Dhiraj também destaca as diferenças entre o kit de ferramentas de quantização da NVIDIA e o kit de ferramentas TF mod, onde os nós são colocados de forma diferente nas camadas de convolução.

  • 00:05:00 Nesta seção, é explicado o processo de implantação de um modelo treinado usando o kit de ferramentas de quantização Nvidia TF2 com ONNX-TensorRT. O processo envolve quantizar o modelo TensorFlow 2.0 pré-treinado com o kit de ferramentas Nvidia, ajustá-lo para um pequeno número de épocas para simular o processo de quantização e, em seguida, converter o modelo em um formato ONNX. O gráfico ONNX é então usado para gerar o mecanismo TensorRT usando a API TensorRT. Os resultados de precisão e latência para vários modelos ResNet são apresentados e observa-se que os modelos treinados com reconhecimento de quantização (QAT) apresentam melhor precisão do que os modelos de quantização pós-treinamento (PTQ) durante a inferência. Os modelos QAT mostram uma latência semelhante aos modelos PTQ, mas depende da localização dos nós QDQ e suas fusões. No geral, é demonstrado o fluxo de trabalho QAT de ponta a ponta do TensorFlow para a implantação do TensorRT via ONNX-TensorRT.
 

QONNX: Uma proposta para representar NNs quantizadas de precisão arbitrária em ONNX



QONNX: Uma proposta para representar NNs quantizadas de precisão arbitrária em ONNX

O palestrante aborda a quantização de baixa precisão, com um exemplo de sua aplicação em comunicação sem fio. Eles propõem QONNX, um dialeto para representar redes neurais quantizadas de precisão arbitrária em ONNX. O QONNX simplifica a representação de quantização, estende-a a um conjunto mais amplo de cenários e oferece opções para diferentes tipos de arredondamento e quantização binária. Ele está sendo usado para implantação em FPGAs e está integrado à biblioteca de quantização Brevitas Python, com NQCDQ definido para ser integrado no próximo lançamento.

  • 00:00:00 Nesta seção, o palestrante fala sobre o conceito de quantização de baixa precisão, o que significa quantização abaixo de 8 bits. O alto-falante fornece um exemplo de como a quantização de baixa precisão foi usada em uma tarefa de classificação de modulação para comunicação sem fio, alcançando alto rendimento com latência reduzida graças ao treinamento de reconhecimento de quantização. O palestrante explica os fundamentos da quantização uniforme e propõe estender o poder representacional do ONNX para redes neurais de baixa precisão usando o recorte como uma função extra sobre limites inteiros entre nós quantizados e desquantizados. No entanto, o palestrante reconhece que essa abordagem tem limitações, inclusive sendo limitada a operadores lineares quantizados com uma saída de 8 bits e a incapacidade de adotar diferentes tipos de arredondamento.

  • 00:05:00 Nesta seção, o palestrante apresenta QONNX, que é um dialeto para representar redes neurais quantizadas de precisão arbitrária em ONNX. O QONNX simplifica a representação de quantização mesclando uma sequência de operações para quantização falsa em apenas um nó, ao mesmo tempo em que a estende para um conjunto mais amplo de cenários. Ele oferece opções para diferentes tipos de arredondamento, entradas de bits de transmissão e quantização binária. O formato está sendo aproveitado para implantação em FPGAs como parte do esforço de aprendizado de máquina rápido, com várias ferramentas disponíveis para lidar com QONNX que se integram ao tempo de execução ONNX e modelos pré-treinados de baixa precisão. O QONNX já está integrado à biblioteca de quantização Brevitas Python e o NQCDQ está definido para ser integrado ao próximo lançamento.
 

GRCon20 - Inferência de aprendizado profundo no GNU Radio com ONNX



GRCon20 - Inferência de aprendizado profundo no GNU Radio com ONNX

O vídeo discute o uso do ONNX como um formato aberto para integrar o aprendizado profundo como uma solução flexível e de código aberto no domínio da radiofrequência. O palestrante apresenta seu novo módulo GR DNN DN4, que usa interfaces Python para GNU Radio e ONNX, e demonstra suas capacidades com um exemplo de classificação de modulação automática usando um modelo de rede neural convolucional profunda treinado em dados simulados gerados pelo GNU Radio. Eles também discutem os requisitos e desafios do uso de aprendizado profundo para classificação em dados SDR com o modelo BGG16 e sugerem o uso de aceleração de hardware, como uma GPU, para melhorar a inferência e obter resultados em tempo real. O projeto é de código aberto e a colaboração é incentivada.

  • 00:00:00 Nesta seção do vídeo, Oscar Rodriguez discute seu trabalho com inferência de aprendizagem profunda no GNU Radio com ONNX. O principal objetivo do projeto era integrar o aprendizado profundo como uma solução flexível e de código aberto para o domínio da radiofrequência. Eles escolheram o ONNX por ser um formato aberto que permite a interoperabilidade de machine learning entre diferentes frameworks, resolvendo o problema de frameworks de deep learning incompatíveis. No entanto, há um custo de adaptação de modelos para ONNX e pode haver problemas de disponibilidade operacional com determinadas operações, embora isso seja mitigado pelo fato de ONNX ser ativamente desenvolvido e suportado pela Microsoft. Por fim, o ONNX fornece uma camada de abstração entre o modelo do usuário e diferentes estruturas de aprendizado profundo.

  • A seção 00:05:00 discute o uso do ONNX, que permite projetar e treinar modelos de aprendizado de máquina em várias estruturas, como TensorFlow e PyTorch, antes de convertê-los em um formato comum para uso no bloco ONNX. O ONNX define um conjunto de operações básicas comumente usadas em modelos de aprendizado profundo, e seu tempo de execução fornece interfaces e suporte para várias acelerações de software e hardware. O tempo de execução também cria uma representação gráfica do modelo que atribui operações a diferentes provedores de execução com base nos aceleradores disponíveis.

  • 00:10:00 Nesta seção, o palestrante discute a extensibilidade dos provedores de execução no ONNX, o que permite o suporte de novas plataformas de hardware desde que todas as operações do ONNX tenham sido implementadas nessa plataforma. Eles então apresentam seu novo módulo, GR DNN DN4, que usa interfaces Python para GNU Radio e ONNX. O módulo de sincronização adapta as entradas ao formato esperado do modelo, ajusta o modelo com os dados transformados e então transforma a saída de volta em um formato unidimensional. O módulo também permite a seleção de diferentes provedores de execução suportados no ONNX. O palestrante continua demonstrando os recursos do GR DNN DN4 com um exemplo de classificação de modulação automática usando um modelo de rede neural convolucional profunda treinado em dados simulados gerados pelo GNU Radio.

  • 00:15:00 Nesta seção, o palestrante discute o uso de aprendizado profundo para classificação em dados SDR com o modelo BGG16. Eles explicam que a entrada do modelo requer um vetor de 128 valores de QI, que deve ser adaptado à saída do dispositivo SDR. Eles também observam que a inferência de aprendizagem profunda é computacionalmente intensiva e que o desempenho depende da complexidade do modelo. O palestrante conclui sugerindo que o uso de aceleração de hardware, como uma GPU, pode melhorar a inferência e obter resultados em tempo real.

  • 00:20:00 Nesta seção, o palestrante discute uma nova implementação de rádio que pode integrar inferência de aprendizado profundo e rádio definido por software (SDR) usando um formato padrão para representação de modelo de aprendizado profundo e suporte a vários métodos de aceleração. O palestrante demonstra como o módulo pode ser usado para classificação de modulação automática e obter inferência em tempo real com aceleração de hardware. O palestrante também discute melhorias futuras no módulo, incluindo torná-lo mais flexível para diferentes tipos de modelos de aprendizado profundo e incluindo a funcionalidade de pré-processamento dentro do bloco. O projeto é de código aberto e a colaboração é incentivada.