Conéctate fácilmente con las principales plataformas de inteligencia artificial y machine learning. Inicia una prueba gratuita en el cloud para explorar las capacidades de IA generativa de Elastic o pruébalo en tu máquina ahora mismo.
En esta entrada presentaré sysgrok, un prototipo de investigación en el que estamos investigando cómo los grandes modelos de lenguaje (LLM), como los modelos GPT de OpenAI, pueden aplicar a problemas en los dominios de optimización del rendimiento, análisis de causa raíz e ingeniería de sistemas. Puedes encontrarlo en GitHub.
¿Qué hace sysgrok?
Sysgrok puede hacer cosas como:
- Toma las funciones y procesos más caros identificados por un perfilador, explica la funcionalidad que cada uno ofrece y sugiere optimizaciones
- Toma un host y una descripción de un problema que ese host está encontrando y depura automáticamente el problema, sugiriendo soluciones y acciones adicionales
- Tomemos código fuente que fue anotado por un perfilador, explicamos los caminos calientes y sugerimos formas de mejorar el rendimiento del código
La funcionalidad de Sysgrok está orientada a tres grandes categorías de soluciones:
- Como motor de análisis para rendimiento, fiabilidad y otros datos relacionados con sistemas. En este modo, el LLM recibe la salida de alguna otra herramienta empleada por el ingeniero (por ejemplo, una herramienta de línea de comandos para Linux, un perfilador o una plataforma de observabilidad). El objetivo de Sysgrok es interpretar, resumir y formular hipótesis sobre el estado del sistema empleando un LLM. También puede sugerir optimizaciones o remediaciones.
- Como una solución automatizada y enfocada para tareas específicas relacionadas con el rendimiento y la fiabilidad. Hay algunas tareas que se presentan repetidamente en ingeniería de rendimiento y trabajo de SRE. Para estos podemos construir asistentes automatizados y enfocados que puedan ser usados directamente por el ingeniero o por el propio sysgrok para resolver otros problemas. Por ejemplo, en ingeniería de rendimiento, responder a la pregunta "¿Existe una versión más rápida de esta biblioteca con funcionalidad equivalente?" es común. Sysgrok soporta esto directamente.
- Como una herramienta automatizada de análisis de causas raíz para problemas de rendimiento y fiabilidad. Las dos primeras categorías de solución son una combinación de análisis de datos, interpretación, búsqueda y resumen. Lo fundamental es que se aplican de manera enfocada a los datos que el propio ingeniero recopiló. En sysgrok, también estamos investigando un tercer enfoque para la resolución de problemas con LLMs, en el que el LLM se combina con otras herramientas para realizar de forma autónoma el análisis y la resolución de causas raíz de un problema dado. En este enfoque, al LLM se le asigna una descripción del problema (por ejemplo, "El servidor sitio web está experimentando alta latencia") y se le indica qué capacidades tiene disponibles (por ejemplo, "ssh a un host", "ejecutar herramientas arbitrarias de línea de comandos de Linux"). A continuación, se le pide al LLM las acciones a tomar, empleando las capacidades a su disposición, para triaje del problema. Esas acciones las ejecuta sysgrok, y se pide al LLM que analice los resultados, haga la triaje del problema, sugiera soluciones y recomiende los siguientes pasos.
Sysgrok aún está en sus primeros días, pero lo lanzamos porque ya es útil para una variedad de tareas — esperamos que sea una base conveniente para que otros realicen experimentos similares. ¡No dudes en enviarnos PRs o publicaciones abiertas en GitHub si tienes alguna idea!
Análisis de problemas de rendimiento con LLMs
Los LLM, como los modelos GPT de OpenAI, explotaron en popularidad en los últimos meses, proporcionando una interfaz en lenguaje natural y un motor central para todo tipo de productos, desde chatbots de asistente de clientes, asistentes de manipulación de datos y asistentes de programación. Un aspecto interesante de esta tendencia es que prácticamente todas estas aplicaciones emplean modelos genéricos y fuera de la carcasa que no fueron específicamente capacitados o ajustados para la tarea en cuestión. En cambio, fueron capacitados en grandes extensiones de Internet en su conjunto y, como resultado, son aplicables a una amplia variedad de tareas.
Entonces, ¿podemos emplear estos modelos para ayudar con el análisis de rendimiento, la depuración y la optimización? Existen diversas metodologías para investigar problemas de rendimiento, triar causas raíz y proponer optimizaciones. Sin embargo, en esencia, cualquier trabajo de análisis de rendimiento implicará analizar la salida de diversas herramientas, como las herramientas de línea de comandos de Linux o una plataforma de observabilidad, e interpretar esa salida para formar una hipótesis sobre el estado del sistema. Entre el material con el que se capacitaron los modelos GPT se encuentran fuentes que cubren ingeniería de software, depuración, análisis de infraestructura, componentes internos del sistema operativo, Kubernetes, comandos de Linux y su uso, así como metodologías de análisis de rendimiento. Como resultado, los modelos pueden emplear para resumir, interpretar e hipotetizar los datos y problemas que los ingenieros de rendimiento enfrentan en el día a día, lo que puede acelerar el ritmo al que un ingeniero avanza en su análisis.
Sin embargo, podemos ir más allá e ir más allá del uso del LLM únicamente para análisis de datos y respuesta a preguntas dentro del propio proceso de investigación del ingeniero. Como mostraremos más adelante en esta publicación, el propio LLM puede usar para impulsar el proceso en algunos escenarios, con el LLM decidiendo qué comandos ejecutar o qué fuentes de datos revisar para depurar un problema.
Demostraciones
Para ver todo el conjunto de capacidades que soporta sysgrok, consulta el repositorio de GitHub. En términos generales, apoya tres enfoques para la resolución de problemas:
Enfoque 1: Como motor de análisis para datos relacionados con el rendimiento, la fiabilidad y otros sistemas
En este modo, el LLM recibe la salida de otra herramienta que emplea el ingeniero, como una herramienta de línea de comandos para Linux, un perfilador o una plataforma de observabilidad. El objetivo de Sysgrok es interpretar, resumir y sugerir remediaciones.
Por ejemplo, el subcomando topn toma las funciones más costosas según lo informa un perfilador, explica la salida y luego sugiere formas de optimizar el sistema.
Este video también muestra la funcionalidad de chat que ofrece sysgrok. Cuando se le proporciona el argumento –chat, sysgrok pasará a una sesión de chat tras cada respuesta del LLM.
Esta capacidad también puede aplicar de forma genérica a la salida de las herramientas de línea de comandos de Linux. Por ejemplo, en el artículo Análisis de rendimiento de Linux en 60 segundos, Brendan Gregg describe 10 comandos que un SRE debe ejecutar cuando se conecta por primera vez a un host que experimenta un problema de rendimiento o estabilidad. El subcomando analyzecmd toma como entrada un host al que conectarse y un comando para ejecutar, y luego analiza y resume la salida del comando para el usuario. Podemos usar esto para automatizar el proceso descrito por Gregg y ofrecer al usuario un resumen de un párrafo de todos los datos generados por los 10 comandos, ahorrándole la molestia de tener que revisar la salida del comando uno a uno.
Enfoque 2: Como una solución automatizada y enfocada para tareas específicas relacionadas con el rendimiento y la fiabilidad
Hay algunas tareas que se presentan repetidamente en ingeniería de rendimiento y trabajo de SRE. Para estos podemos construir asistentes automatizados y enfocados que pueden ser empleados directamente por el ingeniero o por el propio sysgrok para resolver otros problemas.
Por ejemplo, el subcomando findfaster toma como entrada el nombre de una biblioteca o programa y emplea el LLM para encontrar un reemplazo equivalente y más rápido para él. Esta es una tarea muy común en la ingeniería del rendimiento.
Otro ejemplo de este enfoque en sysgrok es el subcomando explainfunction . Este subcomando toma el nombre de una biblioteca y una función dentro de esa biblioteca. Explica qué hace la biblioteca y sus casos de uso habituales, y luego explica la función. Finalmente, sugiere posibles optimizaciones si esa librería y función consumen una cantidad significativa de recursos de la CPU.
Enfoque 3: Como herramienta automatizada de análisis de causas raíz para problemas de rendimiento y fiabilidad
El uso de los LLMs no se limita solo a responder preguntas enfocadas, resumir y tareas similares. Tampoco se limita al uso de una sola sesión, donde se plantea una única pregunta aislada. El subcomando debughost de sysgrok demuestra cómo un LLM puede usar como el "cerebro" en un agente con el objetivo de resolver problemas automatizadamente. En este modo, el LLM está integrado en un proceso que emplea el LLM para decidir cómo depurar un problema concreto y le da la capacidad de conectarse a hosts, ejecutar comandos y acceder a otras fuentes de datos.
El comando debughost es probablemente la parte más experimental de sysgrok en este momento. Muestra un paso en el camino hacia agentes automatizados para el análisis de rendimiento, pero se requiere una cantidad significativa de investigación y desarrollo para llegar ahí.
Conclusión
En esta publicación presenté sysgrok, un nuevo asistente de IA de código abierto para analizar, comprender y optimizar sistemas. También hablamos de las tres grandes categorías de enfoque que sysgrok implementa:
- Un motor de análisis para datos relacionados con el rendimiento, la fiabilidad y otros sistemas relacionados: Consulta los subcomandos topn, stacktrace, analyzecmd y code.
- Soluciones automatizadas y enfocadas para tareas específicas relacionadas con el rendimiento y la fiabilidad: Consulta los subcomandos explainprocess, explicación y findfaster.
- Análisis automatizado de causa raíz para problemas de rendimiento y fiabilidad: Consulta el subcomando debughost.
Puedes encontrar el proyecto sysgrok en GitHub. No dudes en crear PRs y Issues, o puedes contactarme directamente a través de sean.heelan@elastic.co si quieres hablar sobre el proyecto o las aplicaciones de los LLMs en general.




