医療・食品チャットボット

FPT AI Studioを使用した医療・食品チャットボットのチュートリアルです。詳細はGitHubリポジトリをご確認ください。

概要

ヘルスケア&フードチャットボットは、大規模言語モデル(LLM)が健康的な食事指導や地域料理の探索における知的なアシスタントとして機能する方法を実証します。ユーザーが料理について学び、栄養上の利点を理解し、自然な対話を通じて食品に関する医療関連の会話をインタラクティブに探求するのを支援します。

Llama-3.1-8B-Instructモデルの微調整により、料理の説明を解釈し、パーソナライズされた栄養アドバイスを生成、対話型会話を構築し、直感的なチャットインターフェースを通じて明確で人間が読みやすい応答を提供します。

FPT AI Studioを活用し、モデル開発ワークフロー全体を効率化・自動化:

  • モデル微調整:Llama-3.1-8B-Instructモデルを医療分野に特化して訓練・適応

  • 対話セッション:モデル挙動を対話形式で検証、微調整前後の性能比較、微調整版をAPIとしてチャットボット統合用に展開

  • テストジョブ:指定されたテストセット上で複数のNLP指標を用いてモデル性能をベンチマークし、堅牢性と信頼性を確保します。

さらに、大規模モデルとデータセットの効率的な保存・管理のためにModel HubData Hubを採用しています。

パイプライン

上記の図に示す本プロジェクトのエンドツーエンドパイプラインには、以下の段階が含まれます:

  1. データ準備:基本情報を含む約50種類の地域料理リストを準備する。

  2. 合成データ生成:教師モデル(GPT-4o-mini)を用いて、各食品に関する詳細な説明と医療関連の対話を生成する。

  3. モデルトレーニング:FPT AI Studioプラットフォームのモデル微調整機能を用い、合成データセット上でmeta-llama/Llama-3.1-8B-Instructモデルの微調整を実施。このステップでは、トレーニングデータの管理にData Hubを、学習済みモデルのバージョン管理にModel Hubを活用。

  4. モデル評価:テストジョブを用いて微調整済みモデルの性能を評価。

  5. モデルデプロイ:訓練済みモデルをFPT AI Studio上にAPIエンドポイントとしてデプロイし、インタラクティブセッションによる推論を実現。

  6. デモアプリケーション:Streamlitで構築した対話型チャットアプリケーション。ユーザーが食品を探索し、栄養についてインタラクティブに議論可能。

1. データ準備

まず、厳選した約50種類の地域料理リストを用意します。次に、GPT-4o-miniを用いて初期の食品説明を生成します。これらの説明には主要な栄養情報が含まれます。

2. gpt-4o-miniを用いた合成データ生成

豊富な会話データセットを作成するため、GPT-4o-miniを教師モデルとして使用し、前段階の食品説明に基づき以下の点に焦点を当てた食品に関する対話を生成します:

  • 医療・栄養:カロリー情報、バランスの取れた食事、食材の代替

  • 対話型Q&A:食事、アレルギー、健康効果に関する質問

使用したプロンプト:

処理後、サンプルは以下の通りです:

参照: synthesize_data コードprocess_synthesized_data コードsplit_data コードpromp

3. FPT AI Studioでのモデルトレーニング

合成データセットの準備が整った後、次のステップは、より小型で効率的なモデルを微調整し、インテリジェントアシスタントとして機能させることでした。LoRA技術を用いてモデルを微調整しました。

モデル: meta-llama/Llama-3.1-8B-Instruct

データ: 合成生成データセット: data/final_data/healthcare_and_vn_food

訓練データセット: 1,916 サンプル

検証データセット: 110 サンプル

テストデータセット : 110 サンプル

収集したデータ分布に基づき、max_sequence_length = 1024 を設定しました。

  • ハイパーパラメータ:

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

  • トレーニング: パイプラインを作成し、トレーニングを開始します。

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

train loss
eval loss

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

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

  • トレーニングには21分かかり、GPU使用時間は18分でした。微調整済みモデルの使用コストは約0.693ドルです。

費用の内訳:FPT AI Studioでは、GPU使用時間1時間あたり2.31ドルを課金します。重要な点として、実際のGPU使用時間のみを課金対象とし、モデルのダウンロード、データのダウンロード、データのトークン化、Model Hubへのデータプッシュなどの作業時間は計算に含まれません。

4. モデル評価

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

  • プライベートモデルからファインチューニング済みモデルを選択してください。

  • テストスイートを選択し、テスト基準を指定し、パラメータを変更する

  • 結果:

Model
Fuzzy Match
BLEU
ROUGE-1
ROUGE-2
ROUGE-L
ROUGE-Lsum

Finetuned Llama-3.1-8B-Instruct

0.458633

0.032079

0.634257

0.333767

0.412934

0.41459

Base Llama-3.1-8B-Instruct

0.387204

0.05343

0.535179

0.270515

0.349951

0.365346

5. モデルの展開

微調整されたモデルはFPT AI Studioのインタラクティブセッションにデプロイされました。これによりモデルがAPIエンドポイント経由で利用可能となり、当社のStreamlitアプリケーションがプロンプトを送信できるようになりました。さらに、インタラクティブセッションのインターフェース上で直接チャットすることも可能です。

6. デモアプリケーション

プロジェクトの最後の要素はStreamlitダッシュボードであり、アシスタントと直接対話するためのユーザーフレンドリーなインターフェースを提供します。

デモの実行方法

ローカルマシンでこのデモを実行するには、以下の手順に従ってください:

  1. リポジトリをクローンします:

  1. 必要なライブラリをインストールしてください:

  1. 環境変数の設定: 上図に示すように、FPT AI Studio上のAPIエンドポイントと認証情報を取得し、以下の環境変数をscripts/run_app.shに設定する必要があります:

  1. Streamlitアプリケーションを実行する:

微調整済みモデルを統合したStreamlitデモの結果:

Last updated