FinGPTは、金融分野向けの大規模言語モデル(LLM)を軽量なLoRAファインチューニングで作るための、研究プロジェクト集です。感情分析・株価予測(FinGPT-Forecaster)・財務レポート分析・RAG・為替情報分析など、複数のサブプロジェクトをひとつのリポジトリにまとめています。学習済みモデルはHuggingFaceの「FinGPT」組織で公開されています。
中核は、Llama2やChatGLM2などのベースLLMに対してPEFT(peft)ライブラリのLoRAを適用し、少ないパラメータだけを金融データで再学習する仕組みです。例えばFinGPT_Forecasterのapp.pyでは、AutoModelForCausalLMでmeta-llama/Llama-2-7b-chat-hfを読み込み、PeftModel.from_pretrainedでFinGPT側のLoRAアダプタ(fingpt-forecaster_dow30_llama2-7b_lora)を重ねています。株価データはyfinance、ニュースはfinnhub-pythonのAPIから取得し、プロンプトに整形してモデルに渡し、翌週の株価予測テキストを生成します。gradioでWeb UI化されており、HF_TOKENとFINNHUB_API_KEYの環境変数が必須です。FinGPT_Benchmarkディレクトリにはtrain_lora.pyやconfig.json、各種ベンチマーク(fpb、fiqa、nerなど)のスクリプトがあり、複数の金融タスクでLoRAモデルを訓練・評価できます。FinGPT_RAGはMicrosoftのDeepSpeed学習コード(main.py)を流用し、指示チューニング(instruction tuning)による感情分析モデルを訓練する構成です。全体として「巨大モデルをゼロから訓練せず、既存LLM+LoRA+金融データ」で低コスト適応するという設計思想が一貫しています。
- STEP 01
READMEの手順通りgit cloneしてpip install -r requirements.txtを実行すると、torch、transformers、peftなど多数の重い依存関係がインストールされます。
- STEP 02
FinGPT_Forecasterを動かすにはHF_TOKENとFINNHUB_API_KEY環境変数の設定が必須で、未設定だとapp.py実行時にValueErrorで即座に停止します。
- STEP 03
meta-llama/Llama-2-7b-chat-hfはHuggingFace上でアクセス許可が必要なゲート付きモデルなので、事前に利用申請を通していないとモデル読み込みで失敗します。
- STEP 04
GPUなしで動かそうとするとdevice_map autoやtorch.float16指定のモデル読み込みが極めて遅い、または実質的に動作しない可能性が高いです。
- STEP 05
FinGPT_Benchmarkのtrain_lora.pyやtrain.shを試す場合は、data/download.pyで金融データセットを別途取得してからでないと訓練データが揃いません。
- STEP 06
FinGPT_RAGのtraining以下はMicrosoft DeepSpeedのコードをベースにしており、deepspeedパッケージのインストールとマルチGPU環境が前提になっている点に注意が必要です。
手元で完走できれば、指定した株式銘柄について「ポジティブな材料」「懸念材料」「翌週の株価予測と分析」という形式のテキストをgradio画面上で得られます。また、FinGPT_Benchmark側を回せば、感情分析やNER、金融QAなど複数のベンチマークタスクにおけるLoRAファインチューニング済みモデルの評価スコアが得られます。ただしこれらはいずれもモデル重みのダウンロードやAPIキー、GPUリソースが揃って初めて到達できる結果です。
Llama-2-7b-chat-hfやChatGLM2など複数のノートブック・スクリプトがゲート付きモデルやAPIキーへの依存を前提としており、無償・無登録では試せない部分が多いです。
fingpt/FinGPT_Othersやchatgpt-trading-v2以下にはpyfolioの古いテストコード(nose_parameterizedやpandas.util.testingなど廃止済みAPI依存)が含まれており、現行のpandasバージョンでは動かない可能性があります。
サブプロジェクトごとにrequirements.txtのtorch、transformers、peftなどのバージョンが微妙に異なっており、リポジトリ全体を一つの環境にまとめてpip installすると依存関係の衝突が起きる懸念があります。
README冒頭で示されているBasic Usageのコード例は断片的で、実際に動く完結したコードはSETUP.mdや各サブディレクトリのapp.py・ノートブックを個別に読む必要があります。
FinGPTは、単一の製品というより「LoRAで金融LLMを安く作る」という手法を実証する研究サブプロジェクト群の集合体です。金融ドメインのLLMファインチューニングを学びたい研究者や、既存のHuggingFace公開モデル(fingpt-forecaster、fingpt-sentimentなど)をそのまま試してみたいエンジニアには向いています。一方、すぐに使える単一アプリケーションを期待する人には不向きで、実行にはゲート付きモデルへのアクセス権、複数APIキー、GPU、サブプロジェクトごとに異なる依存関係の調整が必要です。ファイル構成とapp.py・train_lora.py・requirements.txtの中身から見る限り、コード自体は実在し筋も通っていますが、環境構築の手間は相応に大きいと判断できます。