## Summary for Tweet #SRE論文紹介:中国の清華大学のDB研究グループによる、LLMを用いたDBの異常診断システムD-Botを提案する論文。D-Botのソースコードは https://github.com/TsinghuaDatabaseGroup/DB-GPT に公開されている。既存の半自動診断ツールは、1)診断シナリオが限られている、2)DBバージョンに応じた診断ルールの更新が手間である、3)反復的な推論能力を持たないなどの課題がある。GPT-4でもDBドメイン固有の診断知識を直接学習できない(精度50%以下)。そこでD-Botは、ドキュメントから知識とツールを抽出し、現在の異常の内容をもとに、関連する知識とツールを検索しプロンプトに含め、診断の過程では、複数回のLLMの投票をもとに最も有望なものを選択するようLLMを誘導するツリーベースの探索戦略を導入し、プロンプトが異なる複数のLLMエキスパートが非同期で協調して診断する。PostgreSQLを用いた評価の結果、ベースラインに対して顕著な改善(8%~54%)を達成し、人間の専門知識とさえ拮抗し、一部は上回っている。 arXiv'23: "D-Bot: Database Diagnosis System using Large Language Models" https://arxiv.org/abs/2312.01454 https://twitter.com/yuuk1t/status/1764574739102888428 ## Memo - [[Tsinghua Database Group]]からのarXiv論文。Pigsty, ModelBestという中国企業?の著者が入っている。[[2023__arXiv__LLM As DBA]]で提示した構想の拡張版に位置づけられる。のちにVLDB'24に採択された。 - DBの異常の診断は困難なタスクである。DBの典型的な異常は、スロークエリ、リソース過剰使用、ハンキング、クラッシュがある。DB診断とはこれらの異常(アラート)を分析・解決するプロセスを指し、根本原因の例として、並行処理ワークロード、クエリ演算子の問題、計画と実行、データ固有の問題、データベーススキーマと設定、有害なバックグラウンドタスクなどがある。解決のための復元ツールには、クエリリライトツール、ノブ(パラメタ)チューニングツール、インデックスチューニングツールがある。 - 既存のヒューリスティックな半自動診断ツールは、1)診断シナリオが限られている、2)DBバージョンに応じた診断ルールの更新が手間である、3)反復的な推論能力を持たないなどの課題がある。 - LLMの推論能力が期待されているが、[[GPT-4]]でもDBドメイン固有の診断知識を直接学習できない(精度50%以下)。 - (c1)ドメイン知識の欠如: 長い文書から有用な知識を抽出すること、(ii)与えられた文脈による適切な知識とのマッチング、有用なツールを検索すること - (c2) 多くの LLMタスクと異なり、DB診断は対話的な手順であり、何度も分析する必要があるが、LLM は早期停止問題と幻覚問題がある。 - (c3) 複数の根本原因を分析することは困難である。 - LLMを用いたDB診断システムD-Botを提案する。 - ![[Pasted image 20240301122045.png|600]] - (c1)を解決するために、文書から学習する。 - 知識抽出:文書から有用な知識チャンクを抽出し、詳細な使用方法指示を持つツールの階層を構築し、プロンプトテンプレート(エキスパートロール、タスク記述、基本診断ステップ、利用可能な ツールなど)を初期化する(Fig. 3 "**Offline Preparation**")。 - チャンクの埋め込みベクトル(Ada-002など)を[[DBSCAN]]でグループ化し、[[主成分分析]]を用いて埋め込みの次元を3次元に削減する。知識分布が根本原因の種類とほぼ一致することがFig.6からわかる。 - ![[Pasted image 20240303204313.png|300]] - - 知識検索、最も関連性の高い知識とツールを探索し、新しいプロンプトを生成し、LLMは合理的な診断のための監視と最適化結果を取得できる(Fig.3 **Diagnosis Prompt Generation**)。 - 最も関連性の高い知識チャンクをランク付けするために、近似アルゴリズム[[BM25]]を用いることで、異なるモニタリングツールでメトリクスの名前や意味が全く同じでなくてもマッチングできる。 - ツールマッチングのために、事前学習済みSentence-BERTモデル[46 ]を[[ファインチューニング]]する。[[コサイン類似度]]でランク付けされた上位k個のツールは、名前、関数の説明、 引数リストなど、プロンプトに統合される。 - (c2)に対して、過去の診断の試みを振り返り、最も有望なものを選択するようLLMを誘導するツリーベースの探索戦略を導入し、診断性能を大幅に向上させる(Fig.3 **"Tree-Search Based Diagnosis"**)。 - LLMの投票と選択頻度の両方に基づいて、複数の可能な推論連鎖を探索し、探索する最も有益な連鎖を選択する。 - LLMがツールや早期診断停止など失敗したときに、現在のステップで有用な情報を検出できなければ前のステップに戻す。具体的には、アクションの木構造に対して、[[UCT]]を用いて経路を複数の評価LLMが有望なリーフノード(関係する根本原因の数と精度に基づくなど)に賛成票を投じる投票シミュレーションを実行する。 - ![[Pasted image 20240304181126.png|400]] - (c3)に対して、複数(7人)のLLMエキスパートが非同期で診断(例えば、解析結果の共有、クロスレビューの実施) する協調診断メカニズムを提案する(Fig.3 **"Collaborative Diagnosis Mechanism"**)。 1. アラートの説明(時間帯、アラートタイプ、深刻度レベルなど)に基づいて、関連するLLMエキスパートを選択する。エキスパート例は、CPUエキスパート、メモリエキスパートなど。ルールではなくLLMを採用していることが重要である。 2. 各エキスパートはより焦点を絞ったツールと知識チャンクで別々に非同期(Pub/Subモデル)で分析する。 3. 診断時に中間的な診断結果をリアルタイムに共有する。 4. クロスレビューを行い、解析結果を反復的に改良し、最終的に特定のテンプレート(例:背景、根本原因、解決策、詳細手順を含む)の下で包括的なレポートを作成する。 - D-Botを、手動診断(HumanDBA)、既存の機械学習手法(DNN, DecisionTree)、LLM(GPT-4, GPT-3.5)の3種類のベースラインと 6つのアプリケーションで性能比較した。 - ![[Pasted image 20240304171821.png|600]] - 実験から得た5つ所見は以下の通りである。 1. D-Botは、その高度な文脈理解と知識・ツール活用により、ベースライン(8%~54%)に対して顕著な改善を達成し、人間の専門知識とさえ拮抗している。 - D-Botは全てのケースでベースラインを大幅に上回り、Social Mediaでは人間DBAを上回った。ベースラインは「リソース競合の問題を解決する」などの一般的なアドバイスがデフォルトとなる。 - D-Botはpg_stat_statementsビューに対するクエリにより固有の問題を特定する。"同じテーブルに対するUPDATEとINSERT操作を多用するため、メモリ使用量が多くなっています"など。 - また、ベースラインは異常を示す基本メトリクスのみを入力とするため、一般的な分析にとどまる。例えば、大きなデータの挿入シナリオの場合、GPT-4はnode_procs_runningメトリックを使用して、実行プロセスの数を増やすだけで、早期診断終了するなど。 - D-Botは文書知識を利用して、相関サブクエリ構造のような潜在的な性能ボトルネックの分析を学習する。逆に、ログに記録されたクエリでSORT操作を検出すると、GPT-3.5は「大量のデータを読み、ソートする」というボトルネックを不正確に引き起こし、クエリ構造の問題を見逃す。 - 人間がいくつかの遅いクエリに注目する際に無視する、同時挿入による高いI/O問題のような問題を明らか。 2. D-Botは、多様で複雑な異常タイプにおいて、よりバランスのとれた信頼性の高い性能を提供する。 3. 強力なLLMはD-Botの診断性能に有益であり、これはプロンプトの追従性の有効性と根本原因分析の深さに反映される。 4. D-Botを構成する各技術(文書知識、木構造探索、複数LLM)は、冗長な根本原因を減らし、正確な異常の特定を強化することで、診断精度を高めるために重要である。 - 非同期機構により、一般に診断に時間がかかる単一エキスパートにおける木探索アルゴリズムの反 復回数が減少する 5. SOTAのローカルLLM(Llama 2-13B, CodeLlama-13B, Baichuan2-13B)を用いたD-Botは D-Bot (GPT-4) と同等の診断性能を達成できるが、その汎用性はファインチューニングサンプルに大きく影響される。 - 感想:[[2024__CIKM__RCAgent - Cloud Root Cause Analysis by Autonomous Agents with Tool-Augmented Large Language Models|RCAgent]]のように、LLMをエージェントとして振る舞わせ、段階的な推論過程を踏みながら診断を行っていく様は非常に興味深い。今後は、原因診断にLLMを適用する場合は、LLMを推論機械とみなし、いかに必要なドメイン知識をプロンプトに注入するか、いかに複数の推論ステップを踏ませ、いかに複数の推論指向を用意できるように推論過程を設計するか。LLM自体の推論能力が高まった場合にどうなるのか。推論過程を人間からみえる分、結果の説明性が高いかもしれない。 ## Abstract データベース管理者(DBA)は、データベースシステムの管理、保守、最適化において重要な役割を果たしている。しかし、DBAが多数のデータベースを管理し、タイムリーに応答することは困難であり、面倒である(多くのオンラインケースでは数時間待つことは耐えられない)。さらに、既存の経験的な手法は限られた診断シナリオしかサポートしておらず、データベースのバージョン更新のために診断ルールを更新するのも手間がかかる。近年、大規模言語モデル([[LLM]])が様々な分野で大きな可能性を示している。そこで我々は、LLMに基づくデータベース診断システムであるD-Botを提案する。D-Botは、診断文書から知識を自動的に取得し、合理的で根拠のある診断レポート(すなわち、根本原因と解決策の特定)を許容時間内(例えば、DBAによる数時間に比べて10分以内)に生成することができる。D-Botの技術には、(i)ドキュメントからのオフライン知識抽出、(ii)自動プロンプト生成(知識マッチング、ツール検索など)、(iii)ツリー検索アルゴリズムを使用した根本原因分析、(iv)複数の根本原因を持つ複雑な異常に対する協調メカニズムが含まれます。D-Botを実際のベンチマーク(6つの典型的なアプリケーションの539の異常を含む)で検証した結果、D-Botは未知の異常の根本原因を効果的に分析でき、従来の手法や[[GPT-4]]のようなバニラモデルを大幅に上回ることが示された。