Como acessar modelos de machine learning no Elastic

accessing-machine-learning-models.jpg

A Elastic oferece suporte para os modelos de machine learning de que você precisa

A Elastic® possibilita que você aplique o machine learning (ML) apropriado para seu caso de uso e nível de expertise em ML. Você tem várias opções:

  1. Utilizar os modelos que vêm integrados. Além de modelos voltados para ameaças à segurança específicas e tipos de problemas do sistema na nossa solução de observabilidade e segurança, você pode usar nosso modelo proprietário Elastic Learned Sparse Encoder pronto para uso, bem como uma identificação de idioma, útil se você estiver trabalhando com dados de texto que não estejam em inglês.
  2. Acessar modelos PyTorch de terceiros de qualquer lugar, incluindo o hub de modelos HuggingFace.
  3. Carregar um modelo que você treinou — principalmente transformadores de PLN neste ponto.

O uso de modelos integrados oferece valor imediato, sem exigir nenhum conhecimento de ML de sua parte, mas você tem a flexibilidade de experimentar modelos diferentes e determinar o que funciona melhor nos seus dados.

Nós projetamos nosso gerenciamento de modelos para ser escalável em vários nós de um cluster, além de garantir um bom desempenho de inferência para cargas de trabalho de alta taxa de transferência e de baixa latência. Isso ocorre em parte capacitando os pipelines de ingestão para executar a inferência e usando nós dedicados para a inferência de modelo computacionalmente exigente — durante a fase de ingestão, bem como na análise e na busca de dados.

Continue lendo para saber mais sobre a biblioteca do Eland que permite carregar modelos no Elastic e como isso funciona para os vários tipos de machine learning que você pode usar no Elasticsearch® — desde os mais recentes modelos transformadores e de processamento de linguagem natural (PLN) até os modelos de árvore aprimorados para regressão.

Você pode carregar modelos de ML no Elastic com o Eland

Nossa biblioteca do Eland fornece uma interface fácil para carregar modelos de ML no Elasticsearch, desde que tenham sido treinados usando o PyTorch. Usando a biblioteca nativa libtorch e esperando modelos que foram exportados ou salvos como uma representação TorchScript, o Elasticsearch evita a execução de um interpretador Python enquanto executa a inferência de modelos.

Ao se integrar a um dos formatos mais populares para a construção de modelos de PLN no PyTorch, o Elasticsearch pode fornecer uma plataforma que funciona com uma grande variedade de tarefas e casos de uso de PLN. Veremos mais sobre isso na seção sobre transformadores a seguir.

Você tem três opções para usar o Eland para carregar um modelo: linha de comando, Docker e de dentro do seu próprio código Python. O Docker é menos complexo porque não requer uma instalação local do Eland e de todas as suas dependências. Depois que você tem acesso ao Eland, a amostra de código abaixo mostra como carregar um modelo de REN DistilBERT, como exemplo:

modelo de ren distilbert

Mais abaixo, examinaremos cada um dos argumentos de eland_import_hub_model. E você pode emitir o mesmo comando de um container do Docker.

Após o upload, a interface do usuário ML Model Management do Kibana permite que você gerencie os modelos em um cluster do Elasticsearch, incluindo aumentar as alocações para elevar a taxa de transferência e parar/retomar modelos enquanto (re)configura seu sistema.

Quais modelos são compatíveis?

A Elastic oferece suporte para uma variedade de modelos transformadores, bem como para as bibliotecas de aprendizado supervisionado mais populares:

  • Modelos de PLN e embedding. Todos os transformadores que estão em conformidade com a interface do modelo BERT padrão e usam o algoritmo de tokenização WordPiece. Veja uma lista completa de arquiteturas de modelo compatíveis.
  • Aprendizagem supervisionada. Modelos treinados das bibliotecas scikit-learn, XGBoost e LightGBM para serem serializados e usados como um modelo de inferência no Elasticsearch. Nossa documentação fornece um exemplo para treinar uma classificação XGBoost em dados no Elastic. Você também pode exportar e importar modelos supervisionados treinados no Elastic com nossa analítica de estruturas de dados.
  • IA generativa. Você pode usar a API fornecida para o LLM para passar consultas — potencialmente enriquecidas com contexto recuperado do Elastic — e processar os resultados retornados. Para mais instruções, consulte este post do blog , que se vincula a um repositório do GitHub com código de exemplo para comunicação por meio da API do ChatGPT.

Abaixo, fornecemos mais informações sobre o tipo de modelo que você provavelmente usará no contexto de aplicações de busca: transformadores de PLN.

Como aplicar transformadores e PLN no Elastic com facilidade

Vamos mostrar as etapas para carregar e usar um modelo de PLN, por exemplo, um modelo de REN popular da Hugging Face, examinando os argumentos identificados no snippet de código abaixo.

modelo de hub de importação do eland
  1. Especifique o identificador do Elastic Cloud. Como alternativa, use --url.
  2. Forneça detalhes de autenticação para acessar seu cluster. Consulte os métodos de autenticação disponíveis
  3. Especifique o identificador para o modelo no hub de modelos da Hugging Face.
  4. Especifique o tipo de tarefa de PLN. Os valores aceitos são fill_mask, ner, text_classification, text_embedding e zero_shot_classification.

Depois de carregar o modelo, você precisa implantá-lo. Isso é feito na tela Model Management (Gerenciamento de modelo) da guia Machine Learning no Kibana. Em seguida, você normalmente testa o modelo para verificar se ele está funcionando corretamente.

Agora está tudo pronto para você usar o modelo implantado para inferência. Por exemplo, para extrair entidades nomeadas, você chama o endpoint _infer no modelo de REN carregado:

modelo de ren carregado

O modelo identifica duas entidades: a pessoa “Josh” e o local “Berlin”.

valor previsto

Para ver etapas adicionais, como o uso desse modelo em um pipeline de inferência e o ajuste da implantação, leia o post do blog que descreve este exemplo.

Quer ver como aplicar a busca semântica — por exemplo, como criar embeddings de texto e depois aplicar a busca vetorial para encontrar documentos relacionados? Este post do blog traz uma descrição passo a passo, incluindo a validação do desempenho do modelo.

Não sabe qual tipo de tarefa usar para qual modelo? Esta tabela deve ajudar você a começar.

Modelo da Hugging Face

task-type

Reconhecimento de entidades nomeadas

ner

Embedding de texto

text_embedding

Classificação de texto

text_classification

Classificação zero-shot

zero_shot_classification

Resposta a perguntasquestion_answering

A Elastic também oferece suporte para comparar a similaridade entre dois textos como task-type text_similarity. Isso é útil para classificar o texto do documento ao compará-lo com outra entrada de texto fornecida e, às vezes, é chamado de codificação cruzada. 

Confira mais detalhes nestes recursos

Elastic, Elasticsearch e marcas associadas são marcas comerciais, logotipos ou marcas registradas da Elasticsearch N.V. nos Estados Unidos e em outros países. Todos os outros nomes de empresas e produtos são marcas comerciais, logotipos ou marcas registradas de seus respectivos proprietários.

O lançamento e o tempo de amadurecimento de todos os recursos ou funcionalidades descritos neste post permanecem a exclusivo critério da Elastic. Os recursos ou funcionalidades não disponíveis atualmente poderão não ser entregues dentro do prazo previsto ou nem chegar a ser entregues.