Connectez-vous facilement aux principales plateformes d’IA et de machine learning. Démarrez un essai gratuit sur le cloud pour explorer les fonctionnalités d’IA générative d’Elastic, ou testez-les dès maintenant sur votre machine locale.
Dans ce billet, je vais présenter sysgrok, un prototype de recherche dans lequel nous étudions comment les grands modèles de langage (LLM), comme les modèles GPT de l'OpenAI, peuvent être appliqués à des problèmes dans les domaines de l'optimisation des performances, de l'analyse des causes profondes et de l'ingénierie des systèmes. Vous pouvez le trouver sur GitHub.
Que fait sysgrok ?
sysgrok peut faire des choses comme :
- Prendre les fonctions et processus les plus coûteux identifiés par un profileur, expliquer la fonctionnalité de chacun et suggérer des optimisations.
- À partir d'un hôte et d'une description d'un problème rencontré par cet hôte, il est possible de déboguer automatiquement le problème et de proposer des solutions et des actions supplémentaires.
- Prendre un code source qui a été annoté par un profileur, expliquer les chemins chauds et suggérer des moyens d'améliorer les performances du code.
Les fonctionnalités de sysgrok s'adressent à trois grandes catégories de solutions :
- En tant que moteur d'analyse des performances, de la fiabilité et d'autres données relatives aux systèmes. Dans ce mode, le LLM est alimenté par la sortie d'un autre outil utilisé par l'ingénieur (par exemple, un outil de ligne de commande Linux, un profileur ou une plate-forme Observability). L'objectif de sysgrok est d'interpréter, de résumer et de formuler des hypothèses sur l'état du système à l'aide d'un LLM. Il peut également suggérer des optimisations ou des remédiations.
- En tant que solution ciblée et automatisée à des tâches spécifiques liées à la performance et à la fiabilité. Certaines tâches reviennent régulièrement dans les travaux d'ingénierie des performances et de SRE. Pour ces derniers, nous pouvons construire des assistants automatisés et ciblés qui peuvent être utilisés directement par l'ingénieur ou par sysgrok lui-même pour résoudre d'autres problèmes. Par exemple, dans le domaine de l'ingénierie des performances, il est courant de répondre à la question suivante : "Existe-t-il une version plus rapide de cette bibliothèque avec des fonctionnalités équivalentes ?". sysgrok prend cela en charge directement.
- Outil d'analyse automatisée des causes profondes des problèmes de performance et de fiabilité. Les deux premières catégories de solutions sont un mélange d'analyse, d'interprétation, de recherche et de synthèse de données. Surtout, ils sont appliqués de manière ciblée aux données que l'ingénieur a lui-même recueillies. Dans sysgrok, nous étudions également une troisième approche de la résolution de problèmes avec les LLM, dans laquelle le LLM est combiné avec d'autres outils pour effectuer de manière autonome l'analyse des causes profondes et la résolution d'un problème donné. Dans cette approche, le LLM reçoit une description du problème (par exemple, "Le serveur web connaît une latence élevée") et est informé des capacités dont il dispose (par exemple, "ssh à un hôte," " exécuter des outils de ligne de commande Linux arbitraires"). Il est ensuite demandé au mécanisme d'apprentissage à long terme d'indiquer les mesures à prendre, en utilisant les capacités dont il dispose, pour trier le problème. Ces actions sont exécutées par sysgrok, et il est demandé au LLM d'analyser les résultats, de trier le problème, de suggérer des remèdes et de recommander les prochaines étapes.
sysgrok en est encore à ses débuts, mais nous le publions car il est déjà utile pour une variété de tâches - nous espérons qu'il sera une base pratique pour d'autres personnes afin de réaliser des expériences similaires. N'hésitez pas à nous envoyer des PR ou à ouvrir des problèmes sur GitHub si vous avez des idées !
Analyse des problèmes de performance avec les LLM
Les LLM, tels que les modèles GPT d'OpenAI, ont vu leur popularité exploser au cours des derniers mois, fournissant une interface en langage naturel et un moteur au cœur de toutes sortes de produits, qu'il s'agisse de robots d'assistance à la clientèle, d'assistants de manipulation de données ou d'assistants de codage. Un aspect intéressant de cette tendance est que la plupart de ces applications utilisent des modèles génériques qui n'ont pas été spécifiquement formés ou affinés pour la tâche à accomplir. Au contraire, ils ont été formés sur de larges pans de l'internet dans son ensemble et sont donc applicables à un large éventail de tâches.
Pouvons-nous donc utiliser ces modèles pour faciliter l'analyse des performances, le débogage et l'optimisation ? Il existe plusieurs méthodes pour étudier les problèmes de performance, déterminer les causes profondes et proposer des optimisations. Au fond, tout travail d'analyse des performances consiste à examiner les résultats de divers outils, tels que les outils de ligne de commande Linux ou une plate-forme d'observabilité, et à interpréter ces résultats afin de formuler une hypothèse sur l'état du système. Parmi le matériel sur lequel les modèles GPT ont été formés, on trouve des sources qui couvrent l'ingénierie logicielle, le débogage, l'analyse de l'infrastructure, les internes du système d'exploitation, Kubernetes, les commandes Linux et leur utilisation, ainsi que les méthodologies d'analyse de la performance. Par conséquent, les modèles peuvent être utilisés pour résumer, interpréter et émettre des hypothèses sur les données et les problèmes que les ingénieurs de performance rencontrent au quotidien, ce qui peut accélérer le rythme auquel un ingénieur progresse dans son analyse.
Nous pouvons aller plus loin et dépasser l'utilisation du LLM uniquement pour l'analyse des données et la réponse aux questions dans le contexte du processus d'investigation de l'ingénieur. Comme nous le montrerons plus loin dans ce billet, le LLM lui-même peut être utilisé pour piloter le processus dans certains scénarios, le LLM décidant des commandes à exécuter ou des sources de données à consulter pour déboguer un problème.
Démonstrations
Pour connaître l'ensemble des fonctionnalités prises en charge par sysgrok, consultez le dépôt GitHub. D'une manière générale, il soutient trois approches de la résolution de problèmes :
Approche 1 : moteur d'analyse des performances, de la fiabilité et d'autres données relatives aux systèmes
Dans ce mode, le LLM est alimenté par la sortie d'un autre outil utilisé par l'ingénieur, tel qu'un outil de ligne de commande Linux, un profileur ou une plate-forme d'observabilité. L'objectif de sysgrok est d'interpréter, de résumer et de suggérer des remèdes.
Par exemple, la sous-commande topn prend les fonctions les plus coûteuses telles que rapportées par un profiler, explique le résultat et suggère ensuite des moyens d'optimiser le système.
Cette vidéo montre également la fonctionnalité de chat fournie par sysgrok. Lorsque l'argument -chat est fourni, sysgrok entre dans une session de chat après chaque réponse du LLM.
Cette capacité peut également être appliquée de manière générique à la sortie des outils de ligne de commande Linux. Par exemple, dans l'article Linux Performance Analysis in 60 seconds, Brendan Gregg présente 10 commandes qu'un SRE doit exécuter lorsqu'il se connecte pour la première fois à un hôte qui présente un problème de performance ou de stabilité. La sous-commande analyzecmd prend en entrée un hôte auquel se connecter et une commande à exécuter, puis analyse et résume la sortie de la commande pour l'utilisateur. Nous pouvons l'utiliser pour automatiser le processus décrit par Gregg et donner à l'utilisateur un résumé d'un paragraphe de toutes les données générées par les 10 commandes, lui évitant ainsi d'avoir à parcourir la sortie de chaque commande une par une.
Approche 2 : Solution automatisée et ciblée pour des tâches spécifiques liées à la performance et à la fiabilité
Certaines tâches reviennent régulièrement dans les travaux d'ingénierie des performances et de SRE. Pour ces derniers, nous pouvons construire des assistants automatisés et ciblés qui peuvent être utilisés soit directement par l'ingénieur, soit par sysgrok lui-même pour résoudre d'autres problèmes.
Par exemple, la sous-commande findfaster prend en entrée le nom d'une bibliothèque ou d'un programme et utilise le LLM pour trouver un remplacement équivalent plus rapide. Il s'agit d'une tâche très courante dans le domaine de l'ingénierie de la performance.
Un autre exemple de cette approche dans sysgrok est la sous-commande explainfunction. Cette sous-commande prend le nom d'une bibliothèque et d'une fonction au sein de cette bibliothèque. Il explique ce que fait la bibliothèque et ses cas d'utilisation courants, puis il explique la fonction. Enfin, il suggère des optimisations possibles si cette bibliothèque et cette fonction consomment une quantité importante de ressources de l'unité centrale.
Approche 3 : En tant qu'outil d'analyse automatisée des causes profondes des problèmes de performance et de fiabilité
L'utilisation des LLM ne se limite pas à la réponse à des questions ciblées, à l'élaboration de résumés et à des tâches similaires. Elle ne se limite pas non plus à une utilisation ponctuelle, où une seule question isolée leur est posée. La sous-commande sysgrok debughost démontre comment un LLM peut être utilisé comme le cerveau "" dans un agent dans le but de résoudre des problèmes de manière automatisée. Dans ce mode, le LLM est intégré à un processus qui l'utilise pour décider de la manière de déboguer un problème particulier et lui donne la possibilité de se connecter à des hôtes, d'exécuter des commandes et d'accéder à d'autres sources de données.
La commande debughost est probablement la partie la plus expérimentale de sysgrok pour le moment. Il s'agit d'une étape sur la voie des agents automatisés pour l'analyse des performances, mais il faut encore beaucoup de R&D pour y parvenir.
Conclusion
Dans ce billet, j'ai présenté sysgrok, un nouvel assistant IA open-source pour l'analyse, la compréhension et l'optimisation des systèmes. Nous avons également abordé les trois grandes catégories d'approches mises en œuvre par sysgrok :
- Moteur d'analyse des performances, de la fiabilité et d'autres données relatives aux systèmes : Voir les sous-commandes topn, stacktrace, analyzecmd et code.
- Solutions ciblées et automatisées à des tâches spécifiques liées à la performance et à la fiabilité : Voir les sous-commandes explainprocess, explainfunction et findfaster.
- Analyse automatisée des causes profondes des problèmes de performance et de fiabilité : Voir la sous-commande debughost.
Vous pouvez trouver le projet sysgrok sur GitHub. N'hésitez pas à créer des relations publiques et des questions, ou à me contacter directement via sean.heelan@elastic.co si vous souhaitez discuter du projet ou des applications des LLM en général.



