Open-source do Sysgrok — um assistente de IA para analisar, compreender e otimizar sistemas.

O Sysgrok é uma prova de conceito experimental, destinada a demonstrar como os LLMs podem ser usados para ajudar os engenheiros de software e os engenheiros de confiabilidade de sistemas a entender os sistemas, depurar problemas e otimizar o desempenho.

Conecte-se perfeitamente com as principais plataformas de IA e machine learning. Inicie um teste gratuito na nuvem para explorar os recursos de IA generativa da Elastic ou experimente agora mesmo em sua máquina.

Neste post, apresentarei o Sysgrok, um protótipo de pesquisa no qual estamos investigando como grandes modelos de linguagem (LLMs), como os modelos GPT da OpenAI, podem ser aplicados a problemas nas áreas de otimização de desempenho, análise de causa raiz e engenharia de sistemas. Você pode encontrá-lo no GitHub.

O que faz o Sysgrok?

O Sysgrok pode fazer coisas como:

  • Selecione as funções e os processos mais dispendiosos identificados por um analisador de desempenho, explique a funcionalidade que cada um oferece e sugira otimizações.
  • Receba um host e uma descrição do problema que esse host está enfrentando e depure automaticamente o problema, sugerindo soluções e ações adicionais.
  • Pegue o código-fonte que foi anotado por um profiler, explique os caminhos críticos (hot paths) e sugira maneiras de melhorar o desempenho do código.

A funcionalidade do Sysgrok visa três grandes categorias de soluções:

  1. Como mecanismo de análise para desempenho, confiabilidade e outros dados relacionados a sistemas. Nesse modo, o LLM recebe a saída de alguma outra ferramenta usada pelo engenheiro (por exemplo, uma ferramenta de linha de comando do Linux, um profiler ou uma plataforma de observabilidade). O objetivo do Sysgrok é interpretar, resumir e formular hipóteses sobre o estado do sistema usando um Modelo de Liderança Linear (LLM). Também pode sugerir otimizações ou correções.
  2. Como uma solução automatizada e focada para tarefas específicas relacionadas a desempenho e confiabilidade. Existem algumas tarefas que surgem repetidamente no trabalho de engenharia de desempenho e SRE (Confiabilidade de Site). Para isso, podemos construir assistentes automatizados e focados que podem ser usados diretamente pelo engenheiro ou pelo próprio Sysgrok na resolução de outros problemas. Por exemplo, em engenharia de desempenho, é comum responder à pergunta: "Existe uma versão mais rápida desta biblioteca com funcionalidade equivalente?". O sysgrok oferece suporte direto a isso.
  3. Como uma ferramenta automatizada de análise de causa raiz para problemas de desempenho e confiabilidade. As duas primeiras categorias de solução são uma mistura de análise de dados, interpretação, pesquisa e sumarização. Fundamentalmente, elas são aplicadas de forma direcionada aos dados que o próprio engenheiro coletou. No Sysgrok, também estamos investigando uma terceira abordagem para a resolução de problemas com LLMs, na qual o LLM é combinado com outras ferramentas para realizar, de forma autônoma, a análise da causa raiz e a resolução de um determinado problema. Nessa abordagem, o LLM recebe uma descrição do problema (por exemplo, "O servidor web está apresentando alta latência") e é informado sobre quais recursos estão disponíveis para ele (por exemplo, "conectar-se a um host via SSH", "executar ferramentas de linha de comando Linux arbitrárias"). Em seguida, o LLM é questionado sobre as ações a serem tomadas, utilizando os recursos disponíveis, para priorizar o problema. Essas ações são executadas pelo Sysgrok, e o Gerente de Liderança de Equipe (LLM) é solicitado a analisar os resultados, priorizar o problema, sugerir soluções e recomendar os próximos passos.

O sysgrok ainda está em seus estágios iniciais, mas estamos lançando-o porque já se mostrou útil para diversas tarefas — esperamos que seja uma base conveniente para que outros realizem experimentos semelhantes. Fique à vontade para nos enviar PRs ou abrir issues no GitHub se tiver alguma ideia!

Analisando problemas de desempenho com LLMs

Os modelos de linguagem natural (LLMs), como os modelos GPT da OpenAI, explodiram em popularidade nos últimos meses, fornecendo uma interface de linguagem natural e servindo como mecanismo central para todos os tipos de produtos, desde chatbots de atendimento ao cliente até assistentes de manipulação de dados e assistentes de programação. Um aspecto interessante dessa tendência é que, essencialmente, todas essas aplicações utilizam modelos genéricos e prontos para uso, que não foram especificamente treinados ou ajustados para a tarefa em questão. Em vez disso, foram treinadas em grandes extensões da internet como um todo e, como resultado, são aplicáveis a uma ampla variedade de tarefas.

Então, podemos usar esses modelos para auxiliar na análise de desempenho, depuração e otimização? Existem diversas metodologias para investigar problemas de desempenho, identificar as causas principais e propor otimizações. Em sua essência, qualquer trabalho de análise de desempenho envolverá a observação da saída de várias ferramentas, como ferramentas de linha de comando do Linux ou uma plataforma de observabilidade, e a interpretação dessa saída para formular uma hipótese sobre o estado do sistema. Entre os materiais utilizados no treinamento dos modelos GPT, encontram-se fontes que abrangem engenharia de software, depuração, análise de infraestrutura, funcionamento interno de sistemas operacionais, Kubernetes, comandos Linux e sua utilização, além de metodologias de análise de desempenho. Como resultado, os modelos podem ser usados para resumir, interpretar e formular hipóteses sobre os dados e problemas que os engenheiros de desempenho encontram no dia a dia, o que pode acelerar o ritmo com que um engenheiro realiza suas análises.

Podemos ir além e utilizar o LLM não apenas para análise de dados e resposta a perguntas, mas também no contexto do processo investigativo do próprio engenheiro. Como mostraremos mais adiante neste post, o próprio LLM pode ser usado para direcionar o processo em alguns cenários, decidindo quais comandos executar ou quais fontes de dados analisar para depurar um problema.

Demos

Para obter a lista completa de recursos suportados pelo sysgrok, consulte o repositório do GitHub. De forma geral, apoia três abordagens para a resolução de problemas:

Nesse modo, o LLM recebe a saída de outra ferramenta que está sendo usada pelo engenheiro, como uma ferramenta de linha de comando do Linux, um profiler ou uma plataforma de observabilidade. O objetivo do Sysgrok é interpretar, resumir e sugerir soluções.

Por exemplo, o subcomando topn analisa as funções mais custosas, conforme relatado por um profiler, explica a saída e, em seguida, sugere maneiras de otimizar o sistema.

Este vídeo também mostra a funcionalidade de chat oferecida pelo Sysgrok. Ao receber o argumento –chat, o sysgrok iniciará uma sessão de bate-papo após cada resposta do LLM.

Essa funcionalidade também pode ser aplicada genericamente à saída de ferramentas de linha de comando do Linux. Por exemplo, no artigo Análise de desempenho do Linux em 60 segundos, Brendan Gregg descreve 10 comandos que um SRE deve executar ao se conectar pela primeira vez a um host que esteja apresentando um problema de desempenho ou estabilidade. O subcomando analyzecmd recebe como entrada um host ao qual se conectar e um comando a ser executado, analisando e resumindo a saída do comando para o usuário. Podemos usar isso para automatizar o processo descrito por Gregg e fornecer ao usuário um resumo de um parágrafo com todos os dados gerados pelos 10 comandos, evitando que ele tenha o trabalho de analisar a saída de cada comando individualmente.

Existem algumas tarefas que surgem repetidamente no trabalho de engenharia de desempenho e SRE (Confiabilidade de Site). Para isso, podemos construir assistentes automatizados e focados que podem ser usados diretamente pelo engenheiro ou pelo próprio Sysgrok na resolução de outros problemas.

Por exemplo, o subcomando findfaster recebe como entrada o nome de uma biblioteca ou programa e usa o LLM para encontrar uma alternativa equivalente mais rápida. Essa é uma tarefa muito comum em engenharia de desempenho.

Outro exemplo dessa abordagem no Sysgrok é o subcomando explainfunction . Este subcomando recebe o nome de uma biblioteca e uma função dentro dessa biblioteca. O texto explica o que a biblioteca faz e seus casos de uso comuns, e em seguida explica a função. Por fim, sugere possíveis otimizações caso essa biblioteca e função estejam consumindo uma quantidade significativa de recursos da CPU.

Abordagem 3: Como uma ferramenta automatizada de análise de causa raiz para problemas de desempenho e confiabilidade.

A utilização de LLMs não se limita apenas a respostas a perguntas específicas, sumarização e tarefas semelhantes. E não se limita a um uso pontual, em que lhes é feita uma única pergunta isolada. O subcomando sysgrok debughost demonstra como um LLM pode ser usado como o "cérebro" em um agente com o objetivo de resolução automatizada de problemas. Nesse modo, o LLM está incorporado em um processo que o utiliza para decidir como depurar um problema específico e lhe confere a capacidade de se conectar a hosts, executar comandos e acessar outras fontes de dados.

O comando debughost é provavelmente a parte mais experimental do sysgrok no momento. Isso demonstra um passo no caminho rumo a agentes automatizados para análise de desempenho, mas ainda é necessário um investimento significativo em pesquisa e desenvolvimento para chegarmos lá.

Conclusão

Neste post, apresentei o Sysgrok, um novo assistente de IA de código aberto para analisar, compreender e otimizar sistemas. Também discutimos as três categorias gerais de abordagem que o Sysgrok implementa:

  1. Um mecanismo de análise para desempenho, confiabilidade e outros dados relacionados a sistemas: consulte os subcomandos topn, stacktrace, analyzecmd e code.
  2. Soluções automatizadas e focadas em tarefas específicas relacionadas a desempenho e confiabilidade: consulte os subcomandos explainprocess, explainfunction e findfaster.
  3. Análise automatizada da causa raiz para problemas de desempenho e confiabilidade: consulte o subcomando debughost.

Você pode encontrar o projeto sysgrok no GitHub. Fique à vontade para criar PRs e Issues, ou entre em contato comigo diretamente pelo e-mail sean.heelan@elastic.co se quiser discutir o projeto ou as aplicações de LLMs em geral.

Conteúdo relacionado

Pronto para criar buscas de última geração?

Uma pesquisa suficientemente avançada não se consegue apenas com o esforço de uma só pessoa. O Elasticsearch é impulsionado por cientistas de dados, especialistas em operações de aprendizado de máquina, engenheiros e muitos outros que são tão apaixonados por buscas quanto você. Vamos nos conectar e trabalhar juntos para construir a experiência de busca mágica que lhe trará os resultados desejados.

Experimente você mesmo(a)