FPT AI Studioを使用したログアナライザーチャットボットの構築チュートリアルです。詳細はGitHubarrow-up-right リポジトリをご確認ください。
ヘルスケア&フードチャットボットは、大規模言語モデル(LLM)が健康的な食事指導や地域料理の探索における知的なアシスタントとして機能する方法を実証します。ユーザーが料理について学び、栄養上の利点を理解し、自然な対話を通じて食品に関する医療関連の会話をインタラクティブに探求するのを支援します。
Llama-3.1-8B-Instructモデルの微調整により駆動される本チャットボットは、料理の説明を解釈し、パーソナライズされた栄養アドバイスを生成し、双方向的な会話を構築し、直感的なチャットインターフェースを通じて明確で人間が読みやすい応答を提供します。
FPT AI Studioを活用し、モデル開発ワークフロー全体を効率化・自動化します:
さらに、大規模なモデルやデータセットの効率的な保存と管理のために、モデルハブarrow-up-right とデータハブarrow-up-right が採用されています。
このプロジェクトのエンドツーエンドのパイプラインには、以下の段階が含まれます:
教師モデル(gpt-4o-mini)を使用して、生のログからラベル付きデータを生成する。
複数のタスク特化型出力(根本原因、要約、パターン検出、会話)を生成する。
データセットとモデルの管理にはData HubとModel Hubを使用する。
NLPメトリクスを用いたテストジョブで微調整済みモデルを評価する。
FPT AI Studioのインタラクティブセッションを通じて、学習済みモデルをAPIエンドポイントとしてデプロイします。
ユーザーがログを貼り付け/アップロードし、モデルとやり取りできるStreamlitチャットベースのインターフェースを提供します。
本プロジェクトでは、公開されているログデータセットを利用しました。
データソース :ログデータはLoghubリポジトリから取得しました。Loghubは様々な実稼働システムからのシステムログデータセットを収集したもので、ログ分析ツールの開発やテストに最適なリソースです
データチャンキング :生のログファイルは、50行から150行を含む小さなサンプルに分割されました。これは、データ合成モデルが扱いやすいコンテキストを作成し、最終アプリケーションのバッチ処理特性をシミュレートするためです。
2. gpt-4o-miniを用いた合成データ生成
小型モデルを効果的に訓練するには、潜在的なリスクを特定しログエントリを要約したラベル付きデータセットが必要でした。時間と専門知識を要する手動ラベリングに代わり、より大規模で強力なモデルを活用して合成訓練データを生成しました。
教師モデル :数学とコーディングにおける強力な推論能力と指示順守能力から、gpt-4o-miniを本タスクに採用しました。
プロセス :各ログデータチャンクは、異なるログ分析目的に合わせて調整されたタスク固有のプロンプトを用いてgpt-4o-miniによって処理されました:
出力形式: プロンプトは厳密にJSON出力形式を強制し、これを使用して構造化されたトレーニングデータセットを作成しました。
3. FPT AI Studioでのモデルトレーニング
合成データセットの準備が整ったため、次のステップとして、知的アシスタントとして機能する小型で効率的なモデルの微調整を行いました。LoRA技術を用いてモデルを微調整しました。
ハイパーパラメータを固定し、訓練サンプル数とGPU数のみを変化させることで、以下の結果を得ました:
基本モデル
列車のサンプル
ヴァル・サンプルズ
試験サンプル
GPUs
トレーニング時間
当社のコスト (2.31ドル/GPU時間)
費用の説明:
FPT AI Studioでは、GPU時間あたり2.31ドルを課金します。上記の表は、このチュートリアルを実行する際の推定費用を示しています。重要な点として、実際のGPU使用時間のみを課金対象とし、モデルダウンロード、データダウンロード、データトークン化、モデルハブへのデータプッシュなどのタスクに要した時間は計算に含まれません。
簡略化のため、表示されている費用にはモデルダウンロード、データダウンロード、データトークン化、モデルハブへのデータプッシュに要する時間も含まれています。実際の運用ではGPU使用時間のみ課金対象となるため、実際の費用は表の値より低くなります。
データは管理のためData Hubにアップロードされます。100MBを超えるデータセットの場合、まずデータをS3にアップロードし、次にData HubでConnectionを作成し、最後にDataset Managementで対応するS3データセットパスを指すDatasetを作成します。S3へのデータアップロードについては、以下のコードを参照してください:upload_s3.pyarrow-up-right
ログ関連のタスクでは、コンテキスト長は通常非常に長い。モデルの学習に理想的なコンテキスト長は16kトークンであるが、デモ目的でmax_sequence_length = 8192に設定し、学習を高速化している。
インフラストラクチャ: 4台のH100 GPUでモデルをトレーニングし、分散データ並列処理(ddp)とFlashAttention 2およびLigerカーネルを活用してトレーニングプロセスを加速しました。グローバルバッチサイズは64に設定しました。
トレーニング: パイプラインを作成し、トレーニングを開始します。
モデルトレーニングの過程では、モデルメトリクスセクションで損失値やその他の関連指標を監視できます。
さらに、システム関連メトリクスは「システムメトリクス」セクションで確認できます。
モデルは、トレーニング後にモデルハブの「プライベートモデル」セクションに保存されます。ユーザーはダウンロードするか、インタラクティブセッションやテストジョブなどの他のサービスで直接使用できます。
トレーニング後、モデルの性能が要求される精度と効率を満たしていることを確認するため評価を実施しました。ファインチューニング前後のモデルを比較するため、FPT AI StudioのテストジョブとNLPメトリクスを用いてテストセット上でモデルを評価しています。
結果:
📈 全指標で大幅な向上が確認され、モデルがタスク固有のログ分析パターンを強力に習得したことを示しています。
🎯 ファジーマッチング精度が0.27→0.49に急上昇し、目標表現との整合性が大幅に強化されたことを示しています。
✨ BLEUスコアが0.02→0.28に飛躍的に向上し、語彙精度とフレーズレベルの正確性で顕著な改善が確認されました。
📘 ROUGE指標が著しく改善し、コンテンツ構造の理解深化と生成サマリーの整合性向上を示しています。
微調整されたモデルはFPT AI Studioのインタラクティブセッションにデプロイされました。これによりモデルがAPIエンドポイント経由で利用可能となり、当社のStreamlitアプリケーションがログデータを送信し、分析結果をリアルタイムで受信できるようになりました。さらに、インタラクティブセッションのインターフェース上で直接チャットすることも可能です。
プロジェクトの最終的な成果物はStreamlitダッシュボードであり、リアルタイムのログ分析を可視化するユーザーフレンドリーなインターフェースを提供します。
対話型チャットインターフェース
ユーザーはチャット形式のインターフェースを通じてAIモデルと直接対話できます。本アプリは自由形式のクエリと、以下のような事前定義された分析タスクの両方をサポートします:
ログ要約:長大なログファイルの簡潔な要約を生成します。
根本原因の特定:検出された問題の潜在的な根本原因を特定します。
パターンの検出:ログ内の反復的な動作や異常を検知します。
ログデータはサイドバーの入力エリアに直接貼り付けることができます。
ユーザーがタスクを実行または質問を送信すると、アプリはユーザーのプロンプトと提供されたログ内容を組み合わせた構造化リクエストを作成します。これはFPT AI Studio API経由でデプロイされた微調整済みLlama-3.1-8B-Instructモデルに送信され、入力処理後リアルタイムで結果を返します。
上記の図に示すように、FPT AI Studio上のAPIエンドポイントと認証情報を取得し、以下の環境変数を設定する必要があります。scripts/run_app.sh:
微調整済みモデルを統合したStreamlitデモの結果:
アプリ内でのステップバイステップの使用方法:
ログデータをサイドバーの「ログ内容をここに貼り付け」ボックスに貼り付けてください。(50~150行のログを貼り付ける必要があります。)
必要な分析タスクを選択してください:
🔍 根本原因の特定:エラーやインシデントの根本原因を特定します。
🧩 パターンの検出:ログ内のパターンや繰り返し発生する動作を検出します。
チャットボットはリクエストを自動的にモデルに送信し、応答をリアルタイムでストリーミングします。
入力ボックスに新しい質問を入力することで、ボットとの会話を続けることができます。
サイドバーの「新規チャット」をクリックすると、すべてのメッセージが消去され、新しいセッションが開始されます。
Last updated 3 months ago