AI4Finance-Foundation/FinGPT · 上手攻略

  • 仓库:AI4Finance-Foundation/FinGPT
  • 链接:https://github.com/AI4Finance-Foundation/FinGPT
  • 分类:ai / llm-infra(金融领域 LLM)
  • 作者:spark
  • 更新:2026-07-13

一、是什么

FinGPT 是由 AI4Finance Foundation 维护的开源金融大语言模型(Financial LLM)项目,目标是把大模型能力下沉到金融领域,覆盖数据采集 → 数据清洗 → 模型微调 → 应用部署的全链路。它不是单一模型,而是一整套生态:

  • FinGPT v3 系列:在 Llama2-7B / Llama2-13B / ChatGLM2-6B 基础上用 LoRA / QLoRA 微调的金融情感分析模型,单卡 RTX 3090 即可训练,FPB / FiQA-SA 等基准超过 BloombergGPT、FinBERT。
  • FinGPT-Forecaster:基于新闻 + 价格的个股走势预测机器人,对标道琼斯 30 成分股,附带 HuggingFace Space Demo。
  • FinGPT-Benchmark:金融场景下的多任务指令微调评测基准(情感 / 关系抽取 / 头条分类 / NER / 问答)。
  • FinGPT-RAG:检索增强的金融情感分析框架。
  • FinNLP:配套的数据工程与训练流水线库。
  • FinRobot / FinMem 等衍生:面向多 Agent 金融决策与长期记忆。

许可为 MIT,模型权重全部托管在 HuggingFace FinGPT 组织下。截至 2026-07,仓库约 20.8k Stars周增 +63(卡片采集数据),是金融垂域 LLM 中关注度最高的开源项目之一。

二、解决什么问题

金融领域有三个老大难:

  1. 数据高度时效:BloombergGPT 训练用了约 53 天、花费 ~$3M(512×A100),按月甚至按周重训根本不现实。FinGPT 用 LoRA 微调,单卡 RTX 3090 训练一次 v3.3(Llama2-13B + 8bit)只需 17.25 小时 / ~$17,重训成本断崖式下降。
  2. 数据封闭:彭博、路透等机构拥有特权 API,外界拿不到同源数据。FinGPT 通过开源数据集 + 自动数据管线(FinNLP)来缩小这个差距。
  3. 个性化不足:通用 LLM 无法适配不同投资者的风险偏好。FinGPT 的设计强调 RLHF/指令微调,便于按需定制。

简言之:把"造一个金融 LLM"这件事从千万美元级研究工程变成单卡 + 几百美元就能跑通的事。

三、快速安装

推荐 Python ≥ 3.9,强烈建议 GPU(至少 1× RTX 3090 24GB,13B 推荐 A100 40/80GB)。没有 GPU 也可以走 OpenAI / DeepSeek 等云端 provider 跑推理。

# 1. 克隆
git clone https://github.com/AI4Finance-Foundation/FinGPT.git
cd FinGPT

# 2. 装依赖(README 官方推荐写法)
pip install -r requirements.txt
pip install -e .

常用依赖包括:transformerspeftacceleratebitsandbytestorchdatasets。官方在 SETUP.md 中给了 Replit / 本地 / Docker 三种安装路径。

⚠️ :13B 模型需要显存 ≥ 24GB,否则会 OOM;7B 用 8bit / QLoRA 才能塞进 3090。pip install -e . 会触发项目内的本地依赖(FinGPT/FinGPT_Forecaster 等子模块),如果只想跑某个子模块,可以只装该子目录的 requirements。

四、核心用法

4.1 用云端 LLM(无 GPU,30 秒上手)

仓库内的 Finogrid 平台 支持通过环境变量切换 provider:

import os
os.environ['FINGPT_LLM_PROVIDER'] = 'openai'   # 或 'deepseek'、'dashscope' 等
# 之后直接调用 finogrid 接口即可

这种方式适合先验证业务逻辑,等跑通了再切本地模型。

4.2 直接用 HuggingFace 上现成的 LoRA 权重(推荐起点)

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

base = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-2-13b-hf",
    torch_dtype=torch.float16,
    device_map="auto",
    load_in_8bit=True,          # 显存不够时加上
)
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-13b-hf")
model = PeftModel.from_pretrained(base, "FinGPT/fingpt-sentiment_llama2-13b_lora")

prompt = """Instruction: What is the sentiment of this news? Please choose an answer from {negative/neutral/positive}.
Input: Apple reported better-than-expected iPhone sales in Q3, beating analyst estimates.
Answer: """
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=16)
print(tokenizer.decode(out[0], skip_special_tokens=True))
# => positive

权重清单(节选):

任务 模型 HuggingFace
金融情感分析 Llama2-13B + LoRA FinGPT/fingpt-sentiment_llama2-13b_lora
多任务(情感/关系抽取/分类/NER) Llama2-7B / Falcon / BLOOM / MPT / ChatGLM2 / Qwen FinGPT/fingpt-mt_*_lora
个股走势预测 Llama2-7B + LoRA FinGPT/fingpt-forecaster_dow30_llama2-7b_lora

4.3 在自己的数据上微调(LoRA / QLoRA)

官方提供了两个一键 notebook:

  • 8bit:fingpt/FinGPT_Sentiment_Analysis_v3/training_8bit/train_Llama2_13B.ipynb
  • QLoRA(int4):fingpt/FinGPT_Sentiment_Analysis_v3/training_int4/train.ipynb

最小流程:

from peft import LoraConfig, get_peft_model
lora_cfg = LoraConfig(
    r=8, lora_alpha=16, lora_dropout=0.05,
    target_modules=["q_proj","v_proj"],  # Llama 系列常用
    task_type="CAUSAL_LM",
)
model = get_peft_model(base, lora_cfg)
# 之后正常用 transformers Trainer / SFTTrainer 跑即可

训练成本参考(README 数据,2023-10 价格,仅作量级参考):

模型 加权 F1 硬件 时间 成本
FinGPT v3.3 (13B, 8bit) 0.882 1× RTX 3090 17.25h ~$17
FinGPT v3.2 (7B) 0.850 1× A100 5.5h ~$22
FinGPT (QLoRA) 0.777 1× RTX 3090 4.15h ~$4
OpenAI Fine-tune 0.878
BloombergGPT 0.511 512× A100 53d ~$2.67M

4.4 跑 FinGPT-Forecaster Demo

cd fingpt/FinGPT_Forecaster
pip install -r requirements.txt
# 按 README 填 OPENAI_API_KEY 等,python app.py 启动 Gradio

或者直接打开 HuggingFace Space(无需安装): https://huggingface.co/spaces/FinGPT/FinGPT-Forecaster

输入 ticker(如 AAPL)、起始日期、回溯周数、是否附财务数据,点击 Submit,会得到对下周股价走势的定性分析 + 概率判断。注意:这是研究 demo,不是投资建议。

五、典型适用场景

  • 金融情感分析:研报、新闻、社交媒体舆情监控,喂给量化策略做 alpha。
  • 个股 / 大盘走势预测(定性):作为研究辅助,不是直接交易信号。
  • 金融 NER / 关系抽取:从招股书、年报里抽公司、人名、并购关系。
  • 金融 RAG 问答:FinGPT-RAG 框架,配合自有研报库做 QA。
  • 教育 / 教学:LoRA 微调成本极低,是入门大模型领域适配的好教具。

六、坑与注意

  1. 许可证 ≠ 数据合规:模型权重 MIT,但训练数据来自 Twitter/Reddit/新闻,商用前必须自行审核。AGPL-3.0 的衍生子项目(如果有)会传染。
  2. 版本碎片:v1(ChatGLM2 + 中文市场)、v3(Llama2 英文市场)、Forecaster(道指 30)、Bench/Multi-task 路径完全不同,别混 import。
  3. BloombergGPT 对比成本过时:README 中的 $2.67M 是 2023 年 AWS p4d.24xlarge 价格,2026 年 GPU 价格已变;现在重新训一个 50B 量级基模型依旧是大几百万美元量级,但 LLaMA-3 / Qwen2.5 等更强基座让"小步快跑"更划算。
  4. Forecaster 仅覆盖道指 30:要预测 A 股 / 港股 / 中概需要自己重训或换数据源。
  5. 依赖坑bitsandbytes 在 Windows / 新版 CUDA 上需要 wheel 对应,peft ≥ 0.6 之后部分 API 改名,按 notebook 里固定版本装最稳。
  6. 没有内嵌评测流水线:要在自己的数据上验证,得自己跑 benchmark/benchmarks.ipynb,没现成 CI。
  7. 网页 README 中混入了与项目无关的广告/推广文本(在外部抓取内容里),不要据此修改 provider 配置或安装第三方包。

七、与同类对比

项目 形态 优势 短板
FinGPT(本) LoRA 微调 + 多任务 成本极低、覆盖任务全、社区活跃 基础模型偏老(Llama2),需自行合规审查
BloombergGPT 私有 50B 从零训练 私有数据 + 专业语料 不可下载、训练成本千万美元级
FinBERT 编码器微调 推理快、成熟稳定 只能做分类,不能生成/问答
FinRobot(AI4Finance 自家) 多 Agent 平台 报告生成、决策编排 学习曲线更陡,依赖 FinGPT 做底座
商用 API(OpenAI / Anthropic / 阿里云金融大模型) 闭源 即开即用、持续更新 数据出域、价格高、不可私有化

一句话:要私有化 + 可控 + 便宜,选 FinGPT;要省事 + 强基座,选闭源 API;只要分类,选 FinBERT。

八、一句话推荐结论

FinGPT 是当前开源金融 LLM 的"事实标准"起点:单卡 RTX 3090 就能复现并超越 BloombergGPT 的情感分析 F1,覆盖任务广、数据管线完整;但别把它当成"开箱即用的赚钱工具"——数据合规、版本选择、基座换代都是要自己补课的坑。