ログアナライザーチャットボット
FPT AI Studioを使用したログアナライザーチャットボットの構築チュートリアルです。詳細はGitHubリポジトリをご確認ください。
概要
ヘルスケア&フードチャットボットは、大規模言語モデル(LLM)が健康的な食事指導や地域料理の探索における知的なアシスタントとして機能する方法を実証します。ユーザーが料理について学び、栄養上の利点を理解し、自然な対話を通じて食品に関する医療関連の会話をインタラクティブに探求するのを支援します。
Llama-3.1-8B-Instructモデルの微調整により駆動される本チャットボットは、料理の説明を解釈し、パーソナライズされた栄養アドバイスを生成し、双方向的な会話を構築し、直感的なチャットインターフェースを通じて明確で人間が読みやすい応答を提供します。
FPT AI Studioを活用し、モデル開発ワークフロー全体を効率化・自動化します:
モデル微調整:Llama-3.1-8B-Instructモデルを医療分野に特化して訓練・適応させます。
対話セッション:対話形式でモデルの挙動を実験し、微調整前後の性能を比較。微調整版をAPIとしてデプロイし、チャットボット統合を実現します。
テストジョブ:複数のNLP指標を用いて指定テストセット上でモデル性能をベンチマークし、堅牢性と信頼性を確保します。
さらに、大規模なモデルやデータセットの効率的な保存と管理のために、モデルハブとデータハブが採用されています。
パイプライン

このプロジェクトのエンドツーエンドのパイプラインには、以下の段階が含まれます:
データ準備
公開リポジトリ(loghub2.0)からログデータをダウンロードし、前処理する。
生のログファイルを扱いやすいサンプルに分割する。
モデルトレーニング
合成データセットでmeta-llama/Llama-3.1-8B-Instructを微調整する。
データセットとモデルの管理にはData HubとModel Hubを使用する。
1. データ準備
本プロジェクトでは、公開されているログデータセットを利用しました。
データソース:ログデータはLoghubリポジトリから取得しました。Loghubは様々な実稼働システムからのシステムログデータセットを収集したもので、ログ分析ツールの開発やテストに最適なリソースです
データチャンキング:生のログファイルは、50行から150行を含む小さなサンプルに分割されました。これは、データ合成モデルが扱いやすいコンテキストを作成し、最終アプリケーションのバッチ処理特性をシミュレートするためです。
- 参照:チャンキングコード
2. gpt-4o-miniを用いた合成データ生成
小型モデルを効果的に訓練するには、潜在的なリスクを特定しログエントリを要約したラベル付きデータセットが必要でした。時間と専門知識を要する手動ラベリングに代わり、より大規模で強力なモデルを活用して合成訓練データを生成しました。
教師モデル:数学とコーディングにおける強力な推論能力と指示順守能力から、gpt-4o-miniを本タスクに採用しました。
出力形式: プロンプトは厳密にJSON出力形式を強制し、これを使用して構造化されたトレーニングデータセットを作成しました。
3. FPT AI Studioでのモデルトレーニング
合成データセットの準備が整ったため、次のステップとして、知的アシスタントとして機能する小型で効率的なモデルの微調整を行いました。LoRA技術を用いてモデルを微調整しました。
データ: 合成生成データセット: data/final_data/chat
ハイパーパラメータを固定し、訓練サンプル数とGPU数のみを変化させることで、以下の結果を得ました:
Llama-3.1-8B-Instruct
8,971
500
500
4
2h19m55s
$5.39
Llama-3.1-8B-Instruct
8,971
500
500
8
1h15m29s
$2.89
Llama-3.1-8B-Instruct
1,000
500
500
4
21m22s
$0.85
費用の説明:
FPT AI Studioでは、GPU時間あたり2.31ドルを課金します。上記の表は、このチュートリアルを実行する際の推定費用を示しています。重要な点として、実際のGPU使用時間のみを課金対象とし、モデルダウンロード、データダウンロード、データトークン化、モデルハブへのデータプッシュなどのタスクに要した時間は計算に含まれません。
簡略化のため、表示されている費用にはモデルダウンロード、データダウンロード、データトークン化、モデルハブへのデータプッシュに要する時間も含まれています。実際の運用ではGPU使用時間のみ課金対象となるため、実際の費用は表の値より低くなります。
データは管理のためData Hubにアップロードされます。100MBを超えるデータセットの場合、まずデータをS3にアップロードし、次にData HubでConnectionを作成し、最後にDataset Managementで対応するS3データセットパスを指すDatasetを作成します。S3へのデータアップロードについては、以下のコードを参照してください:upload_s3.py

ログ関連のタスクでは、コンテキスト長は通常非常に長い。モデルの学習に理想的なコンテキスト長は16kトークンであるが、デモ目的でmax_sequence_length = 8192に設定し、学習を高速化している。

ハイパーパラメータ:
インフラストラクチャ: 4台のH100 GPUでモデルをトレーニングし、分散データ並列処理(ddp)とFlashAttention 2およびLigerカーネルを活用してトレーニングプロセスを加速しました。グローバルバッチサイズは64に設定しました。
トレーニング: パイプラインを作成し、トレーニングを開始します。

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


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

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

4. モデル評価
トレーニング後、モデルの性能が要求される精度と効率を満たしていることを確認するため評価を実施しました。ファインチューニング前後のモデルを比較するため、FPT AI StudioのテストジョブとNLPメトリクスを用いてテストセット上でモデルを評価しています。

結果:

注記:
📈 全指標で大幅な向上が確認され、モデルがタスク固有のログ分析パターンを強力に習得したことを示しています。
🎯 ファジーマッチング精度が0.27→0.49に急上昇し、目標表現との整合性が大幅に強化されたことを示しています。
✨ BLEUスコアが0.02→0.28に飛躍的に向上し、語彙精度とフレーズレベルの正確性で顕著な改善が確認されました。
📘 ROUGE指標が著しく改善し、コンテンツ構造の理解深化と生成サマリーの整合性向上を示しています。
5. モデルの展開
微調整されたモデルはFPT AI Studioのインタラクティブセッションにデプロイされました。これによりモデルがAPIエンドポイント経由で利用可能となり、当社のStreamlitアプリケーションがログデータを送信し、分析結果をリアルタイムで受信できるようになりました。さらに、インタラクティブセッションのインターフェース上で直接チャットすることも可能です。

6. デモアプリケーション
プロジェクトの最終的な成果物はStreamlitダッシュボードであり、リアルタイムのログ分析を可視化するユーザーフレンドリーなインターフェースを提供します。

動作原理
デモの実行方法
微調整済みモデルを統合したStreamlitデモの結果:

アプリ内でのステップバイステップの使用方法:
ログデータをサイドバーの「ログ内容をここに貼り付け」ボックスに貼り付けてください。(50~150行のログを貼り付ける必要があります。)
必要な分析タスクを選択してください:
✂️ ログの要約:ログの簡潔な要約を生成します。
🔍 根本原因の特定:エラーやインシデントの根本原因を特定します。
🧩 パターンの検出:ログ内のパターンや繰り返し発生する動作を検出します。
チャットボットはリクエストを自動的にモデルに送信し、応答をリアルタイムでストリーミングします。
入力ボックスに新しい質問を入力することで、ボットとの会話を続けることができます。
サイドバーの「新規チャット」をクリックすると、すべてのメッセージが消去され、新しいセッションが開始されます。
Last updated
