Sysgrok をオープンソース化 — システムを分析、理解、最適化するための AI アシスタント

Sysgrok は、LLM を使用して SWE と SRE がシステムを理解し、問題をデバッグし、パフォーマンスを最適化する方法を示すことを目的とした実験的な概念実証です。

主要AIや機械学習プラットフォームとシームレスに連携できます。無料のクラウドトライアルを開始してElasticの生成AI機能を探索するか、今すぐローカルマシンでお試しください。

この記事では、OpenAI の GPT モデルのような大規模言語モデル (LLM) をパフォーマンス最適化、根本原因分析、システム エンジニアリングの分野の問題にどのように適用できるかを調査する研究プロトタイプである sysgrok を紹介します。GitHubで見つけることができます。

sysgrok は何をしますか?

sysgrok は次のようなことができます:

  • プロファイラーによって特定された最もコストの高い機能とプロセスを取り上げ、それぞれが提供する機能を説明し、最適化を提案します。
  • ホストとそのホストが遭遇している問題の説明を取得し、問題を自動的にデバッグして、修復とさらなるアクションを提案します。
  • プロファイラーによって注釈が付けられたソースコードを取得し、ホットパスを説明し、コードのパフォーマンスを向上させる方法を提案します。

sysgrok の機能は、次の 3 つの広範なソリューション カテゴリを対象としています。

  1. パフォーマンス、信頼性、その他のシステム関連データの分析エンジンとして。このモードでは、エンジニアが使用する他のツール (Linux コマンドライン ツール、プロファイラー、または可観測性プラットフォームなど) の出力が LLM に入力されます。sysgrok の目標は、LLM を使用してシステムの状態に関する仮説を解釈、要約、形成することです。また、最適化や修復を提案する場合もあります。
  2. 特定のパフォーマンスおよび信頼性関連のタスクに特化した自動化ソリューションとして。パフォーマンス エンジニアリングと SRE の作業では、繰り返し発生するタスクがいくつかあります。これらについては、エンジニアが直接使用したり、sysgrok 自体が他の問題を解決する際に使用できる、集中型の自動化アシスタントを構築できます。たとえば、パフォーマンス エンジニアリングでは、「このライブラリの同等の機能を備えたより高速なバージョンはありますか?」という質問に答えるのが一般的です。sysgrok はこれを直接サポートします。
  3. パフォーマンスと信頼性の問題に対する自動化された根本原因分析ツールとして。最初の 2 つのカテゴリのソリューションは、データ分析、解釈、検索、および要約を組み合わせたものです。重要なのは、エンジニア自身が収集したデータに、これらが集中的に適用されることです。sysgrok では、LLM を使用した問題解決に対する 3 番目のアプローチも調査しています。このアプローチでは、LLM を他のツールと組み合わせて、特定の問題の根本原因分析と解決を自律的に実行します。このアプローチでは、LLM に問題の説明 (例: 「Web サーバーの待機時間が長くなっています」) が与えられ、使用可能な機能 (例: 「ホストへの SSH 接続」、「任意の Linux コマンドライン ツールの実行」) が伝えられます。次に、LLM は、利用可能な機能を使用して問題をトリアージするために実行するアクションを要求されます。これらのアクションは sysgrok によって実行され、LLM は結果を分析し、問題をトリアージし、修復を提案し、次のステップを推奨するよう求められます。

sysgrok はまだ初期段階ですが、すでにさまざまなタスクに役立っているため、リリースしています。他のユーザーが同様の実験を行うための便利な基盤となることを願っています。何かアイデアがありましたら、お気軽に PR をお送りいただくか、 GitHub で問題を報告してください。

LLMによるパフォーマンス問題の分析

OpenAI の GPT モデルなどの LLM は、過去数か月で人気が爆発的に高まり、顧客アシスタント チャットボットからデータ操作アシスタント、コーディング アシスタントまで、あらゆる種類の製品に自然言語インターフェースと中核となるエンジンを提供しています。この傾向の興味深い点は、基本的にこれらすべてのアプリケーションが、手元のタスク向けに特別にトレーニングまたは微調整されていない、すぐに使える汎用モデルを使用していることです。むしろ、インターネット全体の広範囲にわたってトレーニングされているため、結果として、さまざまなタスクに適用できます。

では、これらのモデルを利用してパフォーマンス分析、デバッグ、最適化に役立てることはできるでしょうか?パフォーマンスの問題を調査し、根本原因をトリアージし、最適化を行うためのさまざまな方法論があります。しかし、本質的には、あらゆるパフォーマンス分析作業は、Linux コマンドライン ツールや可観測性プラットフォームなどのさまざまなツールの出力を確認し、その出力を解釈してシステムの状態に関する仮説を立てることから始まります。GPT モデルのトレーニングに使用された資料には、ソフトウェア エンジニアリング、デバッグ、インフラストラクチャ分析、オペレーティング システムの内部、Kubernetes、Linux コマンドとその使用法、パフォーマンス分析方法論などが含まれます。その結果、モデルを使用して、パフォーマンス エンジニアが日常的に遭遇するデータや問題を要約、解釈、仮説を立てることができるようになり、エンジニアが分析を進めるペースを加速できます。

さらに進んで、エンジニア自身の調査プロセスのコンテキスト内でのデータ分析と質問への回答のみに LLM を使用するという段階に進むこともできます。この投稿の後半で説明するように、いくつかのシナリオでは LLM 自体を使用してプロセスを駆動することができ、LLM は問題をデバッグするために実行するコマンドや確認するデータ ソースを決定します。

デモ

sysgrok がサポートする機能の完全なセットについては、GitHubリポジトリを参照してください。大まかに言えば、問題解決には次の 3 つのアプローチがサポートされています。

このモードでは、Linux コマンドライン ツール、プロファイラー、可観測性プラットフォームなど、エンジニアが使用している別のツールの出力が LLM に入力されます。sysgrok の目的は、解釈、要約し、修復策を提案することです。

たとえば、 topnサブコマンドは、プロファイラーによって報告された最もコストのかかる関数を取得し、出力を説明して、システムを最適化する方法を提案します。

このビデオでは、sysgrok が提供するチャット機能も紹介します。–chat 引数を指定すると、sysgrok は LLM からの各応答の後にチャット セッションを開始します。

この機能は、Linux コマンドライン ツールの出力にも一般的に適用できます。たとえば、記事「Linux Performance Analysis in 60 seconds 」では、Brendan Gregg が、パフォーマンスまたは安定性の問題が発生しているホストに初めて接続するときに SRE が実行する必要がある 10 個のコマンドを概説しています。analyzecmdサブコマンドは、接続するホストと実行するコマンドを入力として受け取り、コマンドの出力を分析してユーザー向けに要約します。これを使用すると、Gregg が説明したプロセスを自動化し、10 個のコマンドによって生成されたすべてのデータの 1 段落の要約をユーザーに提供できるため、コマンドの出力を 1 つ 1 つ確認する手間が省けます。

パフォーマンス エンジニアリングと SRE の作業では、繰り返し発生するタスクがいくつかあります。これらについては、エンジニアが直接、または sysgrok 自体が他の問題を解決する際に使用できる、集中型の自動化アシスタントを構築できます。

たとえば、 findfasterサブコマンドは、ライブラリまたはプログラムの名前を入力として受け取り、LLM を使用して、より高速で同等の代替品を検索します。これはパフォーマンス エンジニアリングでは非常に一般的なタスクです。

sysgrok におけるこのアプローチのもう 1 つの例は、 explainfunctionサブコマンドです。このサブコマンドは、ライブラリの名前とそのライブラリ内の関数を受け取ります。ライブラリの機能と一般的な使用例を説明し、次に機能について説明します。最後に、そのライブラリと関数が大量の CPU リソースを消費している場合は、可能な最適化を提案します。

アプローチ3: パフォーマンスと信頼性の問題の自動根本原因分析ツールとして

LLM の使用は、焦点を絞った質問への回答、要約、および同様のタスクに限定されません。また、単一の独立した質問が提示される、1 回限りの使用に限定されるものでもありません。sysgrok debughostサブコマンドは、自動化された問題解決を目的として、LLM をエージェントの「頭脳」として使用する方法を示しています。このモードでは、LLM は、LLM を使用して特定の問題をデバッグする方法を決定し、ホストに接続し、コマンドを実行し、他のデータ ソースにアクセスする機能を提供するプロセス内に埋め込まれます。

debughost コマンドは、おそらく現時点では sysgrok の中で最も実験的な部分です。これは、パフォーマンス分析用の自動エージェントへの道のりの一歩を示していますが、そこに到達するにはかなり多くの研究開発が必要です。

まとめ

この記事では、システムを分析、理解、最適化するための新しいオープンソース AI アシスタントである sysgrok を紹介しました。また、sysgrok が実装するアプローチの 3 つの大まかなカテゴリについても説明しました。

  1. パフォーマンス、信頼性、およびその他のシステム関連データの分析エンジン: topn、stacktrace、analyzecmd、および code サブコマンドを参照してください。
  2. 特定のパフォーマンスおよび信頼性関連のタスクに重点を置いた自動化ソリューション: explainprocess、explainfunction、および findfaster サブコマンドを参照してください。
  3. パフォーマンスと信頼性の問題の自動根本原因分析: debughost サブコマンドを参照してください。

sysgrok プロジェクトはGitHub で見つかります。お気軽に PR や Issue を作成してください。また、LLM のプロジェクトやアプリケーション全般について話し合いたい場合は、 sean.heelan@elastic.coから直接私に連絡することもできます。

関連記事

最先端の検索体験を構築する準備はできましたか?

十分に高度な検索は 1 人の努力だけでは実現できません。Elasticsearch は、データ サイエンティスト、ML オペレーター、エンジニアなど、あなたと同じように検索に情熱を傾ける多くの人々によって支えられています。ぜひつながり、協力して、希望する結果が得られる魔法の検索エクスペリエンスを構築しましょう。

はじめましょう