基于中文金融知识的 LLaMA 系微调模型的智能问答系统:LLaMA大模型训练微调推理等详细教学

news2024/9/22 9:42:18

在这里插入图片描述

项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实战掌握技能,助力用户更好利用 CSDN 平台,自主完成项目设计升级,提升自身的硬实力。

在这里插入图片描述

  1. 专栏订阅:项目大全提升自身的硬实力

  2. [专栏详细介绍:项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域)

基于中文金融知识的 LLaMA 系微调模型的智能问答系统:LLaMA大模型训练微调推理等详细教学

基于 LLaMA 系基模型经过中文金融知识指令精调/指令微调(Instruct-tuning) 的微调模型。通过中文金融公开问答数据+爬取的金融问答数据构建指令数据集,并在此基础上对 LLaMA 系模型进行了指令微调,提高了 LLaMA 在金融领域的问答效果。

基于已有数据和继续爬取的中文金融数据,将继续利用 GPT3.5/4.0 API 构建高质量的数据集,另在中文知识图谱-金融、CFLEB 金融数据集等数据上进一步扩充高质量指令数据集。

  • 基于 Chinese-LLaMA 和中文金融数据进行指令微调的模型。

  • 基于 Meta-LLaMA 和中文金融数据进行指令微调的模型。

1. 环境安装

首先安装依赖包,python环境建议3.9+


pip install -r requirements.txt

其次安装 lfs 方便本地下载 LLaMa 大模型


git lfs install

# 下载7B模型到本地
bash ./base_models/load.sh

2.模型下载

LoRA 权重可以通过 Huggingface 下载,结构如下:

    Fin-Alpaca-LoRA-7B-Meta/
       - adapter_config.json   # LoRA权重配置文件
       - adapter_model.bin     # LoRA权重文件
LoRA模型下载分类重构模型训练数据训练序列长度版本
Fin-Alpaca-LoRA-7B-Meta中文金融问答微调模型decapoda-research/llama-7b-hf12M 指令数据512V1.0
Fin-Alpaca-LoRA-7B-Linly中文金融问答微调模型Linly-AI/Chinese-LLaMA-7B14M 指令数据512V1.1

3.Inference:单模型推理-多模型对比

目前在./instruction_data/infer.json中提供了一些测试用例,也可替换成其它的数据集但注意格式保持一致

运行infer脚本


#单模型推理
bash ./scripts/infer.sh

#多模型对比
bash ./scripts/comparison_test.sh

4.数据集构建

此前版本采用了公开和爬取的中文金融领域问答数据,涉及到保险、理财、股票、基金、贷款、信用卡、社保等。

指令数据示例如下:


问题:办理商业汇票应遵守哪些原则和规定?

回答: 办理商业汇票应遵守下列原则和规定:1.使用商业汇票的单位,必须是在银行开立帐户的法人;2.商业汇票在同城和异地均可使用;3.签发商业汇票必须以合法的商品交易为基础;4.经承兑的商业汇票,可向银行贴现;5.商业汇票一律记名,允许背书转让;6.商业汇票的付款期限由交易双方商定,最长不得超过6个月;7.商业汇票经承兑后,承兑人即付款人负有到期无条件交付票款的责任;8.商业汇票由银行印制和发售。

针对此前数据仍存在不准确和类型单一等不完善的地方;目前我们利用GPT3.5/4.0 接口进一步优化数据、并扩充中文金融知识库,设置多种Prompt形式、multi-task形式拓展丰富指令数据集,实现金融领域多业务场景覆盖。

最新模型情况:(即将发布,敬请期待~)

5.微调Finetune

若想用自己的数据集微调 LLaMA,请按照./instruction_data/fin_data.json的格式构建自己的数据集

运行 finetune 脚本


bash ./scripts/finetune.sh

6.训练细节

6.1 计算资源需求

目前训练设备为一张A100-SXM-80GB显卡,训练总轮次10轮。batch_size=64的情况下显存占用在40G左右、batch_size=96的情况下显存占用在65G左右。预计3090/4090显卡(24GB显存)以上显卡可以较好支持,根据显存大小来调整batch_size。

6.2实验记录

6.3 模型效果对比

测试输入原始Llama输出Cornucopia(Fin-Alpaca-LoRA-7B-Meta)输出Cornucopia(Fin-Alpaca-LoRA-7B-Linly)输出文心一言输出讯飞星火认知输出
老年人理财好还是存定期好?老年人的理财办法应该适合于自身情况。如果他/她有足够的时间和投资能力,则建议他/她利用现在的时间与投资机会进行理财活动。因为老年人可以获得余额、保险、房地产等多种收入方式,所以他/她可以选择不同类型的理财项目,包括公开市场、非公开市场、基金、信托计划等。当然,老年人也应该注意其实需要的生活财务安全。若投资者风险承受能力比较高,那么可以选择理财产品进行投资,若投资者风险承受能力比较低,那么可以选择定期存款进行投资。目前理财产品和定期存款都是保本型产品,不会亏损本金,并且收益由投资标的决定,所以理财产品和定期存款相比较更加稳定。需要注意的是理财产品和定期存款没有同样的活期利率,而且理财产品每日计算收益,所以理财产品收益越高,投资者获得收益的概率也越高。9QDII基金是指中国市场上开放式外资基金,这类基金主要投资于:A股、港股、美股、英股、德股、日股、法股、台股、香港股、新加坡股等;QFII基金是指中国交易所开放式外资基金,这类基金主要投资于:A股、港股、美股、英股、德股、日股、法股、台股、香港股、新加坡股等。对于风险承受能力比较低的老年人来说,选择定期存款比较好,因为其风险性比较低,收益也比较稳定,而对于风险承受能力比较高的老年人来说,选择理财产品比较好,因为其风险性比较大,收益也比较高。需要注意的是目前理财产品不是保本型产品,有亏损本金的可能,并且根据投资标的分为不同的风险等级,若投资者风险承受能力比较低,那么可以选择风险等级R2及以下的理财产品,若投资者风险承受能力比较高,那么可以选择风险等级R3及以上的理财产品。当前理财产品包括:债券型基金、股票型基金、混合型基金、指数基金和联接基金等,投资者可以根据自身实际情况选择合适的产品进行投资。老年人存定期比较好。老年人没工作收入,资产总额也是在逐渐降低,而且老人容易生病,而医疗费支出较大。如果老年人投资理财产品,伴随着其产品净值的变化,是有可能会出现亏损现象的。而定期存款,其利率一般是固定的,期满返本还息,相对而言,安全系数高,盈利更持久。作为AI语言模型,我没有个人观点和建议。但是,老年人理财和存定期都有其优缺点。老年人理财的优点是可以更好地规划自己的财务状况,包括退休金、医疗保险、子女教育等方面的支出。此外,老年人可以通过投资股票、基金等金融产品来增加财富。存定期的优点是风险较小,收益相对稳定。老年人可以选择不同期限的定期存款,根据自己的需求和风险承受能力来选择。综合来看,老年人应该根据自己的实际情况和需求来选择适合自己的理财方式。如果老年人有足够的资金和风险承受能力,可以考虑投资股票、基金等金融产品来增加财富。如果老年人更注重稳定性和安全性,可以选择存定期来保障自己的财务状况。
股票和基金能当天随买随卖吗?Yes, stocks and funds can be bought and sold on the same day.不能,股票和基金实行T+1交易,交易日当天买入,按照买入当天收盘时的净值计算,第二个交易日确认份额,份额确认后计算收益,所以在交易日买入就要等到第二个交易日才能获得收益。比如投资者周一买入了某只股票,周二市场上公布的净值为10元,那么投资者可以根据这些数据计算收益:1000×10=10000;10000/10=1000。若投资者持有此股票超过30个工作日,那么可以直接转换成现金,也就是将该股票全部或者部分提前支取。需要注意的是,目前没有任何法律法规限制投资者在交易日买入基金、股票,因此投资者在交易日买入基金、股票都能进行当天开放型交易。同时,投资者在交易日买入股票之后,其股票会自动转换为现金,并且投资者在交易日买入股票之后,其股票会自动转换为涨跌幅限制(20%左右),从而影响投资者的手续费和收益。不能,股票交易时间:周一至周五上午9:30-11:30,下午13:00-15:00,法定节假日不交易。基金交易时间:周一至周五上午9:30-11:30,下午13:00-15:00,法定节假日不交易。股票实行T+1交易,按照市场实时价格进行成交,遵循价格优先、时间优先的原则,沪深两市股票涨跌幅限制为10%,创业板和科创板股票涨跌幅限制为20%,北交所涨跌幅限制为30%,ST以及*ST涨跌幅限制为5%(创业板和科创板涨跌幅还没有这个限制),港股涨跌幅限制为20%,新三板涨跌幅限制为10%(创业板和科创板涨跌幅还没有这个限制),对于投资者来说,股票交易比较灵活,可以根据自身情况进行交易,并且股票交易手续费比较低,基金交易手续费也比较低,同时股票波动比较大,风险也比较大。不可以,股票基金实行T+1交易,交易日当天买入(交易时间),按照买入当天收盘时的净值计算,第二个交易日确认份额,份额确认后才能将基金卖出,一般交易日当天买入,第三个交易日才能卖出,第三个交易日随时可以卖出。股票和基金的交易方式因不同的证券市场而异。在一些证券市场上,股票和基金是可以当天随买随卖的,也就是所谓的“T+0”交易。但是,在另一些证券市场上,股票和基金是不能当天随买随卖的,需要等待一定的交易时间后才能进行买卖。在中国A股市场中,股票和基金是不能当天随买随卖的,需要进行T+1或T+2的交易。这意味着如果您今天买入了一只股票或基金,那么您需要等到明天才能卖出它。 在其他一些国家和地区,股票和基金的交易方式可能会有所不同。因此,如果您想进行股票或基金的投资,建议您了解当地的交易规则和市场情况。

7.提示词模板

此目录包含用于 LoRA 微调 LLaMa 模型的提示的模板样式。

  • Format

模板是通过一个JSON文件描述的,该文件包含以下键:

  • prompt_input: The template to use when input is not None. Uses {instruction} and {input} placeholders.
  • prompt_no_input: The template to use when input is None. Uses {instruction} placeholders.
  • description: A short description of the template, with possible use cases.
  • response_split: The text to use as separator when cutting real response from the model output.

No {response} placeholder was used, since the response is always the last element of the template and is just to be concatenated to the rest.

7.1模板案例

The default template, used unless otherwise specified, is alpaca.json

{
    "description": "Template used by Alpaca-LoRA.",
    "prompt_input": "Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.\n\n### Instruction:\n{instruction}\n\n### Input:\n{input}\n\n### Response:\n",
    "prompt_no_input": "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\n### Instruction:\n{instruction}\n\n### Response:\n",
    "response_split": "### Response:"    
}

7.2 现有模板

7.2.1 alpaca

到目前为止,用于通用LoRA微调的默认模板。

7.2.2 alpaca_legacy

原始羊驼使用的旧模板,响应字段后没有“\n”。保留以供参考和实验。

7.2.3 alpaca_short

一个修剪过的羊驼模板,它似乎也表现得很好,并保留了一些 tokens。使用默认模板创建的模型似乎也可以通过短时间查询。

8.提示构建模块

  • prompter.py

Prompter class, a template manager.

from utils.prompter import Prompter
  • 本项目参考了以下开源项目,

    • Facebook LLaMA: https://github.com/facebookresearch/llama
    • Stanford Alpaca: https://github.com/tatsu-lab/stanford_alpaca
    • alpaca-lora by @tloen: https://github.com/tloen/alpaca-lora
    • Huatuo-Llama-Med-Chinese: https://github.com/SCIR-HI/Hatuo-Llama-Med-Chinese
    • 文心一言 https://yiyan.baidu.com/welcome 本项目的logo由文心一言自动生成
    • 讯飞星火认知 https://xinghuo.xfyun.cn/desk

项目码源以及资料见文章顶部or文末

https://download.csdn.net/download/sinat_39620217/88009376

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/811744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

x86架构ubuntu22下运行WILL模拟器dophin

0. 环境 i5实体机ubuntu22 1. 安装依赖 $ sudo apt install build-essential git cmake ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libevdev-dev libusb-1.0-0-dev libxrandr-dev libxi-dev libpangocairo-1.0-0 qt6-base-private-dev libblueto…

MybatisPlusInterceptor实现sql拦截器(超详细)

1 . 导入pom <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency> 2 . 配置下MybatisPlus的yml mybatis-plus:mapper-locations:- …

ssm学生贷款管理系统java助学贷银行jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 ssm学生贷款管理系统 系统有1权限&#xff1a;管理员…

自己搭建一个KMS服务器

本文仅适合个人用户&#xff0c;商业用户使用该程序可能会面临法律风险&#xff01;&#xff01;&#xff01; 建议有经济能力的读者支持正版。 知周所众&#xff0c;Windows和Office不是免费软件。如果是新购买的品牌机&#xff0c;则应该预装有正版的Windows家庭版&#xf…

Java+bcprov库实现对称和非对称加密算法

BouncyCastle&#xff0c;即BC&#xff0c;其是一款开源的密码包&#xff0c;包含了大量的密码算法。 本篇主要演示BC库引入&#xff0c;对称加密算法AES、SM4和 非对称加密EC算法的简单实现&#xff0c;以下是实现过程。 一、将BC添加到JRE环境 前提&#xff1a;已安装JRE环…

jmeter实现webservice接口测试

其实可以用jmeter两种sampler进行webservice的测试&#xff1a; 1、SOAP/XML-RPC Request(但是在jmeter3.2以后版本中已经取消了这个取样器) 2、HTTP请求 下面分别介绍两种方式 一、首先需要使用soupUI工具抓取webservice接口的部分需要的信息。 1、新建项目 2、新建成功的…

jenkins部署springboot项目(超详细讲解)

原来写了一篇博客是如何安装jenkins的&#xff0c;今天也来介绍一下怎么简单使用吧。 首先&#xff0c;我们要明确&#xff0c;jenkins自动化部署也只是代替你去做你要做的事&#xff0c; 我们梳理一下&#xff0c;你的代码写完&#xff0c;打包&#xff0c;扔到服务器上&…

tcp三次握手python实现和结果

下载抓包工具 安装 使用1 使用2 结果 红色笔为想要发送的数据。 代码 from scapy.all import * import logginglogging.getLogger(scapy.runtime).setLevel(logging.ERROR)target_ip = 172.20.211.4 target_port = 80 data = GET / HTTP/1.0 \r\n\r\ndef start_tcp(target_…

火爆全网,Charles抓包教程-辅助接口测试(二)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 功能图标 从左到右…

mysql综合练习语法总结

mysql综合练习 用于 小白练手的主要用于以后语法忘了回来看 题目 # 1、创建数据库test01_library # 2、创建表 books&#xff0c;表结构如下&#xff1a;# 3、向books表中插入记录 # 1&#xff09;不指定字段名称&#xff0c;插入第一条记录 # 2&#xff09;指定所有字段名…

经典的数组和指针结合的OJ题

一、合并两个有序数组 leetcode链接 题目描述&#xff1a; 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递…

seata组件使用期间,获取全局事务状态

GlobalStatus枚举类展示全局事务状态 官网链接&#xff1a;http://seata.io/zh-cn/docs/user/appendix/global-transaction-status.html 获得全局事务状态 // 开启全局事务地方获取全局事务xid String xid RootContext.getXID(); // 通过全局事务xid获得GlobalStatus枚举类 …

Transformer 论文学习笔记

重新学习了一下&#xff0c;整理了一下笔记 论文&#xff1a;《Attention Is All You Need》 代码&#xff1a;http://nlp.seas.harvard.edu/annotated-transformer/ 地址&#xff1a;https://arxiv.org/abs/1706.03762v5 翻译&#xff1a;Transformer论文翻译 特点&#xff1…

【Qt】利用Tool Button控件创建下拉菜单按钮

功能描述 利用qt进行界面设计和开发&#xff0c;创建下拉按钮。 详细实现 1、在qt侧工具栏利用设计打开.ui文件 2、创建按钮 创建一个Tool Button按钮&#xff0c;并在属性窗口中的QToolButton栏中选中MenuButtonPopup属性。 3、创建action 在Action编辑器创建对应的ac…

Dual pyramid GAN for semantic image synthesis

为了解决在图像合成时候小物体容易消失&#xff0c;大物体经常作为块的拼接来生成的。本文提出DP-GAN在所有尺度下共同学习空间自适应归一化模块的条件。这样尺度信息就会被双向使用&#xff0c;他统一了不同尺度的监督。(重点看图和代码) SPADE模块解释 GAN在生成包含许多不同…

JavaScript学习 -- 对称加密算法DES

在现代的互联网时代&#xff0c;数据安全性备受关注。为了保护敏感数据的机密性&#xff0c;对称加密算法是一种常用的方法。在JavaScript中&#xff0c;DES&#xff08;Data Encryption Standard&#xff09;是一种常用的对称加密算法。本篇博客将为您展示如何在JavaScript中使…

npm i 报错项目启动不了解决方法

1.场景 在另一台电脑低版本node环境跑的react项目&#xff0c;换到另一台电脑node18环境执行npm i时候报错 2.解决方法 脚本前加上set NODE_OPTIONS--openssl-legacy-provider

使用稀疏性(微球)进行色谱图基线估计和去噪(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

okvis

论文 Keyframe-Based Visual-Inertial SLAM Using Nonlinear Optimization 摘要 由于两种感知模式的互补性&#xff0c;视觉和惯性线索的融合在机器人中变得很流行。虽然迄今为止大多数融合策略都依赖于过滤方案&#xff0c;但视觉机器人界最近转向了非线性优化方法&#x…

Kafka的零拷贝

传统的IO模型 如果要把磁盘中的某个文件发送到远程服务器需要经历以下几个步骤 (1) 从磁盘中读取文件的内容&#xff0c;然后拷贝到内核缓冲区 (2) CPU把内核缓冲区的数据赋值到用户空间的缓冲区 (3) 在用户程序中调用write方法&#xff0c;把用户缓冲区的数据拷贝到内核下面…