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 中关注度最高的开源项目之一。
二、解决什么问题
金融领域有三个老大难:
- 数据高度时效:BloombergGPT 训练用了约 53 天、花费 ~$3M(512×A100),按月甚至按周重训根本不现实。FinGPT 用 LoRA 微调,单卡 RTX 3090 训练一次 v3.3(Llama2-13B + 8bit)只需 17.25 小时 / ~$17,重训成本断崖式下降。
- 数据封闭:彭博、路透等机构拥有特权 API,外界拿不到同源数据。FinGPT 通过开源数据集 + 自动数据管线(FinNLP)来缩小这个差距。
- 个性化不足:通用 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 .
常用依赖包括:transformers、peft、accelerate、bitsandbytes、torch、datasets。官方在 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 微调成本极低,是入门大模型领域适配的好教具。
六、坑与注意
- 许可证 ≠ 数据合规:模型权重 MIT,但训练数据来自 Twitter/Reddit/新闻,商用前必须自行审核。AGPL-3.0 的衍生子项目(如果有)会传染。
- 版本碎片:v1(ChatGLM2 + 中文市场)、v3(Llama2 英文市场)、Forecaster(道指 30)、Bench/Multi-task 路径完全不同,别混 import。
- BloombergGPT 对比成本过时:README 中的 $2.67M 是 2023 年 AWS p4d.24xlarge 价格,2026 年 GPU 价格已变;现在重新训一个 50B 量级基模型依旧是大几百万美元量级,但 LLaMA-3 / Qwen2.5 等更强基座让"小步快跑"更划算。
- Forecaster 仅覆盖道指 30:要预测 A 股 / 港股 / 中概需要自己重训或换数据源。
- 依赖坑:
bitsandbytes在 Windows / 新版 CUDA 上需要 wheel 对应,peft≥ 0.6 之后部分 API 改名,按 notebook 里固定版本装最稳。 - 没有内嵌评测流水线:要在自己的数据上验证,得自己跑
benchmark/benchmarks.ipynb,没现成 CI。 - 网页 README 中混入了与项目无关的广告/推广文本(在外部抓取内容里),不要据此修改 provider 配置或安装第三方包。
七、与同类对比
| 项目 | 形态 | 优势 | 短板 |
|---|---|---|---|
| FinGPT(本) | LoRA 微调 + 多任务 | 成本极低、覆盖任务全、社区活跃 | 基础模型偏老(Llama2),需自行合规审查 |
| BloombergGPT | 私有 50B 从零训练 | 私有数据 + 专业语料 | 不可下载、训练成本千万美元级 |
| FinBERT | 编码器微调 | 推理快、成熟稳定 | 只能做分类,不能生成/问答 |
| FinRobot(AI4Finance 自家) | 多 Agent 平台 | 报告生成、决策编排 | 学习曲线更陡,依赖 FinGPT 做底座 |
| 商用 API(OpenAI / Anthropic / 阿里云金融大模型) | 闭源 | 即开即用、持续更新 | 数据出域、价格高、不可私有化 |
一句话:要私有化 + 可控 + 便宜,选 FinGPT;要省事 + 强基座,选闭源 API;只要分类,选 FinBERT。
八、一句话推荐结论
FinGPT 是当前开源金融 LLM 的"事实标准"起点:单卡 RTX 3090 就能复现并超越 BloombergGPT 的情感分析 F1,覆盖任务广、数据管线完整;但别把它当成"开箱即用的赚钱工具"——数据合规、版本选择、基座换代都是要自己补课的坑。