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

 

AI Show Live - Episódio 62 - Inferência Multiplataforma com o ONNX Runtime



AI Show Live - Episódio 62 - Inferência Multiplataforma com o ONNX Runtime

No episódio "Multiplatform Inference with the ONNX Runtime" do AI Show Live, os apresentadores mostram como implantar um modelo de super resolução e um modelo de detecção de objetos em várias plataformas usando a estrutura ONNX Runtime. Eles discutem as etapas de pré-processamento e pós-processamento para plataformas móveis e da web, demonstram os benefícios de usar uma única solução, explicam o processo de conversão de um modelo PyTorch em um modelo ONNX e mostram como pré-processar dados para inferência com o ONNX Tempo de execução. Além disso, eles demonstram a implementação do modelo de processamento de linguagem natural BERT usando o Onnx Runtime em C#. Os modelos de código e open-source estão disponíveis para customização para as soluções dos usuários.

Na segunda parte do AI Show Live, os apresentadores abordam uma variedade de tópicos relacionados à execução de inferência com o ONNX Runtime. Eles demonstram o processo de classificação de texto usando um exemplo dos exemplos de inferência ONNX e exploram a instalação de pacotes e ferramentas necessárias para construir modelos de classificação BERT em C#. Eles também discutem o uso do IntelliCode com o VS 2022 e percorrem as etapas de preparação para a inferência do modelo, incluindo a criação de tensores, a configuração da sessão de inferência do ONNX Runtime e o pós-processamento da saída. Além disso, eles abordam a importância de consultar a documentação do modelo e selecionar o tokenizador correto para obter resultados precisos.

  • 00:00:00 Nesta seção do AI Show Live, a apresentadora Cassie Breviu apresenta os convidados especiais Victor, Kalia e David, estagiários da equipe ONNX Runtime, que apresentarão um projeto sobre como implantar um modelo de super resolução e um modelo de detecção de objetos em dispositivos móveis e web usando o framework ONNX Runtime. O projeto visa melhorar a detecção de objetos em imagens por meio de saída de super resolução, demonstrando a capacidade do ONNX Runtime para implantação multiplataforma.

  • 00:05:00 Nesta seção, os anfitriões apresentam um projeto que usa React Native e Expo para criar um aplicativo que pode ser implantado em diferentes plataformas para dispositivos móveis e web. Eles explicam que o uso do recurso de módulos nativos do React Native permite a implementação de funções e modelos em outras linguagens como C++ e Java, que podem ser usadas no código JavaScript. Esse recurso permite que eles escrevam funções de pré-processamento em uma linguagem diferente, como a função get pixels escrita em Java, para lidar melhor com os dados, facilitando a obtenção dos dados de pixel de uma imagem para seus modelos de aprendizado de máquina.

  • 00:10:00 Nesta seção do vídeo do YouTube, o palestrante discute as etapas de pré-processamento e pós-processamento de um aplicativo móvel que usa um modelo de super resolução. Ao contrário de outros modelos que trabalham com valores RGB, este modelo só funciona com o componente de luminância (Y) de uma imagem. Portanto, o palestrante mostra como converter uma imagem RGB em uma imagem YCbCr para extrair o componente Y. O palestrante também demonstra como carregar o modelo no ambiente móvel usando o formato ONNX Runtime, que fornece uma construção otimizada e de tamanho reduzido para aplicativos móveis e da web. Finalmente, a etapa de pós-processamento é realizada para processar a saída do modelo.

  • 00:15:00 Nesta seção do vídeo, o anfitrião e o convidado demonstram a função de pós-processamento que recebe uma matriz de seu modelo e altera o YCbCr de volta para RGB. Eles então usam a função de um modelo nativo para obter a fonte da imagem para exibição. O pré-processamento e o pós-processamento em linguagens não Python tendem a ser a parte mais difícil ao operacionalizar e inferir modelos em outras linguagens. Eles mostram uma demonstração em que o modelo é implantado localmente em um dispositivo móvel e, posteriormente, reutilizam o código para implantar o mesmo modelo em um navegador da web. Um espectador pergunta se o mesmo pode ser feito em C#, ao que o convidado acredita ser possível.

  • 00:20:00 Nesta seção, Kalia demonstra as diferenças no pré e pós-processamento para executar o modelo na web versus plataformas móveis. Na web, a tela fora da tela e a API Canvas são usadas para obter os dados da imagem, enquanto no celular não há necessidade de alternar entre as APIs. Uma vez que a tela fora da tela desenha a imagem, a função de pré-processamento ajusta os dados da imagem para o canal y, que o modelo de super-resolução usa. A função de pós-processamento então converte os dados do formato y cbcr para rgb para que possam ser exibidos em uma tela. O código de Kalia para as funções de pré e pós-processamento pode ser usado em Java, C# ou React.

  • 00:25:00 Nesta seção do vídeo, os apresentadores discutem os benefícios de usar uma única solução para vários dispositivos, como o ONNX Runtime. Eles demonstram como executar um modelo móvel em uma plataforma da Web e as vantagens da inferência no dispositivo, incluindo economia e privacidade. Os apresentadores também explicam o processo de conversão de um modelo PyTorch em um modelo ONNX e depois em um formato ONNX Runtime. Por fim, eles apresentam o aspecto de detecção de objetos do projeto e explicam como usaram o ONNX Runtime para detectar objetos nas imagens.

  • 00:30:00 Nesta seção do vídeo, o apresentador discute os detalhes do modelo usado em seu projeto, que é um modelo de IA de detecção de objetos que utiliza super resolução para aumentar a precisão da detecção geral. Eles explicam as diferenças no pré-processamento e pós-processamento entre seu modelo e o modelo discutido anteriormente e detalham as quatro saídas de seu modelo, incluindo localização, classes, pontuação e número de detecções. Além disso, eles mostram como utilizaram a ferramenta Netron para analisar e detalhar seu modelo e como ajustaram o pré-processamento para manter os valores RGB consistentes para que o modelo detectasse objetos com precisão.

  • 00:35:00 Nesta seção, o apresentador demonstra a execução de um modelo em uma foto pré-super resolução e mostra os resultados da detecção do objeto, que identifica com precisão o cachorro na foto. O uso do modelo de super resolução aprimora a imagem e leva a uma caixa de detecção mais precisa e menor. Isso demonstra a portabilidade e o uso prático do ONNX Runtime e mostra os recursos de execução do modelo em um modelo otimizado no dispositivo. Os modelos de código e código aberto também estão disponíveis para os usuários acessarem e personalizarem para suas próprias soluções.

  • 00:40:00 vendo nesta seção é uma demonstração do modelo de processamento de linguagem natural BERT usando Onnx Runtime em C#. O anfitrião explica que, embora haja muitos exemplos de uso de BERT em Python, eles preferiram usar C#. Eles começaram com o modelo BERT básico sem caixa antes de passar para um exemplo dos documentos do Onnx Runtime para responder a perguntas. Com a API de transformadores Hugging Face, eles conseguiram pegar facilmente o modelo pré-treinado e exportá-lo para o formato Onnx. Em seguida, eles mostram como fornecer as entradas do modelo e executá-lo usando o Onnx Runtime em C#.

  • 00:45:00 Nesta seção, o palestrante discute a etapa de pré-processamento do modelo, onde o texto é tokenizado. Eles mostram como os eixos dinâmicos são usados para permitir diferentes comprimentos de entrada e como eles usam o tokenizer para pré-processar a entrada em C sustenido. Eles também apresentam o Boat Tokenizer, um projeto de código aberto que permite tokenizar o modelo BERT em C sharp, o que não é possível com o pacote de transformadores baseado em Python. A entrada codificada é retornada como IDs de entrada, que são os diferentes tokens anexados a diferentes palavras no modelo.

  • 00:50:00 Nesta seção, o apresentador discute a implementação de modelos BERT em C# criando um aplicativo de console. Eles explicam que usar um aplicativo de console é útil ao experimentar diferentes implementações de modelos C# e pode ser integrado a um aplicativo de produção, se necessário. O apresentador demonstra como usar a tokenização para obter os tokens reais de uma frase e como codificar a entrada com os IDs associados aos tokens. Eles também mostram os grandes vocabulários usados e como eles são transformados em objetos para serem usados na tokenização.

  • 00:55:00 Nesta seção, o apresentador discute como pré-processar dados e prepará-los para inferência com o ONNX Runtime. Eles demonstram como converter dados em tensores, que são necessários para o processo de inferência, e como criar uma lista de objetos de valor ONNX nomeados para passar para a sessão de inferência. Eles também mencionam a importância de definir rótulos corretos para os dados de entrada. No geral, eles fornecem dicas úteis para trabalhar com o ONNX Runtime e preparar dados para inferência de aprendizado de máquina.

  • 01:00:00 Nesta seção, o locutor executa os valores de inferência e obtém os logits de início e fim. Os resultados são retornados na ordem do índice dos rótulos. Para obter a resposta prevista, o valor máximo e o índice do valor máximo dos logits inicial e final precisam ser obtidos primeiro. Os nomes de saída são mostrados e os valores de token codificados podem ser vistos, que são usados para comparar se os tokens estão corretos. O palestrante também demonstra o processo de conversão do código de inferência Python em C# para a operacionalização de modelos. Por fim, eles sugerem experimentar mais modelos, converter o código de inferência do Python em C# e ajustar os modelos.

  • 01:05:00 Nesta seção do vídeo, o apresentador explora a classificação de texto usando o ONNX runtime e um exemplo dos exemplos de inferência do ONNX, que é um bom recurso para encontrar exemplos de como usar o ONNX. O exemplo usa um tokenizer de Hugging Face e uma versão menor e destilada do tokenizer de base encapsulada. O host define o caminho com base no nome do modelo e, em seguida, define as entradas para o modelo, que possui eixos dinâmicos devido ao comprimento variável da frase. As entradas para o modelo de classificação de texto são ids de entrada e a máscara de atenção. O host menciona que existem extensões sendo desenvolvidas para ONNX e que a nova versão do runtime suporta .NET six e Maui. Embora o exemplo de pré-processamento para o modelo não esteja prontamente disponível, o host planeja usar o Netron para descobrir.

  • 01:10:00 resumir esta seção. Nesta seção do vídeo, o palestrante renomeia o modelo anterior de forma menos informativa e adiciona classificação de texto a ele. Eles criam um novo projeto usando C# e .NET 6 e explicam o novo recurso de ter um modelo de console com script simples. O palestrante copia e cola algum código do projeto anterior no novo e adiciona a entrada BERT, que agora possui apenas duas saídas. O locutor reconhece que deve criar um arquivo separado para essa entrada, mas opta por criar um script.

  • 01:15:00 Nesta seção, o palestrante está discutindo a instalação de vários pacotes e ferramentas para construir modelos de classificação Burp em C#. Eles instalam o pacote tokenizer necessário e os pacotes de tempo de execução ONNX, juntamente com o pacote gerenciado. Os pacotes de atributos desnecessários são comentados e o locutor adiciona uma frase de entrada e tokenizador para obter os tokens para codificação. O palestrante também menciona o VS 2022 IntelliCode, que usa o modelo GPT-2 para treinar na base de código e é executado localmente.

  • 01:20:00 Nesta seção do vídeo, o apresentador fala sobre o uso do Intellicode (anteriormente conhecido como Intellisense) com o VS 2022, que é uma ferramenta baseada em IA que pode aprender a partir de uma base de código existente. Eles então passam a trabalhar com o tokenizador e o valor codificado para uma frase. Eles também discutem o caminho do modelo e como colar o modelo em um aplicativo de console para fins experimentais, embora existam maneiras melhores de lidar com isso para um aplicativo de produção. Finalmente, o apresentador cria uma sessão de inferência para o modelo BERT.

  • 01:25:00 Nesta seção do vídeo, os apresentadores percorrem as etapas necessárias para se preparar para executar uma inferência usando o ONNX Runtime. Eles começam criando tensores e convertendo-os em um tensor. Eles então criam uma entrada usando IDs de entrada e uma máscara de atenção e uma lista de listas de listas. Depois de criar um valor ONNX nomeado, eles executam o modelo e discutem as opções para configurar a sessão de inferência ONNX Runtime, incluindo diferentes otimizações de gráfico e provedores de execução. Por fim, eles recuperam a saída, que neste caso possui apenas um valor.

  • 01:30:00 Nesta seção da transcrição, o palestrante está passando pelo código para usar um modelo com o ONNX Runtime. Eles estão explicando como nomearam os rótulos para serem os mesmos para usar o modelo ONNX e como podem executar um teste de sanidade para ver se tudo funciona. Eles definem um ponto de interrupção para percorrer o código e verificar se a entrada, a máscara de atenção e os IDs estão corretos. Assim que a entrada estiver correta, eles carregam o modelo, criam seu tensor, sessão e inferência. Em seguida, eles explicam que precisam pós-processar para descobrir como transformar isso de volta em um resultado e foram encontrar algum código de pré-processamento.

  • 01:35:00 Nesta seção do vídeo, o palestrante discute o processo de processamento de dois valores obtidos de um modelo de classificação para determinar o sentimento positivo e negativo de uma determinada frase. Eles demonstram o uso de um tokenizer para tokenizar a sentença e obter seus tokens, que eles usam para confirmar sua compreensão de como executar o processo em C#. Eles também mencionam a importância de consultar a documentação do modelo e selecionar o tokenizador correto para garantir uma tokenização precisa.

  • 01:40:00 Nesta seção, os anfitriões do AI Show Live discutem o projeto Optimum da Hugging Face que implementa otimizações para aprendizado de máquina, incluindo aceleradores para treinamento e diferentes integrações de hardware usando o tempo de execução ONNX no back-end. Os hosts também revisam as etapas de pré-processamento para o tokenizer e criam a sessão para o modelo de classificação de texto. Eles exploram a versão codificada de uma frase e reutilizam algum código escrito anteriormente para criar a sessão para seu modelo.

  • 01:45:00 Nesta seção, o apresentador se prepara para a inferência do modelo exportando o modelo e processando os dados de entrada. Eles confirmam que o tokenizer correto foi usado para tokenizar os dados de entrada executando uma verificação de sanidade dos tokens codificados. No entanto, eles descobrem que a máscara de entrada está faltando e voltam para examinar o modelo e o código para identificar o problema. Apesar da incerteza em torno do tokenizador usado, eles confirmam que os tokens codificados estão corretos e procedem à geração da máscara de entrada.

  • 01:55:00 Nesta seção do vídeo, o apresentador tenta configurar as entradas e saídas para executar o modelo. Eles encontram alguns problemas com a máscara de entrada e a máscara de atenção e, finalmente, percebem que podem simplesmente pegar os tokens e enviá-los sem ter que fazer nenhum processamento extra. Eles então mudam seu foco para a entrada do modelo, que é um pouco mais complicada, pois requer duas entradas e precisa especificar a forma do lote. O apresentador usa o ONNX Runtime para configurar as entradas e saídas e testa-o para ver se produz os mesmos resultados que o modelo C#.
 

Machine Learning Aplicado com ONNX Runtime



Machine Learning Aplicado com ONNX Runtime

Jennifer Looper, Principal Education Cloud Advocate da Microsoft, discute a convergência de criação de aplicativos, aprendizado de máquina e ciência de dados neste vídeo. Ela recomenda a criação de aplicativos inteligentes para a Web e explora várias APIs JavaScript, incluindo ml5.js, Magenta.js, PoseNet e Brain.js, para incorporar tecnologia de aprendizado de máquina em aplicativos. Looper enfatiza a utilidade do scikit-learn para aprendizado de máquina clássico e o recomenda como uma ferramenta poderosa sem a solução pesada de redes neurais. Ela também discute o Onnx Runtime, que otimiza o treinamento e a inferência definindo um conjunto comum de operadores para construir modelos de aprendizado de máquina e aprendizado profundo, e obtém dados do Kaggle para explicar o processo de execução de uma tarefa de classificação básica usando aprendizado de máquina supervisionado. O palestrante demonstra como criar um mecanismo de recomendação usando modelos de aprendizado de máquina e sugere visitar os recursos online da Microsoft para aprender mais sobre aprendizado de máquina. Ela conclui que o Onnx Runtime é adequado para iniciantes como parte de seu currículo ou para quem deseja aprender mais sobre aprendizado de máquina.

  • 00:00:00 Nesta seção, Jen Looper, Principal Education Cloud Advocate da Microsoft, discute a convergência entre a criação de aplicativos, o aprendizado de máquina e a ciência de dados. Ela explica os desafios de criar aplicativos móveis hoje, especialmente em face de novos aplicativos que são infundidos com inteligência e executam algoritmos de aprendizado de máquina em segundo plano. Looper afirma que essa nova demanda por experiências inteligentes contribuiu primeiro para os desafios enfrentados pelos desenvolvedores de aplicativos independentes.

  • 00:05:00 Nesta seção, o palestrante discute como criar aplicativos inteligentes e quais decisões arquitetônicas e pilha técnica orientariam esse processo. As opções incluem criar um aplicativo nativo, criar para a Web ou criar para a área de trabalho. O palestrante recomenda manter a Web para criar aplicativos inteligentes e explica que, apesar das diferenças nos conjuntos de habilidades entre desenvolvedores da Web e engenheiros de aprendizado de máquina, existem maneiras de convergir esses campos. O palestrante ilustra a colaboração entre desenvolvedores e engenheiros de aprendizado de máquina, citando o uso de devops, fornecimento e limpeza de dados, treinamento e iteração, bem como a equipe ML Ops que garante a entrega precisa e a melhoria contínua dos modelos de aprendizado de máquina.

  • 00:10:00 anedotas pessoais, o palestrante explica como transpor divisões na engenharia de aprendizado de máquina e na criação de aplicativos da web pode ser menos assustador do que superar o medo de pontes. O palestrante apresenta várias ferramentas para incorporar a tecnologia de aprendizado de máquina em aplicativos da web, incluindo TensorFlow.js, Brain.js e ONNX. Ela destaca os benefícios de cada ferramenta e incentiva os espectadores a explorar o site do TensorFlow para descobrir as demonstrações legais que eles oferecem. Ela também se concentra no ONNX Runtime e em sua capacidade de trazer modelos baseados em ONNX para aplicativos da web. No geral, o palestrante visa fornecer aos desenvolvedores de aplicativos o conhecimento das ferramentas disponíveis para aprimorar seus aplicativos com a tecnologia de aprendizado de máquina.

  • 00:15:00 Nesta seção do vídeo, o palestrante discute várias APIs Javascript que podem ser usadas com modelos pré-treinados para explorar e criar inteligência artificial no navegador. Um deles é o ml5.js, que é construído sobre o Tensorflow e fornece exemplos de reconhecimento de imagem e análise de som. Outra API citada é a Magenta.js que utiliza modelos pré-treinados para criar músicas e arte no navegador. O palestrante também fala sobre o PoseNet, que pode ser usado para estimar poses únicas ou múltiplas para todo o corpo, rosto ou apenas a mão. Por fim, o palestrante apresenta o Brain.js, que permite que redes neurais sejam executadas em Javascript em navegadores e Node.js.

  • 00:20:00 Nesta seção, o palestrante discute as limitações do uso do JavaScript e do navegador para treinar modelos de aprendizado de máquina, sugerindo que não é um ótimo ambiente para esse fim e é mais adequado para executar modelos de prateleira ou retreinar os existentes. Eles recomendam que, para modelos de aprendizado de máquina mais robustos e adequados, o Python seja o caminho a seguir, e os programadores podem aprender Python o suficiente para serem perigosos e trabalhar com Jupyter Notebooks para treinar seus modelos. Eles também discutem o uso de serviços como loeb.ai para treinamento em imagens e outras mídias.

  • 00:25:00 Nesta seção, o palestrante discute uma alternativa ao uso do TensorFlow para aprendizado de máquina, scikit-learn. O palestrante explica que nem todos os problemas de aprendizado de máquina requerem redes neurais e criaram um currículo no GitHub que não usa redes neurais. Eles também mostram como usaram o scikit-learn para criar um aplicativo de recomendação de culinária, alimentado por um tempo de execução ONNX, permitindo que os usuários insiram ingredientes e recebam sugestões de um tipo de culinária que possam fazer com esses ingredientes. O palestrante enfatiza a utilidade do scikit-learn para aprendizado de máquina clássico e o recomenda como uma ferramenta poderosa sem a solução pesada de redes neurais.

  • 00:30:00 Nesta seção do vídeo, o palestrante apresenta o scikit-learn, uma estrutura de aprendizado de máquina de código aberto que fornece exemplos e documentação para tarefas básicas de aprendizado de máquina, como classificação, regressão e agrupamento. Eles explicam que o scikit-learn é uma estrutura popular entre os cientistas de dados e é acessível a todos, pois vem junto com numpy, scipy e matplotlib. Em seguida, o palestrante discute o Onnx Runtime, um produto do Open Neural Network Exchange (Onnx) que otimiza o treinamento e a inferência definindo um conjunto comum de operadores para a construção de modelos de machine learning e deep learning. O Onnx Runtime oferece suporte a uma variedade de estruturas, ferramentas e tempos de execução e permite que os desenvolvedores de IA usem sua estrutura preferida com o mecanismo de inferência escolhido. O palestrante descreve um fluxo de trabalho típico de aprendizado de máquina que envolve a limpeza de dados usando Python, treinando modelos usando scikit-learn e convertendo modelos para uso com o Onnx Runtime usando a biblioteca skl para Onnx.

  • 00:35:00 Nesta seção do vídeo, o palestrante obtém dados do Kaggle sobre diferentes tipos de culinária e explica como limpar e equilibrar os dados. O conjunto de dados contém 100 ingredientes potenciais classificados como indianos, tailandeses, coreanos, japoneses ou chineses. Para construir o modelo, o palestrante explica que é preciso escolher um algoritmo, um classificador e um solver para otimizar os resultados. O conjunto de dados é pequeno, com apenas cerca de 700 pontos de dados. Os dados são rotulados, o que significa que o aprendizado supervisionado pode ser usado, e o palestrante enfatiza a importância de entender os dados antes de moldá-los e limpá-los para uso em aplicativos de aprendizado de máquina.

  • 00:40:00 Nesta seção, o apresentador discute o processo de execução de uma tarefa de classificação básica usando aprendizado de máquina supervisionado e escolhendo um algoritmo de classificação multiclasse. O apresentador apresenta uma folha de dicas para classificação multiclasse e descarta redes neurais devido à natureza do conjunto de dados e treinamento local. Os dois algoritmos de classificação multiclasse que permanecem são regressão logística e florestas de decisão. O apresentador escolhe a regressão logística e opta por um versus resto para lidar com a classificação multiclasse. O apresentador então explica a importância de escolher o solucionador correto e escolhe o solucionador liblinear. O apresentador treina o modelo usando lr fit e testa sua precisão usando uma receita com coentro, cebola, ervilha, batata, tomate e óleos vegetais, relatando uma precisão de 71%. O apresentador também apresenta a folha de dicas do algoritmo Scikit-learn para auxiliar na seleção de um algoritmo apropriado com base na quantidade de dados e rótulos disponíveis.

  • 00:45:00 Nesta seção, o palestrante discute a importância de escolher o algoritmo de classificação correto ao criar um modelo de aprendizado de máquina. Eles demonstram como experimentaram diferentes classificadores e solucionadores para ver qual deu a melhor precisão. Depois de escolher o Support Vector Classifier (SVC), eles reconstruíram o modelo e testaram sua precisão. Uma vez satisfeitos com a precisão do modelo, eles o converteram em um arquivo Onyx e usaram o tempo de execução do Onyx para criar um aplicativo da web. O palestrante explica como eles criaram um aplicativo da web simples com uma série de caixas de seleção para alimentar dados de ingredientes para um modelo importado e usaram uma função assíncrona para iniciar a inferência. Eles então demonstraram o aplicativo da web e verificaram o que o modelo sugeria.

  • 00:50:00 Esta seção do vídeo demonstra como construir um mecanismo de recomendação usando modelos de aprendizado de máquina. Ao inserir uma lista de ingredientes, o modelo sugere que tipo de culinária alguém pode criar. Além disso, o palestrante convida os espectadores a aprender mais sobre aprendizado de máquina por meio dos recursos online da Microsoft, que oferecem conteúdo gratuito sobre vários tópicos, incluindo clustering, regressão, classificação, aprendizado por reforço, processamento de linguagem natural e aplicativos de séries temporais. O palestrante incentiva os espectadores a fazerem perguntas e se envolverem com o conteúdo do site mycommworld.com.

  • 00:55:00 Nesta seção, é feita a pergunta se o Onnx Runtime é uma boa ferramenta para iniciantes. A resposta é sim, pois um dos palestrantes é um desenvolvedor web autodidata que acredita que qualquer um pode aprender qualquer coisa se se esforçar o suficiente. Portanto, o Onnx Runtime é adequado para iniciantes como parte de seu currículo ou para quem deseja aprender mais sobre aprendizado de máquina.
 

Traga o poder do ONNX para o Spark como nunca aconteceu antes



Traga o poder do ONNX para o Spark como nunca aconteceu antes

Neste vídeo, Shivan Wang da Huawei explica como trazer o poder do ONNX para o Spark para inferência. Ele discute os desafios na implantação de modelos DL no Spark e como a comunidade Spark iniciou uma proposta chamada Spip para simplificar o processo. O palestrante também discute o processador AI da Huawei, o Ascent e o ecossistema Ascent AI, que inclui vários modelos de processadores Ascent e hardware Atlas. Ele sugere adicionar Con como um novo provedor de execução no próximo tempo de execução para usar modelos ONNX diretamente no hardware Ascent, sem a necessidade de tradução de modelo. Por fim, ele menciona que o código POC para trazer o poder do ONNX para o Spark está quase completo e convida os usuários interessados a deixar uma mensagem para discutir e potencialmente fornecer recursos para fins de teste.

  • 00:00:00 Nesta seção, Shivan Wang da Huawei discute como trazer o poder do Onyx para Spark para inferência. Ele explica que a interface de inferência de quadro de dados bem definida é muito amigável para engenheiros de dados, que podem facilmente carregar dados e concluir a engenharia de recursos. No entanto, existem lacunas entre as estruturas de IA e os pré-amostras internos, dificultando a implantação de modelos DL no Spark. Para simplificar o processo, a comunidade Spark iniciou uma discussão sobre uma proposta chamada Spip, que fornecerá uma API simples para tornar o processo de Spark e AI influenciar small cell. Por fim, ao executar a inferência Onyx no executor Spark, os usuários podem concluir facilmente a influência Onyx no Big Data com a ajuda da plataforma de inferência Onyx.

  • 00:05:00 Nesta seção, o palestrante discute o processador AI da Huawei chamado Ascent e o ecossistema Ascent AI, que inclui vários modelos de processadores Ascent e hardware Atlas. A camada de software do ecossistema Ascent é chamada de Cam e fornece APIs para ajudar os desenvolvedores a criar rapidamente aplicativos de IA em serviços baseados na plataforma Ascent. Para executar um modelo ONNX em outro hardware, o usuário deve primeiro usar uma ferramenta de tradução de modelo fornecida pela Con para traduzir o modelo de ONNX para Ascent. No entanto, o palestrante sugere que uma solução melhor é adicionar Con como um novo provedor de execução no próximo tempo de execução, para que os usuários possam usar os modelos ONNX diretamente no hardware Ascent, sem a necessidade de tradução do modelo. Eles planejam terminar todo o suporte do operador ONNX até o final deste ano e garantir que todos os modelos do modelo Zoo ONNX funcionem bem no Ascent, seguidos por mais desenvolvimento no próximo ano.

  • 00:10:00 Nesta seção, o palestrante menciona que o código POC para trazer o poder do ONNX para o Spark está quase completo e as operações básicas, como a operação de adição, podem ser executadas corretamente. Eles também convidam os usuários interessados a deixar uma mensagem para discutir e potencialmente fornecer recursos para fins de teste. A seção termina agradecendo aos espectadores por assistir.
 

Builders Build #3 - Do Colab à produção com ONNX



Builders Build #3 - Do Colab à produção com ONNX

O vídeo ilustra o processo de implantação de um projeto do Colab para produção usando o ONNX. O apresentador aborda vários aspectos, como sinais de pré-processamento, modificação de código para implantação, criação de um manipulador no AWS Lambda, aceitação de entrada de áudio em um site, upload de uma função para S3 e implantação de dependências para ONNX. Apesar de encontrar algumas dificuldades, o palestrante implementa com sucesso seu modelo com a AWS e sugere que eles possam usar um objeto de arquivo base64 de carregamento do navegador ou trechos de leitura de arquivo de som para etapas futuras.

Além disso, o vídeo mostra o uso do modelo SimCLR para aprendizado contrastivo em áudio, criando um catálogo de músicas alimentando-as no modelo e treinando-o com PyTorch para obter perda zero e recuperação em k=1. O apresentador discute os desafios do uso do PyTorch na produção e propõe o ONNX como solução. O vídeo demonstra como exportar e carregar o modelo PyTorch no formato ONNX e executar a inferência. Ele também mostra como processar arquivos de áudio usando as bibliotecas Torch Audio e Numpy e soluciona problemas ao configurar um modelo PyTorch para implantação. O vídeo oferece insights sobre como mudar modelos de desenvolvimento em notebooks Colab para ambientes de produção.

  • 00:00:00 Nesta seção, o palestrante discute uma estrutura simples para aprendizagem contrastiva de representação visual usando o modelo SimCLR, que envolve a amostragem de duas transformações aleatórias de um conjunto de diferentes transformações aplicadas a uma imagem, resultando em duas imagens diferentes (x til i e x til j), que são então passados para um codificador (resnet 50) para dar dois vetores (hi e hj) passados para uma função de projeção (MLP) para retornar duas projeções (zi e zj). O objetivo é maximizar a similaridade do cosseno das duas projeções usando uma perda contrastiva para aprender f e g de modo que a saída das duas projeções do modelo sejam muito próximas. O alto-falante aplica essa estrutura ao áudio, onde a entrada não é uma imagem, mas um sinal transformado em espectrograma, e usa um filtro passa-baixo para alterar a velocidade de reprodução como uma das diferentes transformações.

  • 00:05:00 Nesta seção, o apresentador discute a implementação da perda NT_Xent que foi usada para o modelo, que é uma perda de entropia cruzada que envolve um par de pares positivos e a soma dos pares negativos. Eles também falam sobre trapacear um pouco durante a avaliação, usando os mesmos dados de teste como dados de treinamento e usando a revocação em k como métrica. Finalmente, eles mencionam que encontraram uma implementação da função de perda em um site chamado relâmpago e funcionou bem quando testado em dados fictícios.

  • 00:10:00 Nesta seção, o palestrante explica como construiu um catálogo de músicas inserindo-as no modelo para obter um conjunto de vetores que representam cada música, que foram salvos com seus respectivos títulos, sinais de áudio e representações de índice. Em seguida, eles calcularam as semelhanças tomando o produto escalar das características e do índice do catálogo, normalizaram os vetores e calcularam a recuperação em k para determinar as melhores correspondências. Eles usaram um loop de treinamento normal no PyTorch e adicionaram o otimizador LARS, que ajudou o modelo a convergir para perda zero e alcançar a recuperação em k igual a um, o que significa que previu consistentemente a música correta. Em seguida, o palestrante discute o desafio de usar o PyTorch na produção e apresenta uma solução usando o ONNX, formato que permite integração perfeita com outros frameworks e implantação em diferentes dispositivos.

  • 00:15:00 Nesta seção, o palestrante discute o uso do ONNX, um framework leve para inferência que permite a importação de modelos de outros frameworks como PyTorch e TensorFlow para hospedagem na nuvem. O palestrante pretende construir uma função de manipulador python que aproveitará o ONNX para executar inferência em dados de áudio, obter o espectrograma do áudio, executar o modelo no espectrograma e retornar um objeto JSON com previsões. O palestrante observa que, para usar o ONNX, o modelo precisa ser salvo como uma extensão de arquivo .onnx e explica o processo de exportação do modelo do PyTorch para o ONNX.

  • 00:20:00 Nesta seção, o palestrante explica como exportar um modelo do formato PyTorch para ONNX usando as funções arch.one e x.export. A entrada fictícia permite que o formato ONNX entenda a forma esperada do arquivo de entrada, e os nomes de saída e entrada são especificados usando um dicionário ou objeto JSON. O palestrante fornece um exemplo de exportação de um modelo chamado simclr com o carimbo de data/hora atual, usa parâmetros de exportação para armazenar os pesos dos parâmetros do trem dentro do arquivo de modelo e mostra como adicionar uma função lambda para recuperar o carimbo de data/hora do modelo.

  • 00:25:00 inicia uma nova seção onde o criador do vídeo explora como carregar e executar inferência em um modelo usando ONNX. Eles discutem a criação de uma sessão de inferência e o carregamento do modelo a partir de um caminho de modelo. O criador planeja incorporar o modelo em uma API, mas não tem certeza de como obter o áudio no manipulador. Eles consideram usar uma coisa de base 64 e criam um novo arquivo para testá-lo. Em seguida, eles passam a discutir como executar a inferência sem carregar um modelo e decidem se concentrar nisso.

  • 00:30:00 Nesta seção, o palestrante discute a modificação do código para usar o áudio da tocha em vez de usar um array numpy. O palestrante descobre que pode usar o áudio da tocha e o instala para seguir em frente. Eles então discutem a modificação dos nomes de entrada e saída e chamam a saída de "projeção" para fazer similaridade de cosseno em sua biblioteca. A biblioteca é configurada como um objeto JSON com uma matriz de títulos, uma matriz de formas de onda e uma matriz de projeções que o locutor pretende usar em seus cálculos de similaridade de cosseno.

  • 00:35:00 Nesta seção, o palestrante é visto escrevendo código e explicando o processo em voz alta. Eles escrevem um script para classificar uma lista de músicas em uma biblioteca de música, discutindo várias técnicas, como multiplicação de matrizes, semelhanças e algoritmos de classificação ao longo do caminho. O alto-falante também carrega uma biblioteca JSON e a utiliza no script. O vídeo faz parte de uma série sobre a construção de software desde a colaboração até a produção usando a estrutura ONNX.

  • 00:40:00 Nesta seção, o apresentador demonstra como usar o ONNX para produzir e salvar um catálogo no formato JSON. O catálogo é criado a partir de arrays e o apresentador verifica as formas antes de despejar o catálogo como um arquivo JSON usando a função `dump()`. O erro resultante é resolvido alterando o `catálogo` para uma cópia da `biblioteca`. O apresentador então converte os arrays em listas usando o método `tolist()` e baixa o arquivo JSON. Por fim, o apresentador mostra como carregar o arquivo JSON salvo usando a função `load()`.

  • 00:45:00 Nesta seção, o palestrante discute sua abordagem para processar arquivos de áudio de caminhos de arquivo usando as bibliotecas Torch Audio e Numpy em Python. Eles explicam que baixaram o Torch Audio e usarão seu método de "sinal de pré-processamento" para reamostrar e pré-processar o arquivo de áudio. Eles então usam a função média do Numpy para calcular a média do sinal processado, mantendo as dimensões, seguido pelo preenchimento do sinal usando np.pad. No geral, o palestrante fornece uma explicação clara e concisa de seu método de processamento.

  • 00:50:00 Nesta seção do vídeo, o palestrante está tentando obter um espectrograma de uma forma de onda usando uma função. No entanto, parece haver alguns problemas com a função que não reconhece a taxa de amostragem desejada e resulta em uma mensagem de erro. O alto-falante tenta usar um clipe de teste para solucionar problemas e imprime a forma do espectrograma, que retorna uma saída inesperada. Não está claro o que exatamente está causando os problemas, seja um problema de entrada ou de modelo.

  • 00:55:00 Nesta seção, o palestrante avalia algumas das mensagens de erro que apareceram ao tentar configurar um modelo PyTorch para implantação e identifica problemas com o tamanho do pacote Torch e dependências incompatíveis. Eles observam que um arquivo carregado com Torch Audio se especifica como precisando de mais de 1 GB de memória, potencialmente levando a problemas ao executar modelos com grandes entradas de arquivo. Para resolver isso, eles sugerem carregar arquivos com librosa e substituir Torch Audio ao converter especificações como frequência e carregar arquivos. No geral, esta seção se concentra em destacar alguns dos problemas que podem surgir durante a transição de modelos de desenvolvimento em notebooks Colab para implantação em ambientes de produção.

  • 01:00:00 Nesta seção, o palestrante instala o tocha e o áudio da tocha para continuar construindo o projeto, que ainda tem um tamanho pequeno de menos de 500 megabytes. Eles usam Librosa e reamostragem para garantir que o sinal retorne com a taxa de amostragem original e uma taxa de amostragem de destino. Eles encontram alguns erros ao executar o script e percebem que precisam misturar canais diferentes para garantir que o resultado não seja estranho. Eles continuam a solução de problemas para garantir que o projeto funcione conforme o esperado.

  • 01:05:00 Nesta seção, o alto-falante está trabalhando com pré-processamento de sinal e carregando diferentes canais. Eles encontram um problema em que o sinal tem apenas um canal e precisam expandi-lo mais de uma vez. O alto-falante usa dims numpy e squeeze expand para resolver o problema, confirmando as alterações.

  • 01:10:00 Nesta seção, o palestrante está modificando o código para permitir a implantação da API REST SpeakFluent, que é uma função que trataria de uma solicitação e executaria a inferência. Eles modificam o manipulador para obter uma solicitação que tenha o arquivo de áudio e o nome do arquivo e, em seguida, salvam o arquivo localmente. Eles executam a inferência usando o tempo de execução ONNX sem Torch e, em seguida, retornam a melhor correspondência.

  • 01:15:00 Nesta seção, o palestrante discute o manipulador python de origem para o aplicativo, que atualmente retorna uma matriz de títulos de músicas e seus títulos de melhor correspondência correspondentes. O palestrante também menciona adições futuras ao manipulador que incluirão o retorno do URI para um bucket S3 e a porcentagem de correspondência para a melhor correspondência. O palestrante planeja fazer uma pausa e voltará a criar um manipulador real que pode carregar e implantar em uma função do AWS Lambda.

  • 01:25:00 Nesta seção do vídeo, o apresentador explica como criar um handler no AWS Lambda usando um script e um evento. O manipulador Lambda foi projetado para receber um evento e não uma solicitação, e receberá a parte de áudio do formulário do evento. O apresentador explica que o processo envolve criar um formulário no front-end e obter o ID da entrada de áudio.

  • 01:30:00 Nesta seção do vídeo, um desenvolvedor discute o processo de aceitar entrada de áudio em um site usando Javascript e carregar o arquivo em um servidor para processamento. O desenvolvedor explica que adicionará um botão de gravação ao site e usará o Javascript para criar um arquivo e carregá-lo automaticamente no servidor. Eles então discutem a inferência de chamadas no arquivo carregado e retornam um código de status 200 com um corpo usando JSON.dumps. O desenvolvedor também considera o uso da codificação base64 do áudio em vez de um arquivo para aumentar a eficiência. Eles exploram o processo de execução da inferência ONNX com Python na AWS usando o tempo de execução do Lambda.

  • 01:35:00 Nesta seção, o palestrante discute o processo de upload de uma função para o S3 e a criação de uma nova função do zero para o projeto chamado Diva. O palestrante expressa aborrecimento com o processo, mas passa a criar uma nova função usando o Python 3.9, debatendo sobre a diferença no ARM e também considerando o upload de arquivos diretamente para a função.

  • 01:40:00 Nesta seção, o palestrante explora o painel do Cloud Functions e demonstra como fazer upload de um arquivo zip, alterar formatos de evento para JSON e criar um novo evento. Eles também discutem a necessidade de configurações adicionais para variáveis de ambiente e memória. O alto-falante tenta adicionar uma gravação com áudio base64, mas encontra um problema com as opções disponíveis.

  • 01:45:00 Nesta seção, o palestrante parece estar copiando e colando um grande arquivo JSON e salvando-o como um pacote de implantação do AWS Lambda. Eles mencionam o desejo de usar um método diferente, mas acabam removendo-o e decidem usar o manipulador Lambda. No entanto, eles precisam instalar algumas coisas e tentar descobrir uma maneira de fazer upload do pacote para a AWS. Eles também discutem as funções de exportação.

  • 01:50:00 Nesta seção, o palestrante discute as etapas para compilar e implantar as dependências necessárias para ONNX, um projeto de gerenciamento de modelo de código aberto. Eles explicam que é importante compilar em um ambiente semelhante ao Lambda para evitar problemas de compatibilidade e sugerem encontrar a pasta de tempo de execução ONNX e copiá-la para o pacote de implantação. Embora esse processo possa ser considerado "desagradável", o palestrante explica que é necessário garantir que o código funcione corretamente. Eles então listam as dependências necessárias, incluindo librosa, scipy e numpy, e discutem o tamanho do pacote de implantação, que pode ser de até 200 megabytes.

  • 01:55:00 Nesta seção, o palestrante discute as etapas necessárias para implantar seu modelo com a AWS. Eles precisam criar um manipulador Lambda leve, descobrir como implantá-lo com o limite da AWS e decidir se devem armazená-lo no S3, pois ele tem mais de 50 megabytes. A próxima etapa é atualizar a função de processamento para obter um objeto de áudio base64 em vez de um arquivo, e o locutor considera usar um objeto de arquivo base64 de carregamento do navegador ou bits de leitura de arquivo de som para conseguir isso. Eles concluem afirmando que acham que podem fazer isso.
 

Combinando o poder de Optimum, OpenVINO™, ONNX Runtime e Azure



Combinando o poder de Optimum, OpenVINO™, ONNX Runtime e Azure

O vídeo mostra a combinação de Optimum, OpenVINO, ONNX Runtime e Azure para simplificar o fluxo de trabalho do desenvolvedor e melhorar a precisão e a velocidade de seus modelos. Os palestrantes demonstram o uso de funções auxiliares, ONNX Runtime e o OpenVINO Execution Provider para otimizar modelos de aprendizado profundo. Eles também mostram como otimizar modelos de rostos abraçados usando quantização no Neural Network Compression Framework e ilustram o processo de treinamento e inferência usando Azure ML, Optimum, ONNX Runtime e OpenVINO. A demonstração destaca o poder dessas ferramentas para melhorar o desempenho dos modelos e, ao mesmo tempo, minimizar a perda de precisão.

  • 00:00:00 Nesta seção do vídeo, Cassie fala com representantes da Intel sobre o kit de ferramentas OpenVINO e o tempo de execução Onyx. O kit de ferramentas OpenVINO usa técnicas avançadas de otimização projetadas especificamente para Intel Hardware para aumentar o desempenho de modelos de aprendizado profundo. Com a biblioteca de tempo de execução Onyx e uma modificação simples na linha de código da sessão instantânea, os desenvolvedores podem usar o provedor de execução OpenVINO da Intel para acelerar a inferência de modelos Onyx. A demonstração mostrada no vídeo mostra o desempenho acelerado do YOLO V7, um modelo popular de aprendizado profundo, em uma CPU Intel.

  • 00:05:00 Nesta seção do vídeo, o palestrante discute as várias funções auxiliares usadas na demonstração para executar o pré-processamento, atribuir valores de cores a rótulos específicos e ler e reprocessar imagens. A demonstração utiliza o ONNX Runtime para criar uma sessão de inferência e executar a tarefa de inferência, e o OpenVINO Execution Provider para acelerar os modelos de aprendizado profundo em uma CPU Intel. O processo é simplificado fazendo uma modificação simples na linha de código, que envolve a instalação das bibliotecas ONNX e OpenVINO, importação da biblioteca ONNX Runtime e configuração do provedor OpenVINO. O palestrante também fornece uma breve visão geral da arquitetura de como o modelo ONNX é convertido em uma representação gráfica na memória e vai para o Graph Practitioner para consulta de back-end.

  • 00:10:00 Nesta seção, os palestrantes discutem como otimizar modelos de rostos abraçados usando quantização no Neural Network Compression Framework. Eles percorrem um exemplo de código mostrando como habilitar a quantização durante o treinamento usando o Optimum Intel e o OV Config. Eles também mostram um fluxo de trabalho de IA que integra preparação de dados, treinamento de modelo, inferência, implantação e automação para ajudar desenvolvedores e clientes a realizar atividades complexas com mais eficiência. Os palestrantes demonstram como usar o Azure ML para oferecer suporte a esses fluxos de trabalho para melhor desempenho.

  • 00:15:00 Nesta seção do vídeo, o palestrante discute o processo de treinamento e inferência usando Azure ML, Optimum, ONNX Runtime e OpenVINO. Eles começam discutindo os arquivos e scripts usados para o pipeline de treinamento e como enviar o trabalho para o Azure ML. Em seguida, eles discutem o script de inferência e como ele utiliza o ONNX Runtime e o provedor de execução OpenVINO. O palestrante fornece detalhes sobre os resultados da pontuação F1 para a quantização e treinamento do modelo, demonstrando que houve apenas uma pequena perda de precisão durante esse processo. No geral, a seção fornece uma visão geral detalhada do processo de treinamento e inferência usando essas tecnologias.

  • 00:20:00 Nesta seção, o palestrante demonstra como funciona o processo de quantização mostrando o modelo original fp32 e o modelo otimizado int 8, que foi visualizado através do Netron. Eles também discutem como o Azure ML e o OpenVINO podem ser aproveitados para melhorar a precisão e o desempenho durante o processo de treinamento e inferência. Eles mencionam o uso do ONNX Runtime para otimizar e melhorar ainda mais o desempenho e incentivam os espectadores a verificar o código e a postagem no blog para obter mais informações. No geral, a demonstração mostra o poder de combinar várias ferramentas para simplificar o fluxo de trabalho do desenvolvedor e melhorar a precisão e a velocidade de seus modelos.
 

Inferência mais rápida de modelos ONNX | Série Edge Innovation para Desenvolvedores | Software Intel



Inferência mais rápida de modelos ONNX | Série Edge Innovation para Desenvolvedores | Software Intel

O Provedor de Execução OpenVINO para ONNX Runtime é discutido neste vídeo. É um acelerador de modelo de aprendizado de máquina multiplataforma que permite a implantação de modelos de aprendizado profundo em uma variedade de dispositivos de computação da Intel. Usando o kit de ferramentas OpenVINO, que é otimizado para hardware Intel, e definindo o provedor como o OpenVINO Execution Provider no código, os desenvolvedores podem acelerar a inferência de modelos ONNX com técnicas avançadas de otimização. O vídeo enfatiza a simplicidade da modificação necessária para utilizar as ferramentas discutidas.

 

Inferência de modelo mais rápida e leve com ONNX Runtime da nuvem para o cliente



Inferência de modelo mais rápida e leve com ONNX Runtime da nuvem para o cliente

Neste vídeo, Emma, do grupo Microsoft Cloud and AI, explica o Open Neural Network Exchange (ONNX) e o ONNX Runtime, que é um mecanismo de alto desempenho para inferir modelos ONNX em diferentes hardwares. Emma discute o significativo ganho de desempenho e redução no tamanho do modelo que a quantização ONNX Runtime INT8 pode fornecer, bem como a importância da precisão. Ela demonstra o fluxo de trabalho de ponta a ponta da quantização ONNX Runtime INT8 e apresenta os resultados de um modelo de linha de base usando a quantização PyTorch. Além disso, Emma discute a capacidade do ONNX Runtime de otimizar a inferência de modelo da nuvem para o cliente e como ele pode atingir um tamanho inferior a 300 kilobytes nas plataformas Android e iOS por padrão.

  • 00:00:00 Nesta seção, Emma, gerente de programa sênior da AI Framework Team no grupo Microsoft Cloud e AI, explica o papel do ONNX e do ONNX Runtime no AI Software Stack. ONNX, que significa Open Neural Network Exchange, é um formato padrão para representar modelos tradicionais de aprendizado de máquina e redes neurais de aprendizado profundo. O ONNX Runtime é um mecanismo de alto desempenho para inferir modelos ONNX em diferentes hardwares. Conversores ONNX e ONNX Runtime são as peças principais no fluxo de trabalho para operacionalizar um modelo ONNX, que pode ser ativado a partir de qualquer framework usando ferramentas conversoras ONNX. Existem muitos frameworks populares que suportam ONNX, incluindo PyTorch, TensorFlow e Caffe.

  • 00:05:00 Nesta seção, são discutidos os benefícios e recursos do ONNX Runtime. ONNX Runtime é um mecanismo de inferência de alto desempenho para modelos ONNX que oferece APIs para uma variedade de linguagens e acelerações de hardware para CPUs, GPUs e VPUs. O ONNX Runtime também é aberto e extensível, permitindo fácil otimização e aceleração da inferência de aprendizado de máquina. Ele já foi integrado a várias plataformas internas e externas e tem alimentado muitos produtos emblemáticos. Um dos recursos mais novos e empolgantes do ONNX Runtime é a quantização INT8 para CPU, que aproxima números de ponto flutuante com bits menores, reduzindo o tamanho da memória do modelo e melhorando o desempenho. Os resultados de benchmark em vários modelos e hardware mostram acelerações significativas usando o ONNX Runtime.

  • 00:10:00 Nesta seção, o palestrante discute o significativo ganho de desempenho da quantização ONNX Runtime INT8, que pode acelerar o desempenho de inferência em até três vezes em uma máquina grande e em cerca de 60% em máquinas menores, além de reduzir o modelo tamanho quase quatro vezes. O palestrante também enfatiza a importância da precisão e fornece um exemplo de como os modelos quantizados ONNX Runtime podem manter uma precisão semelhante aos modelos FP32 em uma tarefa NLP comum. O palestrante demonstra o fluxo de trabalho de ponta a ponta da quantização ONNX Runtime INT8, que envolve a conversão de modelos para o formato ONNX, usando a ferramenta de quantização para obter um modelo INT8 e, em seguida, realizando inferência no ONNX Runtime. Por fim, o palestrante apresenta os resultados de um modelo de linha de base usando a quantização PyTorch e avalia o desempenho usando a função Tokenize e avaliação do Hugging Face.

  • 00:15:00 Nesta seção, os palestrantes discutem o processo de quantização do ONNX Runtime para otimizar o desempenho e o tamanho do modelo. O processo envolve uma etapa de otimização antes da quantização, necessária apenas para modelos de transformadores. Depois de otimizado, o modelo pode ser quantizado em um formato de 8 bits usando a API de quantização do ONNX Runtime, resultando em um tamanho de modelo muito menor. Os resultados de desempenho e precisão mostram que a quantização ONNX Runtime supera a quantização PyTorch em termos de pontuação F1. Outro recurso interessante do ONNX Runtime é a capacidade de minimizar o tamanho do tempo de execução para inferência no dispositivo em smartphones e dispositivos de ponta.

  • 00:20:00 Nesta seção, é discutida a capacidade do ONNX Runtime de otimizar a inferência de modelo da nuvem para o cliente. Duas técnicas principais são habilitadas para o ONNX Runtime móvel: a introdução de um novo formato otimizado chamado formato ONNX Runtime e a construção do ONNX Runtime com operadores necessários apenas para modelos predefinidos para reduzir o tamanho do Runtime. Isso reduz significativamente o tamanho do tempo de execução, eliminando os operadores não utilizados, tornando-o mais viável para a inferência do próprio dispositivo e atendendo aos requisitos de memória. O pacote móvel principal do ONNX Runtime pode atingir um tamanho de menos de 300 kilobytes nas plataformas Android e iOS por padrão. ONNX Runtime é um projeto de código aberto com tutoriais e exemplos disponíveis em seu repositório GitHub.
 

Inferência rápida de CPU de modelo de transformador T5 com conversão e quantização ONNX



Inferência rápida de CPU de modelo de transformador T5 com conversão e quantização ONNX

Ao converter o modelo do transformador T5 para ONNX e implementar a quantização, é possível diminuir o tamanho do modelo em 3 vezes e aumentar a velocidade de inferência em até 5 vezes. Isso é particularmente útil para implantar um modelo de geração de perguntas, como T5, em uma CPU com latência abaixo de um segundo. Além disso, o aplicativo Gradio oferece uma interface visualmente atraente para o modelo. O modelo de transformador T5 da Huggingface é utilizado e a biblioteca FastT5 é usada para ONNX e quantização. A implementação dessas otimizações pode resultar em economia significativa de custos para implantações de produção desses sistemas.

  • 00:00 Introdução e Ordem do Dia

  • 01:07 Instale a biblioteca de transformadores do rosto abraçado

  • 02:18 Baixar modelo de rosto abraçado

  • 02:40 Exemplo de como gerar uma pergunta

  • 04:00 Implantação do aplicativo Gradio na GUI

  • 08:11 Converta T5 Pytorch para ONNX e quantize com FastT5

  • 17:22 Guarde o modelo no drive

  • 18:30 Execute o aplicativo Gradio com o novo modelo

  • 21:55 Futuro episódio e conclusão
 

Azure AI e tempo de execução ONNX



Azure AI e tempo de execução ONNX

O texto aborda vários aspectos do aprendizado de máquina e sua implantação. Ele discute a evolução da ciência de dados, os desafios de compatibilidade de estrutura, o uso de Azure AI e ONNX Runtime para implantação de modelo, a criação de ambientes de ML e as limitações do ONNX Runtime. O alto-falante enfatiza a padronização do ONNX e seu suporte para várias estruturas, facilitando a otimização para diferentes hardwares. O vídeo também menciona a ausência de um benchmark para preferências de hardware e a necessidade de usar várias ferramentas para superar as limitações do ONNX.

  • 00:00:00 Nesta seção da transcrição, o palestrante discute a evolução da ciência de dados e como ela se transformou de uma ciência de trabalho de laboratório em um mundo de interconexão. O palestrante compartilha sua experiência trabalhando com sistemas IoT e como eles evoluíram de criados à mão para o uso de serviços em nuvem. O palestrante também destaca a importância de poder trabalhar em ambientes onde o uso de serviços em nuvem não é permitido e como são necessárias empresas especializadas nessas situações. Por fim, o palestrante aborda os desafios de ter que mudar de estrutura ou provedor de nuvem e explica por que os clientes geralmente mudam de provedor em vez de mudar de estrutura.

  • 00:05:00 Nesta seção, o palestrante fala sobre a questão da compatibilidade entre diferentes frameworks de IA e como isso afeta os negócios. Com o exemplo de um banco, ele explica que se uma empresa tivesse construído seu sistema em um framework de IA, mas chegasse um novo cliente querendo usar um framework diferente, a empresa teria que reconstruir completamente o sistema do zero, custando caro para eles. tempo e dinheiro. Ele então discute o tempo de execução Onex, que permite que as empresas convertam suas estruturas e modelos existentes em um formato compatível sem a necessidade de reconstrução completa. O palestrante também menciona ferramentas disponíveis para analisar e otimizar esses modelos convertidos.

  • 00:10:00 Nesta seção, o palestrante explica como o Azure AI e o ONNX Runtime podem ser usados para implantar facilmente modelos de aprendizado de máquina em diferentes plataformas. Ao selecionar as opções apropriadas para sua plataforma e idioma, as empresas podem usar o software para carregar as sequências 0s e 1s de sua rede neural e utilizar a plataforma e o idioma de sua escolha para exportar o sistema para facilitar a implantação. A sessão também aborda como o Onex pode ser usado para otimizar o treinamento em todo o processo de desenvolvimento, o que leva a resultados mais rápidos e precisos. O palestrante também apresenta o sistema de otimização automática da Intel serrandello para GPUs e CPUs, que torna o desenvolvimento de modelos ainda mais ágil.

  • 00:15:00 Nesta seção, o palestrante discute a criação de seu ambiente de ML e o desenvolvimento de um classificador para espécies vegetais com base no comprimento e largura de sépalas e pétalas. O palestrante observa que a criação de um ambiente de ML costumava envolver a compra de clusters de servidores e a configuração manual de tudo, mas agora eles podem criar seu próprio ambiente de ML e lançar seu próprio estúdio sem a necessidade de hardware. Seu ambiente de ML inclui uma máquina virtual normal e ONNX, que é usado para salvar os modelos do TensorFlow. O palestrante então demonstra a criação de uma rede neural simples para classificar as espécies de plantas com base nos parâmetros fornecidos.

  • 00:20:00 Nesta seção, o palestrante mostra como carregar um modelo ONNX salvo e executar uma previsão nele. Ela importa a estrutura do Tensorflow, carrega o modelo ONNX e atribui um nome de entrada exclusivo aos valores de entrada. Ela então cria um campo de link para gerar valores de entrada aleatórios para executar a expressão ONNX. Por fim, ela executa a chamada e obtém a categoria do valor de saída obtido da previsão. O modelo ONNX criado anteriormente é um único arquivo que não precisa de documentação, facilitando assim a sua utilização pelos desenvolvedores.

  • 00:25:00 Nesta seção, o palestrante explica como o Azure AI e o ONNX Runtime facilitam a integração de modelos de aprendizado de máquina em vários aplicativos. Com o Azure AI, o cliente só precisa criar seu modelo em seu idioma preferido e, em seguida, pode usar o Azure AI para carregar o modelo e criar os dados de entrada necessários para invocar o modelo. O ONNX Runtime pode então ser usado para integrar o modelo em diferentes aplicativos, como Xamarin, Android ou Mac, independentemente da plataforma subjacente. Isso torna possível integrar modelos de aprendizado de máquina com facilidade em vários dispositivos e plataformas. O palestrante também observa que o ONNX Runtime otimiza para vários processadores, inclusive para dispositivos móveis.

  • 00:30:00 Nesta seção, o palestrante explica que o ONNX se tornou o padrão de fato para modelos de aprendizado de máquina, pois suporta todos os principais frameworks e é suportado por muitas empresas. Essa padronização permite uma otimização mais fácil para diferentes hardwares, sem a necessidade de otimização manual como no passado. Além disso, o ONNX não se limita a redes neurais e também pode ser usado para outros algoritmos. O palestrante também observa que o ONNX oferece suporte às mesmas funções e operações matemáticas em diferentes plataformas, permitindo a implantação perfeita em diferentes hardwares e plataformas, desde que os opsets compatíveis correspondam.

  • 00:35:00 Nesta seção, o palestrante discute as limitações do tempo de execução do ONNX em termos de desempenho. Embora o ONNX seja uma ótima ferramenta que funciona bem para casos de uso geral, ele não utiliza todo o potencial do hardware. É aqui que outras ferramentas além do ONNX, como o pytorch, podem ser mais benéficas. No entanto, se o foco da pessoa for exportar o modelo, o ONNX pode substituir totalmente outras ferramentas. Além disso, o palestrante explica que o ONNX não lida com a comunicação máquina a máquina como a renderização multimáquina. O palestrante sugere o uso de outras ferramentas junto com o ONNX para superar essas limitações.

  • 00:40:00 Nesta seção, o palestrante discute a ausência de um benchmark para preferências de hardware e destaca que a maioria dos benchmarks pode ser encontrada no site do fabricante do hardware. Eles também observam que muitas empresas agora escrevem para o hardware, e não o contrário. O palestrante então menciona as plataformas mais usadas para aceleração, incluindo Core ml, ONNX Runtime e RT. Eles mencionam como a fase de treinamento é acelerada e, uma vez concluída, é mais fácil vender para os clientes. Os palestrantes sugerem que haverá poucas mudanças nos próximos anos e que o xeon e programas semelhantes permanecerão proeminentes.
 

Implante Machine Learning em qualquer lugar com o ONNX. Modelo Python SKLearn em execução em uma função Azure ml.net



Implante Machine Learning em qualquer lugar com o ONNX. Modelo Python SKLearn em execução em uma função Azure ml.net

O vídeo mostra como o tempo de execução ONNX simplifica e padroniza a implantação de modelos de aprendizado de máquina criados em diferentes linguagens e estruturas. Ele demonstra o processo de empacotamento de um modelo Python scikit-learn em um modelo ONNX e sua implantação em uma função .NET do Azure ML. O vídeo destaca que a função do Azure pode ser facilmente acionada por meio de uma solicitação HTTP POST, facilitando a chamada de qualquer aplicativo ou site e, independentemente da linguagem usada para construir o modelo de aprendizado de máquina, ele pode ser convertido em um modelo ONNX e implantado por meio do ML.NET para ser executado de forma consistente.

  • 00:00:00 Nesta seção, o vídeo apresenta o tempo de execução ONNX e como ele simplifica o processo de implantação de modelos de aprendizado de máquina construídos em várias linguagens e estruturas. O tempo de execução ONNX permite que os modelos sejam encapsulados de forma que possam ser facilmente implantados em um ambiente diferente. Ele substitui o processo de decapagem e fornece um tempo de execução padrão que funciona em Python, R, .NET, Java e outras linguagens. O vídeo continua demonstrando um exemplo completo de construção de um modelo simples em Python, empacotando-o em um modelo ONNX e executando-o em uma função ML .NET. O código usado neste exemplo está disponível no GitHub público do canal Advancing LLS do YouTube.

  • 00:05:00 Nesta seção, o palestrante demonstra como implantar um modelo de aprendizado de máquina usando ONNX em uma função do Azure. A demonstração começa mostrando um modelo Python básico que usa scikit-learn para treinar um modelo de regressão linear usando dados de preços de casas em San Francisco. O modelo é treinado usando um conjunto de treinamento que consiste em valores numéricos e categóricos e, uma vez treinado, o modelo é selecionado para ser persistido e implantado em um contêiner. Por fim, o locutor testa o modelo chamando a previsão no conjunto de treinamento e obtém alguns valores de volta. Esse processo pode ser usado para implantar e executar modelos de aprendizado de máquina em qualquer lugar usando o ONNX.

  • 00:10:00 Nesta seção do vídeo, o apresentador configura o modelo para rodar em ONNX de forma que Python não seja necessário para utilizá-lo. O número de recursos que entram no treinamento do modelo é especificado e o modelo ONNX é inicializado para saber o que esperar. A entrada inicial é chamada de entrada de recurso, que é necessária para pontuação. Para pontuar o modelo, uma sessão é criada e uma linha de código é responsável por prever com base nos dados de treinamento. As previsões são então impressas.

  • 00:15:00 Nesta seção, o palestrante discute a execução de um modelo Python no ONNX e como ele pode ser executado de forma consistente em Python, independentemente dos pacotes usados. O palestrante mostra como converter um modelo Python para ONNX e executá-lo em uma função do Azure usando um HTTP POST com um objeto JSON. A função extrai dados importantes, como o ano, a maior área útil e a condição de venda, e os passa para o modelo, que usa o ONNX para pontuar os dados e retornar o resultado. O palestrante explica que a função do Azure é um gatilho HTTP padrão com uma API REST por trás dele, facilitando a chamada de qualquer aplicativo ou site.

  • 00:20:00 Nesta seção, o palestrante explica as etapas envolvidas para criar uma variável chamada input e usá-la para moldar o tensor de entrada para que seja aceitável para a execução da sessão. A sessão é iniciada e iniciada para executar a nova sessão no caminho e pontuar com a entrada designada. O resultado da pontuação é então retirado e empacotado como um objeto de resultado e passado de volta para a função. O palestrante demonstra como testar o modelo implantado no Postman, passando pelos parâmetros brutos do modelo de objeto JSON, como o ano de construção e a área de residência, para obter uma pontuação de volta. A vantagem de implantar modelos de aprendizado de máquina por meio de ONNX e ML.NET é que não importa em qual idioma as pessoas constroem seus modelos, desde que ele possa ser convertido em um modelo ONNX, então ele pode ser implantado e executado de forma consistente.