中文金融大语言模型:一站式金融解决方案,你的专属LLM金融顾问

DISC-FinLLM 是一个专门针对金融场景下为用户提供专业、智能、全面的金融咨询服务的金融领域大模型,

1.概述

DISC-FinLLM是一个金融领域的大语言模型,是由面向不同金融场景的4个模组:金融咨询、金融文本分析、金融计算、金融知识检索问答构成的多专家智慧金融系统。这些模组分别在金融NLP任务、人类试题、资料分析和时事分析等四个评测中展现出明显优势,证明了DISC-FinLLM能为广泛的金融领域提供强有力的支持。DISC-FinLLM能在不同应用场景下提供帮助,可用于实现不同的功能:

  • 金融咨询: 该模组可以在中国金融语境下,与用户展开关于金融话题的多轮对话,或是为用户解释金融专业的相关知识,是由数据集中的金融咨询指令部分训练而来。
  • 金融文本分析: 该模组可以帮助用户在金融文本上完成的信息抽取、情感分析、文本分类、文本生成等NLP任务,是由数据集中的金融任务指令部分训练而来。
  • 金融计算: 该模组可以帮助用户完成与数学计算相关的任务,除了利率、增长率等基本计算,它还支持统计分析和包括Black-Scholes期权定价模型、EDF预期违约概率模型在内的金融模型计算。这一模组是由数据集中的金融计算指令部分训练而来。
  • 金融知识检索问答: 该模组可以基于金融新闻、研报和相关政策文件为用户提供投资建议、时事分析、政策解读。它是由数据集中的检索增强指令部分训练而来。

1.1 模型效果演示

金融咨询

金融文本分析

金融计算

金融知识检索问答

2.DISC-Fin-SFT 数据集

DISC-FinLLM是基于我们构建的高质量金融数据集DISC-Fin-SFT在通用领域中文大模型Baichuan-13B-Chat上进行LoRA指令微调得到的金融大模型。DISC-Fin-SFT总共包含约25万条数据,分为四个子数据集,它们分别是金融咨询指令、金融任务指令、金融计算指令、检索增强指令。

数据集数据量输入长度输出长度
金融咨询指令63k26369
金融任务指令110k67635
金融计算指令57k73190
检索增强指令20k1031521
DISC-Fin-SFT246k351198

2.1 金融咨询指令

金融咨询指令数据来源于三部分:

  • Wealth-alpaca-lora 是一个英文的金融问答数据集,且其部分答案不符合中国国情和立场。因此我们将FiQA中的所有问题翻译成中文,并使用ChatGPT重新生成问题的答案,来提高这一数据集的质量。
  • 金融名词解释。我们在网上收集了200多个金融领域的专业术语(如:杠杆收购),然后使用令ChatGPT为这些专业词汇生成相应的问答对,用以训练模型对金融术语的理解。
  • 经管之家论坛上的公开发帖。我们利用self-chat prompting方法引导ChatGPT围绕帖子主题生成多轮的问答。

在引导ChatGPT生成数据的过程中,我们通过精心设计的prompt确保生成的问答符合中国的国情、立场、态度和语言风格。

2.2 金融任务指令

金融任务指令数据来源于两个部分:

  • 金融NLP数据集。该部分是基于已有的金融NLP数据集,通过人工编写的prompt改编而来的。我们搜集了十余个开源的NLP中文数据集,可以分为情绪分析、信息抽取、文本生成、文本分类和翻译等几类。此数据集的分布如下所示:
数据集主要任务类型次要任务类型数据量
FPB情感分析情感分析18690
FIQA-SA情感分析情感分析-
FNSC情感分析情感分析-
CCKS-NEC-2022信息抽取因果抽取7499
SmoothNLP IEE信息抽取事件抽取3256
SmoothNLP NHG文本生成文本生成4642
CCKS2022-event文本分类事件类型分类3578
Minds14文本分类意图识别59143
Financial Report信息抽取实体抽取61705
OpenKG信息抽取实体抽取7672
OpenKG信息抽取实体抽取67921
FDDC2018翻译术语翻译333
Wealth-alpaca-lora文本生成关键词生成41825
  • 金融无标签文本数据集。我们基于无标注的金融文本构建金融阅读理解数据集。我们从东方财富网收集了87k篇文章,包括金融新闻和行业研报摘要。然后,引导ChatGPT先生成问题,再生成答案,得到(金融文本、问题、答案)这样的三元组,并进一步使用阅读理解任务模板改写为指令对,
金融计算指令

在金融计算中,表达式计算器、方程求解器、正态概率表、计数器四种工具可以帮助模型完成大多数的计算任务。四种工具各有不同的调用命令、输入和输出。例如,计算器的命令是 [Calculator(expression)→result]。在这一部分,构建金融计算指令的目的就是训练模型在合适的时候调用这些工具解决数学问题。四个工具的定义如下表所示:

工具名称工具描述
表达式计算器输入:初等函数的数学表达式
输出:表达式的计算结果(小数表示)
方程求解器输入:方程组
输出:方程组的解
计数器输入:包含数据样本的数组
输出:样本数量
概率表输入:数字
输出:正态分布累积分布函数在这个数字处的值

首先构建了一个种子任务库,其中的种子任务由三部分组成:根据金融考试人工改写的计算题、带有研报上下文的数据计算题、BELLE数据集中校园数学部分的通用数学题。特别地,根据Toolformer的方法,这些问题的答案中插入着上述四个工具的调用命令,它们代表着调用工具的方法和时机。随后,为了增加数据的数量和多样性,我们通过小样本思维链提示(Few-shot Chain-of-Thought Prompting)方法,让ChatGPT在提示词的引导下,根据种子任务生成超过5万个新问答对,其中的答案也带有插件命令。

2.3 检索增强指令

检索增强指令的构造分为三步。第一步,我们根据新闻和研报等金融文本构造金融分析问题。第二步,我们在知识库中检索与问题有关的文档,其中参考文档源于我们构建金融知识库,包含18k研报和69k金融新闻。第三步,我们将问题和参考资料结合在一起,生成问题的答案。在这个过程中,问题和答案是由ChatGPT通过Chain-of-Retrieval (CoR) prompting方法生成的。最终我们构建了一个由20k条检索增强指令组成的数据集,其中的指令涵盖了金融领域中主要的分析形式,包括行业分析、政策分析、投资建议、公司战略规划等。

3. 模型微调

3.1 LoRA微调

针对金融领域的不同功能,我们首先采用了多专家微调的训练策略。我们在特定的子数据集上训练模型的各个模组,使它们彼此互不干扰,独立完成不同任务。为此,我们以Baichuan-13B-Chat为基座模型,使用LoRA方法高效地进行参数微调。

通过数据集的四个部分,分别训练4个LoRA专家模组。部署时,用户只需更换在当前基座上的LoRA参数就可以切换功能。因此用户能够根据使用需求激活/停用模型的不同模组,而无需重新加载整个模型。4个LoRA专家模组分别如下:

  • 金融顾问:该模型用于多轮对话。由于我们的金融咨询指令数据十分丰富,该模型可以在中国的金融语境下做出高质量的回答,为用户解答金融领域的专业问题,提供优质的咨询服务。
  • 文件分析师:该模型主要用于处理金融自然语言处理领域内的各种任务,包括但不限于金融文本中的信息抽取、情绪分析等。
  • 财务会计师:DISC-FinLLM支持四种工具,即表达式计算器、方程求解器、计数器和概率表。这些工具支持我们的模型完成金融领域的大多数的计算任务,如金融数学建模、统计分析等。当模型需要使用工具时,它可以生成工具调用命令,然后中断解码,并将工具调用结果添加到生成的文本中。这样,DISC-FinLLM就可以借助工具提供的准确计算结果,回答金融中的计算问题。
  • 时事分析师:我们在第四个LoRA训练中引入检索插件。DISC-FinLLM主要参考了三类金融文本:新闻、报告和政策。当用户问及时事、行业趋势或金融政策等常见金融话题时,我们的模型可以检索相关文件,并像金融专家一样展开分析并提供建议。

3.2 全量微调

我们以Baichuan-13B-Chat为基座模型,混合了所有数据,在 8 * Nvidia A800 80 GB + deepspeed 的环境下进行了全量微调测试。

4. 推理和部署

首先,您需要安装项目的依赖环境。

pip install -r requirements.txt

5. 快速开始

5.1 全参模型

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfig
from peft import PeftModel, PeftConfig

model_path = "Go4miii/DISC-FinLLM"
model = AutoModelForCausalLM.from_pretrained(
    model_path, torch_dtype=torch.float16, device_map="auto", trust_remote_code=True
)
model.generation_config = GenerationConfig.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(
    model_path, use_fast=False, trust_remote_code=True,
)

messages = [
    {"role": "user", "content": "请解释一下什么是银行不良资产?"},
]
response = model.chat(tokenizer, messages)
print(response)

5.2 LoRA模型

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfig
from peft import PeftModel, PeftConfig

model_path = "Go4miii/DISC-FinLLM"
model = AutoModelForCausalLM.from_pretrained(
    model_path, torch_dtype=torch.float16, device_map="auto", trust_remote_code=True
)
model.generation_config = GenerationConfig.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(
    model_path, use_fast=False, trust_remote_code=True,
)
model = PeftModel.from_pretrained(model, lora_path
)

messages = [
    {"role": "user", "content": "请解释一下什么是银行不良资产?"},
]
response = model.chat(tokenizer, messages)
print(response)

我们的四个LoRA路径,使用时将上述lora_path替换为下面路径就可以:

lora_path=‘Go4miii/DISC-FinLLM/Baichuan-13B-Chat-lora-Task’

lora_path=‘Go4miii/DISC-FinLLM/Baichuan-13B-Chat-lora-Consulting’

lora_path=‘Go4miii/DISC-FinLLM/Baichuan-13B-Chat-lora-Computing’

lora_path=‘Go4miii/DISC-FinLLM/Baichuan-13B-Chat-lora-Retrival’

5.3 命令行工具

python cli_demo.py

5.4 网页 Demo

依靠 streamlit 工具运行以下命令,会在本地启动一个 web 服务,把控制台给出的地址输入浏览器即可访问:

streamlit run web_demo.py --server.port 8888

6. DISC-Fin-Eval-Benchmark

我们建立了一个全面的评估框架 —— DISC-Fin-Eval Benchmark,从各个角度严格评估我们的模型。该评估框架包括四个不同的组成部分,即:金融NLP任务、人类试题、资料分析和时事分析。这一评估框架全面地证明了我们模型能力和训练数据的有效性。 DISC-Fin-Eval-Benchmark。

6.1 测评方法

我们目前提供了baichuan-7b、baichuan-13b-base、baichuan-13b-chat、bloomz-7b、chatglm、chatglm2、fingpt-v3的评测代码,同时也可以加入针对自己数据训练出来的lora权重进行评测。下面介绍评测的几个步骤:

  • 第一步:运行脚本preprocess.py,会在本地创建一个data的文件夹,把八个任务的数据集下载到本地,并且会针对每个数据集进行相应的处理,方便后续进行评测。同时还会生成一个instruct_samples.json文件,这里保存着每个数据集的few-shot。这里需要说明的一点是:我们将第七个数据集拆分成两个数据集,对应着两个不同的任务。

  • 第二步:使用如下命令运行脚本autoeval.py: python autoeval.py --model xxxx --lora_path xxxx --eval_data all --device cuda:0

目前model可以分别设置为:chatglm-6b、chatglm2-6b、baichuan-7b、baichuan-13b-base、baichuan-13b-chat、bloomz-7b、fingpt-v3。

  • 第三步:最终的评测结果会自动保存成json文件。

如果需要在其他模型上进行评测,需要修改源代码。

主要分为以下两步:

  • 第一步:在 finllm.py 代码中自定义一个模型类,该类需要继承 DISCFINLLMBase 类,并实现 generate 函数,其中 generate 函数的输入为任意提示文本,输出为模型的回复
import os
from evaluator.finllm import DISCFINLLMBase
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage

os.environ["OPENAI_API_KEY"] = ""
os.environ["OPENAI_API_BASE"] = ""

class OpenAILLM(DISCFINLLMBase):

    def __init__(self):
        self.model = ChatOpenAI()
    
    def generate(self, prompt: str) -> str:
        messages = [HumanMessage(content=prompt)]
        response = self.model(messages).content
        return response

  • 第二步:运行脚本
python evaluate.py 

6.2 评测系统

金融NLP任务评测

我们使用FinCUGE评估基准测试模型处理金融NLP任务的能力。这个评测一共包含八项任务,其中包括情感分析、关系抽取、文本摘要、文本分类、事件抽取和其他任务。我们通过提示模板将这个数据集改造为小样本(few-shot)形式,使用常用的准确度(accuracy)、F1和Rouge指标评价模型的表现,来衡量模型在金融领域中理解文本和生成相关回答的能力。评测结果(%)如下:

模型 ↓ 评测集 →FinFE (Accuracy)FinQA (F1)FinCQA (F1)FinNA (ROUGE)FinRE (F1)FinESE (F1)平均值
Baichuan-13B-Chat64.838.133.631.09.118.631.0
(LoRA)69.342.442.030.910.145.340.0
ChatGLM56.731.835.132.513.048.736.3
(LoRA)60.741.436.434.710.746.238.4
ChatGLM261.328.835.928.911.742.134.8
(LoRA)65.337.636.433.411.839.537.3

人类试题评测

FinEval是一个包含高质量多项选择题的集合,涵盖金融、经济、会计和证书等领域。它包括4,661个问题,涵盖了34个不同的学术科目。为了确保对模型性能进行全面的评估,FinEval采用了多种方法,包括zero-shot,few-shot,仅预测答案(answer-only)和思维链(chain-of-thought)提示词。通过在FinEval上评估最先进的中英文大语言模型,结果显示只有GPT-4在不同提示设置下达到了接近70%的平均准确率,表明大语言模型在金融领域知识方面具有显著的增长潜力。我们的工作提供了一个更全面的金融知识评估基准,利用了模拟考试数据,涵盖了广泛的大语言模型评估范围。

我们使用了FIN-Eval基准评估模型在回答真人生成的金融问题上的能力,这个基准涵盖了金融、经济、会计、证书等学科的高质量多项选择题。我们以准确度为指标,来衡量模型的表现。评测结果(%)如下:

模型金融经济会计证书平均值
GPT-471.074.559.370.468.6
ChatGPT59.361.645.255.155.0
Baichuan-13B-Base52.650.243.453.550.1
Baichuan-13B-Chat51.651.141.752.849.4
ChatGLM2-6B46.546.444.551.547.4
InternLM-7B49.049.240.549.447.1
InternLM-Chat-7B48.449.140.849.547.0
LLaMA-2-Chat-70B47.146.741.545.745.2
FinGPT-v3-6B50.542.550.852.149.6
DISC-FinLLM (金融咨询)54.445.452.851.851.6
DISC-FinLLM (金融任务)57.448.849.549.751.5
DISC-FinLLM (检索增强)56.144.049.550.650.6
DISC-FinLLM (金融计算)54.850.246.950.650.9
DISC-FinLLM (全数据)53.847.942.049.148.7

资料分析评测

我们手动构造了一个由100个财经计算题组成的数据集,用于评估模型在计算任务中的能力。这些测评问题改编自中国行政职业能力测验中的材料分析计算题,包括计算同比增长率和产值比例等。我们根据模型给出计算公式和计算结果的正确率来评估模型的表现。评测结果如下:

计算公式计算公式与结果
GPT-3.5-turbo0.280.26
Baichuan-13B-Chat0.200.12
DISC-FinLLM (金融计算)0.350.35

时事分析评测

此评测基于GPT-3.5模型作出评估。我们构建了一个金融问题数据集,其中的问题需要模型使用最新信息来获得准确答案。然后我们在谷歌等搜索引擎中手动搜索,以收集与每个问题相关的多个参考文段。该数据集旨在评估出模型在回答金融问题时检索信息的相关性和准确性,我们用四个指标评价模型的表现,即准确性、实用性、语言质量和思考性。评测结果如下:

准确性实用性语言质量思考性
Baichuan-13B-Chat4.084.154.213.88
DISC-FinLLM (检索增强)4.134.294.333.95

可能大家都想学习AI大模型技术,也想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把全套AI技术和大模型入门资料、操作变现玩法都打包整理好,希望能够真正帮助到大家。

👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员辣条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值