AI分析によるログ追跡とアラート通知
FPT AI Studioを使用したログ追跡とAI分析によるアラート設定のチュートリアルです。詳細はGitHubリポジトリをご確認ください。
概要
本プロジェクトでは、大規模言語モデル(LLM)を活用してシステムログをリアルタイムに分析し、リスクスコアやセキュリティ脅威を評価し、ユーザー向けアラートを自動生成する手法を実証します。ワークフローの中核となるのは、ログデータを解釈し潜在的な問題を特定し、簡潔で実用的な要約を生成する微調整済みQwen3-4B-Instruct-2507モデルです。
モデル開発と評価の主要段階を効率化するため、FPT AI Studioを活用します:
モデル微調整:ログ分析タスク向けにQwen3-4B-Instruct-2507モデルを訓練。
インタラクティブセッション:微調整前後のモデル性能を即時テスト・比較し、微調整済みモデルをAPIとしてデプロイしてデモアプリケーションへシームレスに統合。
テストジョブ:指定されたテストセット上で、複数のNLP指標を用いてモデル性能のファインチューニング前後の評価を実施。
さらに、大規模モデルとデータセットの効率的な保存・管理のためにModel HubとData Hubを採用しています。
パイプライン

本プロジェクトのエンドツーエンドパイプラインは以下の段階に分解できます:
データ準備:公開リポジトリ(loghub2.0)からのログデータのダウンロードと前処理。
合成データ生成:教師モデル(gpt-4o-mini)を用いて生ログから高品質な訓練データを生成。
モデルトレーニング:FPT AI Studioプラットフォームのモデル微調整機能を用いて、合成データセット上でQwen/Qwen3-4B-Instruct-2507モデルの微調整を実施。このステップでは、Data Hubでトレーニングデータを容易に管理し、Model Hubでトレーニング済みモデルの異なるバージョンを管理します。
モデル評価:テストジョブを用いて微調整済みモデルの性能を評価。
モデルデプロイ:訓練済みモデルをFPT AI Studio上にAPIエンドポイントとしてデプロイし、インタラクティブセッションによる推論を実現。
デモアプリケーション:シミュレートされたログデータを取り込み、デプロイ済みモデルを呼び出して分析し、結果をリアルタイムで可視化するStreamlitダッシュボード。
1. データ準備
本プロジェクトでは、公開されているログデータセットを利用しました。
データソース:ログデータはLoghubリポジトリから取得しました。Loghubは様々な実稼働システムからのシステムログデータセットを収集したもので、ログ分析ツールの開発やテストに最適なリソースです。
データチャンキング:生のログファイルは、50行から150行を含む小さなサンプルに分割されました。これは、データ合成モデルが扱いやすいコンテキストを作成し、最終アプリケーションのバッチ処理特性をシミュレートするためです。
参照:チャンキングコード
2. gpt-4o-miniを用いた合成データ生成
小型モデルを効果的に訓練するには、潜在的なリスクを特定しログエントリを要約したラベル付きデータセットが必要でした。時間と専門知識を要する手動ラベリングの代わりに、より大規模で強力なモデルを活用して合成訓練データを生成しました。
教師モデル:数学とコーディングにおける強力な推論能力と指示順守能力から、このタスクにはgpt-4o-miniを採用しました。
プロセス:ログデータの各チャンクを特定のプロンプトと共にgpt-4o-miniに投入した(prompt)。
出力形式: プロンプトは厳密にJSON出力形式を強制し、これを使用して構造化されたトレーニングデータセットを作成しました。より大規模なモデルを用いて小規模なモデルのトレーニングデータを生成するこの手法は、高品質でタスク特化型のデータセットを効率的に作成する強力な技術です。
3. FPT AI Studioでのモデルトレーニング
合成データセットの準備が整ったため、次のステップとして、リアルタイムアプリケーションでログ分析タスクを実行できる、より小型で効率的なモデルの微調整を行いました。LoRA技術を用いてモデルを微調整しました。
データ: 合成生成データセット: data/final_data/json_analysis
訓練セット: 3,584 サンプル
検証セット: 100 サンプル
テストセット: 100 サンプル
訓練サブセット: 1,000 サンプル (デモ用)
データは管理のためにData Hubにアップロードされます。データセット管理でデータセットを作成し、そこにデータセットをアップロードします。

ログ関連のタスクでは、コンテキスト長は通常非常に長い。データ分布分析に基づき、トレーニング中はmax_sequence_length = 8192に設定した。

ハイパーパラメータ:
インフラストラクチャ: トレーニングには1台のH100 GPUを使用し、FlashAttention 2とLigerカーネルを活用してトレーニングプロセスを高速化しました。グローバルバッチサイズは64に設定しました。
トレーニング: パイプラインを作成し、トレーニングを開始します。

モデルトレーニングの過程では、モデルメトリクスセクションで損失値やその他の関連指標を監視できます。


さらに、システム関連メトリクスは「システムメトリクス」セクションで確認できます。

モデルは、トレーニング後にモデルハブの「プライベートモデル」セクションに保存されます。ユーザーはダウンロードするか、インタラクティブセッションやテストジョブなどの他のサービスで直接使用できます。

トレーニング時間は2時間39分56秒です。ファインチューンモデルの使用コストは約6.16ドルです。コストの説明:
FPT AI Studioでは、GPU時間あたり2.31ドルを課金します。重要な点として、実際のGPU使用時間のみを課金対象とし、モデルダウンロード、データダウンロード、データトークン化、モデルハブへのデータプッシュなどのタスクに要した時間は計算に含まれません。
簡略化のため、表示されている費用にはモデルダウンロード、データダウンロード、データトークン化、モデルハブへのデータプッシュに要する時間も含まれています。実際の運用ではGPU使用時間のみ課金対象となるため、実際の費用は表示値より低くなります。
4. モデル評価
トレーニング後、モデルの性能が要求される精度と効率を満たしていることを確認するため評価を実施しました。ファインチューニング前後のモデルを比較するため、FPT AI StudioのテストジョブとNLPメトリクスを用いてテストセット上でモデルを評価しています。
結果:
ModelFuzzy MatchBLEUROUGE-1ROUGE-2ROUGE-LROUGE-LsumFinetuned Qwen3-4B-Instruct-2507
0.760934
0.473482
0.673969
0.574255
0.66407
0.66407
Base Qwen3-4B-Instruct-2507
0.11244
0.005657
0.022736
0.009741
0.021809
0.020414
微調整されたQwen3モデルは、すべての評価指標においてベースモデルから大幅な改善を示した。
BLEUスコアは0.005から0.47に上昇し、ROUGEスコアは約30倍改善した。これは微調整モデルが参照出力に極めて近い応答を生成することを示している。
ファジーマッチスコアも0.11から0.76に上昇し、微調整後の意味的整合性と出力の一貫性が向上したことを裏付けている。
5. モデルの展開
微調整されたモデルはFPT AI Studioのインタラクティブセッションにデプロイされました。これによりモデルがAPIエンドポイント経由で利用可能となり、当社のStreamlitアプリケーションがログデータを送信し、分析結果をリアルタイムで受信できるようになりました。さらに、インタラクティブセッションのインターフェース上で直接チャットすることも可能です。

6. デモアプリケーション
プロジェクトの最終要素はStreamlitダッシュボードであり、リアルタイムログ分析を可視化するユーザーフレンドリーなインターフェースを提供します。
動作原理
ログシミュレーション:アプリケーションはApache_full.logファイルを読み取り、ランダムな間隔で各行をキューに投入することでライブログストリームをシミュレートします。
バッチ処理:バックグラウンドスレッドがキューから継続的にログを収集します。バッチが一定サイズ(BATCH_SIZE)に達するか、時間間隔(BATCH_INTERVAL)が経過すると、ログは分析のために送信されます。
AI分析:ログのバッチは、FPT AI Studio上にデプロイされた微調整済みQwen3-4B-Instruct-2507モデルのAPIエンドポイントに送信されます。
リアルタイム更新:ダッシュボードには3つの主要セクションが表示され、リアルタイムで更新されます:
最近のログ:最新のログエントリのストリーム。
アラート:AIモデルがユーザーに通知すべきと判断した重大なアラート。
サマリー:AIモデルからの応答リスト。
デモの実行方法
ローカルマシンでこのデモを実行するには、次の手順に従ってください:
リポジトリをクローンします:
リポジトリをクローンします:
必要なライブラリをインストールしてください:
環境変数の設定:以下の環境変数を
scripts/run_app.shで設定する必要があります:
ログファイルの配置:
Apache_full.logファイルが./srcディレクトリにあることを確認してください。
注: このログファイルは Loghub 2.0 から取得したものです。
Streamlitアプリケーションを実行する:
微調整済みモデルを統合したStreamlitデモの結果:

基本モデルと比較すると:

結論:
基本モデル(Qwen3-4B-Instruct-2507)はリスクスコアの評価とログの要約が可能だが、依然として精度が低く不正確である。
ファインチューニングにより、特に小型モデルにおいて、ログ評価の精度が向上し、ユーザーへの警告提供能力が改善される。
Last updated
