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

 

Berlin Buzzwords 2019: Lester Solbakken – escalando a avaliação do modelo ONNX e TensorFlow na pesquisa



Berlin Buzzwords 2019: Lester Solbakken – escalando a avaliação do modelo ONNX e TensorFlow na pesquisa

Lester Solbakken discute os desafios de dimensionar o aprendizado de máquina para aplicativos de pesquisa e propõe uma solução alternativa ao uso de servidores de modelo externo. Ele sugere avaliar modelos de aprendizado de máquina em nós de conteúdo, em vez de enviar dados para servidores de modelos externos, para melhorar a escalabilidade e controlar a latência e a taxa de transferência. Solbakken destaca o uso da Vespa de sua própria linguagem de classificação e extensão de API de tensor para facilitar a criação de um pacote declarativo de estado para um aplicativo e o esforço contínuo para oferecer suporte a modelos de aprendizado de máquina na Vespa. Ele enfatiza a importância de entender a correlação entre diferentes fases de classificação para evitar problemas de recuperação no nível do sistema e incentiva as pessoas a contribuir com o projeto de código aberto.

  • 00:00:00 Nesta seção do vídeo, Lester Solbakken discute os desafios de dimensionar a produção de aprendizado de máquina especificamente para aplicativos baseados em pesquisa. Ele explica como os servidores modelo se tornaram cada vez mais populares para resolver problemas de desempenho e escalabilidade, mas para aplicativos de pesquisa, avaliar o modelo para cada um dos resultados da pesquisa leva rapidamente a um gargalo na capacidade da rede. A solução é enviar menos dados para obter resultados ou encontrar uma maneira de avaliar o modelo localmente para cada servidor. Solbakken aborda o trabalho de sua equipe com a plataforma de busca Vespa para resolver esses problemas.

  • 00:05:00 Nesta seção, Lester Solbakken discute o desafio de dimensionar o ONNX e a avaliação do modelo TensorFlow para pesquisa. Uma possível solução é enviar recursos para servidores de modelo, mas o problema é que os servidores de conteúdo e modelo podem estar avaliando a classificação com base em diferentes conjuntos de recursos, o que pode diminuir a probabilidade de obter os melhores resultados globalmente. Em vez disso, Solbakken sugere avaliar modelos em servidores de conteúdo para obter melhores resultados, algo que foi trabalhado na Vespa. O Vespa, que é muito usado em centenas de milhares de consultas por segundo em todo o mundo, com centenas de publicações nos EUA em execução, possui recursos principais avançados, incluindo elasticidade, escalabilidade e capacidade de pontuação relevante avançada.

  • 00:10:00 Nesta seção, Lester Solbakken discute como Vespa integra ONNX e TensorFlow para facilitar a criação de um pacote declarativo de estado para um aplicativo, facilitando o uso de modelos de aprendizado de máquina. A Vespa usa sua própria linguagem de classificação para executar esses modelos, e a extensão da API do tensor fornece um pequeno conjunto de recursos principais que podem representar diferentes tipos de computação. A vantagem disso é que diferentes modelos de diferentes fontes podem ser traduzidos para esse formato, facilitando a otimização. Solbakken também destaca um benchmark que eles criaram para testar a hipótese de que o envio de dados não é eficiente, emulando um sistema de recomendação de blog no qual eles usaram um produto escalar na primeira fase e uma rede neural na segunda fase.

  • 00:15:00 Nesta seção, o palestrante discute as limitações de escalabilidade de servidores de modelo externo para aprendizado de máquina em pesquisa e propõe uma solução alternativa. Ele explica que adicionar nós de conteúdo adicionais para distribuir a carga de trabalho pode melhorar a latência e sugere que, ao fazer com que esses nós reescrevam um número maior de documentos, você pode aumentar o número de resultados com modelos de aprendizado de máquina, resultando em resultados potencialmente de maior qualidade. Por meio do ranking multifásico, em que a avaliação é feita no nó de conteúdo e não apenas empurrado por uma rede, é possível dimensionar e controlar a latência e a taxa de transferência. O palestrante conclui que os servidores de modelo externo não são uma boa solução para dimensionamento e enfatiza a importância de avaliar no nó de conteúdo.

  • 00:20:00 Nesta seção, Lester Solbakken fala sobre a classificação multifásica na Vespa e a importância de entender a correlação entre as diferentes fases para evitar problemas de recuperação no nível do sistema. Ele também menciona que o suporte a modelos em aprendizado de máquina e Vespa é um esforço contínuo e incentiva as pessoas a contribuir com o projeto de código aberto. Os interessados em brincar com o Vespa podem encontrar muitos recursos na página inicial do Vespa AI, incluindo exemplos de aplicativos, casos de uso e tutoriais.
 

Assimilar ONNX



Assimilar ONNX

Neste vídeo, o apresentador apresenta o ONNX como um padrão aberto para interoperabilidade de aprendizado de máquina que pode funcionar em todas as plataformas diferentes. Eles passam pelo processo de criação de um projeto ONNX do zero, aprimorando um exemplo do repositório da Microsoft, solucionando problemas e explorando outros projetos do Github relacionados ao ONNX. Em seguida, eles testam uma ligação ONNX usando GPT2 e CUDA, expressando interesse em explorar as ligações Rust de tempo de execução ONNX ainda mais no futuro. O apresentador nota a versatilidade e portabilidade do ONNX e o vê como uma boa ferramenta para experimentação e construção de projetos mais substanciais no futuro.

  • 00:00:00 Nesta seção, o palestrante apresenta o ONNX , um padrão aberto para interoperabilidade de aprendizado de máquina que permite o uso de diversos frameworks e aceleradores para inferência em serviços em nuvem. Eles mencionam a disponibilidade de um wrapper seguro em torno do tempo de execução ONNX com uma inferência de ML de alto desempenho de plataforma cruzada e um acelerador de treinamento. Eles também destacam a portabilidade associada ao ONNX , pois ele pode funcionar em todas as plataformas diferentes e demonstram como criar um novo projeto ONNX do zero usando exemplos do Microsoft Branch. O palestrante observa que, com o ONNX sendo ativamente trabalhado e continuamente integrado, ele fornece uma boa ferramenta para brincar no aprendizado de máquina.

  • 00:05:00 Nesta seção do vídeo, o apresentador navega até o site do ONNX para obter a versão mais recente e criar um runtime do ONNX. Eles também mostram como copiar e ajustar um exemplo do repositório da Microsoft e adicionar um makefile. Além disso, eles integram o assinante de rastreamento e o gbt no código e adicionam o modelo squeeze net. O apresentador encontra alguns erros, mas os resolve verificando um exemplo anterior e garantindo que os modelos corretos estejam disponíveis.

  • 00:10:00 Nesta seção, o palestrante está solucionando um problema em que está tentando usar uma versão específica do ONNX, mas encontra erros. Eles tentam vários métodos para corrigir o problema, como copiar um exemplo de trabalho e reconstruir o projeto, mas nenhum deles parece funcionar. Eventualmente, eles encontram um exemplo mais antigo na documentação do ONNX que funciona com a versão desejada. Eles trocam o modelo e são capazes de compilar e executar o programa com sucesso. No geral, esta seção destaca a importância de verificar completamente as dependências e estar disposto a tentar diferentes soluções durante a depuração.

  • 00:15:00 Nesta seção do vídeo, o palestrante discute as limitações do exemplo ONNX básico "Hello world" e sugere que seria mais útil ter um exemplo que carregue e manipule uma imagem. Eles destacam alguns outros projetos do Github relacionados ao ONNX, como Rust Code Search e Track ONNX , que possuem funcionalidades mais avançadas, e mostram interesse em experimentá-los. Além disso, eles exploram o projeto GPT-RS, que permite o uso de modelos GPT2 com CUDA, e explicam como ele poderia ser usado para manipular dados de imagem.

  • 00:20:00 Nesta seção, o usuário testa uma ligação ONNX usando GPT2 e CUDA, que gera saídas de teste para conclusão de código ou conclusão de texto. O usuário considera este exemplo promissor e expressa interesse em explorar as ligações Rust de tempo de execução ONNX no futuro. Eles resumem sua experiência como um experimento interessante e expressam o desejo de construir algo mais substancial em sua próxima tentativa com o ONNX.
 

HITNET vs. Comparação de estimativa de profundidade estéreo neural ACVNet (ONNX)



HITNET vs. Comparação de estimativa de profundidade estéreo neural ACVNet (ONNX)

Comparação dos modelos de estimativa de profundidade estéreo HITNET e ACVNet no conjunto de dados Driving Stereo.

Detalhes da inferência do modelo (NVIDIA 1660 SUPER):
HITNET (640X480): 220ms
ACVNet (640x384): 480ms
Referências: [HITNET Inference] https://github.com/ibaiGorordo/ONNX-HITNET-Stereo-Depth-estimation
[Inferência ACVNet] https://github.com/ibaiGorordo/ONNX-ACVNet-Stereo-Depth-Estimation
[Driving Stereo dataset] https://drivingstereo-dataset.github.io/

 

Importe, treine e otimize modelos ONNX com NVIDIA TAO Toolkit



Importe, treine e otimize modelos ONNX com NVIDIA TAO Toolkit

O vídeo mostra como usar o NVIDIA TAO Toolkit para importar, treinar e otimizar modelos ONNX. Ele começa baixando um modelo ResNet18 pré-treinado, ajustando-o com TAO no conjunto de dados Pascal VOC e fornece etapas para importar o modelo e visualizar o gráfico ONNX. O progresso do treinamento pode ser monitorado usando a visualização TensorBoard, e camadas personalizadas podem ser usadas em caso de erros de conversão ONNX. O vídeo também explica como avaliar o desempenho do modelo observando a perda decrescente, validando a perda e analisando pesos e vieses. Os usuários podem avaliar a precisão do modelo no conjunto de dados de teste e imagens de amostra e continuar com a remoção e otimização para melhorá-lo ainda mais.

  • 00:00:00 Nesta seção, o vídeo explica como importar, treinar e otimizar modelos ONNX usando o NVIDIA TAO Toolkit. O vídeo começa baixando um modelo ResNet18 pré-treinado, que é então ajustado no conjunto de dados Pascal VOC usando TAO. As etapas para importar o modelo ONNX e visualizar o gráfico ONNX também são abordadas. Além disso, o vídeo discute como monitorar o progresso do trabalho de treinamento usando a visualização do TensorBoard. Por fim, o vídeo menciona que o TAO pode lidar com camadas personalizadas e fornece orientação sobre como usá-las para importar modelos que falham na conversão.

  • 00:05:00 Nesta seção, o palestrante discute como avaliar o desempenho do modelo treinado. Os usuários podem observar a perda decrescente para garantir que o modelo está melhorando. Além disso, a perda de validação pode ajudar a identificar o overfitting. Usuários mais avançados podem visualizar gráficos e histogramas para entender os pesos e vieses do modelo. O palestrante demonstra como verificar a precisão geral do modelo no conjunto de dados de teste e como avaliar o desempenho do modelo em imagens de amostra. O modelo tem espaço para melhorias e os usuários podem continuar com a poda e otimização do modelo para aumentar ainda mais a precisão.
 

Webinar NVAITC: Implantando modelos com TensorRT



Webinar NVAITC: Implantando modelos com TensorRT

Nesta seção do webinar NVAITC, a arquiteta de soluções Nikki Loppie apresenta o TensorRT, o kit de desenvolvimento de software da NVIDIA para inferência de deep learning de alto desempenho. O TensorRT fornece um otimizador de inferência e tempo de execução para inferência de baixa latência e alta taxa de transferência em uma variedade de plataformas, de dispositivos incorporados a data centers. Loppie explica as cinco tecnologias que o TensorRT usa para otimizar o desempenho de inferência, incluindo fusão de kernel e calibração de precisão. Os desenvolvedores podem usar as APIs Python e C++ do TensorRT para incorporar essas otimizações em seus próprios aplicativos, e bibliotecas conversoras como trtorch podem ser usadas para otimizar modelos PyTorch para inferência. Loppie demonstra como salvar modelos otimizados do TensorRT usando a biblioteca trtorch e compara os modelos otimizados com modelos não otimizados para classificação de imagem, mostrando aumentos de velocidade significativos com meia precisão.

  • 00:00:00 Nesta seção do webinar, a arquiteta de soluções Nikki Loppie discute a importância da eficiência na inferência e a necessidade de portabilidade da plataforma. Ela apresenta o TensorRT, um kit de desenvolvimento de software da NVIDIA para inferência de aprendizado profundo de alto desempenho que aborda esses dois desafios. O TensorRT inclui um otimizador de inferência e tempo de execução para inferência de baixa latência e alta taxa de transferência em uma ampla variedade de plataformas, de dispositivos incorporados a data centers. Também é compatível com todas as principais estruturas de aprendizado profundo. Loppie então explica as cinco tecnologias que o TensorRT implementa para otimizar o desempenho de inferência, incluindo fusão de kernel, calibração de precisão e ajuste automático de kernel.

  • 00:05:00 Nesta seção, o webinar apresenta as habilidades do TensorRT para otimizar o tempo de execução do kernel, reduzir o consumo de memória e oferecer suporte à inferência paralela usando a execução multistream. Os desenvolvedores podem usar as APIs Python e C++ do TensorRT para incorporar essas otimizações em seus próprios aplicativos. O webinar também explica como usar bibliotecas conversoras como tr tocha para otimizar um modelo PyTorch para inferência. As etapas envolvem salvar o modelo, carregá-lo, inicializar um modelo ResNet, compilá-lo usando TorchScript e finalmente convertê-lo para o formato TensorRT. O modelo otimizado pode então ser implantado na plataforma de destino.

  • 00:10:00 Nesta seção do webinar, o palestrante demonstra como salvar modelos otimizados do TensorRT para uso posterior ou para implantação em outras plataformas usando a biblioteca trtorch. O alto-falante usa um exemplo de classificação de imagem com modelos ResNet-18 e ResNet-50 executados no conjunto de dados ImageNet. Os modelos otimizados trtorch apresentam acelerações significativas com meia precisão em comparação com os modelos não otimizados, com um fator de aceleração de 5,5x para ResNet-18 e 6,4x para ResNet-50. O palestrante também destaca a importância do benchmarking imparcial e fornece instruções sobre como começar a usar o trtorch.
 

ESP tutorial - Como: projetar um acelerador em Keras/Pytorch/ONNX



ESP tutorial - Como: projetar um acelerador em Keras/Pytorch/ONNX

O tutorial apresenta uma ferramenta chamada Chalice for ML, que pode gerar automaticamente um acelerador a partir de um modelo Keras/Pytorch/ONNX. O tutorial passa a demonstrar como integrar o acelerador no ESP (Early Stage Prototyper). O palestrante também mostra como projetar um acelerador em Keras/Pytorch/ONNX e percorre as etapas de importação de um acelerador, adição de banco de teste, geração de RTL e criação de duas versões do acelerador. O vídeo também aborda a compilação do Linux e a criação de um aplicativo de espaço do usuário do Linux para o acelerador. Finalmente, o tutorial termina com recursos para aprendizado adicional.

  • 00:00:00 Nesta seção do tutorial, o apresentador apresenta uma ferramenta chamada Chalice for ML que pode gerar automaticamente um acelerador a partir de um modelo Keras/Pytorch/ONNX. O fluxo é demonstrado usando o HLS 4 ML para gerar um acelerador a partir de um modelo Keras pré-construído que é fornecido no repositório GitHub do ESP para NXP. O acelerador gerado é então integrado e testado no ESP usando um script interativo. O apresentador enfatiza que os usuários devem passar pelos guias de pré-requisitos e configurar seu ambiente antes de tentar seguir o tutorial. O tutorial também oferece materiais pré-construídos que os usuários podem usar para experimentar sem ter que passar por todas as etapas.

  • 00:05:00 Nesta seção do tutorial, o instrutor explica como integrar o acelerador projetado nas etapas anteriores ao ESP (Early Stage Prototyper). O ID hexadecimal de três dígitos para o acelerador é atribuído, lembrando que o número não deve ser maior que 1024 em decimal. A largura de bits de dados do acelerador é então definida, que é de 32 bits no caso de uso atual, e os tamanhos de arquivo de entrada e saída são determinados. Por fim, o instrutor demonstra a execução de síntese de alto nível para o acelerador de três camadas MLP e mostra como executar HLS com ESP. Todas as etapas são as mesmas de outros guias para aceleradores System C ou C++, e a pasta do projeto HLS for MLP é adicionada ao ESP com todos os arquivos necessários para agrupar e fazer a interface do acelerador com o restante do sistema ESP.

  • 00:10:00 Nesta seção do vídeo, o palestrante demonstra as etapas para projetar um acelerador em Keras/Pytorch/ONNX. Eles primeiro mostram como importar um acelerador e adicionar um banco de testes que testa automaticamente a simulação. Eles então passam pela etapa HLS, que gera um projeto rodando em um seletor de busca e na tecnologia do FPGA. O RTL gerado é então colocado na tecnologia do FPGA e são criadas duas versões do acelerador, uma com 32 bits e outra com 64 bits. O palestrante configura um SOC com o comando ESP X config e mostra como compilar um aplicativo bare metal que foi gerado automaticamente. Para simular o teste bare metal de um acelerador, o programa de teste precisa ser especificado. Uma vez que a validação tenha passado, um bitstream FPGA pode ser gerado.

  • 00:15:00 Nesta seção, o tutorial em vídeo percorre a compilação do Linux, que não apenas compila os cínicos, mas também compila os aplicativos de teste de espaço do usuário para os aceleradores. Terminado o Linux, é criado um executável para o acelerador, que é o aplicativo de espaço do usuário do Linux que será executado no FPGA. O tutorial prossegue para programar o FPGA e executar o teste bare-metal usando o comando make FPGA run. Para executar o teste de unidade bare-metal do desacelerador, um programa de teste gerado anteriormente é especificado. Em seguida, o Linux foi executado e o aplicativo de teste de unidade foi executado, que encontrou com sucesso o vendedor Reiter e o teste passou com validação. O tutorial termina com alguns recursos para aprendizado adicional.
 

Inferência otimizada em hardware flexível com ONNX Runtime



Inferência otimizada em hardware flexível com ONNX Runtime

Este tutorial aborda a implantação de modelos em CPU, GPU e OpenVINO usando o ONNX Runtime. O palestrante demonstra o uso de diferentes provedores de execução, incluindo OpenVINO, para inferência em hardware flexível. O código para inferência é basicamente o mesmo em todos os ambientes, com a principal diferença sendo o provedor de execução. O ONNX Runtime realiza inferências mais rapidamente do que o PyTorch na CPU e na GPU, e existe uma biblioteca ONNX Runtime separada para o OpenVINO. No geral, o tutorial fornece uma visão geral de como implantar modelos em várias opções de hardware usando o ONNX Runtime.

  • 00:00:00 Nesta seção, o palestrante passa pelo processo de configuração de ambientes virtuais e uso do ONNX Runtime para realizar inferências em um modelo ResNet50 em CPU, GPU e OpenVINO. O palestrante observa que o ONNX Runtime usará a GPU se detectar um acelerador compatível, caso contrário, o padrão será a CPU. O código para inferência é basicamente o mesmo em todos os três ambientes, com a principal diferença sendo a alteração do provedor de execução. O palestrante demonstra que o ONNX Runtime pode realizar inferências mais rapidamente do que o PyTorch na CPU e na GPU e observa que há uma biblioteca ONNX Runtime separada para o OpenVINO.

  • 00:05:00 Nesta seção, o palestrante demonstra o uso de diferentes provedores de execução como OpenVINO e OpenVino na CPU para inferência em hardware flexível com ONNX Runtime. Ao definir o provedor de execução como OpenVINO, o mesmo código fornece 30 ms e uma utilização de CPU de cerca de 0,78. O tutorial fornece uma visão geral de como implantar modelos em CPU, GPU e OpenVINO usando o ONNX Runtime.
 

Inferência de aprendizado de máquina no Flink com ONNX



Inferência de aprendizado de máquina no Flink com ONNX

O vídeo discute os benefícios e a implementação do uso de ONNX na inferência de aprendizado de máquina e sua implantação na estrutura de computação distribuída, Flink. A separação de preocupações entre treinamento de modelo e inferência de produção, a capacidade de definir especificações para entradas e saídas e a independência de linguagem tornam o ONNX uma ferramenta valiosa para cientistas de dados. O vídeo demonstra como carregar um modelo ONNX no Flink, fornecendo os principais componentes da função de mapa avançado e explicando como agrupar os modelos com o código usando um arquivo jar. O palestrante também aborda considerações como gerenciamento de memória, otimização de lote e aceleração de hardware com ONNX e enfatiza seus benefícios para inferência de aprendizado de máquina em tempo real no Flink.

  • 00:00:00 Nesta seção do vídeo, Colin Germain explica a importância da inferência de aprendizado de máquina em tempo real usando um exemplo de brinquedo do domínio de detecção de ataques cibernéticos. Ele ilustra como esperar para detectar um incidente pode levar à perda da exfiltração de dados importantes. Além disso, ele explica por que o aprendizado de máquina é vital para capturar a variação de diferentes tipos de técnicas e explorações usadas por adversários externos. Por fim, ele enfatiza a importância de escalar a solução usando computação distribuída no Flink. Colin apresenta o modelo Onyx, que desempenha um papel crítico na solução, e explica como eles podem usar um modelo de aprendizado de máquina no PyTorch e serializá-lo com o Onyx para implantá-lo no Flink.

  • 00:05:00 Nesta seção, o palestrante explica os benefícios de usar ONNX, que significa Open Neural Network Exchange, em um pipeline de aprendizado de máquina. O ONNX permite a separação de preocupações entre a fase de treinamento do modelo e a fase de inferência de produção, tornando mais fácil para os cientistas de dados desenvolver modelos em Python e, em seguida, usar o modelo ONNX com diferentes ferramentas de inferência. O ONNX fornece um contrato que define a computação de um grafo acíclico direcionado a ser usado para aprendizado de máquina. Cada operador no gráfico tem uma versão, permitindo compatibilidade com versões anteriores e serviço contínuo no futuro. O palestrante também observa os benefícios de empacotar modelos ONNX com a estrutura de streaming Apache Flink para facilitar a implantação.

  • 00:10:00 Nesta seção do vídeo, o palestrante discute os benefícios do uso do ONNX para inferência de aprendizado de máquina, incluindo a capacidade de definir especificações para entradas e saídas e o suporte para todas as versões de modelos na biblioteca de tempo de execução do ONNX. A independência de linguagem do ONNX e a disponibilidade de conversores para a maioria das estruturas de ML facilitam a inserção de modelos no ONNX, e o palestrante sugere o uso do netron para fins de diagnóstico. Por fim, o palestrante apresenta um exemplo simples de uso de um modelo de tocha pi com ONNX para processamento de ponta a ponta sem treinamento.

  • 00:15:00 Nesta seção, o palestrante discute o método direto usado para definir o cálculo e como ele é usado pelo alto torque para gerenciar a propagação reversa de gradientes para treinamento. Um exemplo básico de uso da classe add offset é demonstrado, o que compensa tensores por um valor definido. O palestrante passa a discutir a exportação para ONNX e a importância de fornecer as entradas corretas para modelos dinâmicos. O modelo ONNX é carregado na memória usando o ambiente de tempo de execução e a sessão ONNX do Scala, o que permite que a inferência seja realizada no modelo. Uma classe é criada para manter o modelo carregado para uso em inferência.

  • 00:20:00 Nesta seção, o palestrante explica como o modelo ONNX pode ser carregado no Flink usando uma matriz de bytes e um método de carregamento. Eles também demonstram como a função de mapa avançado pode ser usada para manter o modelo carregado e realizar inferências de maneira limpa e organizada. O palestrante percorre os principais componentes da função de mapa avançado, incluindo a configuração do tensor ONNX, a definição das entradas e saídas e a execução da sessão de modelo para obter os resultados. Eles observam que o código pode ser modificado para suportar várias saídas, tornando-o uma solução flexível para diferentes tipos de modelos. Por fim, o palestrante aborda o aspecto do empacotamento dos modelos ONNX, explicando como eles podem ser agrupados com o arquivo jar contendo o código, eliminando a necessidade de conectar-se a endpoints externos ou baixar arquivos de diferentes fontes.

  • 00:25:00 Nesta seção, o palestrante discute um exemplo de inferência de aprendizado de máquina no Flink usando o clássico problema de classificação de dígitos manuscritos, conhecido como MNIST. Eles mostram o modelo PyTorch usado para classificar as matrizes de 28x28 pixels e como ele pode ser convertido em um gráfico ONNX para uso no Flink, usando a mesma abordagem de dimensionamento de lote de antes. O palestrante então discute outro exemplo de aprendizado de máquina usando transformadores em NLP, especificamente uma versão menor do BERT, que foi pré-treinada em um vocabulário de palavras. O modelo transformador é usado para prever sentimento, tradução e outras tarefas de palavras e pode ser treinado posteriormente para novas tarefas de previsão no Flink.

  • 00:30:00 Nesta seção, o apresentador apresenta a biblioteca Hugging Face Transformers, que permite a fácil importação de modelos pré-treinados e aprendizado de transferência em Python. Embora esses modelos possam ser grandes, a biblioteca inclui recursos de otimização e quantização para melhorar o desempenho. No entanto, é importante observar que os estágios de pré-processamento, como a tokenização, ainda não fazem parte do grafo e podem não estar acessíveis no scala. O apresentador também destaca os benefícios de aproveitar todos os recursos da linguagem Scala no Flink, ao mesmo tempo em que separa as dependências de treinamento da inferência de produção e separa as duas partes de maneira eficaz. No geral, embora existam alguns contras, como tamanho do modelo e desafios de pré-processamento, o método oferece vantagens em termos de aproveitamento dos recursos do Flink e implantação em um arquivo JAR.

  • 00:35:00 Nesta seção, o palestrante observa que, ao usar a inferência de aprendizado de máquina no Flink com ONNX, há algumas considerações importantes a serem lembradas. Um deles é o gerenciamento cuidadoso da memória ao lidar com modelos grandes, como modelos de transformadores que podem ocupar centenas de megabytes. Além disso, a otimização em lote e a aceleração de hardware, como o uso de GPUs, podem afetar o desempenho. O pré-processamento pode ser feito com gráficos ONNX personalizados, mas isso requer trabalho extra e não é tão fácil quanto o que foi mostrado anteriormente. O palestrante enfatiza que o ONNX permite aprendizado de máquina em tempo real no Flink e separa bem o código de treinamento Python do código de produção Scala, o que pode ser uma vitória para os cientistas de dados. O palestrante também aborda questões sobre o uso de ONNX com modelos baseados em TensorFlow e por que ONNX foi escolhido em vez de Java API, PyTorch ou TensorFlow.

  • 00:40:00 Nesta seção, o palestrante fala sobre ONNX como um esquema independente de estrutura para o grafo que também é independente de linguagem. O palestrante mencionou que uma das propriedades interessantes de usar o ONNX é que se alguém estiver usando o PyTorch e quiser mudar para o TensorFlow, pode usar o ONNX como um "veículo" para ir entre os dois frameworks, o que mostra a flexibilidade do framework. O público perguntou se o palestrante havia experimentado modelos do TensorFlow com o projeto Scala do TensorFlow, ao que ele respondeu negativamente. Por fim, o palestrante convida o público a visitar o repositório ONNX, criar um problema no GitHub ou entrar em contato com ele no LinkedIn para tirar dúvidas, principalmente sobre contratação.
 

Improving the online shopping experience with ONNX



Improving the online shopping experience with ONNX

This video discusses how e-commerce companies are using AI to create impactful insights that differentiate winning and losing in the online retail space. The speaker provides an example of Bazaar Voice, the largest network of brands and retailers that provide over 8 billion total reviews, and how they use product matching to share reviews. The speaker then describes how they developed a machine learning model in Python, exported it to ONNX format, and deployed it to a serverless function using a node environment to run inference on an ONNX runtime. This solution allows for high-speed matching of hundreds of millions of products across thousands of client catalogs while maintaining low costs, resulting in significant cost savings and millions of extra reviews for brands and retailers. The speaker concludes by inviting viewers to explore more ways of using the capabilities of ONNX and sharing their use cases for future technological advancements.

  • 00:00:00 In this section, we learn that the digitization of commerce has led to e-commerce companies possessing the scale of data they collect and use AI to create impactful insights as the differentiator between winning and losing in the online retail space. One example is of a billion shoppers a month for Bazaar Voice, the world's largest network of brands and retailers that provide over 8 billion total reviews, and how sharing reviews is powered by product matching. Product matching, the core function of the machine learning model built, is performed by comparing unique identifiers, but over a million product matches are performed manually every month. The solution is a scikit-learn model built with Python and is exported to ONNX format, having implemented the most lightweight, cost-efficient solution while maintaining performance.

  • 00:05:00 In this section, the speaker discusses various options for implementing machine learning models for an online shopping experience and concludes that serverless functions are the best option due to their low cost and easy implementation. They then explain how they developed a model in Python, exported it to ONNX format, and deployed it to a serverless function using a node environment to run inference on an ONNX runtime. The modularity of this solution allows it to be easily plugged into any service, and by using metrics such as memory used and execution time, they were able to find the optimal memory size to ensure the best performance while keeping costs low. While deployment size limits and working within timeout limits are considerations, the power of ONNX and ONNX runtime in combination with serverless functions allowed for high-speed matching of hundreds of millions of products across thousands of client catalogs, resulting in significant cost savings and 15 million extra reviews for brands and retailers.

  • 00:10:00 In this section, the speaker concludes the video by inviting viewers to explore more ways of using the capabilities of ONNX and sharing their use cases. As someone actively working in this space, the speaker is intrigued and compelled by where these technologies may take us in the future.
 

DSS on-line nº 4: implantação de aprendizado profundo de ponta a ponta com ONNX


DSS on-line nº 4: implantação de aprendizado profundo de ponta a ponta com ONNX

Este vídeo discute os desafios da implantação de aprendizado profundo de ponta a ponta, incluindo o gerenciamento de diferentes linguagens, estruturas, dependências e variabilidade de desempenho, bem como atrito entre equipes e bloqueios de formato proprietário. O Open Neural Network Exchange (ONNX) é apresentado como um formato baseado em buffer de protocolo para serialização de aprendizado profundo. Ele suporta as principais estruturas de aprendizado profundo e fornece um artefato independente para executar o modelo. O ONNX ML também é discutido como parte da especificação ONNX que fornece suporte para o pré-processamento tradicional de aprendizado de máquina. As limitações do ONNX são reconhecidas, mas ele é visto como um projeto em rápido crescimento com forte apoio de grandes organizações que oferece verdadeira portabilidade em diferentes dimensões de linguagens, estruturas, tempos de execução e versões.

  • 00:00:00 Nesta seção, Nick Pentreath, engenheiro principal da IBM, apresenta a implantação de aprendizado profundo de ponta a ponta com o Open Neural Network Exchange. Há muitas etapas no fluxo de trabalho de aprendizado de máquina, incluindo análise de dados, pré-processamento para modelos, treinamento do modelo, implantação em aplicativos do mundo real e manutenção e monitoramento. Pentreath discute como o fluxo de trabalho abrange diferentes equipes e ferramentas, tornando essencial ter uma infraestrutura que atenda ao modelo.

  • 00:05:00 Nesta seção, o palestrante discute as três questões cruciais para a implantação do aprendizado de máquina: o que estamos implantando, onde estamos implantando e como estamos implantando. A implantação de um modelo de aprendizado de máquina envolve a incorporação de todo o conjunto de etapas que precedem o modelo treinado, incluindo transformações, extração de recursos e pré-processamento. É imperativo aplicar as mesmas etapas de pré-processamento no ambiente real usadas durante o treinamento, pois quaisquer diferenças podem levar a distorções de dados que podem resultar em resultados catastróficos. O palestrante observa que mesmo o aprendizado profundo ainda precisa de pré-processamento cuidadoso e engenharia de recursos, e destaca os desafios que acompanham a padronização do pré-processamento. Esses desafios incluem diferentes layouts de dados e modos de cores entre diferentes estruturas que podem ter impactos sutis, mas significativos, nas previsões.

  • 00:10:00 Nesta seção, o vídeo discute os desafios quando se trata de implantar um pipeline de aprendizado profundo de ponta a ponta, incluindo o gerenciamento e a ponte entre diferentes idiomas, estruturas, dependências e variabilidade de desempenho, bem como o atrito entre as equipes , a falta de padronização entre estruturas de código aberto e bloqueios de formato proprietário. Embora a implantação baseada em contêiner traga benefícios significativos, ela ainda requer algum tipo de estrutura de serviço e não resolve o problema de padronização. É por isso que o vídeo sugere o uso de padrões abertos para exportar modelos de diferentes frameworks para um formato padronizado, o que proporciona uma separação de preocupações entre o produtor do modelo e o consumidor do modelo, permitindo que eles se concentrem em suas respectivas tarefas sem se preocupar com problemas de implantação ou onde o modelo veio.

  • 00:15:00 Nesta seção, o palestrante discute a importância do código aberto e dos padrões abertos na implantação do aprendizado profundo. Eles explicam os benefícios de ter uma única pilha e um conjunto padronizado de ferramentas para análise e visualização e destacam o papel crítico da governança aberta em fornecer visibilidade e evitar a concentração de controle. Em seguida, o palestrante apresenta a troca de rede neural aberta (ONNX), um formato baseado em buffer de protocolo para definir a serialização de modelos de aprendizado de máquina com foco em aprendizado profundo. O ONNX suporta as principais estruturas de aprendizado profundo, como PyTorch, Caffe, TensorFlow, Keras, Apple Core ML e MXNet, e fornece um artefato independente para executar o modelo.

  • 00:20:00 Nesta seção, o palestrante discute como o ONNX ML (Machine Learning) faz parte da especificação ONNX que fornece suporte para o pré-processamento tradicional de aprendizado de máquina, juntamente com tipos adicionais, como sequências e mapas. ONNX abrange uma ampla comunidade e ecossistema de exportadores que são escritos para várias estruturas tradicionais de aprendizado de máquina, bem como modelos como modelos lineares, conjuntos de árvores e aumento de gradiente. Para representar tudo isso, o ONNX atua como um padrão que fica entre os produtores e consumidores do modelo. O zoológico modelo ONNX contém um conjunto de modelos padrão e amplamente usados em diferentes domínios, incluindo análise de imagem, classificação, segmentação e processamento de linguagem natural, todos representados em formatos ONNX. O tempo de execução ONNX, um projeto de código aberto da Microsoft, é um tempo de execução totalmente compatível que oferece suporte ao aprendizado profundo básico e aos operadores ONNX ML.

  • 00:25:00 Nesta seção, o palestrante discute as limitações do ONNX, particularmente em termos de certos recursos ausentes, como processamento de imagem, processamento avançado de strings e modelos de agrupamento de hash. Além disso, há desafios quando se trata de exportar pipelines híbridos de estruturas como Spark ML, e isso requer um pouco de código personalizado. No entanto, ONNX é um projeto ativo que está crescendo rapidamente e tem forte apoio de grandes organizações. Ele oferece verdadeira portabilidade em diferentes dimensões de linguagens, estruturas, tempos de execução e versões, o que resolve um ponto problemático significativo para a implantação de pipelines de aprendizado profundo de maneira aberta e portátil. O ONNX é de código aberto e governança aberta, portanto, qualquer pessoa pode se envolver.
Razão: