Nahtlose Verbindung mit führenden KI- und Machine-Learning-Plattformen. Starten Sie eine kostenlose Cloud-Testversion, um die Funktionen der generativen KI von Elastic zu erkunden, oder testen Sie sie jetzt auf Ihrem Rechner.
In diesem Beitrag stelle ich sysgrok vor, einen Forschungsprototyp, mit dem wir untersuchen, wie große Sprachmodelle (LLMs), wie die GPT-Modelle von OpenAI, auf Probleme in den Bereichen Leistungsoptimierung, Ursachenanalyse und Systementwicklung angewendet werden können. Du findest es auf GitHub.
Was macht sysgrok?
sysgrok kann beispielsweise Folgendes:
- Nehmen Sie die vom Profiler ermittelten, kostenintensivsten Funktionen und Prozesse, erläutern Sie deren jeweilige Funktionalität und schlagen Sie Optimierungen vor.
- Nimmt einen Host und eine Beschreibung des Problems, das auf diesem Host auftritt, und debuggt das Problem automatisch. Anschließend werden Lösungsansätze und weitere Maßnahmen vorgeschlagen.
- Nehmen Sie Quellcode, der von einem Profiler annotiert wurde, erläutern Sie die kritischen Pfade und schlagen Sie Möglichkeiten zur Verbesserung der Code-Performance vor.
Die Funktionalität von sysgrok zielt auf drei große Lösungskategorien ab:
- Als Analysetool für Leistungs-, Zuverlässigkeits- und andere systembezogene Daten. In diesem Modus wird dem LLM die Ausgabe eines anderen vom Ingenieur verwendeten Tools zugeführt (z. B. eines Linux-Befehlszeilentools, eines Profilers oder einer Observability-Plattform). Ziel von sysgrok ist es, mithilfe eines LLM den Zustand des Systems zu interpretieren, zusammenzufassen und Hypothesen darüber aufzustellen. Anschließend können auch Optimierungen oder Abhilfemaßnahmen vorgeschlagen werden.
- Als fokussierte, automatisierte Lösung für spezifische Aufgaben im Bereich Leistung und Zuverlässigkeit. Es gibt einige Aufgaben, die im Bereich Performance Engineering und SRE immer wieder anfallen. Hierfür können wir zielgerichtete, automatisierte Assistenten entwickeln, die entweder direkt vom Ingenieur oder von sysgrok selbst zur Lösung anderer Probleme eingesetzt werden können. Beispielsweise ist es im Bereich Performance Engineering üblich, die Frage zu beantworten: „Gibt es eine schnellere Version dieser Bibliothek mit gleichwertiger Funktionalität?“ sysgrok unterstützt dies direkt.
- Als automatisiertes Werkzeug zur Ursachenanalyse von Leistungs- und Zuverlässigkeitsproblemen. Bei den ersten beiden Lösungskategorien handelt es sich um eine Mischung aus Datenanalyse, Interpretation, Suche und Zusammenfassung. Entscheidend ist, dass sie gezielt auf Daten angewendet werden, die der Ingenieur selbst erhoben hat. Im Projekt sysgrok untersuchen wir außerdem einen dritten Ansatz zur Problemlösung mit LLMs, bei dem das LLM mit anderen Werkzeugen kombiniert wird, um autonom eine Ursachenanalyse und Lösung eines gegebenen Problems durchzuführen. Bei diesem Ansatz erhält der LLM eine Problembeschreibung (z. B. „Der Webserver weist eine hohe Latenz auf“) und erfährt, welche Fähigkeiten ihm zur Verfügung stehen (z. B. „SSH-Verbindung zu einem Host herstellen“, „Beliebige Linux-Befehlszeilentools ausführen“). Anschließend wird das LLM gebeten, die ihm zur Verfügung stehenden Maßnahmen zur Priorisierung des Problems zu ergreifen. Diese Aktionen werden von sysgrok ausgeführt, und der LLM wird gebeten, die Ergebnisse zu analysieren, das Problem zu priorisieren, Abhilfemaßnahmen vorzuschlagen und die nächsten Schritte zu empfehlen.
sysgrok befindet sich noch in der Anfangsphase, aber wir veröffentlichen es, da es bereits für eine Vielzahl von Aufgaben nützlich ist – wir hoffen, dass es eine bequeme Basis für andere sein wird, um ähnliche Experimente durchzuführen. Schickt uns gerne Pull Requests oder öffnet Issues auf GitHub, wenn ihr Ideen habt!
Analyse von Leistungsproblemen mit LLMs
LLMs, wie beispielsweise die GPT-Modelle von OpenAI, haben in den letzten Monaten einen enormen Popularitätsschub erlebt und bieten eine natürliche Sprachschnittstelle sowie den Kern von allen möglichen Produkten, von Chatbots für den Kundenservice über Assistenten zur Datenmanipulation bis hin zu Programmierassistenten. Ein interessanter Aspekt dieses Trends ist, dass im Wesentlichen alle diese Anwendungen auf vorgefertigte, generische Modelle zurückgreifen, die nicht speziell für die jeweilige Aufgabe trainiert oder feinabgestimmt wurden. Stattdessen wurden sie mit großen Teilen des Internets als Ganzes trainiert und sind daher für eine breite Palette von Aufgaben anwendbar.
Können wir diese Modelle also zur Unterstützung von Leistungsanalyse, Fehlersuche und Optimierung nutzen? Es gibt eine Vielzahl von Methoden, um Leistungsprobleme zu untersuchen, die Ursachen zu ermitteln und Optimierungen zu entwickeln. Im Kern geht es bei jeder Leistungsanalyse jedoch darum, die Ausgabe verschiedener Tools zu betrachten, beispielsweise von Linux-Befehlszeilentools oder einer Observability-Plattform, und diese Ausgabe zu interpretieren, um eine Hypothese über den Zustand des Systems aufzustellen. Zu den Materialien, mit denen die GPT-Modelle trainiert wurden, gehören Quellen, die Softwareentwicklung, Debugging, Infrastrukturanalyse, Betriebssysteminterna, Kubernetes, Linux-Befehle und deren Verwendung sowie Methoden zur Leistungsanalyse abdecken. Die Modelle können daher genutzt werden, um die Daten und Probleme, mit denen Leistungsingenieure tagtäglich konfrontiert werden, zusammenzufassen, zu interpretieren und Hypothesen darüber aufzustellen. Dies kann das Tempo beschleunigen, mit dem ein Ingenieur seine Analyse durchführt.
Wir können aber noch einen Schritt weiter gehen und über die reine Nutzung des LLM für Datenanalyse und Fragebeantwortung im Kontext des eigenen Untersuchungsprozesses des Ingenieurs hinausgehen. Wie wir später in diesem Beitrag zeigen werden, kann das LLM in bestimmten Szenarien selbst den Prozess steuern, indem es entscheidet, welche Befehle ausgeführt werden sollen oder welche Datenquellen zur Fehlerbehebung herangezogen werden sollen.
Demos
Eine vollständige Übersicht über die von sysgrok unterstützten Funktionen finden Sie im GitHub- Repository. Im Großen und Ganzen unterstützt es drei Ansätze zur Problemlösung:
Ansatz 1: Als Analysetool für Leistungs-, Zuverlässigkeits- und andere systembezogene Daten
In diesem Modus wird dem LLM die Ausgabe eines anderen vom Ingenieur verwendeten Tools zugeführt, beispielsweise eines Linux-Befehlszeilentools, eines Profilers oder einer Observability-Plattform. Das Ziel von sysgrok ist es, Daten zu interpretieren, zusammenzufassen und Abhilfemaßnahmen vorzuschlagen.
Beispielsweise nimmt der Unterbefehl topn die vom Profiler gemeldeten, teuersten Funktionen, erläutert die Ausgabe und schlägt dann Möglichkeiten zur Optimierung des Systems vor.
Dieses Video zeigt auch die Chat-Funktionalität von sysgrok. Bei Angabe des Arguments „–chat“ startet sysgrok nach jeder Antwort des LLM eine Chat-Sitzung.
Diese Funktionalität lässt sich auch allgemein auf die Ausgabe von Linux-Befehlszeilentools anwenden. In dem Artikel „Linux Performance Analysis in 60 seconds“ beschreibt Brendan Gregg beispielsweise 10 Befehle, die ein SRE ausführen sollte, wenn er sich zum ersten Mal mit einem Host verbindet, bei dem ein Leistungs- oder Stabilitätsproblem auftritt. Der Unterbefehl analyzecmd nimmt als Eingabe einen Host, zu dem eine Verbindung hergestellt werden soll, und einen auszuführenden Befehl entgegen und analysiert und fasst dann die Ausgabe des Befehls für den Benutzer zusammen. Wir können dies nutzen, um den von Gregg beschriebenen Prozess zu automatisieren und dem Benutzer eine einzeilige Zusammenfassung aller von den 10 Befehlen generierten Daten zu geben, wodurch ihm die Mühe erspart wird, die Ausgabe jedes Befehls einzeln durchzugehen.
Ansatz 2: Als fokussierte, automatisierte Lösung für spezifische Aufgaben im Zusammenhang mit Leistung und Zuverlässigkeit
Es gibt einige Aufgaben, die im Bereich Performance Engineering und SRE immer wieder anfallen. Hierfür können wir zielgerichtete, automatisierte Assistenten entwickeln, die entweder direkt vom Ingenieur oder von sysgrok selbst zur Lösung anderer Probleme eingesetzt werden können.
Beispielsweise nimmt der Unterbefehl findfaster als Eingabe den Namen einer Bibliothek oder eines Programms und verwendet den LLM, um einen schnelleren, gleichwertigen Ersatz dafür zu finden. Dies ist eine sehr häufige Aufgabe im Bereich Performance Engineering.
Ein weiteres Beispiel für diesen Ansatz in sysgrok ist der Unterbefehl explainfunction . Dieser Unterbefehl benötigt den Namen einer Bibliothek und einer Funktion innerhalb dieser Bibliothek. Es erklärt, was die Bibliothek leistet und welche typischen Anwendungsfälle sie hat, und anschließend wird die Funktion erläutert. Schließlich werden mögliche Optimierungen vorgeschlagen, falls die Bibliothek und die Funktion einen erheblichen Teil der CPU-Ressourcen beanspruchen.
Ansatz 3: Als automatisiertes Werkzeug zur Ursachenanalyse von Leistungs- und Zuverlässigkeitsproblemen
Der Einsatz von LLMs beschränkt sich nicht nur auf die Beantwortung fokussierter Fragen, das Zusammenfassen von Texten und ähnliche Aufgaben. Es beschränkt sich auch nicht auf einmalige Anwendungen, bei denen ihnen eine einzige, isolierte Frage gestellt wird. Der Unterbefehl sysgrok debughost demonstriert, wie ein LLM als "Gehirn" in einem Agenten mit dem Ziel der automatisierten Problemlösung eingesetzt werden kann. In diesem Modus ist das LLM in einen Prozess eingebettet, der das LLM nutzt, um zu entscheiden, wie ein bestimmtes Problem zu debuggen ist, und ihm die Möglichkeit gibt, Verbindungen zu Hosts herzustellen, Befehle auszuführen und auf andere Datenquellen zuzugreifen.
Der Befehl debughost ist derzeit wahrscheinlich der experimentellste Teil von sysgrok. Es zeigt einen Schritt auf dem Weg zu automatisierten Agenten für die Leistungsanalyse, aber es ist noch ein erheblicher Forschungs- und Entwicklungsaufwand erforderlich, um dieses Ziel zu erreichen.
Fazit
In diesem Beitrag habe ich sysgrok vorgestellt, einen neuen Open-Source-KI-Assistenten zur Analyse, zum Verständnis und zur Optimierung von Systemen. Wir haben auch die drei Hauptkategorien von Ansätzen besprochen, die sysgrok implementiert:
- Eine Analyse-Engine für Leistungs-, Zuverlässigkeits- und andere systembezogene Daten: Siehe die Unterbefehle topn, stacktrace, analyzecmd und code.
- Gezielte, automatisierte Lösungen für spezifische Aufgaben im Zusammenhang mit Leistung und Zuverlässigkeit: Siehe die Unterbefehle explainprocess, explainfunction und findfaster.
- Automatisierte Ursachenanalyse für Leistungs- und Zuverlässigkeitsprobleme: Siehe den Unterbefehl debughost.
Das sysgrok-Projekt finden Sie auf GitHub. Sie können gerne Pull Requests und Issues erstellen oder mich direkt unter sean.heelan@elastic.co kontaktieren, wenn Sie das Projekt oder die Anwendungsmöglichkeiten von LLMs im Allgemeinen besprechen möchten.



