简介

June 3, 2026 · View on GitHub

📈 CFGPT: Chinese Financial Assistant with Large Language Model

English | 简体中文

简介

CFGPT 是面向中文金融场景的大语言模型系列。我们通过在收集、清洗后的中文金融语料(CFData-pt)上进行继续预训练,并结合知识密集型金融指令数据(CFData-sft)进行有监督微调,使通用大模型具备更强的金融文本理解、金融信息抽取、金融生成与风险分析能力。

CFGPT 目前包含三个主要版本:

版本参数规模基座模型状态
CFGPT17BInternLM 7B已开源部分模型权重
CFGPT27B & 20BInternLM2 7B & 20B已发布相关模型与评测结果
CFGPT38B & 32BQwen3 8B & 32B训练代码已加入,模型权重暂未开源
  • CFGPT1 基于 InternLM 7B,包含继续预训练模型、LoRA 有监督微调模型和全参数有监督微调模型:
  • CFGPT2 基于 InternLM2,覆盖 7B 和 20B 两个规模,并结合检索增强、事实核查、合规检查和风险监测等模块,在多个金融任务上取得较好表现。
  • CFGPT3 基于 Qwen3-8BQwen3-32B,延续“金融继续预训练 + 金融有监督微调”的训练路线,并在继续预训练数据上进行了扩展。当前仓库已加入 CFGPT3-8B 的训练和评测代码;CFGPT3-8B 与 CFGPT3-32B 模型权重暂未开源。

我们同时发布了 CFBenchmark,用于评估大语言模型在中文金融市场中的文本处理能力。本仓库保留 CFGPT 的训练代码、评测代码、CFData 样例数据和典型应用案例,方便研究者复现训练流程与理解数据格式。

以下是训练 CFGPT 的流程概览图:

目录

快速使用

1. 准备代码和环境

克隆我们的仓库,创建一个Python环境,并通过以下命令激活它:

git clone https://github.com/TongjiFinLab/CFGPT.git
cd CFGPT
conda create -n env_name python=3.10   
source activate env_name 
pip install -r requirements.txt

2. 选择模型版本

当前已开源的模型主要是 CFGPT1 系列。CFGPT3-8B 和 CFGPT3-32B 当前处于训练与评测代码发布阶段,模型权重暂未开源。

模型类型链接
CFGPT1-pt-7B继续预训练模型Hugging Face
CFGPT1-sft-7B-LoRALoRA 有监督微调模型Hugging Face
CFGPT1-sft-7B-Full全参数有监督微调模型Hugging Face
CFGPT2-7B有监督微调模型Hugging Face
CFGPT2-20B有监督微调模型Hugging Face
CFGPT3-8B / CFGPT3-32BQwen3 系列金融模型暂未开源

3. 使用 CFGPT1-sft-7B-LoRA

from transformers import AutoModel, AutoTokenizer
from peft import PeftModel
base_model = 'TongjiFinLab/CFGPT1-pt-7B'
lora_weights = 'TongjiFinLab/CFGPT1-sft-7B-LoRA'
device_map = 'cuda:0'
tokenizer = AutoTokenizer.from_pretrained(base_model, trust_remote_code=True)
model = AutoModel.from_pretrained(
    base_model,
    trust_remote_code=True,
    device_map=device_map,
    torch_dtype=torch.bfloat16
)
model = PeftModel.from_pretrained(
    model,
    lora_weights,
    device_map=device_map,
)
model = model.eval()
inputs = tokenizer("""你是一名金融从业者,请对这篇新闻进行情感分析。请从(中性、积极、消极)中选取答案。新闻内容:挖贝快讯:特步国际发布2023年第二季度中国内地业务营运状况,披露截至2023年6月30日止3个月零售销售实现高双位数同比增长(包括线上线下渠道),零售折扣水平约七五折。同时,2022年7月MSCI首次予以特步ESG评级,一年后评级表现即迎来提升。明晟MSCI上调特步ESG评级,由“BB”升至“BBB”。\n回答:""", return_tensors='pt').to(device_map)
pred = model.generate(**inputs, max_new_tokens=64, do_sample=False, repetition_penalty=1.0)
print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True).split('回答:')[1])

4. 使用 CFGPT1-sft-7B-Full

from transformers import AutoModel, AutoTokenizer
base_model = 'TongjiFinLab/CFGPT1-sft-7B-Full'
device_map = 'cuda:0'
tokenizer = AutoTokenizer.from_pretrained(base_model, trust_remote_code=True)
model = AutoModel.from_pretrained(
    base_model,
    trust_remote_code=True,
    device_map=device_map,
    torch_dtype=torch.bfloat16
)
model = model.eval()
inputs = tokenizer("""你是一名金融从业者,请对这篇新闻进行情感分析。请从(中性、积极、消极)中选取答案。新闻内容:挖贝快讯:特步国际发布2023年第二季度中国内地业务营运状况,披露截至2023年6月30日止3个月零售销售实现高双位数同比增长(包括线上线下渠道),零售折扣水平约七五折。同时,2022年7月MSCI首次予以特步ESG评级,一年后评级表现即迎来提升。明晟MSCI上调特步ESG评级,由“BB”升至“BBB”。\n回答:""", return_tensors='pt').to(device_map)
pred = model.generate(**inputs, max_new_tokens=64, do_sample=False, repetition_penalty=1.0)
print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True).split('回答:')[1])
  • 更多使用细节在 ./code/test

5. 训练 CFGPT3-8B

CFGPT3-8B 的代码包含继续预训练、全参数有监督微调。运行前需要根据本地环境修改模型路径、数据路径、缓存路径和 GPU/DeepSpeed 配置。

# 继续预训练数据处理与训练
cd code/train/Qwen3-8B/pretrain
python process_data.py
bash start.sh

# 有监督微调
cd ../full-sft
bash start.sh

典型使用案例

数据集

在这个存储库中,我们分享了CFData的样本:

  • CFData:./data

    CFData包括一个预训练数据集(CFData-pt)和一个监督微调数据集(CFData-sft),其中预训练数据集汇集了中国金融数据和分析,以及一个较小的通用文本子集,总共有5.84亿个文档和1410亿个token,监督微调数据集专为六种不同的金融任务量身定制,涵盖了金融分析和决策制定的各个方面,共有150万个指令对和150亿个token。

继续预训练

CFGPT1&2的CPT

预训练数据集包括 5.91 亿份文档和 1930 亿个token,包括六个子数据集:

  • CFData-CP(6.24%):包括 3,900 份公司招股说明书,共计 130 亿个token;
  • CFData-CA(12.28%):包括 600 万份公司公告,共计 170 亿个token;
  • CFData-RR(2.51%):包括 39.2 万份研究报告,共计 30 亿个token;
  • CFData-FN(18.70%):包括 8,200 万份财经新闻,共计 260 亿个token;
  • CFData-SM(60.15%):包括 4.95 亿份社交媒体内容,共计 840 亿个token;
  • CFData-Wiki(0.09%):包括 25.5 万份维基百科内容,共计 1.37 亿个token。

我们从CFData-pt中抽取了一个财经文本子语料库,以便在InternLM-7B上进行进一步的预训练。该子语料库包含了来自大量中国财经数据和分析以及少量通用文本的共计约137亿个token,这些通用文本包括公告、研究报告、社交媒体内容、财经新闻文章和维基百科等,而这些数据主要由我们自行收集。

CFGPT3的CPT

对于CFGPT3的训练,我们增加了一部分新的数据。具体是:

  • Financial (70.17%)
    • news_rp_origin_text (21.73%)
    • fin_news_2022 (20.95%)
    • fin_announcement (13.61%)
    • fin_articles (6.91%)
    • fin_news_2025 (6.33%)
    • fin_books (0.36%)
    • fin_exam (0.26%)
    • fin_reports (0.01%)
  • General (29.83%)
    • CLUECorpusSmall (18.76%)
    • UNv1-0 (3.15%)
    • ParaCrawl-v9 (1.86%)
    • zhwiki_2023 (1.84%)
    • news-crawl (1.64%)
    • csl (1.26%)
    • translation2019zh (0.83%)
    • WikiMatrix (0.43%)
    • news-commentary (0.05%)

以上一共大约284亿tokens。本次对CFGPT3系统模型的继续预训练使用了全部的数据。这些数据主要一些金融数据例如包括新闻,公告,研究报告,金融文章,专业书籍,金融测试和财报等等。除此之外也包括小部分通用语料。以上数据皆由我们自行收集。

有监督微调

监督微调数据集包括160万条指令对和15亿个标记,其中包括六个金融任务:

  • CFData-SA(5.69%):12万个实例,8600万标记用于情感分析;
  • CFData-RS(50.60%):36.9万个实例,7.65亿标记用于报告摘要;
  • CFData-ED(22.69%):49万个实例,3.43亿标记用于事件检测;
  • CFData-TD(12.37%):36.9万个实例,1.87亿标记用于主题分解;
  • CFData-QA(0.39%):1.2万个实例,600万标记用于问答;
  • CFData-SP(8.27%):21.2万个实例,1.25亿标记用于股票价格预测。

我们利用高质量的领域特定数据,通过有监督的微调来实现金融领域的适应性。该数据集包括六个金融数据集,以反映金融分析和决策的不同方面,包括情感分析、事件检测、报告摘要、主题分解、问题回答和股票走势预测。

CFData-sft提供了大量金融领域的文本信息,使FinLLM能够从不同的信息源中学习。

考虑到实际需求,我们将这些金融有监督微调数据集重组成十个任务。

以下是详细信息:

任务任务描述数据集大小
Sentiment识别与财务文件相关的情感CFData-SA13K
Summary基于提供的财务文件生成内容摘要CFData-RS18K
Risk基于提供的财务文件生成风险警报CFData-RS20K
Suggestion基于提供的财务文件生成投资建议CFData-RS18K
Event识别与财务文件相关的事件类别CFData-ED12K
Industry识别与财务文件相关的行业类别CFData-ED14K
Company识别与财务文件相关的公司名称CFData-ED12K
Product识别与财务文件相关的产品名称CFData-ED21K
Exam回答与财务问题相关的是非问题CFData-QA16K
Stock预测股票未来走势CFData-SP15K

更多关于CFData的信息,研究人员可以参考我们CFData的一些示例数据

代码

本仓库保留 CFGPT 的关键训练与评测代码。整体上,CFGPT 的训练流程包括:数据预处理、继续预训练、有监督微调、模型生成测试和下游评测。不同版本对应的基座模型和脚本目录略有不同,详细参数请查看对应目录下的 .py.sh.ymlds_config.json 文件。

代码结构

code/
├── train/
│   ├── InternLM/
│   │   └── pretrain/          # CFGPT1/2 相关 InternLM 系列继续预训练代码
│   └── Qwen3-8B/
│       ├── pretrain/          # CFGPT3-8B 继续预训练与数据处理代码
│       └── full-sft/          # CFGPT3-8B 全参数有监督微调代码
├── test/
│   └── eval-generate.py       # 生成测试示例
└── utils/                     # 数据整理、loss 与 trainer 等通用组件

继续预训练

继续预训练用于将通用基座模型适配到中文金融语料。该阶段主要包含分词、长文本拼接、数据保存和分布式训练。

InternLM 系列训练代码位于:

code/train/InternLM/pretrain

CFGPT3-8B 训练代码位于:

code/train/Qwen3-8B/pretrain

以 CFGPT3-8B 为例,运行流程如下:

cd code/train/Qwen3-8B/pretrain
python process_data.py
bash start.sh

其中,process_data.py 负责将原始 jsonl 文本处理为 2048 token 的训练块,qwen3_8b_pt_train.py 负责继续预训练,start.sh 负责配置环境变量并启动分布式训练。实际运行前请根据本地环境修改模型路径、数据路径、缓存路径、CUDA 路径和 GPU 数量。

有监督微调

有监督微调用于进一步提升模型在金融问答、金融信息抽取、报告摘要、风险提示、投资建议等指令任务上的表现。

CFGPT1 原始版本包含 LoRA SFT 和全参数 SFT 两类训练方式。在这里,我们以 lora-bf16 作为示例,训练脚本位于 ./code/train/lora 目录下

deepspeed --include localhost:6,7 --master_port 60005 lora_bf_16_parallel_train.py --config lora_bf_16_parallel_train.yml > lora_bf_16_parallel_train.log 2>&1

CFGPT3-8B 当前提供全参数 SFT 训练代码:

code/train/Qwen3-8B/full-sft

运行示例:

cd code/train/Qwen3-8B/full-sft
bash start.sh

其中,qwen3_8b_sft.py 负责加载继续预训练后的模型、构造 ChatML 格式训练文本并启动 SFT 训练。训练数据路径、评测数据路径、DeepSpeed 配置路径和输出路径需要根据实际机器环境修改。

生成测试

生成测试脚本位于:

code/test/eval-generate.py

该脚本用于快速检查模型在金融任务上的生成效果。不同模型的加载路径和推理参数可在脚本中修改。

评测

CFGPT2的评测结果如下所示。

C-Eval

ModelSizeSTEMSocial ScienceHumanitiesOthersAverageAverage(hard)
GPT-4-67.177.664.567.868.754.9
ChatGPT175B52.961.850.953.654.441.4
InternLM-7B7B48.067.455.445.852.837.1
ChatGLM2-6B6B48.660.551.349.851.737.1
Qwen-7B7B52.874.163.155.259.641.0
Qwen-14B14B65.785.475.368.472.153.7
Baichuan-7B7B38.252.046.239.342.831.5
Baichuan-13B13B47.066.857.349.853.636.7
Baichuan2-13B-Chat13B48.470.560.355.056.637.9
InternLM2-7B7B52.371.964.961.060.838.8
InternLM2-20B20B56.175.762.662.463.046.3
CFGPT2-7B7B56.776.463.963.063.543.2
CFGPT2-20B20B64.680.872.168.969.249.9

FinEval

ModelSizeFinanceEconomyAccountingCertificateAverage
GPT-4-71.074.559.370.468.6
ChatGPT175B59.361.645.255.155.0
InternLM-7B7B49.049.240.549.447.1
ChatGLM2-6B6B46.546.444.551.547.4
Qwen-Chat-7B7B51.552.144.553.650.5
Qwen-7B7B54.554.450.355.853.8
Baichuan-7B-Chat7B44.941.534.945.642.0
Baichuan-13B-Chat13B51.651.141.752.849.4
InternLM2-7B7B54.254.043.555.451.9
InternLM2-20B20B57.358.947.458.655.5
CFGPT2-7B7B62.663.958.966.062.9
CFGPT2-20B20B64.064.962.167.964.8

CFBenchmark-Basic

ModelSizeCompanyProductR.AvgSectorEventSentimentC.AvgSummaryRiskSuggestionG.AvgAvg
HUMAN-0.9310.7440.8380.9750.9390.9120.9421.0001.0001.0001.0000.927
ChatGPT20B0.7970.1980.4980.4530.4580.4250.4550.5930.5410.7710.6350.529
ERNIE-Bot260B0.8070.3000.5330.4080.3500.1860.3150.7150.5900.7160.6730.507
ERNIE-Bot-4-0.8190.4170.6180.4180.3580.3750.3840.7210.6290.7180.6890.564
Falcon-7B7B0.6710.1680.4200.1690.1320.2500.1840.3020.3010.2460.2830.296
Falcon-7B-chat7B0.5820.0460.3140.1120.1420.1530.1350.3070.2990.2580.2880.246
bloomz-7B17B0.7650.1660.4650.2520.1540.3940.2670.4510.3710.4620.4280.387
bloomz-7Bt1-mt7B0.7510.1570.4540.0870.1820.3800.2160.4250.3790.3960.4000.357
Qwen-7B7B0.7800.3570.5690.4800.3350.3790.3980.7500.5050.7130.6560.541
Qwen-Chat-7B7B0.7630.3600.5620.4000.3670.2650.3440.5480.3070.3790.4110.439
Qwen-14B14B0.8050.4210.6130.4810.3500.3850.4050.7540.6080.7170.6930.570
Qwen-Chat-14B14B0.8140.4420.6280.3820.4000.3500.3770.7320.4780.7360.6490.551
ChatGLM2-6B6B0.7470.3130.5300.2850.3000.3570.3140.6570.4540.6710.5940.479
Baichuan2-7B-Base7B0.6720.3400.5060.3420.4900.4800.4370.7390.6190.7510.7030.549
Baichuan2-7B-Chat7B0.7570.4020.5790.4250.4750.3230.4080.7250.6480.7320.7020.563
Baichuan2-13B-Base13B0.7810.3300.5550.4360.4960.4770.4700.7250.5030.7470.6580.561
Baichuan2-13B-Chat13B0.7970.3140.5560.4720.5070.3870.4550.7390.6340.7460.7060.572
InternLM-7B7B0.6120.2330.4230.2660.3110.3280.3020.3780.3360.3790.3640.363
InternLM-7B-Chat7B0.6320.2610.4470.2720.3640.3990.3450.3630.2700.3530.3290.374
InternLM-20B20B0.8090.3580.5830.5000.4270.4170.4480.7060.6530.7280.6950.575
InternLM-20B-Chat20B0.4880.3620.4250.3230.3270.3700.3400.7060.5780.7620.6620.476
CFGPT1-stf-LoRA7B0.8200.4140.6170.5690.7290.7690.6890.7450.5840.6090.6460.650
CFGPT1-sft-Full7B0.8360.4760.6560.7000.8080.8290.7790.7980.6690.8080.7580.731
CFGPT2-7B7B0.8340.4700.6520.6440.7500.7930.7290.8010.6920.7900.7610.714
CFGPT2-20B20B0.8910.5010.6960.7220.8250.8650.8060.8250.7270.8230.7920.755

OpenFinData

ModelSizeKnowledgeCaluationExplanationIdentificationAnalysisComplianceAverage
ERNIE-Bot-3.5-78.070.482.175.377.736.770.0
ERNIE-Bot-4-87.373.684.377.079.137.373.1
InternLM-7B7B65.345.871.462.559.237.256.9
ChatGLM2-6B6B62.437.270.859.258.338.754.4
Qwen-Chat-7B7B71.340.571.458.651.340.055.5
Qwen-Chat-14B14B78.057.675.671.659.340.663.8
Baichuan2-7B-Chat7B46.237.076.560.255.028.750.6
Baichuan2-13B-Chat13B69.339.575.365.762.031.357.2
InternLM2-7B7B70.239.973.462.861.439.557.8
InternLM2-20B20B76.452.676.366.263.942.162.9
CFGPT2-7B7B81.962.875.271.364.168.270.5
CFGPT2-20B20B84.666.578.175.966.071.973.8

致谢

CFGPT的研发过程参考了以下开源项目。我们向这些项目的研究者表示感谢。

未来工作

  • 使用CFGPT创建下游的应用CFAPP
  • 构建更加全面的训练任务与对应数据
  • 持续性改进CFGPT在更多复杂金融任务上的能力

使用许可

CFGPT的代码遵循Apache许可证2.0协议。已开源模型的使用许可需同时遵循对应基座模型许可证和训练数据使用条款。CFGPT1/CFGPT2 相关模型遵循 InternLM / InternLM2 等基础模型的许可要求;CFGPT3 基于 Qwen3 训练,当前 CFGPT3-8B 与 CFGPT3-32B 模型权重暂未开源。如您发现任何潜在的风险行为,请与我们联系。

感谢我们的贡献者 :

引用

如果您认为CFGPT对您的研究有帮助,可以引用以下的论文:

@article{li2023cfgpt,
  title={CFGPT: Chinese financial assistant with large language model},
  author={Li, Jiangtong and Bian, Yuxuan and Wang, Guoxuan and Lei, Yang and Cheng, Dawei and Ding, Zhijun and Jiang, Changjun},
  journal={arXiv preprint arXiv:2309.10654},
  year={2023}
}

@article{li2024ra,
  title={RA-CFGPT: Chinese financial assistant with retrieval-augmented large language model},
  author={Li, Jiangtong and Lei, Yang and Bian, Yuxuan and Cheng, Dawei and Ding, Zhijun and Jiang, Changjun},
  journal={Frontiers of Computer Science},
  volume={18},
  number={5},
  pages={185350},
  year={2024},
  publisher={Springer}
}