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

 

Dia da Comunidade ONNX! Transmitido ao vivo em 24 de junho de 2022

Este evento está sendo realizado pessoalmente no novíssimo Microsoft Silicon Valley Campus na sexta-feira, 24 de junho.

O evento cobrirá as atualizações da comunidade ONNX, histórias de parceiros e usuários e muitas redes da comunidade.



Dia da Comunidade ONNX!

Sumário breve:

  • 00:00:00 - 01:00:00 O vídeo do YouTube "ONNX Community Day!" discute atualizações e melhorias no trabalho da comunidade ONNX sobre interoperabilidade e flexibilidade para desenvolvedores que trabalham com modelos de aprendizado de máquina. A comunidade ONNX funciona sob governança aberta, e as três categorias de ferramentas, criação, execução e visualização, suportam o envolvimento da comunidade e o uso do ONNX. O vídeo fornece relatórios de progresso em diferentes aspectos, como atualizações nas especificações do ONNX, novos operadores e melhorias nos conversores. O palestrante também destaca os benefícios do ONNX, incluindo uma gama mais ampla de clientes para fornecedores de hardware e acesso a vários frameworks e aceleradores de hardware para usuários. O futuro do ONNX inclui a noção de funções ONNX para fornecer uma especificação executável.

  • 01:00:00 - 02:00:00 O evento ONNX Community Day discute vários tópicos relacionados ao ONNX, incluindo ONNX Model Zoo e ONNX Tutorials, que fornecem modelos de aprendizado de máquina pré-treinados e demonstrações para usar com modelos ONNX. O vídeo destaca o trabalho do ONNX Preprocessing Working Group, que visa padronizar as operações de pré-processamento de dados para melhorar a implantação do modelo. Os palestrantes também discutem os fundamentos da quantização de redes neurais e como o TensorRT oferece suporte a redes quantizadas por meio de várias fusões, incluindo quantização pós-treinamento e treinamento consciente de quantização. Eles também se aprofundam nas limitações do ONNX em representar quantização de baixa precisão e sugerem uma estratégia para estender seu poder de representação usando recorte para induzir precisão entre os nós quantizados e desquantizados. Por fim, o vídeo investiga um estudo de caso sobre a precisão de um modelo salvo do TensorFlow quantizado e ajustado.

  • 02:00:00 - 03:00:00 O ONNX Community Day apresentou vários palestrantes discutindo a importância dos metadados em modelos de aprendizado de máquina e suporte a Java Virtual Machine (JVM) no ONNX. Os palestrantes enfatizaram o uso de tecnologias baseadas em hardware para proteger dados e destacaram a compatibilidade do ONNX com várias bibliotecas de aprendizado de máquina, incluindo DeepJ e Deep Java Library. Eles demonstraram o uso de buffers de bytes para melhor eficiência e discutiram a importância da padronização de metadados para uma IA responsável e explicável. As apresentações também apresentaram histórias de sucesso, incluindo o tempo de execução de um banco chinês aprimorado usando o ONNX e o tempo de execução do ONNX. A comunidade ONNX está trabalhando na criação, consulta e filtragem de metadados do fluxo de trabalho de hubs com suporte para metadados legíveis por máquina no ONNX. No geral, as apresentações destacaram os pontos fortes da plataforma ONNX e o compromisso da comunidade com seu desenvolvimento.

  • 03:00:00 - 04:00:00 O "Dia da Comunidade ONNX!" O vídeo cobre várias atualizações e recursos relacionados ao ecossistema ONNX. Isso inclui discussão sobre simulação de quantização para reduzir a queda de precisão entre modelos quantizados e pré-treinados, implantação de modelos TensorFlow treinados com o kit de ferramentas da NVIDIA em um gráfico ONNX usando TensorRT e melhorias feitas no ONNX Runtime, como forma de tensor otimizada, provedores de execução e suporte para plataformas móveis. Além disso, as atualizações do próprio ONNX foram discutidas, incluindo suporte para a biblioteca XNNpack e a criação de extensões de tempo de execução do ONNX para tarefas de pré/pós-processamento. O vídeo também apresenta a biblioteca Optimum, que se concentra na aceleração de modelos de transformadores desde o treinamento até a inferência.

  • 04:00:00 - 05:00:00 O ONNX Community Day incluiu discussões sobre vários tópicos relacionados ao tempo de execução do ONNX e seus casos de uso. Os palestrantes descreveram os recursos do pacote de tempo de execução ONNX, o conversor PiTorch ONNX e as operações personalizadas no PyTorch. Eles também discutiram casos de uso, como monitoramento de processos e digitalização de comércio, bem como desafios associados à implantação de modelos e testes de compatibilidade. Durante o evento, foi enfatizado que o tempo de execução do ONNX pode ajudar a melhorar o desempenho e reduzir o tamanho da implantação, mas compatibilidade e seleção são essenciais para garantir qualidade e velocidade consistentes.

  • 05:00:00 - 06:00:00 O ONNX Community Day contou com vários palestrantes discutindo várias ferramentas e técnicas usadas para otimizar e implantar modelos de aprendizado de máquina usando a estrutura ONNX. A NVIDIA discutiu sua abordagem para melhorar a qualidade da imagem e a compatibilidade do modelo usando a divisão de blocos para inferência, bem como suas ferramentas específicas do ONNX para depuração e modificação de modelos. A Qualcomm explicou como integrou aceleradores de IA em seus projetos usando ONNX como um formato de intercâmbio e apresentou sua pilha de software que inclui o tempo de execução ONNX e várias ferramentas para otimização e implantação. Além disso, vários palestrantes discutiram a otimização de modelos ONNX usando técnicas como otimização de módulo, ponto de verificação e inferência de forma. O evento destacou a versatilidade e escalabilidade do ONNX para vários casos de uso de dispositivos e incentivou contribuições para continuar crescendo o projeto ONNX. A última parte é focada em simplificar o processo de implantação de modelos de aprendizado de máquina no Spark usando a proposta do SPIP, que visa ocultar as complexidades da conversão do processamento de guias e inicialização do modelo para desenvolvedores. O ecossistema Ascend AI e seus processadores foram introduzidos, incluindo a camada de software "Kung" que fornece APIs para a construção de aplicativos e serviços de IA. A pilha de software Khan foi discutida e o roteiro para adicioná-lo como um novo provedor de execução para o tempo de execução ONNX foi apresentado. O evento terminou com mesas redondas sobre tópicos como ONNX para Mobile e Edge, implantação de modelo, treinamento e operações, conversões e operadores, seguido de um happy hour e feedback da pesquisa.


O resumo detalhado da linha do tempo:

  • 03:00:00 Nesta seção, um palestrante discute sua experiência com o ecossistema ONNX e os desafios que enfrentou ao usá-lo. Eles falam sobre a necessidade de combinar drivers e configurar o monitoramento para garantir que o sistema continue funcionando sem problemas. Eles também mencionam seus planos futuros para aumentar a eficiência da GPU, adicionar mais modelos e melhorar a robustez geral do sistema por meio de testes acelerados por GPU. O palestrante convida a qualquer pergunta e discussão sobre este caso de uso e aproveita a oportunidade para agradecer a todos. O vídeo será retomado após o almoço com uma repetição da palestra da NVIDIA.

  • 03:25:00 Desculpe, mas este trecho da transcrição não está relacionado ao "ONNX Community Day!" vídeo. Você pode fornecer outro trecho do vídeo para eu resumir?

  • 03:30:00 Nesta seção do vídeo, os palestrantes discutem como simular a quantização e armazenar os parâmetros q finais para reduzir a queda de precisão entre o modelo quantizado e o modelo pré-treinado. Uma maneira de realizar o treinamento com reconhecimento de quantização é usar o kit de ferramentas de otimização de modelo TensorFlow ou o kit de ferramentas criado pela Nvidia, que oferece recursos como quantização de camadas usando nome de camada e atributos de classe e quantização baseada em padrão. Os palestrantes observam que o kit de ferramentas da Nvidia usa uma variante de quantização simétrica que oferece o melhor desempenho para um modelo QAT em uma GPU usando uma extensão.

  • 03:35:00 Nesta seção, aprendemos sobre o processo de implantação de um modelo treinado usando o TF2 Quantization Toolkit da NVIDIA em um gráfico ONNX usando o TensorRT. O fluxo de trabalho envolve quantizar um modelo TensorFlow 2.0 pré-treinado com o kit de ferramentas da NVIDIA, ajustá-lo para um pequeno número de épocas e convertê-lo em um gráfico ONNX usando o conversor TF2ONNX. Em seguida, as APIs do TensorRT são usadas para gerar o TensorRT Engine a partir do gráfico ONNX. Vemos que o treinamento com reconhecimento de quantização fornece uma alternativa para implantar redes neurais profundas com menor precisão, e os modelos qrt podem ser menos propensos a queda de precisão durante a inferência em comparação com os modelos ptq devido aos parâmetros do modelo ajustados. Por fim, os experimentos com modelos ResNet mostram que a precisão do INT8 está no mesmo nível da precisão da linha de base FP32 e a latência é mais de 10 vezes mais rápida em comparação com suas contrapartes FP32.

  • 03:40:00 Nesta seção, Ryan Hill, um engenheiro de software que trabalha no tempo de execução ONNX desde sua criação, fala sobre os recursos e uso do tempo de execução ONNX. ONNX runtime é um tempo de execução para modelos ONNX, totalmente multiplataforma e com ligações de linguagem para muitas linguagens de programação. A Microsoft o utiliza em todos os seus principais grupos de produtos, como Windows, Office e Azure, enquanto existem mais de 160 modelos em produção com tempo de execução ONNX. Hill passa por novos recursos notáveis em versões recentes, incluindo a capacidade de usar kernels operacionais como uma biblioteca matemática e a capacidade de alimentar inicializadores externos inteiramente na memória. As melhorias de desempenho incluem a adição de um otimizador de transposição, otimizando as alocações de heap e reduzindo a necessidade de transformações de layout.

  • 03:45:00 Nesta seção, os palestrantes discutem as melhorias feitas no ONNX Runtime, incluindo forma de tensor otimizada e classes de vetores em linha, resultando em uma redução nas alocações de heap e melhor desempenho. Eles também explicam os benefícios dos provedores de execução, que permitem que o ONNX Runtime tenha um desempenho ideal em várias possibilidades de hardware, incluindo uma implementação completa de CPU como uma opção de fallback. Além disso, eles destacam as atualizações feitas para oferecer suporte a plataformas móveis e usabilidade aprimorada para desenvolvedores móveis, incluindo o uso da conversão NHWC em tempo de execução e a adição de pacotes Android e iOS com as compilações completas do ONNX Runtime. Por fim, eles apresentam o ONNX Runtime Web, apoiado pela mesma base de código principal do ONNX Runtime e com um binário menor, e discutem a introdução de uma biblioteca JavaScript chamada ONNX Runtime Common.

  • 03:50:00 Nesta seção, os palestrantes discutem as atualizações do ONNX, incluindo o suporte para a biblioteca XNNpack e o próximo suporte para OpenGL na versão 1.12. Eles também abordam os desafios com pré e pós-processamento de dados e a criação das extensões de tempo de execução ONNX, que fornecem uma biblioteca de operações personalizadas compartilháveis focadas no trabalho de pré-pós-processamento do modelo. Essas extensões incluem funções potenciais, como converter texto em maiúsculas ou minúsculas e separar valores positivos e negativos em tensores separados. A biblioteca atual está focada principalmente no processamento de linguagem natural e nos domínios de visão e texto, mas prevê-se que isso evoluirá à medida que novas necessidades forem identificadas. Eles também apresentam Jeff, da Hugging Face, que discute a integração do ONNX com a biblioteca Optimum para acelerar modelos de Transformers.

  • 03:55:00 Nesta seção, o palestrante discute o poder dos modelos transformadores e como eles estão sendo usados por grandes empresas como Tesla, Gmail, Facebook e Bing para fazer bilhões de previsões todos os dias. Eles explicam que o objetivo do Hugging Face é tornar esses modelos acessíveis a todas as empresas do mundo por meio de modelos e ferramentas pré-treinados prontamente acessíveis para usá-los. Eles também discutem seu foco na construção de uma comunidade que está compartilhando e melhorando o que é possível, com mais de 1.300 contribuidores de código aberto para suas bibliotecas e acesso a mais de 50.000 modelos ajustados para cada tarefa e linguagem de aprendizado de máquina. Em seguida, o palestrante apresenta sua biblioteca Optimum, focada na aceleração de modelos de transformadores do treinamento à inferência, abordando os desafios de computação, memória e recursos de largura de banda que acompanham o aumento dos parâmetros do modelo.



  • 04:00:00 Nesta seção, o palestrante discute o pacote de tempo de execução ONNX dentro do kit de ferramentas Optimum e sua capacidade de acelerar o treinamento e a inferência de modelos de transformadores. Eles apresentam a nova classe de treinamento chamada ORT Trainer, que permite aos usuários obter integração nativa de velocidade profunda e atingir até 40% de aceleração no rendimento do treinamento. Para inferência, existem três classes principais: ORT Optimizer, RT Quantizer e RT Model for Task. Com essas classes, os usuários podem simplificar o grafo de seu modelo, otimizar pesos e se beneficiar de toda a aceleração de hardware oferecida pelo ONNX runtime. O palestrante também menciona os esforços de colaboração para permitir a otimização do modelo de sequência a sequência por meio dessas classes de pipeline de inferência acelerada ideais.

  • 04:05:00 Nesta seção, dois apresentadores discutem a comunidade ONNX, com foco no processo de otimização e conversão para modelos ONNX. O primeiro apresentador apresenta a biblioteca ideal, que permite aos usuários otimizar e quantizar seus modelos, aumentando o rendimento e diminuindo a latência enquanto preserva a precisão de seus modelos. O segundo apresentador discute a arquitetura e o fluxo do conversor PiTorch ONNX, explicando suas etapas de conversão de modelos PiTorch para a representação intermediária da tocha, usando otimizações de gráficos e convertendo para ONNX IR. Eles também destacam alguns recursos interessantes, como o suporte para exportar um modelo quantizado no formato QTQ e capturar loops de fluxo de controle python e ifs em modelos ONNX como loop ONNX e nós if ONNX.

  • 04:10:00 Nesta seção, o palestrante discute várias maneiras de exportar Ops personalizados no PyTorch, incluindo escrever uma função personalizada de autográfico do Torch e definir os métodos de avanço e retrocesso. O palestrante explica como utilizar a API para registrar uma função simbólica personalizada para informar ao exportador como exportá-la como operações ONNX padrão ou quaisquer operações personalizadas em um domínio personalizado. Eles então introduzem o recurso ONNX Local Function que permite aos usuários especificar uma certa classe de módulo Torch ou tipo de nó como uma função para back-end para ainda ser capaz de executar o modelo sem ter um kernel especificado. Por fim, o palestrante menciona que a equipe continuará focada no suporte a mais modelos e na melhoria da experiência de diagnóstico de falhas.

  • 04:15:00 Nesta seção, é discutido um caso de uso em que um sistema de câmera existente é reutilizado para detectar funcionários entrando em áreas perigosas perto de máquinas em movimento. Usando um modelo ONNX de código aberto para detectar pessoas e a ferramenta Sasebo Stream Processing da SAS para análise em tempo real e processamento de eventos, foi desenvolvida uma solução que pode processar milhões de eventos por segundo e ser dimensionada para sistemas maiores. A solução também foi disponibilizada por meio de um estúdio gráfico e notebook Jupyter para cientistas de dados desenvolverem modelos e o tempo de execução ONNX foi integrado ao Sasebo Stream Processing. Para garantir a resiliência, foi sugerida uma solução modular que divide o processamento da imagem em várias etapas com o Kafka como uma fila de buffer.

  • 04:20:00 Nesta seção, o palestrante descreve um modelo de processamento de visão computacional que foi implantado na borda usando o Kubernetes como mecanismo de implantação. O modelo inclui um processo de ingestão com um pod para cada câmera, um barramento Kafka para dados de vídeo e um pod de processamento que usa um modelo de visão computacional para criar resultados. Os resultados são então enviados para um terceiro pod que processa dados adicionais do sensor do cliente para entender se o equipamento que está sendo registrado está ativo ou não. Além disso, o palestrante explica que essa arquitetura está atualmente em produção nas instalações de um de seus clientes e que a integração de tempo de execução ONNX garante um tempo ideal para obter valor graças aos modelos pré-treinados disponíveis ao público e à reutilização de ativos do cliente. A resiliência da arquitetura é outro benefício importante e é garantida graças ao Kubernetes e ao Kafka.

  • 04:25:00 Nesta seção, Matthew, da Bazaar Voice, discute a digitalização do comércio e como marcas e varejistas mudaram para o espaço infinito nas prateleiras da Internet. Com a escala de dados que as empresas de comércio eletrônico possuem, criar insights impactantes usando IA pode ser um divisor de águas. Matthew ilustra isso usando o Bazaar Voice como exemplo, que gerencia e processa dados de mais de um bilhão de compradores por mês e fornece mais de 8 bilhões de avaliações totais para marcas e varejistas. Ao focar no compartilhamento de análises de produtos em catálogos, o conceito de correspondência de produtos desempenha um papel fundamental. Matthew explica como um modelo de aprendizado de máquina é criado para realizar a correspondência de produtos comparando identificadores exclusivos de produtos, mas as sobras são feitas manualmente. Para implementar uma solução que gere valor comercial real, a abordagem ideal é uma solução leve e econômica que mantenha o desempenho.

  • 04:30:00 Nesta seção, o palestrante discute diferentes opções para implantar modelos de aprendizado de máquina, incluindo servidores virtuais, plataformas de ML em nuvem e funções sem servidor, como Azure Cloud Functions ou AWS Lambdas. Depois de avaliar os prós e contras de cada opção, o palestrante e sua equipe decidiram desenvolver um modelo scikit-learn exportado para o formato ONNX, construí-lo com Python, implantá-lo em uma função sem servidor e usar um ambiente de nó para executar inferência no ONNX tempo de execução. O palestrante também menciona que o ONNX ajuda a reduzir o tamanho de implantação de modelos, mas destaca os desafios de trabalhar dentro dos limites de tempo limite e tamanho de implantação de funções sem servidor, bem como os custos e as limitações de tamanho dos pacotes Python.

  • 04:35:00 Nesta seção, o engenheiro de software sênior da Adobe Nikhil Calro discute os desafios exclusivos envolvidos no aprendizado de máquina de alto desempenho para fluxos de trabalho de vídeo e áudio. Esses desafios incluem limitações de recursos, intensidade de dados e requisitos de computação pesada. Para resolver esses problemas, a Adobe usa uma combinação de tecnologias e pipelines para acelerar os fluxos de trabalho, incluindo o tempo de execução ONNX para potencializar os fluxos de trabalho de aprendizado de máquina no Windows e o provedor de execução Direct ML para aceleração de GPU em plataformas Windows. Calro também observa que os fluxos de trabalho de aprendizado de máquina da Adobe visam permitir que os criadores gastem mais tempo no processo criativo e menos tempo em tarefas redundantes e repetitivas.

  • 04:40:00 Nesta seção, o palestrante fala sobre como os aplicativos Creative Cloud da Adobe visam todo o ecossistema Windows como uma plataforma única e devem fornecer recursos e paridade funcional em todos os principais IHVs que suportam Windows, como Nvidia, Intel e AMD. Eles escolheram o provedor de execução DirectML para permitir o uso de hardware específico do fornecedor, como núcleos tensores em GPUs Nvidia, pois deixa o hardware livre para outros fluxos de trabalho de computação assíncronos. Eles também fizeram otimizações de desempenho adicionais construindo uma estrutura sobre o tempo de execução ONNX e tentando montar as solicitações de inferência em fluxos de trabalho em lote para reduzir a contenção de recursos com a GPU e minimizar a sobrecarga do driver. Eles fornecem um exemplo do fluxo de trabalho de detecção de edição de cena, que é um fluxo de trabalho extremamente intensivo em recursos, mas eles são capazes de executar todo o pipeline de ponta a ponta, da decodificação à inferência, em cerca de 10 segundos ou seis vezes em tempo real.

  • 04:45:00 Nesta seção, o palestrante discute como as capacitações de desempenho fornecidas pelo ORT e o provedor de execução Direct ML possibilitaram o uso de GPUs modernas de ponta para habilitar fluxos de trabalho baseados em aprendizado de máquina durante a renderização de GPU. Eles planejam fazer a transição de seu pipeline para se parecer mais com o pipeline à direita, minimizando as transferências para a CPU e mantendo o máximo possível de coisas na GPU ou hardware endereçável por GPU. Isso se tornará ainda mais fácil à medida que mais transições de computação de GPU para DX12, removendo a sobrecarga associada a OpenCL e CUDA para DX12 em seu OP.

  • 04:50:00 Nesta seção, Alexander Zang, um desenvolvedor de software da Topaz Labs, discute os desafios de implantar modelos de imagem em desktops e laptops. Ele explica que a parte crítica dessa implantação é adequar-se a um fluxo de trabalho existente, obter o desempenho esperado sem configuração manual e fornecer modelos de imagem de alta qualidade. Alexander explica que, ao contrário da implantação de servidor, a implantação de desktop carece de controle sobre o sistema, principalmente com GPUs diferentes de fornecedores diferentes com níveis variados de memória e restrições de capacidade de resposta. Sua solução para isso é contar com diferentes bibliotecas de inferência para cada fornecedor de hardware, fornecidas pelo ONNX. Essa abordagem permite que o Topaz Labs crie uma arquitetura de modelo que pode ser usada por diferentes bibliotecas de inferência, economizando trabalho manual.

  • 04:55:00 Nesta seção, o palestrante discute os desafios associados à conversão de modelos e a necessidade de testar problemas de compatibilidade antes de treinar um modelo. A questão da ambiguidade nas especificações do modelo é destacada, bem como a necessidade de testar diferentes bibliotecas quanto ao desempenho e consistência. O palestrante também explica os motivos para realizar várias conversões, afirmando que o uso de uma interface mais genérica pode levar a etapas adicionais de carregamento e custos de conversão que podem impactar o desempenho de seus aplicativos. Por fim, é explicado o processo de seleção da configuração apropriada e manipulação do pipeline de inferência de tempo de execução, destacando a necessidade de compatibilidade e seleção, garantindo qualidade e velocidade consistentes dos desktops.



  • 05:00:00 Nesta seção, um palestrante da NVIDIA fala sobre sua abordagem para lidar com a compatibilidade do modelo ONNX e melhorar a qualidade da imagem em sistemas de desktop, dividindo as imagens em blocos e executando-as por meio de inferência, maximizando a taxa de transferência e possivelmente executando em vários dispositivos e bibliotecas em paralelo. O palestrante também aborda a dificuldade em garantir que novas arquiteturas de modelo possam ser adicionadas e se comportem bem em todas as bibliotecas, o que pode exigir muito trabalho e tempo. Em seguida, eles discutem duas ferramentas, ONNX Craft Surgeon, uma biblioteca python que permite criar e modificar modelos ONNX, e Polygraphy, um kit de ferramentas para depurar modelos de aprendizado profundo. O palestrante explica como essas ferramentas funcionam e como elas podem ser usadas para construir modelos tão simples quanto a construção de gráficos tf.

  • 05:05:00 Nesta seção, o palestrante apresenta as ferramentas ONNX, que incluem uma API Python e várias ferramentas de linha de comando que oferecem muitas funcionalidades para manipular modelos ONNX. O palestrante se concentra nas ferramentas específicas do ONNX, como o modelo de inspeção, que mostra uma representação de texto de um modelo ONNX, e a subferramenta higienizada pelo cirurgião, que simplifica e dobra as constantes no modelo. A extração do cirurgião permite que os usuários extraiam subgráficos de um modelo para depurá-lo, e o modelo bissector debug reduz funciona como git bisect, mas para modelos ONNX, permitindo encontrar o menor modelo com falha para diagnosticar erros no sistema.

  • 05:10:00 Nesta seção, o apresentador discute o uso da ferramenta de redução de depuração de caligrafia para depurar modelos que podem ter problemas de tempo de execução. Reduzindo o tamanho do modelo e testando cada modelo intermediário, os desenvolvedores podem identificar áreas problemáticas no código e facilitar o processo de depuração. O apresentador também explica como a Qualcomm colabora com a comunidade usando o ONNX como um formato de intercâmbio que pode ser usado em uma variedade de dispositivos, de fones de ouvido a laptops e sistemas automotivos. Ao direcionar modelos usando ONNX, os desenvolvedores podem criar modelos compatíveis com todos os dispositivos compatíveis da Qualcomm.

  • 05:15:00 Nesta seção, o palestrante fala sobre os desafios de lidar com várias arquiteturas de dispositivos que exigem diferentes modelos, implementações e requisitos de tempo. Ele dá um exemplo de como o mesmo algoritmo e tecnologia construídos para sensores de profundidade e câmeras em telefones celulares agora são usados para campainhas inteligentes seguras e câmeras de vigilância internas e externas em automóveis. Em seguida, ele enfatiza a importância da escalabilidade e compara as diferenças entre os algoritmos da máquina de processamento em CPUs, GPUs e aceleradores de IA usando o exemplo da execução do modelo Inception V3, em que executá-lo nos aceleradores de IA pode fornecer até mil inferências por segundo, liberando a CPU para outras tarefas úteis.

  • 05:20:00 Nesta seção, um representante da Qualcomm explica como eles integraram aceleradores de inteligência artificial (IA) em seu hardware para melhorar o desempenho e a escalabilidade. Ao usar um acelerador de IA específico, eles podem lidar com cargas de trabalho de IA sem o consumo extra de energia ou velocidades mais lentas que geralmente resultam do uso de uma CPU ou GPU. Além disso, seu formato de intercâmbio ONNX permite compilar e executar modelos de aprendizado de máquina em diferentes dispositivos e verticais, economizando tempo para a empresa e permitindo mais portabilidade. Eles também criaram uma pilha e uma biblioteca de software unificadas que oferecem suporte a uma variedade de sistemas operacionais e ocultam detalhes de hardware para facilitar o uso do hardware pelos clientes.

  • 05:25:00 Nesta seção, o palestrante apresenta a pilha de software que a Qualcomm desenvolveu em torno do ONNX. Eles construíram uma solução completa que inclui o tempo de execução ONNX, bem como um sistema de delegação que cuida dos modelos de roteamento para a CPU ou GPU, dependendo do caso de uso do dispositivo. O palestrante discute as muitas ferramentas que eles desenvolveram, incluindo compiladores, criadores de perfil, analisadores e habilitação para ferramentas de pesquisa de arquitetura de rede. O alto-falante enfatiza a escalabilidade e a versatilidade do ONNX e como ele pode ser usado para vários casos de uso de dispositivos, incluindo algoritmos de câmera, alto-falantes inteligentes e dispositivos XR.

  • 05:30:00 Nesta seção, o palestrante explica o processo de desenvolvimento do compilador ANITA, que é usado para fornecer um dialeto de referência em Mair para facilitar a otimização em diferentes arquiteturas e implantar os modelos em vários ambientes. O palestrante também destaca a estrutura que eles introduziram para oferecer suporte a aceleradores personalizados, o que permite escolher quais operadores carregar e ativar/desativar o acelerador facilmente. O palestrante também fornece uma visão geral de como a otimização é implantada no ONNX Mlir, onde o modelo ONNX é gradualmente reduzido a uma representação intermediária.

  • 05:35:00 Nesta seção, o palestrante fala sobre o compilador ONNX e como vários dialetos são usados para otimização de CPU e acelerador. A otimização de alto nível inclui otimização em nível de gráfico e, em níveis inferiores, a otimização é aplicada às operações da CPU e do acelerador. O palestrante apresenta um exemplo de como funciona um framework acelerador no compilador, onde usar o acelerador é 11 vezes mais rápido do que executá-lo em uma CPU. Eles também mencionam como estão se concentrando na otimização do operador de aprendizado profundo e oferecerão suporte a operadores de aprendizado de máquina online, bem como a outros aceleradores, como a CPU. Finalmente, eles expressam sua gratidão aos colaboradores e convidam mais contribuições para continuar crescendo o projeto ONNX. O próximo palestrante, da Preferred Networks, apresenta o PFVM, seu compilador de rede neural que usa a representação intermediária do ONNX.

  • 05:40:00 Nesta seção, um membro da equipe Compile discute um caso de uso para ONNX na otimização do módulo, especificamente no que diz respeito à sua representação intermediária estável e bem documentada. A equipe usa o ONNX para otimizar modelos com uma variedade de caminhos de otimização, estendendo o ONNX com os operadores do cliente, como adicionar informações do dispositivo para otimizar as alterações e a memória do dispositivo. O palestrante também discute a importância da inferência de forma na otimização do módulo e apresenta três casos de otimização. O primeiro caso envolve a redução da sobrecarga do intervalo do kernel em gráficos computacionais executados em CUDA por meio da fusão de vários operadores elementares em um único operador de grupo de fusão.

  • 05:45:00 pass conteria muitos operadores desnecessários se o modelo fosse gerado por um programa como pesquisa de arquitetura neural. É aqui que otimizações como inferência de formas e simplificação de gráficos são úteis. A inferência de forma é crucial para determinar se os operadores elementares adjacentes podem ser fundidos, enquanto a simplificação do gráfico pode remover operadores desnecessários da passagem para trás. Ambas as otimizações podem reduzir significativamente o número de cálculos necessários e melhorar a eficiência geral do modelo.

  • 05:50:00 Nesta seção, o palestrante aborda a técnica de checkpointing, que reduz o uso de memória ao executar um módulo. Ao modificar o gráfico computacional, o uso de memória pode ser reduzido ainda mais, mas à custa de maior latência. O palestrante enfatiza a importância de conhecer os tamanhos dos tensores para estimar o uso de memória e aponta as limitações do checkpointing automático ao lidar com dimensões desconhecidas. Além disso, o palestrante discute o impacto de dimensões desconhecidas nas oportunidades de otimização e descreve as melhorias feitas na inferência de formas ONNX. Especificamente, a introdução da inferência simbólica no ONNX 1.10 melhorou muito a inferência de formas por meio da propagação de dados.

  • 05:55:00 Nesta seção, o palestrante discute a inferência de formas no ONNX, explicando que as informações de formas podem ser propagadas globalmente a partir do topo para casos estáticos, mas é necessário mais suporte para casos dinâmicos. O palestrante mostra um exemplo de um gráfico ONNX em que a forma de uma reformulação precisa ser estimada, mas atualmente desconhecida. Eles sugerem a implementação de mais funções de inferência de forma para casos dinâmicos e perguntam se é necessário suporte para casos como a concatenação de dois tensores de tamanhos diferentes. O palestrante também menciona brevemente otimizações para o supercomputador md4, que só aceita modelos com forma estática e sem ramificação dinâmica, e usa informações estáticas para agendamento e otimizações. Em seguida, um representante da Huawei compartilha uma conversa pré-gravada sobre como trazer o poder do ONNX para o Spark para inferência.

  • 06:00:00 Nesta seção, o foco está na proposta de melhoria do SPARK, comumente conhecida como SPIP, que visa simplificar o processo de implantação do modelo de machine learning para o spark, integrando-o com frameworks DL de terceiros. Esta proposta é destinada a engenheiros de dados ou desenvolvedores que precisam implantar modelos DL no Spark. O objetivo final é ocultar as complexidades da conversão do processamento de guias e da inicialização do modelo em uma UDF modal, permitindo que os usuários concluam a inferência ONNX facilmente em big data. O próprio processador AI da Huawei, chamado Ascend, é apresentado e é explicado que, para concluir o pipeline SPARK e ONNX na plataforma Ascend, deve-se primeiro introduzir o suporte Ascend no tempo de execução ONNX.

  • 06:05:00 Nesta seção, o palestrante discute o ecossistema Ascend AI e os diferentes processadores que ele suporta. O Ascend 310 suporta apenas inferência de IA, enquanto o Ascend 710 e 910 suportam treinamento e inferência. Além disso, o ecossistema fornece uma camada de software chamada "Kung", que fornece APIs para desenvolvedores criarem facilmente aplicativos e serviços de IA. O palestrante então se concentra no Khan, a pilha de software atual no ecossistema Ascend e na versão mais recente, Khan 5.0. Eles explicam as diferentes camadas do Khan e como ele fornece bibliotecas de operadores, mecanismos de otimização e um adaptador de estrutura para desenvolvedores. O palestrante discute o roteiro para adicionar Khan como um novo provedor de execução para ONNX runtime, permitindo que os usuários executem modelos ONNX diretamente no hardware Ascend.

  • 06:10:00 Nesta seção do vídeo, o ONNX Community Day é encerrado com as mesas redondas para os participantes presenciais. As mesas redondas consistiram em seis tópicos diferentes, com grandes blocos de notas disponíveis para os participantes escreverem. Os tópicos foram selecionados com base nos envios dos participantes e incluem ONNX para Mobile e Edge, implantação de modelo e quantização de aprendizado de máquina, treinamento e operações, conversões e operadores. A equipe ONNX Runtime também esteve disponível para participar das conversas. Após as mesas redondas, os participantes desfrutaram de um happy hour com comidas e bebidas e foram incentivados a preencher a pesquisa para fornecer feedback.
 

ONNX: Passado, Presente e Futuro - Jim Spohrer, IBM e Prasanth Pulavarthi, Microsoft



ONNX: Passado, Presente e Futuro - Jim Spohrer, IBM e Prasanth Pulavarthi, Microsoft

O vídeo "ONNX: Passado, Presente e Futuro" apresenta Jim Spohrer, da IBM, e Prasanth Pulavarthi, da Microsoft, discutindo o crescimento e o futuro da estrutura de IA de código aberto ONNX. Eles destacam a importância de padronizar a implantação dos modelos de IA por meio do formato de intercâmbio fornecido pelo ONNX, permitindo a otimização contínua em diferentes estruturas de aprendizado profundo. Além disso, eles discutem os desenvolvimentos recentes na capacidade do tempo de execução do ONNX de trabalhar com vários aceleradores de hardware e oferecem dicas e recursos para começar a usar o ONNX. Os palestrantes respondem a perguntas do público sobre os recursos do ONNX, implantação comercial e planos de certificação futuros, enquanto incentivam os espectadores a se envolverem na comunidade ONNX.

  • 00:00:00 Nesta seção, Jim Spohrer da IBM e Prasanth Pulavarthi da Microsoft se apresentam e fornecem uma visão geral do passado, presente e futuro do ONNX, uma estrutura de IA de código aberto. O ONNX serve como um formato de intercâmbio padronizado, permitindo que diferentes ferramentas interoperem e otimizem a inferência em várias estruturas de aprendizado profundo. Os palestrantes incentivam os espectadores a se envolverem com a comunidade ONNX, verificando as notícias e informações iniciais no site do ONNX, além de ingressar na comunidade no GitHub e Gitter. Eles também destacam as recentes reuniões da comunidade virtual, onde os parceiros do ONNX discutiram seus projetos e como estão usando o ONNX de maneiras inovadoras.

  • 00:05:00 Nesta seção, os palestrantes discutem o crescimento da comunidade ONNX e sua importância como formato de intercâmbio entre inúmeros projetos de código aberto no campo da inteligência artificial e aprendizado de máquina. Eles destacam o progresso da comunidade ONNX em termos de pull requests, colaboradores, estrelas, garfos, artigos publicados e o zoológico modelo, e incentivam mais organizações e indivíduos a se envolverem. Os palestrantes também apresentam o ONNX na Microsoft e seu uso em vários produtos, enfatizando a necessidade de um formato padronizado como o ONNX no cenário diversificado de soluções de IA e ML. Eles oferecem dicas sobre como usar o ONNX e aceitam perguntas do público.

  • 00:10:00 Nesta seção, os palestrantes discutem problemas comuns que os desenvolvedores enfrentam ao tentar implantar modelos de ML na produção, como alta latência de inferência, execução de modelos em dispositivos de ponta e IoT e a necessidade de executar o mesmo modelo em diferentes hardware e sistemas operacionais. Para resolver essas questões, os palestrantes apresentam o formato ONNX e o tempo de execução ONNX, que permite aos desenvolvedores representar modelos de vários frameworks em um formato comum e executá-los de forma eficiente em diferentes plataformas e aceleradores. O Speech Service da Microsoft é dado como exemplo de como o ONNX melhorou a agilidade e o desempenho na produção.

  • 00:15:00 Nesta seção, os palestrantes discutem como o uso do ONNX runtime pode trazer benefícios em termos de agilidade, desempenho e precisão. Eles mencionam exemplos de serviços cognitivos da Microsoft, como conversão de fala em texto e visão computacional, bem como o Azure Connect, um dispositivo com recursos de rastreamento corporal. O aspecto de portabilidade do ONNX também é destacado, pois permite que o mesmo modelo e código de aplicativo seja usado em diferentes plataformas e aceleradores de hardware, economizando tempo e esforços de personalização. Além disso, os alto-falantes tocam no Windows ML, que usa o tempo de execução ONNX como um formato comum para modelos, facilitando a inferência de aprendizado de máquina no sistema operacional Windows.

  • 00:20:00 Nesta seção, Jim Spohrer e Prasanth Pulavarthi discutem alguns dos recentes desenvolvimentos e conquistas do tempo de execução ONNX. Uma de suas características mais significativas é a capacidade de trabalhar com diferentes tipos de aceleradores de hardware, como GPUs ou VPUs. Ele também oferece suporte a vários idiomas, permitindo que os usuários convertam modelos treinados em ambientes Python em C#. Um exemplo de empresa que usa o tempo de execução ONNX é um ISV que treina seus modelos financeiros em python usando scikit-learn, mas usa o tempo de execução ONNX para produção em C#. Além disso, o tempo de execução do ONNX otimizou recentemente a inferência e o treinamento de modelos de transformadores, como BERT e GPT2, resultando em aumentos significativos de velocidade e economia de custos para os usuários.

  • 00:25:00 Nesta seção, os palestrantes fornecem informações sobre como começar a usar ONNX e ONNX runtime. O Model Zoo, que pode ser acessado por meio de um URL, oferece uma variedade de modelos pré-treinados para baixar e começar a usar com o tempo de execução ONNX para visão, linguagem e futuros modelos de fala. Além disso, os palestrantes incentivam a contribuição de modelos para o Zoológico Modelo. Os modelos existentes de outras estruturas também podem ser convertidos ou exportados para o formato ONNX. Estruturas como PyTorch, Keras, TensorFlow e Scikit-Learn têm funcionalidades de exportação ONNX, e o tempo de execução ONNX pode ser instalado no Windows, Linux e Mac com suporte para várias linguagens de programação.

  • 00:30:00 Nesta seção, os palestrantes discutem a aceleração de hardware e como diferentes aceleradores de hardware podem ser integrados por meio da API chamada de provedores de execução. O tempo de execução ONNX tem uma implementação de CPU altamente otimizada, bem como uma implementação CUDA, e fornecedores de hardware como Nvidia e Intel fizeram parceria com o ONNX para integrar suas otimizações com o tempo de execução ONNX. Isso garante que qualquer modelo ONNX possa ser executado com suporte total para toda a especificação ONNX, mesmo que uma determinada operação não seja suportada por um acelerador específico. Os palestrantes incentivam os espectadores a experimentar o ONNX e compartilhar os recursos disponíveis na comunidade ONNX, incluindo governança aberta, SIGs e grupos de trabalho.

  • 00:35:00 Nesta seção, os palestrantes discutem a estrutura de governança aberta do projeto ONNX, que consiste em diferentes grupos de interesse especial (SIGs) e grupos de trabalho. Eles explicam que SIGs e grupos de trabalho se reúnem periodicamente e que tudo é aberto, e as reuniões são todas publicadas no calendário do calendário da IA. Além disso, a estrutura de governança aberta descreve como os contribuidores e aprovadores são selecionados, que respectivamente obtêm direitos de voto em diferentes decisões ou possuem permissões de mesclagem. Em última análise, os palestrantes incentivam as pessoas a se envolverem no projeto ONNX, ingressando nos diferentes canais e grupos, inscrevendo-se na lista de discussão e participando das discussões.

  • 00:40:00 Nesta seção, os palestrantes respondem a várias perguntas do público sobre tópicos como possíveis publicações de livros sobre ONNX, os recursos de registro do ONNX runtime e os métodos usados para diminuir o tempo de treinamento de aprendizado de máquina. Eles também mencionam algumas implantações comerciais de modelos baseados em ONNX em vários cenários, como Azure Cognitive Services, modelos de escritório e o mecanismo de pesquisa Bing.

  • 00:45:00 Nesta seção, os palestrantes discutiram a implantação comercial de modelos ONNX fora da Microsoft e mencionaram que há vários modelos de nível de produção sendo usados por empresas financeiras e outras organizações no Azure. Eles também responderam a perguntas do público sobre ONNX, incluindo se ele suporta CNTK (sim, eles têm uma exportação ONNX) e se você precisa de conhecimento sobre ferramentas de aceleração de hardware (não, já que o ONNX runtime fornece uma camada de abstração). Eles também abordaram os benefícios de usar ONNX no treinamento versus converter para ONNX após o treinamento, explicando que o tempo de execução do ONNX pode acelerar o processo de treinamento, resultando em modelos de transformadores mais rápidos. Finalmente, eles expressaram sua vontade de ouvir sobre possíveis planos de certificação e diferentes maneiras pelas quais as pessoas usam o ONNX.

  • 00:50:00 Nesta seção, os palestrantes respondem a uma pergunta sobre a capacidade do ONNX de suportar todos os tipos de pipeline. Embora não seja 100% devido a algumas lacunas existentes, os tipos de modelo comuns são normalmente suportados, e os usuários podem consultar o ONNX Converter GitHub para obter uma lista de pipelines compatíveis ou tentar eles mesmos ver se o pipeline pode ser totalmente convertido. Os palestrantes encerram a sessão agradecendo aos participantes e incentivando-os a ingressar na comunidade ONNX.
 

Onnx-mlir: um compilador baseado em MLIR para modelos ONNX - o status mais recente



Onnx-mlir: um compilador baseado em MLIR para modelos ONNX - o status mais recente

Onnx-mlir é um compilador para modelos ONNX que utiliza MLIR e LLVM para otimização e geração de código, suportando CPUs e aceleradores customizados. Dong Lin, da IBM Research, enfatiza a importância de testes completos e destaca o uso da estrutura em serviços de pontuação online e estruturas de serviço de modelo. Onnx-mlir tem vários dialetos para CPU e acelerador, com otimizações em vários níveis, e demonstrou acelerar um modelo de detecção de fraude de cartão de crédito em 11 vezes usando um acelerador IBM. O projeto recebe contribuições da comunidade para otimizar operadores importantes e oferecer suporte a operadores de ML de nicho e outros aceleradores, como GPUs.

  • 00:00:00 Nesta seção, Dong Lin da IBM Research discute ONNX-MLIR, um compilador para modelos ONNX que usa MLIR e LLVM para otimização de alto nível e geração de código de baixo nível. O compilador visa fornecer uma referência para o dialeto ONNX no MLIR e tornar a otimização conveniente não apenas para CPUs, mas também para aceleradores personalizados. É fácil de integrar com outros compiladores baseados em MLIR e oferece suporte a diferentes linguagens de programação, como Python, C++ e Java. Dong Lin também destaca a importância de testar cuidadosamente o compilador e menciona que ele tem sido usado para serviços de pontuação on-line e estruturas de serviço de modelo, com suporte recém-introduzido para aceleradores personalizados.

  • 00:05:00 Nesta seção, o palestrante discute o compilador ONNX-MLIR, que pode otimizar e suportar novos aceleradores. O compilador possui vários dialetos para CPU e acelerador, com otimizações em vários níveis. O palestrante demonstrou a capacidade da estrutura de acelerar um modelo de detecção de fraude de cartão de crédito em 11 vezes usando um acelerador IBM, mas não pôde revelar mais detalhes. Eles enfatizaram seu interesse nas contribuições da comunidade para o crescimento do projeto de código aberto, pois visam otimizar operadores importantes, oferecer suporte a operadores de aprendizado de máquina de nicho e outros aceleradores, como GPUs.
 

PFVM - Um compilador de rede neural que usa ONNX como sua representação intermediária



PFVM - Um compilador de rede neural que usa ONNX como sua representação intermediária

Neste vídeo, Zijian Xu, da Preferred Networks, apresenta o PFVM, um compilador de rede neural que usa ONNX como representação intermediária para otimização de módulo. Ele discute como o PFVM usa o ONNX exportado como entrada, o otimiza e executa o modelo com back-ends especificados usando APIs de terceiros. Genji descreve a importância da otimização, incluindo a extensão do ONNX com operadores de clientes, inferência de formas e simplificação de gráficos. Ele também aborda as limitações dos compiladores ONNX atuais, incluindo a necessidade de mais suporte no caso dinâmico e sugere a implementação de mais funções de inferência. Zijian Xu enfatiza a importância de reduzir a sobrecarga do intervalo do kernel e o uso de memória para uma computação mais rápida e sugere a utilização de informações estáticas disponíveis nas máquinas para agendamento e modelagem de inferência.

  • 00:00:00 Nesta seção, Zijian Xu da Preferred Networks discute PFVM, um compilador de rede neural que usa ONNX como sua representação intermediária. Ele apresenta a empresa e explica como eles usam o aprendizado profundo para resolver problemas do mundo real. Ele então se concentra no ONNX para otimização de módulo em vez de implantação de módulo. Ele explica que o PFVM funciona como um compilador e tempo de execução, pegando o ONNX exportado como entrada, otimizando-o e executando o modelo com back-ends especificados usando APIs de terceiros. Genji descreve o processo de otimização, discutindo como eles estendem o ONNX com os operadores do cliente para otimização de dispositivo e memória. Ele também discute a importância da inferência de forma na otimização do módulo e apresenta três otimizações de caso. O primeiro caso é a fusão elementar.

  • 00:05:00 Nesta seção do vídeo, o palestrante discute a importância de reduzir a sobrecarga do intervalo do kernel para uma computação mais rápida na execução de gráficos de computação em CUDA. Eles propõem a fusão de operadores elementares em um único operador de grupo de fusão para reduzir o alcance do kernel, mas alertam que nem todos os operadores podem ser fundidos com sucesso. É necessário verificar se os operadores podem ser transmitidos ou não antes de um grupo de fusão de gradiente. O palestrante também enfatiza a importância da inferência de formas e simplificação de gráficos para otimizar modelos de redes neurais. Por fim, eles abordam a questão de saber se os modelos contêm operadores desnecessários e respondem que algumas otimizações são necessárias para uma computação mais rápida.

  • 00:10:00 Nesta seção, o palestrante discute como modelos gerados por programas como primeira geração ou rede neural e pesquisa de arquitetura neural podem conter operadores desnecessários. Eles demonstram a importância das otimizações usando um exemplo em que um gráfico computacional esquerdo usa muita memória para calcular o nó cinco. Ao modificar o gráfico computacional, a mesma saída pode ser obtida com um uso de memória reduzido. O PFVM pode executar pontos de verificação automáticos para reduzir o uso de memória, mas requer conhecimento dos tamanhos dos tensores para estimar o uso da memória com precisão. O palestrante enfatiza a importância da referência de forma e como as dimensões desconhecidas limitam as oportunidades de otimização na maioria dos quadros de modelagem.

  • 00:15:00 Nesta seção, o palestrante discute as limitações do atual compilador ONNX de última geração, incluindo a incapacidade de executar certas tarefas como transfusão de elementos e pontos de verificação automáticos, bem como a necessidade de mais suporte em o caso dinâmico. O palestrante sugere a implementação de mais funções de inferência para o caso dinâmico e solicita feedback dos usuários para determinar se deve dar suporte a casos como concat de dois tensores ou não. O palestrante também discute os benefícios de utilizar as informações estáticas disponíveis em máquinas como elementos core e mn4 para programação e modelagem de inferência.
 

Pilha do compilador YVR18-332 TVM e suporte ONNX



Pilha do compilador YVR18-332 TVM e suporte ONNX

O vídeo YVR18-332 discute a pilha do compilador TVM, que é uma pilha de aprendizado profundo liderada pela comunidade que oferece suporte a uma variedade de hardware e front-ends, incluindo ONNX. O palestrante discute como o TVM pode otimizar modelos no nível estéreo, permitindo que os desenvolvedores explorem o espaço de busca e encontrem a melhor configuração. Eles também discutem as otimizações automáticas que o TVM oferece, incluindo transformações de loop e aceleração de GPU. O palestrante fala sobre o roteiro da TVM, que inclui a ativação do suporte a 8 bits e o ajuste automatizado no nível do gráfico. Além disso, eles discutem a interface ONNX TV e a necessidade de unificar a interface padrão para todos os ecossistemas. Finalmente, o vídeo faz uma pausa para o almoço.

  • 00:00:00 Nesta seção, o palestrante apresenta a pilha de compiladores TVM e como ela oferece suporte a ONNX por meio de GBM. TVM é uma pilha de aprendizado profundo desde o nível de classe até o nível do câncer e é um projeto comunitário liderado por pesquisadores da Universidade de Washington com contribuições de várias empresas e organizações. A pilha do compilador TVM suporta uma variedade de hardware, incluindo CPU, GPU, FPGA, e tem planos para habilitar o suporte ASIC, com um simulador para verificação de design de hardware. A pilha também oferece suporte a vários front-ends, incluindo MXNet, ONNX e TensorFlow, e possui uma implementação IR de classe computacional chamada NVM com uma variedade de opções de otimização.

  • 00:05:00 Nesta seção, o palestrante discute a pilha de compiladores TVM e o suporte ONNX. Eles explicam que a pilha do compilador TVM pode fazer várias otimizações no nível estéreo, como transformações de loop e aceleração de GPU, e que ONNX é um novo recurso adicionado à etapa do TVM automático. O palestrante também explica o diploma Canadian Miss aplaudido pelo mecanismo de implantação remota da TVM, que permite aos usuários compilar um modelo em seu dispositivo host e implantá-lo remotamente no dispositivo de destino. Além disso, eles discutem as otimizações automáticas introduzidas pelo TVM, que podem reduzir o trabalho tedioso para desenvolvedores e são
    projetado para explorar o espaço de busca e encontrar a melhor configuração.

  • 00:10:00 Nesta seção, o palestrante discute a pilha do compilador TVM e o suporte para ONNX. Eles mencionam que a pilha do compilador TVM incorpora os algoritmos de ajuste mais avançados, incluindo algoritmos isolados de aumento de gradiente extremo, para fornecer melhor desempenho. Eles também destacam o projeto de código aberto que permite otimização automatizada e pode aproveitar o trabalho anterior para otimizar o espaço de pesquisa. O palestrante então fala sobre como o TVM pode ser usado para o acelerador aberto Vita e suas três partes principais. Eles explicam como o TVM pode ser usado para otimização de cronograma e implantado remotamente usando VPS RPC. Por fim, eles fornecem um roteiro para o TVM, que inclui a ativação do suporte de 8 bits e o ajuste automatizado no nível do gráfico, ao mesmo tempo em que planeja permitir o uso nos sticks Ultra 9 da Xilinx e na instância F1 da Amazon.

  • 00:15:00 Nesta seção, o palestrante discute a pilha do compilador TVM e como planeja atualizar para o NVM v2, apelidado de Relay. A implementação do Relay requer a escolha de um fluxo de controle de pod para melhorar o sistema de tipos e controlar como melhorar o sistema do servidor de compilação. O palestrante explica como o Relay se encaixa na pilha do compilador TVM ao oferecer suporte ao ONNX. O ONNX define três partes principais, a saber, o modelo de gráfico de computação e os operadores de construção e um banco de dados padrão. Para suportar as extensões ONNX ml, o front-end do TVM implementou um front-end no DVM. No entanto, a conversão de ONNX para o gráfico simbólico NM VM pode causar alguns problemas de incompatibilidade. Além disso, a comunidade está discutindo se deve usar ONNX ou Relay como um gráfico IR na comunidade TVM, e a única maneira de progredir é trabalhar em conjunto para mesclar o Relay para usar na futura conversão de modelo.

  • 00:20:00 Nesta seção, o palestrante discute a interface ONNX TV para integração de framework, que é uma interface padrão para inferência de rede neural em diferentes aceleradores. A interface inclui descoberta de tempo de execução do pod, seleção de back-ends de execução e descoberta de longo prazo de operadores ONNX. O palestrante sugere que a comunidade discuta como unificar a interface padrão para todos os ecossistemas. Além disso, o palestrante fala sobre a pilha do compilador TVM e como ela pode incorporar uma implementação codificada manualmente como parte de seu espaço de pesquisa. No entanto, ainda não há uma boa ideia sobre esse mecanismo, então o palestrante aceita ideias e discussões.

  • 00:25:00 Nesta seção, o tópico da discussão é a pilha do compilador TVM e seu suporte para ONNX. Esclarece-se que o ONNX possui um formato de descrição e uma API de tempo de execução, e o sistema igual do ONNX está se expandindo além do formato de troca aberta. O objetivo é unificar a API para que aplicativos de nível superior possam chamar uma única API padrão para inferência em tempo de execução, facilitando a vida dos desenvolvedores nessa área. Não há mais perguntas e o vídeo faz uma pausa para o almoço.
 

Standup da comunidade .NET MAUI - ONNX Runtime com Mike Parker



Standup da comunidade .NET MAUI - ONNX Runtime com Mike Parker

Neste vídeo, o palestrante convidado Mike Parker apresenta o tempo de execução ONNX, uma ferramenta de plataforma cruzada e de código aberto que permite a otimização e a aceleração do aprendizado de máquina em várias plataformas de hardware. Parker explica a importância de usar o tempo de execução ONNX e mostra como ele pode ser usado em projetos .NET MAUI para classificar imagens usando o modelo de classificação de objetos MobileNet. Os anfitriões e Parker discutem os benefícios de executar modelos de aprendizado de máquina em um dispositivo e a capacidade de evitar custos de infraestrutura de back-end. Além disso, a equipe compartilha recursos úteis, incluindo o blog de Parker sobre esse assunto e sua parceria com Al Blount para suporte a .NET MAUI e Xamarin.

  • 00:00:00 Nesta seção do stand-up da comunidade para .NET MAUI, a equipe apresenta Mike Parker, um membro da equipe de consultoria de clientes de aplicativos de cliente modernos, que compartilha seu conhecimento de ONNX Runtime, uma ferramenta de aprendizado de máquina para otimizar e modelos de aceleração em várias plataformas de hardware. Ele explica como o ONNX Runtime é de código aberto e plataforma cruzada, permitindo que os desenvolvedores usem várias estruturas e hardware para aplicativos de aprendizado de máquina. Ele também mostra como a comunidade .NET pode aproveitar o ONNX Runtime em seus projetos.

  • 00:05:00 Nesta seção, os anfitriões se apresentam e seu convidado, Mike, que se junta para discutir o Onnx Runtime com eles. Os hosts mencionam que primeiro examinarão alguns blogs da Microsoft e da comunidade antes de passar a discutir alguns PRs do .NET MAUI e repositórios adjacentes, o que os deixa entusiasmados. Por fim, eles passarão a discussão para Mike Park para falar sobre as bibliotecas Onnx Runtime, como ele as usou no Xamarin e seus escritos e podcasts sobre o assunto. Os hosts também mencionam que é o 20º aniversário do .NET e que o .NET MAUI Preview 12 foi lançado. Eles também alertam os usuários sobre uma mudança significativa e mencionam que Dave tem trabalhado com os mantenedores da biblioteca da comunidade.

  • 00:10:00 Nesta seção, os palestrantes discutem o esforço de unificação do .NET e a necessidade de recompilação e atualizações para bibliotecas e dependências do iOS conforme as transições do Xamarin para o MAUI. Atualmente, a equipe está trabalhando em uma maneira de adotar essas alterações para qualquer projeto de vinculação a bibliotecas nativas e pacotes NuGet e garante aos usuários que a orientação será fornecida. Além disso, a equipe discute a falta de suporte a MAUI na visualização cinco do VS Mac 2022 e explica que eles estão trabalhando nisso, mas tiveram que priorizar a reconstrução de todo o trabalho do Xamarin no tempo de execução do .NET 6 com um novo UI SAC primeiro. Por fim, a equipe anuncia a atualização da vinculação do SDK do Facebook e menciona o esforço para atualizar e manter outras bibliotecas de terceiros, como as bibliotecas do Google.

  • 00:15:00 Nesta seção, a equipe do Xamarin fala sobre os componentes que mantém, que costumavam ser um foco principal, mas agora estão sendo reduzidos ao que é mais crítico para suporte. A equipe incentiva os usuários a entrar em contato se tiverem dependências desses componentes durante a transição para o .NET 6. Eles também discutem um tutorial do Maui Hello World e uma série de blogs de dissecação do código-fonte do .NET Maui. Além disso, o blog de Andreas sobre Z Index e personalização da interface do usuário é destacado, mostrando o empilhamento de elementos uns sobre os outros usando o Z Index.

  • 00:20:00 Nesta seção, o apresentador mostra algumas postagens de blog e designs que as pessoas recriaram usando .NET MAUI. Os blogs incluem a recriação de um design de cartão de embarque em Xamarin Forms, discutindo o desenvolvimento de máquina de estado com Xamarin Forms, organizando seu arquivo de inicialização .NET MAUI, um mergulho profundo na arquitetura de manipuladores e um blog sobre Xamarin Forms para comunicação bidirecional JavaScript usando um WebView para ele. As apresentações mostram quanto foco há no design atualmente, tornando Xamarin Forms/MAUI mais extensível e útil, e como usar JavaScript e associações de forma mais eficaz.

  • 00:25:00 Nesta seção da transcrição, os hosts discutem as últimas contribuições da comunidade para .NET MAUI, incluindo uma versão do serviço de fórum Xamarin 5.0 e nova documentação. Eles incentivam os contribuidores a fornecer feedback sobre a participação no repositório e mencionam a disponibilidade de um controle de chip no kit de ferramentas da comunidade, embora não esteja diretamente na caixa. Os anfitriões também mencionam a recente adição de sombras, que é um novo recurso do MAUI, e sugerem incrementar seu bot modificando-o.

  • 00:30:00 Nesta seção, Mike Parker fornece uma atualização sobre o status dos lançamentos de visualização do .NET MAUI, destacando o progresso feito com a visualização 13. Há muito verde e muitos novos recursos, incluindo texto formatado em etiquetas, extensões, e gestos de extensão, que preenchem as lacunas da plataforma. A comunidade também compartilhou uma nova propriedade anexada chamada "Galadriel", que permite a simples adição de emblemas a guias e itens de menu no Xamarin Forms Shell. Além disso, a equipe do .NET MAUI tem trabalhado para melhorar o desempenho de inicialização da plataforma, e os resultados são promissores com a inicialização do aplicativo em 576 milissegundos em um Pixel 5 com AOT perfilado.

  • 00:35:00 Nesta seção, o .NET MAUI Community Standup discute a disponibilidade de extensões de marcação C# para construção de IU em Xamarin Forms e .NET MAUI, que fornecem uma sintaxe mais fluente para desenvolvimento de IU. Eles também falam sobre o onnx runtime, um modelo portátil que pode executar inferências em diferentes plataformas usando um único conjunto de APIs, com exemplos como reconhecimento facial e marcação de fotos. O tempo de execução onnx está disponível no GitHub e pode ser usado no Xamarin e em aplicativos móveis. O processo para usar o tempo de execução onnx envolve carregar o modelo, preparar a entrada, executar a inferência e processar a saída em um formato utilizável.

  • 00:40:00 Nesta seção do vídeo, Mike Parker explica como eles usaram o tempo de execução ONNX em um aplicativo Xamarin Forms para classificar imagens usando o modelo de classificação de objeto MobileNet. Ele destaca a importância de seguir a documentação do modelo e normalizar os valores RGB. Parker também menciona um aplicativo útil chamado Netron que permite visualizar tamanhos de entrada e saída, formas e nomes das entradas e saídas. O aplicativo é apenas um único botão que carrega e executa o modelo e exibe o rótulo superior em um alerta. Parker observa que é legal que tudo isso esteja acontecendo no dispositivo sem envolver a nuvem.

  • 00:45:00 Nesta seção, os palestrantes discutem os benefícios da execução de modelos de aprendizado de máquina no dispositivo, incluindo a capacidade de funcionar sem conectividade e evitar custos de infraestrutura de back-end. Eles também abordam suas experiências usando as APIs do Microsoft Azure Vision baseadas em nuvem e como conseguiram obter tempos de processamento mais rápidos usando o tempo de execução ONNX. Além disso, eles explicam como simplificaram a experiência do aplicativo de integração da equipe, substituindo o código específico da plataforma e do modelo por um único modelo ONNX. Por fim, eles discutem o processo de preparação de um modelo, usando o Azure Custom Vision Service e criando um pacote Nougat que permite que o ONNX funcione com o Xamarin.

  • 00:50:00 Nesta seção do vídeo, Mike Parker discute seu trabalho com o tempo de execução ONNX e a adaptação de seu código de interoperabilidade nativo para suportar plataformas com AOT, como iOS. Ele também descreve os cenários do mundo real em que essa tecnologia pode ser usada, incluindo a simplificação de fluxos de trabalho e a melhoria da acessibilidade em aplicativos. No entanto, ele observa que trabalhar com modelos pré-construídos pode ser opressor para aqueles sem um histórico tradicional de ciência de dados e sugere ser seletivo sobre os modelos a serem incorporados. Por fim, alguns recursos úteis, incluindo o blog de Mike sobre esse tópico, são compartilhados.

  • 00:55:00 Nesta seção, os anfitriões falam sobre a disponibilidade de Mike Parker para contratação e apresentam Al Blount, que pode fornecer suporte para empresas que precisam de ajuda com Xamarin Forms e .NET Maui. Eles também discutem brevemente o trabalho atual da equipe de Mike na atualização para Maui, mas não podem compartilhar nenhum detalhe ainda. Os apresentadores encerram o vídeo agradecendo aos espectadores por se juntarem e anunciando a próxima festa de aniversário de 20 anos do .NET.
 

[Encontro virtual] IA interoperável: ONNX e ONNXRuntime em C++ (M. Arena, M. Verasani)



[Encontro virtual] IA interoperável: ONNX e ONNXRuntime em C++ (M. Arena, M. Verasani)

O vídeo discute os desafios de usar diferentes estruturas para treinar algoritmos de aprendizado de máquina, levando à falta de interoperabilidade, e apresenta ONNX e ONNXRuntime que visam criar um formato universal para modelos de aprendizado profundo. O ONNX converte redes neurais em gráficos computacionais estáticos, permitindo um desempenho otimizado durante a inferência. O ONNXRuntime permite a conversão de qualquer estrutura para o formato ONNX e fornece bibliotecas de aceleração que podem ser usadas para atingir qualquer plataforma de hardware. O vídeo mostra exemplos de uso de ONNX e ONNXRuntime, além de discutir seu uso em C++ e fornecer orientações para melhor entendimento do projeto e sua documentação.

Marco Arena e Matteo Verasani também discutem os benefícios de usar ONNX e ONNXRuntime em C++ para modelos de aprendizado de máquina, destacando a flexibilidade da estrutura e sua capacidade de converter facilmente modelos de diferentes estruturas sem sacrificar o desempenho. Eles fornecem exemplos de conversão de modelos para o formato ONNX e demonstram o uso do ONNXRuntime para o modo de inferência, apresentando melhorias no desempenho com um modelo Python clássico. Além disso, eles discutem seu trabalho com sistemas embarcados e os potenciais benefícios do benchmarking ONNXRuntime em GPUs. Os palestrantes também mencionam futuros encontros virtuais e expressam esperança de incorporar mais oportunidades de networking para os participantes.

  • 00:00:00 Nesta seção do vídeo, os palestrantes discutem os problemas que surgem ao usar diferentes estruturas para treinar algoritmos de aprendizado de máquina para vários casos de uso, levando à falta de interoperabilidade. Isso pode ser um desafio ao trabalhar em uma equipe em que os membros podem ter níveis variados de conhecimento com estruturas diferentes. Para resolver esse problema, os alto-falantes apresentam o ONNX e o ONNXRuntime, que permitem a interoperabilidade entre os frameworks convertendo as redes em um formato comum. O ONNXRuntime permite que os modelos convertidos sejam implantados em qualquer hardware de destino, incluindo CPUs, GPUs e FPUs.

  • 00:05:00 Nesta seção, os palestrantes discutem o projeto ONNX (Open Neural Network Exchange), que pretende ser um formato universal para modelos de deep learning, permitindo a interoperabilidade entre diferentes frameworks. O projeto é conduzido pela comunidade e apoiado por várias empresas, com foco na conversão de diferentes tipos de modelos e estruturas em um único formato para produção. O ONNX converte redes neurais em gráficos computacionais estáticos, que diferem dos gráficos dinâmicos porque são pré-inicializados antes do treinamento. Embora os gráficos estáticos sejam computacionalmente mais eficientes, os gráficos dinâmicos oferecem maior flexibilidade para tamanhos de entrada variados.

  • 00:10:00 Nesta seção, os palestrantes discutem como o ONNX fornece um grafo computacional estático, muito útil no processo de inferência. Enquanto outros frameworks como o Python possuem grafos computacionais dinâmicos, o ONNX fornece um grafo estático que já foi controlado durante as fases de treinamento e desenvolvimento, permitindo uma performance mais otimizada. Além disso, a ferramenta de tempo de execução ONNX da Microsoft permite a conversão de qualquer estrutura para o formato ONNX e fornece bibliotecas de aceleração que podem ser usadas para direcionar qualquer plataforma de hardware, tornando-a uma ferramenta útil e versátil para inferência e produção.

  • 00:15:00 Nesta seção do vídeo, os palestrantes falam sobre sua experiência usando ONNX e ONNX Runtime para interoperabilidade de IA. Eles explicam como criar um modelo PyTorch em Python, convertê-lo para o formato ONNX e usar o ONNX Runtime para implantação, permitindo que eles escrevam seus pipelines e se destinem a diferentes plataformas, como GPUs ou dispositivos Android. Eles também demonstram as melhorias de desempenho do uso do ONNX Runtime em comparação com outros mecanismos de inferência, alcançando resultados até 4 vezes mais rápidos. Eles destacam a flexibilidade do ONNX, permitindo converter modelos criados em outras estruturas, como Matlab, para usá-los com o ONNX Runtime sem precisar reescrever o pipeline de implantação.

  • 00:20:00 Nesta seção, os palestrantes discutem o processo de uso de ONNX e ONNXRuntime em C++. Eles explicam que os modelos devem primeiro ser convertidos para o formato ONNX antes de poderem ser executados no ONNXRuntime. Embora a serialização do TensorFlow não seja nativa do ONNXRuntime, existem bibliotecas de código aberto disponíveis para conversão. Eles também respondem a perguntas sobre a possibilidade de script do processo de conversão e o nível de melhoria visto com ONNX em comparação com C++. Eles observam que mais benchmarking e análise são necessários. O repositório ONNXRuntime é de código aberto e suportado pela Microsoft, oferecendo uma gama de informações, guias e exemplos para os usuários.

  • 00:25:00 Nesta seção, o vídeo discute os recursos do ONNXRuntime em uma escala de complexidade do simples ao mais sofisticado. A coluna verde contém recursos básicos suficientes para tarefas de aprendizado de máquina mais simples, enquanto a coluna magenta inclui recursos um pouco mais sofisticados, como provedores de execução e suporte à criação de perfil. A coluna vermelha representa recursos avançados para tarefas mais complexas, como a capacidade de adicionar operadores personalizados ONNX ou realizar ajustes na negociação. O apresentador também fornece links para dois repositórios de demonstração para ONNXRuntime em C++ e Python.

  • 00:30:00 Nesta seção, o palestrante apresenta o ONNX e o ONNXRuntime em C++. Eles explicam que dentro do programa deve ser criado um ambiente para gerenciar o pool de negociações e o pregão que estabeleça o modelo em questão. As características da sessão também podem ser personalizadas e as configurações padrão podem ser executadas usando a sessão. Além disso, o ONNXRuntime otimizará o modelo implementando o pré-processamento necessário para gerenciar os dados antes de executar a sessão. A ferramenta também pode executar tarefas de inspeção, como indagar sobre o número de entradas e saídas, tipos de dados e nomes. Por fim, os usuários podem criar suas entradas e tensores no formato necessário.

  • 00:35:00 Nesta seção do vídeo, o palestrante discute como criar um objeto que aloca tensores na CPU e os transfere para o provedor de execução. O alto-falante cria tensores de entrada e saída, passando no buffer com valores de entrada e a forma do tensor como argumentos. O tensor para a saída é então criado passando os valores de saída para a biblioteca OnnxRuntime. O palestrante explica a importância de usar nomes para lançar inferências, pois permite flexibilidade na alteração da ordem das entradas. A demonstração mostra um exemplo simples de como os valores de saída são impressos na tela.

  • 00:40:00 Nesta seção, o palestrante dá dicas para quem deseja entender melhor o projeto ONNX e sua documentação. Eles recomendam procurar nas "Partes C" para acessar as seções melhor documentadas do ONNX e detalhar sua experiência com a inspeção de dados no ONNX. O palestrante também explica que, embora as bibliotecas de tempo de execução ONNX estejam disponíveis por meio de outros gerenciadores de pacotes, eles recomendam a recompilação das bibliotecas, pois as arquiteturas e provedores variam, e mostra como eles compilaram o mesmo código para criar dois pacotes de tempo de execução ONNX direcionados a uma CPU ou GPU.

  • 00:45:00 Nesta seção, o palestrante discute o ONNX Runtime com exemplos de uso da DLL em C++. As opções de sessão adicionadas ao código variam dependendo das preferências do cliente e ele tenta usar os provedores adicionados na ordem especificada. O alto-falante fornece um aplicativo de amostra de como o sistema ocupa o uso de RAM e GPU. Uma rede primária de IA de jogo, que foi pré-treinada em um conjunto de dados de 1.000 imagens, foi utilizada como exemplo. O sistema tem seus requisitos de pós-processamento e pré-processamento.

  • 00:50:00 Nesta seção do vídeo, o palestrante discute o pré-processamento de imagens usando Python e o uso de fontes de extensão para simplificar o processo. As imagens são redimensionadas para um tamanho ideal e convertidas para flutuar antes de serem normalizadas. O processo de normalização envolve dividir os valores pela média e realizar o desvio padrão. O pós-processamento da rede neural envolve uma normalização softmax simples. O palestrante também demonstra como abrir, processar e produzir imagens usando o ONNX Runtime com o mínimo de código. A classe usada para ler as classes de um arquivo de texto é simplista e alguns utilitários são usados para evitar código clichê desnecessário.

  • 00:55:00 Nesta seção, o palestrante discute o processo de medição do tempo de inferência para uma rede neural usando ONNXRuntime em C++. Ele explica que adicionou a porção de inferência à rede discutida anteriormente e mediu o tempo de inferência usando o relógio do sistema. Em seguida, ele demonstra como usar um logger personalizado no ONNXRuntime para fins de criação de perfil. O palestrante também discute brevemente uma rede móvel separada que foi desenvolvida em colaboração com a Universidade de Modena e a complexidade envolvida em seu pré-processamento e pós-processamento.

  • 01:00:00 Nesta seção, o palestrante discute a saída de um detector e mostra como ele desenha caixas delimitadoras em objetos como ursos e sinais. Eles também mencionam o uso de ONNXRuntime e como ele permite opções de sessão e ajuste, incluindo a habilitação de perfis para otimização de desempenho. O arquivo de rastreamento resultante pode ser inspecionado em detalhes para ver quanto tempo leva para inicializar o modelo e executá-lo nas imagens, incluindo quais operadores foram usados e qual provedor foi escolhido. Eles também mencionam a capacidade do ONNX de otimizar um gráfico antes de executá-lo, o que pode melhorar o desempenho e diminuir o tempo de carregamento do modelo.

  • 01:05:00 Nesta seção, o apresentador fala sobre como otimizar um modelo ativando ou desativando otimizações, o que pode afetar a portabilidade do modelo em diferentes alvos. Eles exploram diferentes níveis de otimizações e como cada um afeta o desempenho do modelo. O apresentador mostra que ativar o modo de execução paralela pode permitir que o modelo utilize vários threads, mas pode não ter um impacto significativo no desempenho em determinados casos. Eles também mencionam a possibilidade de paralelizar o processamento de várias imagens usando um utilitário. Por fim, o apresentador observa que as otimizações podem ter um impacto perceptível no desempenho do modelo, como demonstrado pelo tempo de carregamento reduzido dos modelos otimizados.

  • 01:10:00 Nesta seção, Marco Arena e Marco Verasani discutem os benefícios de usar ONNX e ONNX Runtime em C++. Uma grande vantagem é a capacidade de ter uma única camada de inferência que aceita ONNX como formato, permitindo portabilidade e flexibilidade no uso de diferentes frameworks para criação de modelos. Esse recurso é particularmente útil em situações em que diferentes equipes podem estar usando várias estruturas e um pipeline de inferência padrão é necessário para a produção. Além disso, o uso do ONNX Runtime em C++ pode levar a um desempenho de tempo de execução mais rápido e otimizado para modelos de aprendizado profundo. No geral, o ecossistema ONNX oferece muitas opções e oportunidades para ajustar e otimizar o desempenho dos modelos de aprendizado profundo.

  • 01:15:00 Nesta seção, os palestrantes discutem os benefícios do uso de ONNX e ONNXRuntime em C++ para modelos de aprendizado de máquina, pois permite flexibilidade nos frameworks e fácil conversão entre eles sem sacrificar o desempenho. Eles também mencionam que ONNXRuntime é compatível com Linux e demonstram como usar notebooks Python e Jupyter para prototipagem e exportação de modelos para o formato ONNX. Eles usam um pequeno tutorial como exemplo para mostrar como converter modelos de outros frameworks para ONNX e destacam a utilidade da ferramenta Netron para visualização do gráfico computacional dos modelos. Os palestrantes incentivam os espectadores a fazer perguntas e compartilhar conhecimentos sobre a ferramenta.

  • 01:20:00 Nesta seção, os palestrantes discutem o processo de converter um modelo para o formato ONNX e executá-lo no modo de inferência usando ONNXRuntime em C++. Eles demonstram como criar um gráfico computacional e definir as dimensionalidades de entrada e saída, bem como usar o tempo para comparar o desempenho do modelo na CPU e na GPU. Eles também mostram o uso do popular modelo de processamento de linguagem natural BERT, que utiliza o operador transformador e é implementado na biblioteca Hugging Face. Os palestrantes enfatizam a importância de instalar o pacote correto para usar o ONNXRuntime com CPU ou GPU.

  • 01:25:00 Nesta seção do vídeo, o apresentador demonstra como converter um modelo BERT para o formato ONNX em Python. O processo envolve a definição das entradas do modelo e a conversão do modelo usando a função "torch.onnx.export". O apresentador explica que o ONNX adiciona operadores a cada versão, o que enfatiza a necessidade de trabalhar na versão correta do ONNX com os operadores necessários para o modelo específico. O Eixo dinâmico também é destacado como um recurso importante para permitir formas de entrada/saída dinâmicas, como comprimentos de sequência variáveis no processamento de linguagem natural. Por fim, o apresentador mostra uma comparação entre Python e ONNX em termos de desempenho ao realizar a inferência no modelo.

  • 01:30:00 Nesta seção do encontro virtual, os palestrantes compartilham uma demonstração de seu trabalho com ONNX e ONNXRuntime em C++. Eles mostram uma melhoria no desempenho vista na inferência de um modelo Python clássico executado por meio do ONNXRuntime. Eles também demonstram uma ferramenta chamada "Network Viewer", que permite aos usuários visualizar o gráfico computacional estático de um modelo e ver as operações que estão sendo executadas, incluindo os tipos de entrada e saída esperados. A ferramenta também mostra a versão do ONNX usada para conversão e o offset usado durante o processo de conversão. Os palestrantes solicitam feedback dos espectadores e fornecem um link para os participantes fazerem comentários.

  • 01:35:00 Nesta seção, Marco Arena e Matteo Verasani falam sobre seu trabalho estudando plataformas para sistemas embarcados, incluindo GPUs, FGAs e CPUs. Eles executaram quatro redes neurais para detecção de objetos nesses sistemas embarcados e analisaram os resultados em termos de consumo de energia e velocidade de inferência. Eles também discutem a importância do uso de detectores de um estágio para sistemas embarcados e fornecem links para repositórios para ONNX e ONNXRuntime. Eles mencionam os benefícios potenciais do benchmarking do ONNXRuntime em GPUs e expressam interesse em convidar a equipe ONNXRuntime da Microsoft para participar de eventos futuros. Por fim, eles convidam os espectadores a participar de seu próximo evento online e futuros encontros.

  • 01:40:00 Esta seção do vídeo fala sobre encontrar motivos para não retornar aos encontros presenciais e como eles tiveram a sorte de ter uma concessão dos participantes para o encontro online. Eles também discutem os próximos planos para sua série de encontros virtuais, que inclui retirar a seção Python e focar nas partes iniciais de sua demonstração, com base nos materiais mostrados por Malattia, Verasani e os repositórios ONNX e ONNX Runtime. Também são disponibilizados links e fontes oficiais para quem busca mais informações sobre o tema. Por fim, eles expressam a esperança de incorporar mais tempo de networking e manter o chat aberto para os interessados em ficar depois do jantar, mas admitem as limitações dos encontros online.
 

[CppDay20] IA interoperável: ONNX e ONNXRuntime em C++ (M. Arena, M.Verasani)



[CppDay20] IA interoperável: ONNX e ONNXRuntime em C++ (M. Arena, M.Verasani)

O uso de algoritmos de aprendizado de máquina e aprendizado profundo está aumentando e há necessidade de ferramentas que possam implantar esses algoritmos em diferentes plataformas. A ferramenta ONNX oferece interoperabilidade entre diferentes frameworks e plataformas, permitindo que os desenvolvedores convertam seus algoritmos de um framework para outro e os implantem em diferentes dispositivos, mesmo que não estejam familiarizados com o framework ou plataforma específica. O ONNX Runtime é um mecanismo de inferência que pode aproveitar aceleradores personalizados para acelerar modelos durante o estágio de inferência e pode ser direcionado a uma variedade de plataformas de hardware. Os palestrantes demonstram o uso de ONNX e ONNX Runtime em programação C++, com exemplos de regressão linear e modelos de redes neurais. Eles também discutem os benefícios de usar o ONNX e o ONNX Runtime para ajustar a execução de uma rede, otimizar o tempo de carregamento e executar imagens sequenciais.

  • 00:00:00 Nesta seção do vídeo, os palestrantes discutem o uso crescente de algoritmos de aprendizado de máquina e aprendizado profundo para vários aplicativos e a necessidade de ferramentas que possam implantar esses algoritmos em diferentes plataformas. Eles apresentam uma ferramenta chamada ONNX que fornece interoperabilidade entre diferentes estruturas e plataformas. Eles explicam como os desenvolvedores podem usar o ONNX para converter seus algoritmos de uma estrutura para outra e implantá-los em diferentes dispositivos, mesmo que não estejam familiarizados com a estrutura ou plataforma específica. Os palestrantes usam o exemplo de conversão de um algoritmo Python para o formato ONNX e, em seguida, para a estrutura Core ML para implantação em um dispositivo Apple. Eles enfatizam a utilidade do ONNX em tornar os algoritmos de aprendizado profundo e aprendizado de máquina mais acessíveis e implantáveis em uma ampla variedade de plataformas.

  • 00:05:00 Nesta seção, o palestrante discute ONNX e ONNX Runtime, que são ferramentas que permitem a IA interoperável. O ONNX permite a transferência de modelos entre diferentes estruturas de aprendizado profundo, como PyTorch e Tensorflow, sem exigir conhecimento de cada estrutura. O ONNX Runtime, fornecido pela Microsoft, é um mecanismo de inferência que pode aproveitar aceleradores personalizados para acelerar modelos durante o estágio de inferência. Ele é capaz de atingir uma variedade de plataformas de hardware e não exige que o usuário crie seu próprio mecanismo de inferência em C++.

  • 00:10:00 Nesta seção, os palestrantes discutem os benefícios do uso do formato ONNX para modelos de aprendizado de máquina e a interoperabilidade que ele oferece para diferentes estruturas de treinamento. Eles explicam o pipeline para desenvolver algoritmos de aprendizado profundo, convertendo-os no formato ONNX e usando o mecanismo de inferência de tempo de execução ONNX para executar o modelo em diferentes plataformas e linguagens de programação. Os alto-falantes também apresentam gráficos de desempenho que mostram uma melhoria significativa no desempenho dos algoritmos ao usar o ONNX runtime, em comparação com outros frameworks como PyTorch e scikit-learn. Por fim, Marco assume e fala sobre o uso do mecanismo de tempo de execução ONNX na programação C++.

  • 00:15:00 Nesta seção, o palestrante fala sobre sua experiência com a interoperabilidade entre frameworks de aprendizado de máquina e apresenta o projeto ONNX como um esforço importante para atingir esse objetivo. Eles mencionam que não tiveram muitos problemas de conversão ao converter modelos entre estruturas, mas o principal problema surge quando um operador não é suportado no formato ONNX ou no formato ONNX Runtime. O palestrante também responde a uma pergunta sobre problemas de conversão e explica que operadoras não suportadas pelo ONNX podem causar problemas na conversão.

  • 00:20:00 Nesta seção, os palestrantes discutem sua experiência com a conversão do TensorFlow para ONNX e mencionam que não viram muitos problemas de conversão. Eles também discutem a depuração e a solução de problemas quando se trata de manipular tensores em C++ e mencionam o uso de outras bibliotecas, como extensor ou Python, para fazer isso. Eles apresentam o ponto de entrada para ONNX, onx.ai, que permite aos usuários selecionar sua arquitetura e linguagem de programação desejadas e demonstram o uso de ONNXRuntime em C++. Eles mencionam que o código é o mesmo para a GPU, sendo a única diferença a biblioteca vinculada.

  • 00:25:00 Nesta seção, o apresentador mostra uma demonstração do uso do ONNXRuntime para carregar, inspecionar e executar inferência em um modelo. Ele começa criando um ambiente para a API subjacente, com recursos opcionais, como personalização de log ou encadeamento. Ele então cria uma sessão que representa a inferência a ser executada em um determinado modelo, que pode ser carregado de um caminho ou de um fluxo de bytes. Ele demonstra como usar um alocador para inspecionar as informações do modelo, como o número e os nomes das entradas e saídas. Ele observa que esta demonstração mostra a biblioteca bruta e que, em situações da vida real, um wrapper seria usado para evitar o gerenciamento de strings e outras complexidades.

  • 00:30:00 Nesta seção, o palestrante discute um modelo de regressão linear simples e como passar uma entrada para a rede sem copiar dados usando uma API externa chamada CreateTensor. O palestrante enfatiza a importância de ir para c api abaixo da c++ api quando a documentação não é clara. Além disso, eles discutem as várias opções disponíveis ao executar a sessão de inferência, incluindo recuperação de saída parcial e personalização de nomes de saída. Finalmente, eles observam que os valores de saída são armazenados em um vetor e são os mesmos tensores alocados anteriormente.

  • 00:35:00 Nesta seção, o palestrante discute o acesso a dados em C++ usando a função get tensor mutable data e a necessidade de especificar o tipo que está sendo usado devido ao apagamento de tipo. O exemplo fornecido mostra como imprimir valores na saída padrão usando este método. O palestrante também menciona a necessidade de ter cuidado com a alocação de tensores e buffers de saída e como usar buffers de saída pré-alocados. A discussão passa então para a execução de um modelo linear com um provedor de execução de GPU usando o pacote Microsoft ML ONNXRuntime GPU como a opção padrão para executar o ONNXRuntime na CPU. Por fim, o palestrante apresenta brevemente dois projetos de demonstração para redes de visão: um classificador chamado ResNet e um detector chamado MobileNet. O código de demonstração é semelhante ao exemplo anterior, e o palestrante destaca o pré-processamento e o pós-processamento envolvidos nessas redes.

  • 00:40:00 Nesta seção, o apresentador demonstra como usar o ONNXRuntime para criar o perfil de execução de uma rede neural usando um timer externo. Ao adicionar uma opção de profiling durante a criação da sessão, o ONNXRuntime pode produzir um arquivo JSON que contém o tempo de execução gasto em cada fase e a explosão de todos os operadores no grafo que foram executados. Essa ferramenta pode fornecer detalhes adicionais, como se o modelo está sendo executado na CPU ou na GPU, ou se está sendo executado sequencialmente ou em paralelo. A criação de perfil pode ajudar a ajustar a execução de uma rede e verificar se ela está sendo executada em outro acelerador.

  • 00:45:00 Nesta seção, o palestrante demonstra o impacto da otimização no tempo de carregamento e no tempo de execução de um modelo usando ONNX e ONNXRuntime em C++. Desativar a otimização resulta em um tempo de execução significativamente maior, enquanto ativá-la leva a um tempo de carregamento mais longo. No entanto, é possível salvar uma versão otimizada do modelo que equilibre a otimização e o tempo de carregamento. O palestrante mostra ao público como otimizar o modelo usando diferentes opções disponíveis e salvá-lo. Além disso, o palestrante aborda brevemente a execução paralela e demonstra como ela pode reduzir significativamente o tempo de processamento de um lote de imagens.

  • 00:50:00 Nesta seção, o palestrante discute a execução de imagens sequenciais e a contenção no pool global de threads, causando maior tempo de execução para cada imagem. Eles também mencionam o uso de uma ferramenta de criação de perfil para refinar as medições de tempo para entradas únicas e a explosão de todos os operadores executando por imagem. O palestrante explica o uso da biblioteca Extensor para manipulação de tensor, semelhante ao numpy para Python, usado para pré-processamento de imagens em um classificador ResNet mais simples. A distinção ONNX Runtime para níveis básico, intermediário e avançado também é mencionada, com recursos avançados como operadores personalizados, arenas de memória e alocadores. Suporte comercial e exemplos de Python também são discutidos, com links para demonstração e slides fornecidos.

  • 00:55:00 Nesta seção, os apresentadores discutem um benchmark que realizaram em algoritmos de detecção de objetos, com foco em detectores de um estágio que são úteis para dispositivos embarcados. Eles compararam FPGA, GPUs e CPUs e descobriram que os dispositivos NVIDIA, CPUs Intel Core E7 e FPGAs eram as melhores plataformas para determinados tipos de operações. Eles também mencionaram que há algum suporte para modelos de treinamento em ONNX, embora apenas em Python. Quando perguntados se considerariam usar o ONNXRuntime na produção, eles afirmaram que já o estão usando em testes e na transição para produção. Eles observaram que a Microsoft também o está usando em muitos projetos, incluindo o Windows ML, e que está em desenvolvimento há três anos.
 

Acelerando o Machine Learning com ONNX Runtime e Hugging Face



Acelerando o Machine Learning com ONNX Runtime e Hugging Face

O vídeo "Acelerando o aprendizado de máquina com ONNX Runtime e Hugging Face" discute a criação da biblioteca Optimum do Hugging Face, que se concentra na aceleração de modelos de transformadores desde o treinamento até a inferência, aplicando facilmente o tempo de execução ONNX. A biblioteca simplifica a ponte entre a biblioteca do transformador e a aceleração de hardware, criando um kit de ferramentas fácil de usar para desempenho de produção. Ao aplicar as otimizações fornecidas pelo ONNX Runtime, os usuários podem se beneficiar de toda a aceleração de hardware, resultando em pipelines de inferência mais rápidos. Uma colaboração dentro da comunidade Hugging Face está permitindo a otimização do modelo de sequência a sequência usando essas classes de pipeline de inferência acelerada, e um exemplo de ponta a ponta mostrou que o uso da Optimum Library pode resultar em um aumento de 44% na taxa de transferência ou diminuição da latência enquanto conserva 99,6% da precisão do modelo original.

  • 00:00:00 Nesta seção, Jeff, da Hugging Face, discute o objetivo da empresa de tornar a potência dos modelos de transformadores acessíveis a todas as empresas do mundo por meio de ferramentas e modelos pré-treinados prontamente acessíveis. Ele explica que o aprendizado por transferência e a atenção são tudo o que você precisa O papel mudou o campo do aprendizado de máquina, alcançando um desempenho inovador em tarefas de processamento de linguagem natural e produzindo resultados de ponta em todas as modalidades de aprendizado de máquina. Jeff apresenta a biblioteca Optimum, projetada para acelerar modelos de transformadores aplicando facilmente o tempo de execução ONNX, tornando mais fácil para engenheiros e desenvolvedores de software usar esses modelos na produção.

  • 00:05:00 Nesta seção, o palestrante discute a criação da biblioteca Hugging Face Optimum, focada na aceleração de modelos de transformadores desde o treinamento até a inferência. A biblioteca oferece um kit de ferramentas de referência para aceleração de hardware com APIs de alto nível dedicadas ao desempenho da produção. O pacote Onnx Runtime dentro do Optimum fornece integração nativa do DeepSpeed, uma forma de acelerar o treinamento. A Optimum também oferece o Ort Optimizer para simplificar os modelos de gráfico, o Rt Quantizer para otimizar pesos e visa provedores de execução específicos para aproveitar as otimizações específicas de hardware. No geral, o Optimum simplifica a ponte entre a biblioteca de transformadores e a aceleração de hardware, criando um kit de ferramentas fácil de usar para desempenho de produção.

  • 00:10:00 Nesta seção, o palestrante fala sobre a otimização de modelos de aprendizado de máquina usando o ONNX Runtime e a biblioteca de otimização do Hugging Face. Ao alternar de Auto Model for Task para RT Model for Task, os usuários podem facilmente aplicar as otimizações fornecidas pelo ONNX Runtime e se beneficiar de toda a aceleração de hardware, resultando em pipelines de inferência mais rápidos. A comunidade Hugging Face também está colaborando para permitir a otimização do modelo de sequência a sequência usando essas classes de pipeline de inferência acelerada. O exemplo completo descrito na postagem do blog mostra que o uso da Biblioteca Optimum pode resultar em um aumento de 44% na taxa de transferência ou diminuição da latência enquanto conserva 99,6% da precisão do modelo original.
 

Acelerando a inferência de ML em escala com ONNX, Triton e Seldon | PyData Global 2021



Acelerando a inferência de ML em escala com ONNX, Triton e Seldon | PyData Global 2021

No vídeo "Acelerando a inferência de ML em escala com ONNX, Triton e Seldon | PyData Global 2021", Alejandro Saucedo, da Seldon Technologies, discute os desafios de dimensionar a inferência de aprendizado de máquina e como usar ONNX e Triton para otimizar e produzir modelos. Usando o modelo TensorFlow GPT-2 como caso de uso, a sessão abrange o pré-processamento, a seleção de tokens ideais e a implantação do modelo usando o Tempo e o servidor de inferência Triton. Saucedo enfatiza a necessidade de abstrair as complexidades da infraestrutura e facilitar a fácil implantação, garantindo a reprodutibilidade e a conformidade. A palestra termina com colaborações com projetos de código aberto para treinamento de ponta a ponta e componentes de implantação.

  • 00:00:00 Nesta seção, Alejandro Saucedo apresenta a si mesmo e sua empresa, Seldon Technologies, que se concentra na implantação e monitoramento de aprendizado de máquina. Ele explica que a sessão abordará o desafio de acelerar a inferência de aprendizado de máquina em escala, adotando uma abordagem prática, usando o modelo GPT-2 TensorFlow como caso de uso. O objetivo é otimizar o modelo usando ONNX e testá-lo localmente usando uma ferramenta chamada Tempo antes de produzi-lo no Kubernetes. O foco principal é abstrair as complexidades subjacentes da infraestrutura para que os profissionais de ciência de dados possam se concentrar no lado da ciência de dados. Saucedo também explica o que é GPT-2 e suas aplicações, observando que é um modelo relativamente complexo que requer uma quantidade significativa de computação para treinamento e inferência.

  • 00:05:00 Nesta seção do vídeo, o palestrante discute o uso de modelos pré-treinados, especificamente GPT-2, e como eles podem ser aproveitados para vários aplicativos, como jogos e geração de código. O palestrante explica como usar a biblioteca Hugging Face para buscar o modelo GPT-2 pré-treinado e discute os componentes do modelo, incluindo o tokenizador e o modelo principal, que são usados para pré-processamento e inferência. O orador, em seguida, percorre um exemplo de pré-processamento de uma frase legível por humanos usando o tokenizer e usando a função de geração para prever 20 tokens. Por fim, o palestrante explica o fluxo de trabalho subjacente da função de geração, que executa a inferência várias vezes para o modelo e como converter a saída legível por máquina de volta para o formato legível por humanos usando o decodificador do tokenizador.

  • 00:10:00 Nesta seção, o palestrante explica o processo de seleção do token ideal para um modelo e os desafios que os profissionais enfrentam ao dimensionar o modelo. Os desafios incluem a necessidade de hardware especializado, dependências complexas entre componentes e a necessidade de reprodutibilidade e conformidade. O palestrante apresenta o formato ONNX, que é amplamente adotado na indústria e permite a transformação de modelos Python ou PyTorch em um formato padronizado para servidores otimizados para leitura e modificação para desempenho ideal. No entanto, a conversão para ONNX não é necessária e os profissionais ainda podem implantar seus modelos diretamente. O palestrante também apresenta a estrutura Tempo, que simplifica o processo de implantação e dimensionamento de modelos.

  • 00:15:00 Nesta seção, o palestrante discute como produzir o modelo usando Tempo e o servidor de inferência Triton. A primeira etapa é definir um wrapper Tempo para o modelo GPT-2 e, em seguida, executar o modelo otimizado no servidor otimizado da Nvidia. Em seguida, uma lógica de transformador personalizada deve ser definida para converter tokens legíveis por máquina em strings legíveis por humanos, permitindo que os usuários interajam com o modelo de maneira fácil e simples. Depois de testar o modelo no Docker localmente, ele pode ser implantado na pilha do Kubernetes com um simples comando. O código para definir o wrapper é mostrado e o palestrante explica que esse método permite que diferentes tipos de frameworks de modelo sejam usados, tornando-o uma ferramenta versátil para produção de inferência de ML.

  • 00:20:00 Nesta seção, o palestrante discute como criar uma lógica de transformador personalizada usando modelos PyTorch com ONNX e Triton. Primeiro, a transcrição explica como enviar tokens por meio dessa lógica personalizada, usando a conversão de string e a função de previsão. O palestrante explica como carregar artefatos do modelo GPT2 e definir a função de previsão como um ponto de extremidade REST, antes de iterar pelos tokens e gerar a resposta. A principal conclusão é que, ao passar tokens pelo modelo e iterar por várias execuções, podemos retornar uma string dessa infraestrutura complexa. Além disso, o palestrante menciona que essa abordagem pode ser implantada facilmente no Kubernetes por meio da função de implantação remota.

  • 00:25:00 Nesta seção, o palestrante discute a aceleração do aprendizado de máquina em escala, focando especificamente na otimização de um modelo GPT-2 TensorFlow com ONNX e executando-o com Triton usando Docker e, em seguida, implantando-o no Kubernetes seguindo as práticas recomendadas. O objetivo é minimizar o vazamento da infraestrutura subjacente e garantir uma implantação confiável com o mínimo de esforço. O palestrante também menciona suas colaborações com as equipes Tempo e Metaflow para fornecer componentes de implantação e treinamento de ponta a ponta em projetos de código aberto. A palestra termina com uma sessão de perguntas e respostas.
Razão: