Aprendendo ONNX para negociação

 

Incluímos suporte para modelos ONNX no MQL5, pois acreditamos que esta é a direção para o futuro. Neste tópico, propomos iniciar uma discussão e estudo sobre uma direção promissora que elevará o uso do aprendizado de máquina a um novo patamar. Com isso, será possível treinar seus modelos em seu ambiente preferido e começar a negociar com o mínimo de esforço.


Uma pequena visão geral da tecnologia

ONNX (Open Neural Network Exchange) é um padrão aberto para troca de modelos de aprendizado de máquina entre diferentes estruturas (frameworks). Foi desenvolvido em conjunto pela Microsoft, Facebook e Amazon Web Services (AWS) para facilitar o desenvolvimento e a implantação de modelos de aprendizado de máquina.

Principais vantagens do ONNX:

  • Interoperabilidade: o padrão permite a troca de modelos entre diferentes frameworks, como TensorFlow, PyTorch, Caffe2, MXNet e outros. Isso simplifica o processo de desenvolvimento e implantação de modelos.
  • Otimização: a tecnologia oferece operações otimizadas e gráficos computacionais, permitindo melhorar o desempenho dos modelos e reduzir os custos de computação.
  • Padronização: o ONNX propõe um formato único para serialização e armazenamento de modelos de aprendizado de máquina, facilitando a troca de modelos entre desenvolvedores e organizações.
  • Ecossistema: é suportado por várias bibliotecas, ferramentas e dispositivos, ajudando a disseminar e acelerar inovações no campo do aprendizado de máquina.
  • Abertura: o projeto é um padrão aberto com uma comunidade ativa,  e acreditamos que ele continuará a se expandir. Vamos desenvolvê-lo juntos.


Para utilizar o ONNX, os desenvolvedores podem exportar seus modelos a partir de diferentes frameworks, como TensorFlow ou PyTorch, para o formato ONNX. Depois, esses modelos podem ser integrados a programas MQL5 e executados diretamente no terminal MetaTrader 5. Nenhuma outra solução oferece essa possibilidade.

Uma das ferramentas mais populares para converter modelos para o formato ONNX é a ONNXMLTools, desenvolvida pela Microsoft.  A instalação do ONNXMLTools é simples e está detalhada na página do projeto https://github.com/onnx/onnxmltools#install, onde também são fornecidos alguns exemplos de conversão de modelos.

O ONNX Runtime é utilizado para executar o modelo treinado.  O ONNX Runtime é uma biblioteca multiplataforma de alto desempenho para executar modelos de aprendizado de máquina exportados no formato ONNX.   Ao usar o ONNX, os desenvolvedores podem criar modelos em um framework e, em seguida, implantá-los facilmente em outras plataformas, proporcionando flexibilidade e simplificando o processo de desenvolvimento.

Dessa forma, o ONNX é uma ferramenta poderosa para desenvolvedores e pesquisadores na área de aprendizado de máquina. Aproveite essas oportunidades para um desenvolvimento eficaz e implemente-as na negociação de forma simplificada - por meio do MQL5.

Busque informações e novas abordagens para trabalhar com modelos de aprendizado de máquina e compartilhe-as aqui com outros membros da comunidade MQL5. Encontramos para você alguns materiais úteis sobre este tópico, esperamos que eles o ajudem a entender rapidamente a nova tecnologia promissora.

Documentação sobre MQL5: ONNX models
Documentação sobre MQL5: ONNX models
  • www.mql5.com
ONNX models - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
 

1. ONNX Runtime



Aqui é abordado o projeto Open Neural Network Exchange (ONNX), que consiste em um formato aberto para representação de modelos de aprendizado tradicional e profundo (deep learning).  O ONNX Runtime, um mecanismo de alto desempenho para executar tais modelos, também é descrito.

O ONNX Runtime é totalmente compatível com os operadores definidos na especificação ONNX e funciona tanto com CPU quanto com GPU em diversas plataformas, incluindo Linux, Windows e Mac.

O vídeo apresenta um guia passo a passo para converter, carregar e executar um modelo utilizando o ONNX Runtime no Azure ML. Além disso, demonstra os potenciais benefícios dessa abordagem, como melhoria no desempenho e eficiência na realização de previsões para diferentes modelos.

Você também é encorajado a experimentar o ONNX e contribuir para a crescente comunidade ONNX.

 

2. Converting Models to #ONNX Format



No vídeo, são descritas diversas maneiras de converter modelos de aprendizado de máquina no formato ONNX, permitindo assim o uso desses modelos com o ONNX Runtime.  O ONNX é compatível com várias bibliotecas populares de aprendizado de máquina, como PyTorch, TensorFlow e Scikit-Learn.

Para realizar a conversão de um modelo no formato ONNX, é necessário utilizar a biblioteca de conversão apropriada. Em seguida, deve-se criar um modelo ONNX usando tal biblioteca.  Dessa forma, o modelo poderá ser utilizado com o ONNX Runtime, o que aprimora seu desempenho e garante sua compatibilidade com diversas plataformas.

Neste caso, são fornecidos exemplos práticos de como realizar a conversão de modelos para o formato ONNX utilizando as bibliotecas PyTorch e TensorFlow.

 

3.  ONNX – open format for machine learning models​



Aborda o formato ONNX, que consiste em um formato aberto para armazenamento de modelos de aprendizado de máquina.  É possível converter modelos oriundos de diferentes frameworks no formato ONNX, garantindo, assim, compatibilidade e praticidade no uso.

São apresentados exemplos de frameworks compatíveis, como TensorFlow, PyTorch, Keras e scikit-learn, além de discutir as vantagens do uso do ONNX, tais como a aceleração do tempo de execução dos modelos e otimização do desempenho em hardware específico.

No próximo vídeo, o autor se compromete a demonstrar como realizar a conversão de um modelo do Keras no formato ONNX, além de testá-lo com base em exemplos de problemas de classificação e segmentação de imagens.

Avaliação e seleção de variáveis para os modelos de aprendizado da máquina
Avaliação e seleção de variáveis para os modelos de aprendizado da máquina
  • www.mql5.com
Este artigo foca sobre as especificidades de escolha, o pré-condicionamento e avaliação das variáveis de entrada (preditoras) para uso em modelos de aprendizagem da máquina. Novas abordagens e oportunidades de análises preditoras profundas e suas influências no possível sobre-ajuste (overfitting) dos modelos serão consideradas. O resultado global do uso de modelos, em grande parte, depende do resultado desta etapa. Vamos analisar dois pacotes, oferecendo abordagens novas e originais para a seleção dos preditores.
 

4.  (Deep) Machine Learned Model Deployment with ONNX



Discute o desenvolvimento de uma biblioteca de aprendizado de máquina de código aberto da Microsoft, que foi publicada no GitHub.

O autor aborda o desafio na implantação de modelo de aprendizado de máquina, nos quais o modelo é construído em um computador poderoso com gigabytes de memória, porém, as condições de uso variam significativamente e demandam otimização para realizar apenas uma previsão de cada vez.

O palestrante demonstra o desempenho de diversas bibliotecas, como scikit-learn, XGBoost e ML.NET, e exibe como a diferença no desempenho diminui conforme o tamanho do pacote aumenta. Além disso, o autor introduz o ONNX como uma solução para otimização em situações como essa.

 

5. Recurrent Neural Networks | LSTM Price Movement Predictions For Trading Algorithms


O vídeo aborda o uso de redes neurais recorrentes, especificamente as redes LSTM, para prever movimentos de preços em mercados financeiros, como FOREX, ações e criptomoedas.

O algoritmo foi desenvolvido em Python e pode ser baixado para realizar experimentos com a modificação dos parâmetros do algoritmo.

O aprendizado profundo é reconhecido como um excelente algoritmo de previsão, e neste vídeo, o colocamos à prova na negociação e na previsão de movimentos de preços.  Além disso, foram incorporados indicadores técnicos, como o indicador de força relativa RSI e as médias móveis MA, a fim de expandir os dados de entrada para o modelo de negociação.

Documentação sobre MQL5: Indicadores Técnicos
Documentação sobre MQL5: Indicadores Técnicos
  • www.mql5.com
Indicadores Técnicos - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
 

Tudo o que você quer saber sobre ONNX




Tudo o que você quer saber sobre ONNX

O formato ONNX visa enfrentar os desafios apresentados pelo conjunto fragmentado de ferramentas e estruturas no ambiente de aprendizado profundo, fornecendo um formato de arquivo portátil que permite que os modelos sejam exportados de uma estrutura para outra. É altamente transparente e bem documentado, padronizando sintaxes, semânticas e convenções usadas no domínio de aprendizado profundo e suportando modelos de aprendizado profundo e aprendizado de máquina tradicional. O ONNX permite interoperabilidade, eficiência e otimização em diversos ambientes de hardware sem otimização ou conversão manual. O vídeo mostra uma demonstração básica da conversão de um modelo treinado do scikit-learn para o formato ONNX usando o conversor específico do ONNX e demonstra como realizar a inferência final em um caso de uso reativo em que o treinamento é feito usando o PI tocha e a inferência é realizada em TensorFlow.

O webinar termina com uma demonstração de como converter um modelo ONNX em um formato TensorFlow usando a função "preparar" do "back-end ONNX TF" e salvando a saída como um arquivo ".pb". O palestrante observa que o modelo TensorFlow pode ser usado para inferência sem fazer nenhuma referência ao ONNX. O público é agradecido e o palestrante anuncia os próximos artigos sobre ONNX no The New Stack, junto com outro próximo webinar sobre o tempo de execução de aplicativo distribuído da Microsoft. O feedback dos participantes foi positivo.

  • 00:00:00 Se você está lutando com as complexidades do aprendizado de máquina e do aprendizado profundo devido à fragmentação e ao conjunto distribuído de ferramentas e estruturas, o ONNX pode ser a solução de que você precisa. Em uma seção de um webinar, o palestrante explica os desafios atuais enfrentados no ambiente de aprendizado profundo e como o ONNX pode resolvê-los. Assumindo uma familiaridade geral com aprendizado de máquina e aprendizado profundo, a discussão fornece uma visão geral detalhada das promessas oferecidas pelo ONNX e pelo tempo de execução do ONNX. No final desta seção, o público é apresentado à ideia da convergência de inteligência de máquina e infraestrutura moderna, que é um tema recorrente em toda a série de webinars.

  • 00:05:00 Nesta seção, o palestrante discute os desafios do aprendizado profundo, especialmente em termos de treinamento e produção. Quando se trata de treinamento, usar um conjunto fragmentado de estruturas e kits de ferramentas não é fácil, e a infraestrutura é essencial ao trabalhar com GPUs para acelerar o treinamento. Além disso, não se trata apenas de hardware, mas também de software, como CUDA e KuDNN para GPUs NVIDIA e oneDNN para FPGAs da Intel. Do lado da produção, o modelo treinado precisa ser otimizado para o ambiente de destino para fornecer alta precisão e baixa latência, o que requer conversão de tipos de dados e uso de ferramentas como TensorRT. Assim, o aprendizado profundo requer a compreensão das camadas de hardware e software e a otimização do modelo para entregar o desempenho desejado.

  • 00:10:00 Nesta seção, o palestrante discute as várias ferramentas, estruturas e ambientes de hardware necessários para otimizar e implantar modelos de IA de forma eficaz. O palestrante destaca a necessidade de otimização e quantização do modelo, especialmente para CPUs, e menciona os kits de ferramentas populares como Nvidia T4 e o kit de ferramentas OpenVINO da Intel. O palestrante explica ainda que diferentes ambientes de hardware requerem diferentes kits de ferramentas, como a família Jetson da Nvidia para automação industrial e casos de uso de IoT, a unidade de processamento de visão da Intel para computação de visão e o Edge TPU do Google para o edge. O processo de otimização e implantação de modelos de IA é um processo complexo e contínuo que envolve a detecção do desvio, retreinamento, otimização, implantação e dimensionamento do modelo. O palestrante destaca a importância de ter um pipeline que cuide de todo esse mecanismo de circuito fechado de forma eficaz.

  • 00:15:00 Nesta seção, o palestrante apresenta o ONNX como o Open Neural Network Exchange que atua como intermediário entre diferentes estruturas e ambientes de destino, promovendo eficiência, otimização e interoperabilidade. O ONNX oferece suporte a modelos de aprendizado profundo e aprendizado de máquina tradicional e permite a exportação e importação de modelos de uma estrutura para outra. Além disso, o ONNX oferece suporte a diversos ambientes de hardware sem otimização ou conversão manual. O palestrante observa que, desde sua criação em 2017 com os membros fundadores AWS, Microsoft e Facebook, o ONNX cresceu significativamente com contribuições da Nvidia, Intel, IBM, Qualcomm, Huawei, Baidu e muito mais, promovendo ativamente esse ecossistema em plataformas de nuvem pública, kits de ferramentas e tempos de execução. O ONNX passou por uma mudança significativa em resposta aos avanços em outras estruturas e kits de ferramentas, tornando-o compacto, multiplataforma e acompanhando os desenvolvimentos mais recentes.

  • 00:20:00 Nesta seção, o palestrante discute o ONNX, um formato de arquivo portátil que permite a exportação de modelos treinados em um framework ou kit de ferramentas para outro. O ONNX é altamente inspirado em tempos de execução portáteis, como JVM e CLR, e fornece um nível de abstração e desacoplamento de kits de ferramentas de nível superior. É um formato altamente transparente e bem documentado que padroniza sintaxes, semânticas e convenções usadas no domínio de aprendizado profundo. O ONNX ML também é uma extensão que oferece suporte ao aprendizado de máquina tradicional. Quando um modelo é exportado como ONNX, ele se torna um gráfico de vários nós de computação que representam o modelo inteiro.

  • 00:25:00 Nesta seção, o palestrante explica a estrutura dos nós de computação dentro de um grafo no ONNX. Cada nó é independente e contém um operador que executa a computação real, juntamente com dados de entrada e parâmetros. Os dados de entrada podem ser um tensor composto por vários tipos de dados, que são processados pelo operador para emitir uma saída que é enviada para o próximo nó de computação. O palestrante também observa que os operadores são essenciais no ONNX, pois mapeiam o tipo de operador ONNX com a estrutura ou kit de ferramentas de nível superior, facilitando a interpretação do modelo e o mapeamento da estrutura gráfica de alto nível para o operador real disponível no ONNX.

  • 00:30:00 Nesta seção, o vídeo discute os operadores personalizados e como eles podem ser definidos no ONNX. Os operadores personalizados são úteis para usuários avançados que estão criando suas próprias funções ou técnicas de ativação que não estão incluídas nos operadores ONNX disponíveis. Os operadores personalizados podem então ser usados na exportação de um modelo de um nível de estrutura para o ONNX. O vídeo mostra uma demonstração básica do uso do ONNX para converter um modelo treinado do scikit-learn para o formato ONNX usando o conversor específico do ONNX.

  • 00:35:00 Nesta seção, o palestrante destaca a transparência e a interpretabilidade do formato ONNX, que permite uma fácil análise e exploração da estrutura do modelo. O modelo ONNX pode até ser exportado para protobuf, permitindo iterar programaticamente sobre os nós disponíveis no modelo. O vídeo demonstra a inferência usando um modelo existente e o código mostra como enviar dados de entrada para inferência, que retorna um array numpy com a classificação de cada elemento nos dados de entrada. Um dos benefícios do ONNX é que ele é desacoplado do Escalon, então você não precisa se preocupar de onde vem o modelo, facilitando o consumo do modelo. O formato ONNX é semelhante aos arquivos DLL ou jar, pois você não precisa se preocupar com a linguagem de programação em que foi escrito antes do consumo, tornando-o flexível e versátil.

  • 00:40:00 Nesta seção, o palestrante fala sobre o formato de arquivo ONNX e o tempo de execução do ONNX. ONNX é um formato portátil e independente que define o gráfico e os operadores de um modelo em uma especificação bem definida. O tempo de execução ONNX, por outro lado, é um projeto orientado e defendido pela Microsoft. É um projeto diferente do ONNX e leva a promessa do ONNX para o próximo nível, criando o tempo de execução real. A Microsoft está apostando muito no tempo de execução ONNX, pois está se tornando a camada de fato para o mínimo no Windows 10. O palestrante explica a relação entre o ONNX e o tempo de execução ONNX por meio de uma representação visual de suas camadas.

  • 00:45:00 Nesta seção, o palestrante discute a promessa do tempo de execução ONNX, que abstrai o hardware subjacente, facilitando o uso com diferentes hardwares e otimizadores. O ONNX usa provedores de execução por meio de um modelo de plug-in, que pode ser criado por fornecedores de hardware para interagir com seus drivers e bibliotecas existentes, tornando o tempo de execução extremamente portátil. A Microsoft publicou vários benchmarks que provam que o tempo de execução do ONNX é de alto desempenho e muitas equipes de produtos da Microsoft agora o estão adotando como seu tempo de execução de aprendizado profundo preferido, do Bing ao Office 365 e serviços cognitivos. O palestrante descreve as quatro maneiras de obter modelos ONNX que podem ser executados no tempo de execução ONNX, começando com o Model Zoo e terminando com o uso do Azure ml para treinar e implantar o modelo na nuvem ou na borda.

  • 00:50:00 Nesta seção, o apresentador discute como baixar um modelo ONNX pré-treinado do zoológico de modelos e usá-lo para inferência. A demonstração envolve um modelo EMNIST ONNX pré-treinado baixado do zoológico de modelos e imagens de teste de dígitos manuscritos usados para inferência. O apresentador percorre o código e explica as etapas de pré-processamento necessárias antes de enviar os dados de entrada para o modelo ONNX. O código usa ONNX runtime, NumPy e bibliotecas OpenCV, e a saída final são os valores de dígitos previstos. O apresentador demonstra que o modelo é preciso e pode identificar corretamente os dígitos manuscritos.

  • 00:55:00 Nesta seção, o palestrante demonstra como realizar a inferência final em um caso de uso muito reativo em que o treinamento é feito usando o PI Torch e a inferência é realizada no TensorFlow. O palestrante mostra como converter um modelo de tocha PI em um modelo ONNX e depois em um arquivo protobuf que pode ser usado diretamente no TensorFlow. O código é direto e a conversão é feita por meio de uma ferramenta de exportação integrada disponível no Pytorch.

  • 01:00:00 Nesta seção, o palestrante explica como converter um modelo ONNX em um formato TensorFlow. Isso é feito simplesmente importando o ONNX e usando a função "preparar" do "backend do ONNX TF" para carregar o modelo e, em seguida, gravar a saída em um arquivo ".pb". O palestrante demonstra que o modelo TensorFlow pode então ser usado para inferência, sem fazer nenhuma referência ao ONNX. A sessão termina com uma nota sobre os próximos artigos sobre ONNX pelo orador do The New Stack, onde estarão disponíveis tutoriais e todo o código fonte.

    01:05:00
    Esta seção não contém nenhuma informação sobre ONNX, mas serve como conclusão para um webinar sobre o tema. O palestrante agradece ao público pela presença e apoio e anuncia que o vídeo gravado do webinar será carregado em breve. O público é solicitado a avaliar a relevância e a qualidade do webinar, com a maioria dos entrevistados dando feedback positivo. O palestrante conclui anunciando outro webinar sobre o tempo de execução de aplicativos distribuídos da Microsoft, que acontecerá no próximo mês.
 

ONNX e tempo de execução ONNX



ONNX e tempo de execução ONNX

O ecossistema ONNX é um formato padrão interoperável que converte modelos de qualquer estrutura em um formato de representação de modelo uniforme otimizado para cada destino de implantação. A implementação ONNX Runtime do padrão ONNX é multiplataforma e modular, com suporte a acelerador de hardware. Os diferentes níveis de otimização nos quais os transformadores trabalham incluem transformação de gráfico, particionamento de gráfico e atribuição. Os palestrantes também discutem várias vantagens do uso do ONNX, como C API, estabilidade da API para aproveitar os novos benefícios de desempenho sem se preocupar em quebrar a compatibilidade binária e a ferramenta ONNX Go Live, que pode ser usada para determinar a configuração ideal para executar um modelo ONNX em hardware diferente. Eles também comparam ONNX com estruturas e abordam a compatibilidade entre plataformas.

  • 00:00:00 Nesta seção, Ton of Sharma, da equipe ONNX Runtime, faz uma introdução e pesquisa sobre o ecossistema ONNX, explicando sua motivação e ampla adoção na Microsoft, juntamente com o design técnico para ONNX e ONNX Runtime. Ele destaca os problemas de diferentes equipes que usam diferentes estruturas para treinar seus modelos, mas quando se trata de implantar modelos em produção e usar o hardware ao máximo, o ONNX fica no meio e converte modelos de qualquer estrutura em um formato de representação de modelo uniforme, otimizado para cada destino de implantação, tornando-o um formato padrão interoperável. O projeto de código aberto foi iniciado em dezembro de 2017, com Facebook, Microsoft e Amazon entre os primeiros a ingressar no consórcio, que agora tem mais de 40 a 50 empresas participando ativamente e investindo no ONNX.

  • 00:05:00 Nesta seção, o palestrante discute as diferentes maneiras de obter um modelo ONNX depois que um modelo foi treinado na estrutura desejada, como usar o ONNX Model Zoo, a ferramenta Azure Custom Vision AutoML ou conversão de código aberto ferramentas para converter um modelo em um formato específico para ONNX. O ONNX Runtime, que é a implementação do padrão ONNX, é apresentado como uma forma de executar o modelo ONNX o mais rápido possível no dispositivo ou destino de implantação desejado. É extensível, modular e multiplataforma, com suporte de acelerador de hardware integrado de vários fornecedores, como Tensor RT e Intel MKL DNN. A versão mais recente, ONNX Runtime 1.0, tem suporte total para a especificação ONNX e é a biblioteca principal executada na estrutura do Windows Machine Learning.

  • 00:10:00 Nesta seção, o palestrante fala sobre a implantação do ONNX depois de compilá-lo em um formato JET usando LLVM e TVM como estruturas subjacentes. Eles publicaram pontos de referência e notebooks para implantar o ONNX em vários tipos de dispositivos, incluindo o serviço de aprendizado de máquina do Azure, nuvens de borda e dispositivos de IoT de borda, que faz parte de seu planejamento para a plataforma MNIST. O ML minimal e o ML dotnet da Microsoft já oferecem suporte ao ONNX, e eles têm mais de 60 modelos ONNX em produção até agora, com uma média de melhoria de desempenho de 3x. Os princípios de design do ONNX deveriam ser interoperáveis, compactos, multiplataforma, compatíveis com versões anteriores e oferecer suporte a modelos de aprendizado de máquina tradicionais e de carga profunda.

  • 00:15:00 Nesta seção, o palestrante discute as três partes da especificação ONNX, começando com a representação do próprio gráfico de fluxo de dados. Ele explica que a representação pode ser estendida e novos operadores e tipos podem ser adicionados a ela. A segunda parte é a definição dos tipos e atributos padrão armazenados no grafo, enquanto a terceira parte é o esquema para cada operador do modelo ONNX. O formato do arquivo de modelo é baseado em protobuf, que é facilmente inspecionável e inclui a versão, metadados e gráfico de computação acíclico, que consiste em entradas, saídas, nós de computação e nome do gráfico. Tipos tensores, tipos complexos e não tensores, como sequências e mapas, são suportados. O conjunto de operadores ONNX inclui cerca de 140 operadores, e qualquer pessoa pode adicionar mais operadores enviando uma solicitação pull para o repositório GitHub de código aberto ONNX.

  • 00:20:00 Nesta seção, o palestrante discute os recursos do ONNX, incluindo a capacidade de adicionar operações personalizadas que podem não ser suportadas pelas operações existentes do ONNX. O palestrante também fala sobre a importância do controle de versão e como o ONNX incorpora o controle de versão em três níveis diferentes, incluindo a versão IR, a versão do conjunto OP e a versão do operador. O tempo de execução ONNX também é discutido, com seus principais objetivos sendo desempenho, compatibilidade com versões anteriores e futuras, compatibilidade entre plataformas e execução híbrida de modelos. O tempo de execução inclui uma arquitetura conectável para adicionar aceleradores de hardware externos.

  • 00:25:00 Nesta seção, o palestrante explica as duas fases da execução de um modelo dentro do ONNX Runtime, que são a criação de uma sessão com o modelo e o carregamento do modelo, seguido pela chamada das APIs de execução. Ao carregar o modelo, uma representação gráfica ineficiente do protobuf é criada e, em seguida, o gráfico passa por diferentes níveis de transformações gráficas, semelhantes às otimizações do compilador. O ONNX Runtime fornece diferentes níveis de regras de transformação de gráficos e fusões que podem ser customizadas, e o usuário pode adicionar suas próprias regras através da API. Depois que o grafo é otimizado, ele é particionado em diferentes aceleradores de hardware e cada nó é atribuído a um acelerador específico. O palestrante também toca na parte de execução e menciona os dois modos de operação, o modo sequencial e o modo de execução paralela. Por fim, o palestrante fala sobre o trabalho futuro do ONNX Runtime em informar ao usuário em quais provedores executar.

  • 00:30:00 Nesta seção, o palestrante explica os detalhes sobre a otimização no ONNX Runtime. A transformação do gráfico, o particionamento do gráfico e a atribuição são os diferentes níveis de otimização nos quais os transformadores trabalham para reescrever o gráfico. A sessão e a execução são a API dupla do ONNX Runtime que carrega e otimiza o modelo para torná-lo pronto para execução com uma simples chamada para a função de execução. O palestrante também fala sobre o provedor de execução, que é a interface do acelerador de hardware do ONNX Runtime e como os fornecedores podem adicionar um novo acelerador de hardware implementando uma API do provedor de execução. Por fim, o palestrante menciona os múltiplos pontos de extensão do ONNX Runtime, como adicionar novos provedores de execução ou operações personalizadas e estender o nível de fusões.

  • 00:35:00 Nesta seção, o palestrante discute as vantagens de usar a API C no ONNX Runtime, incluindo a estabilidade da API que permite aos usuários aproveitar os novos benefícios de desempenho sem se preocupar em quebrar a compatibilidade binária. Ele também explica a ferramenta ONNX Go Live, que pode ser usada para determinar a configuração ideal para executar um modelo ONNX em hardware diferente. O palestrante aborda os próximos recursos, incluindo suporte para N na API em dispositivos Android, Qualcomm e otimização de treinamento, além de otimizações contínuas de desempenho para tornar o ONNX Runtime executado o mais rápido possível.

  • 00:40:00 Nesta seção do vídeo, os palestrantes destacam a importância de otimizar as operações dentro de um determinado operador (OP) para garantir que ele funcione o mais rápido possível. Eles comparam o ONNX com frameworks, tentando identificar se ele tem ou não um desempenho melhor que seus predecessores. Os palestrantes também discutem como funciona o treinamento, observando que, embora estejam trabalhando nisso, o treinamento de origem ainda não está concluído. Eles também respondem a perguntas sobre o que o formato ONNX produz e que tipo de formato ele pode manipular, como strings. Há alguma discussão sobre o impacto da Microsoft no design do ONNX Runtime como um produto de destaque, que atualmente carece de um modo de governança aberta e é controlado pela Microsoft, embora continue recebendo contribuições externas. O palestrante também aborda a compatibilidade entre plataformas, observando que o tempo de execução foi projetado para Linux, Windows e Mac.
 

ONNX - ONNX Runtime, exemplo simples



ONNX - ONNX Runtime, exemplo simples

Neste vídeo do YouTube, o palestrante apresenta o ONNX, um formato aberto para modelos de aprendizado de máquina que podem otimizar o desempenho em várias estruturas. O vídeo fornece exemplos de uso do ONNX em diferentes cenários, como análise de sentimento de artigos de notícias e conversão de classificadores de vetores numéricos em redes neurais. O palestrante enfatiza a importância de usar bibliotecas estabelecidas para funções e medir o tempo de execução com precisão para o código. Além disso, o palestrante discute os desafios de desenvolver em diferentes sistemas operacionais e recomenda carregar apenas os módulos necessários para melhorar o desempenho do tempo de execução. No geral, este vídeo fornece informações valiosas sobre os benefícios e desafios do uso do ONNX para modelos de aprendizado de máquina.

  • 00:00:00 Nesta seção, o palestrante descreve o ONNX, um formato aberto para modelos de aprendizado de máquina que pode ser usado em várias estruturas para otimizar o desempenho dos modelos. O ONNX é baseado no buffer de protocolo, que é um formato binário analógico do formato XML, mas mais rápido e mais adaptado para mensagens menores. Os modelos ONNX podem ser desenvolvidos em um sistema operacional e processador e usados em qualquer lugar, incluindo dispositivos móveis e placas gráficas. O tempo de execução ONNX é uma biblioteca para aceleração de plataforma cruzada de treinamento e inferência de modelo. O ONNX também permite a quantização do modelo para reduzir seu tamanho sem usar aceleração de hardware e podar um modelo para reduzir seu tamanho substituindo alguns de seus valores de peso por valores zero. O palestrante inclui um link para os sites onde mais informações sobre o ONNX podem ser encontradas.

  • 00:05:00 Nesta seção, o palestrante discute as etapas necessárias para trabalhar com um modelo pré-treinado no formato ONNX usando o ONNX Runtime. O modelo pode ser criado usando qualquer estrutura, salvo no formato ONNX e usado de várias maneiras, como em um servidor menos poderoso ou para lidar com cargas pesadas de servidor. O palestrante fornece um exemplo de uso da biblioteca de transformadores Hugging Face para determinar o sentimento de artigos de notícias relacionados à criptomoeda. Por fim, o palestrante demonstra uma aplicação do modelo carregando e processando as bibliotecas necessárias e mostrando o resultado da execução do modelo em uma amostra de artigo de notícias.

  • 00:10:00 Nesta seção, o palestrante discute o processo de conversão de um classificador vetorial numérico para produzir resultados de uma rede neural, usando o framework ONNX. Eles explicam que a função SoftMax não foi usada, pois desacelerou significativamente o processo e, em vez disso, foram usados valores de entrada manualmente. O modelo foi então carregado e testado quanto à precisão, mostrando resultados promissores. No entanto, foram encontradas dificuldades com a instalação em diferentes sistemas operacionais e estruturas, destacando a necessidade de testes completos e flexibilidade na implantação de modelos.

  • 00:15:00 Nesta seção, o palestrante discute os possíveis problemas que podem surgir ao tentar desenvolver software em diferentes plataformas e a importância de usar bibliotecas estabelecidas em vez de tentar implementar tudo manualmente. Ela menciona problemas com o uso de diferentes formatos de ponto flutuante e como isso pode levar a erros ao tentar trabalhar com números muito grandes ou muito pequenos. Além disso, ela sugere o uso de implementações pré-existentes de funções como SoftMax, em vez de tentar criar outras personalizadas, pois os desenvolvedores de bibliotecas estabelecidas já lidaram com possíveis problemas que podem surgir.

  • 00:20:00 Nesta seção, o palestrante discute os problemas que encontrou ao desenvolver no MacOS e as diferenças entre MacOS e Linux. Ele também menciona a necessidade de carregar apenas os módulos necessários, desabilitando o restante para melhorar o desempenho do tempo de execução, pois carregar muitos módulos pode afetar significativamente o tempo de execução. O palestrante também recomenda o uso do utilitário "timeet" para medir o tempo de execução com precisão, levando em consideração os vários fatores que podem afetar o desempenho.

  • 00:25:00 Nesta seção do vídeo, o palestrante discute a importância de medir o tempo de execução do código, principalmente para comparar o desempenho de diferentes trechos de código. Eles enfatizam a necessidade de medir o tempo de execução várias vezes e tirar a média para uma avaliação mais precisa. O palestrante então usa essa abordagem para comparar o desempenho de dois trechos de código com diferentes formas de manipulação de dados, o que mostrou que um método foi significativamente mais rápido que o outro. Por fim, o palestrante fornece um link para sua apresentação e agradece ao público pela participação.
 

Uma visão geral do conversor PyTorch-ONNX



Uma visão geral do conversor PyTorch-ONNX

Nesta visão geral, Bowen Bao da Microsoft apresenta o Conversor PyTorch-ONNX, explicando sua arquitetura e fluxo para converter um modelo PyTorch para a representação intermediária da tocha (IR) e depois para o ONNX IR e, finalmente, para um arquivo Protobuf. O conversor lida com a exportação de modelos com formas dinâmicas, modelos quantificados e captura loops, instruções if e outras operações por meio de loop ONNX e nós if ONNX. Além disso, os usuários podem criar operadores personalizados ou usar operadores PyTorch personalizados existentes para exportar um modelo ONNX ou registrar uma função simbólica personalizada para informar ao exportador como exportá-lo. Bowen também explica a função local ONNX, aborda a precisão mista por meio de autocast e conclui com planos para continuar a oferecer suporte a mais modelos enquanto melhora o diagnóstico de falhas.

  • 00:00:00 Nesta seção, Bowen, um engenheiro de software da Microsoft, fornece uma visão geral do Conversor PyTorch-ONNX, incluindo sua arquitetura e fluxo. O conversor, que faz parte do pacote PyTorch, utiliza o rastreador da tocha e o script da tocha para converter um modelo PyTorch para a representação intermediária da tocha (IR) e depois para o ONNX IR. A etapa final envolve serializá-lo para um modelo ONNX em um arquivo Protobuf. O conversor oferece suporte à exportação de modelos com formas dinâmicas de entrada e saída, bem como modelos quantificados, e pode capturar loops, instruções if e outras operações através do loop ONNX e dos nós ONNX if. Além disso, os usuários podem criar operadores personalizados ou usar o PyTorch personalizado existente
    operadores para exportar um modelo ONNX ou registrar uma função simbólica personalizada para informar ao exportador como exportá-lo. Por fim, Bowen explica a motivação por trás da função local ONNX.

  • 00:05:00 Nesta seção, o foco está no conversor PyTorch-ONNX e algumas reclamações comuns sobre o modelo ONNX exportado, como nós achatados. Para resolver esse problema, foi adicionado um recurso de função local que permite aos usuários especificar uma classe de módulo Torch ou função de tipo de nó. A precisão mista também é suportada pelo uso de Torch autocast e NVIDIA Apex mp. O vídeo termina com uma discussão sobre diagnóstico de falha aprimorado e o objetivo de continuar a oferecer suporte a mais modelos. Os links fornecidos oferecem recursos e ferramentas úteis para quem usa o conversor PyTorch-ONNX.
 

Introdução ao ONNX | Tutorial-1 | Troca de Rede Neural Aberta | ONNX



Introdução ao ONNX | Tutorial-1 | Troca de Rede Neural Aberta | ONNX

Este tutorial fornece uma introdução ao ONNX, que é uma estrutura intermediária de aprendizado de máquina que converte modelos existentes de uma estrutura para outra. O curso aborda os desafios enfrentados no aprendizado profundo, uma visão geral do ONNX e uma discussão sobre o tempo de execução do ONNX. O instrutor demonstra exemplos práticos de conversão de modelos com ONNX e compartilha um caso de uso real de conversão de um modelo Python em um modelo TensorFlow. É necessária familiaridade com programação Python, noções básicas de aprendizado de máquina e estruturas como PyTorch, TensorFlow e Scikit-learn.