コンテンツにスキップ

オンプレLLMでログ一次切り分け:Llama 3.3 70Bでやってみた(根拠引用を強制)

このページの狙い

LLMに「障害の原因を当てさせる」よりも、
(1) ログから根拠を抜き出す → (2) 可能性を整理 → (3) 次に打つコマンドを提案
までを“オンプレで”完結させる例です。


なぜオンプレLLMなのか(クラウドLLMではなく)

結論から言うと、ログ解析の現場では 「外に出せない」「外に出したくない」が頻繁に起きます。

クラウドLLM(ChatGPT/Gemini等)が悪いのではなく、次の事情で使いにくいケースが多いです。

  • 機密情報が混ざりやすい
    ログにはホスト名、IP、ユーザー名、ディレクトリ構成、ジョブ名、社内システム名などが入りやすく、事故の原因になりやすいです。
  • コンプライアンス/監査の壁
    「どのデータをどこに送ったか」を説明・監査できないと運用に乗りません。
  • 運用データは量が多く、都度マスクが現実的でない
    一回だけなら手で伏せ字もできますが、日常運用では手間がボトルネックになります。
  • ネットワークや利用制限に依存したくない
    障害対応は深夜やインターネットに出られない環境(社内ネットワークだけ)でも起きます。外部サービス依存だと詰まります。

オンプレLLMなら、ログを外に出さずに - 根拠引用(どの行を根拠にしたか) - 次に打つコマンド提案 - 社内Runbook参照(RAG) まで完結できます。

※もちろん「クラウド利用可」の組織もあります。その場合でも、オンプレは “インターネットに出られない環境(社内ネットワークだけ)でも動く運用支援”として別の価値があります。

入力ログ(3行)

今回は、よくあるパターンの短いログ断片で試しました(抜粋)。

NVRM: Xid (PCI:0000:3b:00): 31, pid=1234, Ch 00000010, MMU Fault
CUDA error: out of memory
slurmstepd: error: Detected 1 oom_kill event(s) in step

AIの出力(実際のJSONから抜粋)

LLM(Llama 3.3 70B)に「JSONで返す」よう指示し、さらに根拠は入力ログからの引用のみに制約しました。
(出力の要点だけ読みやすく抜粋しています)

  • カテゴリ:GPU / Memory / Slurm
  • 重大度:High

根拠(ログからの引用)

L1: NVRM: Xid ... 31 ... MMU Fault
L2: CUDA error: out of memory
L3: slurmstepd: ... oom_kill event(s) ...

原因候補(確信度つき) - Insufficient GPU memory(confidence: 0.8) - Memory leak in the application(confidence: 0.1) - GPU driver issue(confidence: 0.1)

次にやること(コピペ可能なコマンド)
※安全性と再現性を重視して、環境依存・危険操作(サービス再起動等)は避けています。

nvidia-smi
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
nvidia-smi -q -d ECC,ERROR,POWER,TEMPERATURE
dmesg -T | tail -n 200
journalctl -k -b | tail -n 200
sacct -j <JOBID> --format=JobID,State,ExitCode,Elapsed,MaxRSS,AllocTRES%60
scontrol show job <JOBID>
ps -p <PID> -o pid,etime,cmd --sort=pid

追加で欲しい情報(不足しているもの) - GPU model and driver version - System memory configuration - Application code and configuration - Slurm cluster configuration - Detailed system logs


なぜ信頼できる?(根拠引用を強制する工夫)

LLMは親切に補完してしまい、入力に無いログ行を混ぜることがあります。
そこで今回は、次の2つの工夫を入れて 「根拠はログ引用のみ」に寄せました。

  1. ログに行番号を付けて渡す(抜粋の追跡がしやすい)
  2. evidenceは入力ログからの完全一致引用のみにする(捏造を抑える)

「原因を断定するAI」ではなく、根拠を示して次の確認に進める一次切り分けとして現実的です。



ファインチューニング無しでもここまでできた(今回のポイント)

今回のデモは ファインチューニング無し(追加学習無し)で実施しました。
それでも形になった理由は、モデルに任せきりにせず、

  • 根拠はログからの引用だけ(作り話を抑える)
  • 出力を JSON形式に固定(人間にも機械にも読みやすい)
  • 「次に打つコマンド」を コピペ可能な形で必ず出す

という“運用向けのルール”を先に決めたからです。

ファインチューニングが必要になるのは、たとえば - 自社のRunbook手順やチケット書式に 厳密に合わせたい - 同じ種類の障害が大量にあり、分類体系を 固定化したい - 人手での一次切り分けを さらに省力化したい といった段階です。まずは 追加学習なしで小さくPoCし、必要になった時だけ学習を検討するのが現実的です。

PoC(オンプレ)相談

オンプレ環境(H100/H200 NVL等)で、ログを社外に出さずに

  • ログのマスク(ホスト名/IP/パス等)
  • 根拠引用を強制した構造化JSON
  • あなたのRunbook/FAQを参照して「次のコマンド」を提示(RAG)
  • 監査・保存ポリシーに合わせた設計

まで含めて短期PoCが可能です。

相談フォームへ