Introdução ao processamento de linguagem natural moderno com PyTorch no Elasticsearch

blog-thumb-website-search.png

Com o lançamento do 8.0, a Elastic tem a satisfação de apresentar a capacidade de carregar modelos de machine learning PyTorch no Elasticsearch para fornecer um processamento de linguagem natural (PLN) moderno no Elastic Stack. Agora, os usuários do Elasticsearch podem integrar um dos formatos mais populares para construir modelos de PLN e incorporar esses modelos como parte de um pipeline de dados de PLN no Elasticsearch com nosso processador de inferência. A capacidade de adicionar modelos PyTorch, juntamente com as novas APIs de busca de ANN, adiciona um vetor totalmente novo ao Elastic Enterprise Search.

O que é o PNL?

PNL refere-se à maneira pela qual podemos usar software para manipular e entender texto falado ou escrito, ou linguagem natural. Em 2018, o Google abriu o código de uma nova técnica para pré-treinamento de PNL chamada Representações de Codificador Bidirecional de Transformadores, ou BERT, pelas iniciais em inglês. O BERT utiliza “aprendizagem por transferência” treinando em conjuntos de dados do tamanho da internet (por exemplo, pense em toda a wikipédia e nos livros digitais) sem qualquer envolvimento humano.

A aprendizagem por transferência permite que um modelo BERT seja pré-treinado para compreensão de linguagem de uso geral. Depois que um modelo é pré-treinado apenas uma vez, ele pode ser reutilizado e ajustado para tarefas mais específicas a fim de entender como a linguagem é usada.

Para oferecer suporte a modelos do tipo BERT (modelos que usam o mesmo tokenizador que o BERT), o Elasticsearch começará dando suporte à maioria das tarefas de PLN mais comuns com suporte para o modelo PyTorch. O PyTorch é uma das bibliotecas modernas de machine learning mais populares, com uma grande comunidade de usuários ativos, e é uma biblioteca que é compatível com redes neurais profundas, como a arquitetura Transformer que o BERT utiliza.

Aqui estão alguns exemplos de tarefas de PNL:

  • Análise de sentimentos: classificação binária para identificar declarações positivas versus negativas
  • Reconhecimento de entidades nomeadas (REN): construção de uma estrutura a partir de texto não estruturado, tentando extrair detalhes como nome, local ou organização, por exemplo
  • Classificação de texto: a classificação zero-shot permite classificar o texto com base nas classes que você escolher sem pré-treinamento.
  • Incorporações de texto: usadas para busca de k-ésimo vizinho mais próximo (kNN)
Video thumbnail

PNL no Elasticsearch

Ao integrar modelos de PLN à Elastic Platform, queríamos fornecer uma ótima experiência ao usuário para carregar e gerenciar modelos. Com o cliente Eland para carregar modelos PyTorch e a interface de usuário do Model Management (Gerenciamento de modelos) no Machine Learning do Kibana para gerenciar os modelos em um cluster do Elasticsearch, os usuários podem experimentar diferentes modelos e ter uma boa ideia como eles se comportam em seus dados. Também queríamos torná-los escaláveis em vários nós disponíveis em um cluster e fornecer um bom desempenho de taxa de transferência de inferência.

Para tornar tudo isso possível, precisávamos de uma biblioteca de machine learning para realizar a inferência. A adição de suporte para PyTorch no Elasticsearch exigiu o uso da biblioteca nativa libtorch, que respalda o PyTorch e só dará suporte aos modelos PyTorch que foram exportados ou salvos como uma representação do TorchScript. Essa é a representação de um modelo de que a libtorch precisa e permitirá que o Elasticsearch evite executar um interpretador Python.

Ao se integrar a um dos formatos mais populares para a construção de modelos de PNL em modelos PyTorch, o Elasticsearch pode fornecer uma plataforma que funciona com uma grande variedade de tarefas e casos de uso de PNL. Várias bibliotecas excelentes estão disponíveis para treinamento de modelos de PNL; então, estamos deixando isso para outras ferramentas por enquanto. Independentemente de estar treinando modelos com bibliotecas como PyTorch NLP, Hugging Face Transformers ou fairseq do Facebook, você poderá importar seus modelos para o Elasticsearch e realizar inferências nesses modelos. A inferência do Elasticsearch será inicialmente apenas no momento da ingestão, com a capacidade de expandir no futuro para introduzir inferência também no momento da consulta.

Até agora, havia métodos para integrar modelos de PLN por meio de chamadas de API e plugins e outras opções para transmitir dados de e para o Elasticsearch. No entanto, ao integrar modelos de PLN ao pipeline de dados do Elasticsearch, você obtém os seguintes benefícios:

  • Criar uma infraestrutura melhor em torno dos seus modelos de PNL
  • Expandir a inferência do seu modelo de PNL
  • Manter a segurança e a privacidade dos seus dados

Os modelos de PNL podem ser gerenciados centralmente no Kibana para distribuir consultas entre vários nós de machine learning a fim de proporcionar um balanceamento de carga otimizado.

As chamadas de inferência para os modelos PyTorch podem ser distribuídas pelo cluster e podem permitir que os usuários expandam com base na carga no futuro. O desempenho pode ser aprimorado se os dados não forem movidos e com a otimização das VMs em nuvem para inferência baseada em CPU. Ao incorporar modelos de PLN no Elasticsearch, podemos manter os dados em uma rede centralizada e segura, tendo em mente a privacidade e a conformidade dos dados. Infraestrutura comum, desempenho de consulta e privacidade de dados podem ser aprimorados incorporando modelos de PLN no Elasticsearch.

Fluxo de trabalho de implementação de um modelo de PNL PyTorch

Existem algumas etapas simples para implementar um modelo de PNL com PyTorch. A primeira etapa é carregar nossos modelos no Elasticsearch. Um método para fazer isso é usar as REST APIs em qualquer cliente do Elasticsearch, mas queríamos adicionar ferramentas ainda mais simples que ajudam no processo. Em nosso cliente Eland, que é nossa biblioteca Python Data Science para o Elastic Stack, apresentaremos alguns métodos e scripts muito simples que permitem carregar modelos do disco local ou extrair modelos do hub de modelos Hugging Face, que é uma das maneiras mais populares de compartilhar modelos treinados. Para qualquer uma dessas abordagens, haverá ferramentas para ajudar a converter modelos PyTorch em suas representações TorchScript e, finalmente, carregar os modelos em um cluster.

Video thumbnail

Depois que os modelos PyTorch forem carregados no cluster, você poderá alocar esses modelos para nós de machine learning específicos. Esse processo deixa os modelos prontos para inferência carregando-os na memória e iniciando os processos nativos do libtorch.

Finalmente, quando a alocação dos modelos estiver completa, estaremos prontos para inferência. Na ingestão, haverá um processador para inferência, e você poderá configurar qualquer tipo de pipeline de processamento de ingestão para pré-processar ou pós-processar documentos antes ou depois da inferência. Por exemplo, podemos ter uma tarefa de análise de sentimentos em que pegamos o texto de um campo de documento como entrada, retornamos o rótulo de classe positivo ou negativo que foi previsto para essa entrada e adicionamos essa previsão a um campo de saída no documento. O novo documento resultante pode ser processado por outros processadores de ingestão ou ser indexado como está.

O que vem a seguir

Esperamos poder lhe fornecer mais exemplos de modelos específicos e tarefas de PNL em futuras atualizações do blog e nos webinars que acontecerão em breve. Se você tem um modelo que gostaria de experimentar no Elasticsearch, pode começar hoje mesmo e nos contar sobre sua experiência em nosso fórum sobre machine learning no Discuss ou em uma comunidade do Slack. Para casos de uso em produção, o Elasticsearch requer uma licença Platinum ou Enterprise para carregar modelos de PLN e usar o processador de inferência, mas você pode experimentá-lo hoje mesmo com uma licença de avaliação gratuita. Ou você pode começar criando um cluster do Elastic Cloud e usando nosso cliente Eland para carregar o modelo no seu novo cluster. Você pode iniciar uma avaliação gratuita de 14 dias do Elastic Cloud agora mesmo.

Mais uma coisa... se tiver interesse em aprender mais sobre modelos de PNL e sobre a integração desses modelos no Elasticsearch, assista ao nosso webinar Introdução aos modelos de PNL e busca vetorial.

Links relacionados adicionais: