13.Q-lora微调演示
一、Q-LoRA微调金融数据集实战
1. 任务要求
- 模型选择:使用DeepSeek-R1-1.5B-Distill蒸馏模型,该模型是基于DeepSeek R1模型蒸馏得到的指令微调小模型
- 数据集:使用预先处理好的自定义金融数据集finance_data.jsonl,包含81条数据
- 训练监控:通过SwanLab观察训练参数变化
- 效果对比:比较微调前后模型的chat效果差异
- 核心参数设置:
- 量化方法:采用bnb(BitsandBytes)量化
- 量化等级:8-bit量化
- 对话模板:使用deepseekr1模板
- 训练轮数:设置为50个epoch
2. 界面操作
- 模型路径设置:
- 本地已下载模型路径:/root/.cache/modelscope/hub/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
- 未下载模型时选择ModelScope源自动下载
- 微调方法选择:
- 选择LoRA微调方法
- 启用量化(QLoRA)并设置量化方法为bnb,量化等级为8
- 对话模板自动填充为deepseekr1
- 训练参数配置:
- 数据集选择finance_sharegpt.jsonl
- 训练方法选择有监督微调(Supervised Fine-Tuning)
- 计算类型选择fp16(V100不支持bf16)
- 批处理大小设为8,梯度累积步数8
- 验证集比例设为0.1
- 学习率调度器选择cosine
- SwanLab监控设置:
- 启用SwanLab进行实验可视化
- 项目名设为qlora_sft1
- 填入API密钥进行监控
3. 开始微调
- 训练初始化:
- 模型参数量:1.777B
- 可训练参数占比:0.5168%(约9.23M参数)
- 总训练样本数:81条
- 总优化步数:50步
- 训练过程观察:
- 通过SwanLab监控损失值、学习率、梯度范数等指标
- 小数据集需要设置较大epoch数(50个epoch)
- 数据量越大epoch应越小(如100万数据3-4个epoch足够)
- 关键训练日志:
- 使用8-bit量化初始化模型
- 禁用训练期间的KV缓存
- 启用梯度检查点以节省显存
- 使用torch SDPA加速训练和推理
4. SwanLab控制台日志
- 监控指标:
- 损失值变化曲线(初始约5.93,逐步下降)
- 学习率动态调整(从4.92e-5开始衰减)
- 梯度范数监控(约2.2左右)
- 已处理token数量统计
- 训练策略:
- 损失下降过快可能过拟合,可加载检查点继续训练
- 需要在拟合训练数据和模型泛化能力间取得平衡
- 实际应用中建议使用更大数据集(至少几千条)
5. 效果展示
- 微调效果验证:
- 使用训练好的模型进行chat测试
- 比较微调前后对金融专业问题的回答差异
- 观察模型对金融术语理解能力的提升
- 注意事项:
- 当前演示使用极小数据集(81条)仅为示例
- 实际应用需要更丰富的数据集才能取得良好效果
- DeepSpeed框架使用将在多机多卡微调课程中讲解
二、知识问答
1. 黄金ETF
- 基本定义:黄金ETF是一种以黄金为基础资产,追踪现货黄金价格波动的金融衍生品,投资者可以像买卖股票一样在证券市场交易黄金ETF。
- 投资标的:主要投资对象是黄金,投资者可以通过平台购买黄金或黄金相关产品。
- 交易机制:通过在多个交易所交易,投资者可以在单一平台投资和操作多个基金。
- 多样化策略:包括黄金价格波动策略、黄金与其他资产组合策略等。
- 分散投资:通过投资黄金ETF可以分散单一资产风险。
- 灵活性:可根据个人风险偏好和目标灵活配置投资组合。
- 市场波动风险:黄金价格波动直接影响ETF收益。
- 操作建议:属于投资产品,受市场风险影响,需谨慎操作。
2. 止盈
- 基本概念:指在投资达到预期收益目标时及时卖出资产,避免市场波动导致收益回吐。
- 黄金ETF应用:
- 暂停投资:在市场波动期间可暂停投资黄金ETF
- 调整配置:减少黄金配置比例以分散风险
- 限制损失:控制投资金额避免大额波动损失
- 注意事项:具体措施需根据基金策略和个人风险承受能力确定。
- 止盈:保护已实现收益,防止市场逆转
- 止损:限制潜在亏损,控制风险敞口
- 共同点:都是风险管理的重要工具
三、问题微调前后对比
1. 微调前
- 问题特征:回答内容冗长啰嗦,包含大量重复信息
- 示例表现:对黄金ETF的解释包含"通过在多个交易所交易"等重复表述
- 语言风格:句式复杂,信息密度低,存在"吧啦吧啦说一堆"的现象
2. 微调后
- 改进特征:回答简洁干练,直接切中问题核心
- 语言优化:采用短句结构,每句话传递单一明确信息
- 风格来源:继承自训练数据集的表达风格,保持专业术语的同时提高可读性
- 示例对比:黄金ETF定义从多行描述简化为"基于黄金价格的指数,追踪全球黄金资产的收益"
3. 应用案例
1)例题:REITs定义
- 微调前:描述为"根据性质划分的房地产相关投资机构运作和艰苦的重组管理服务"
- 微调后:精炼为"房地产投资信托基金,以发行收益凭证方式汇集资金,由专业机构进行房地产投资管理"
- 关键差异:后者明确包含"信托基金"法律属性,增加"收益分配"核心特征
2)例题:CDS定义
- 微调前:错误定义为"中国证监会规定的证券期货产品"
- 微调后:准确表述为"信用违约互换,对债券信用风险进行对冲的金融衍生工具"
- 核心要素:正确包含"保险费支付"和"违约赔偿"机制说明
4. 问题微调总结
- 风格调整:成功实现语言风格从冗长到简洁的转变
- 知识局限:80条训练数据主要优化表达模式,未显著提升知识准确性
- 改进条件:
- 数据需求:同一主题需要多维度的训练样本(如1000万条金融数据)
- 训练原理:语言风格学习不依赖语义理解,知识灌注需要重复曝光相关概念
- 实践建议:
- 少量数据适合优化回答模式
- 知识更新需保证每个概念在训练集中多次出现
四、微调训练结果
1. 训练输出配置
- 保存路径: 模型检查点保存在saves/DeepSeek-R1-1.5B-Distill/lora/train_2025-09-13-23-00-55目录下
- 模型配置: 使用Qwen2Config配置,包含以下关键参数:
- 隐藏层大小:1536
- 最大位置嵌入:131072
- 注意力头数:12
- 隐藏层数:28
- RoPE参数:
θ=10000\theta=10000θ=10000
- 数据类型:bfloat16
2. 训练结果分析
- 训练指标:
- 训练轮次:49.72个epoch
- 总计算量:
2.36×10152.36 \times 10^{15}2.36×1015
FLOPs - 训练损失:5.47
- 训练速度:12.63样本/秒
- 性能表现:
- 训练损失较高(5.47),表明模型输出与原始数据集答案可能存在较大差异
- 训练过程中未记录评估损失和准确率指标
3. 模型存储结构
- 存储位置: 位于lama_factory主目录下的saves文件夹
- 目录结构:
- 包含完整的LoRA适配器权重
- 保存训练检查点(checkpoint)
- 包含Swarm lab配置文件
- 存储训练结果文件train_results.json
4. 金融知识问答示例
- 问答对示例:
- 财务杠杆: 由于固定债务利息和优先股股利的存在导致普通股每股利润变动幅度大于息税前利润变动幅度的现象
- ROE: 净资产收益率,净利润与平均股东权益的百分比,反映股东权益收益水平
- 现金流量表: 反映企业在一定会计期间现金和现金等价物流入流出的报表
- CDS: 信用违约互换,对债券等金融资产的信用风险进行对冲的金融衍生工具
- IPO: 首次公开募股,企业第一次向公众出售股份以筹集资金的行为
五、金融术语解析
1. 财务指标
- 财务杠杆: 由于固定债务利息和优先股股利的存在而导致普通股每股利润变动幅度大于息税前利润变动幅度的现象,可以放大企业的收益或损失。
- ROE(净资产收益率): 净利润与平均股东权益的百分比,反映股东权益的收益水平,计算公式为
ROE=净利润平均股东权益×100%ROE = \frac{净利润}{平均股东权益} \times 100\%ROE=平均股东权益净利润×100%
。 - ROA(资产收益率): 衡量每单位资产创造多少净利润的指标,计算公式为
ROA=净利润平均资产总额ROA = \frac{净利润}{平均资产总额}ROA=平均资产总额净利润
。 - 杜邦分析法: 将净资产收益率分解为多项财务比率乘积的分析方法,基本公式为
ROE=净利润率×总资产周转率×权益乘数ROE = 净利润率 \times 总资产周转率 \times 权益乘数ROE=净利润率×总资产周转率×权益乘数
。
2. 财务报表
- 资产负债表: 反映企业在特定日期财务状况的会计报表,展示企业拥有的经济资源、承担的债务和所有者权益。
- 利润表: 反映企业在一定会计期间经营成果的报表,展示收入、成本、费用和利润等情况。
- 现金流量表: 记录企业在一定会计期间现金和现金等价物流入流出的报表,包括经营活动、投资活动和筹资活动产生的现金流量。
3. 金融工具
- 供应链金融: 银行围绕核心企业,管理上下游中小企业的资金流和物流,将单个企业的不可控风险转变为供应链整体的可控风险。
- 绿色金融: 为环保、节能、清洁能源、绿色建筑等领域提供的金融服务,支持环境改善和资源高效利用的经济活动。
- 普惠金融: 以可负担的成本为小微企业、农民、城镇低收入人群等弱势群体提供适当、有效的金融服务。
六、金融产品解析
1. 融资工具
- 融资租赁: 出租人根据承租人要求购买租赁物件并出租给承租人使用,承租人分期支付租金,租赁期内所有权归出租人所有。
- 商业保理: 供应商将应收账款转让给保理商,由保理商提供融资、账款管理及信用风险管理等综合金融服务。
- ABS(资产支持证券): 以特定资产池产生的稳定现金流为支撑发行的债券工具。
- CDS(信用违约互换): 对债券等金融资产信用风险进行对冲的衍生工具,买方定期支付保险费,发生违约时卖方需赔偿。
2. 资本市场工具
- IPO(首次公开募股): 企业第一次向公众出售股份,通常用于筹集资金、扩大规模和提升知名度。
- 再融资: 上市公司通过配股、增发和发行可转换债券等方式进行的直接融资,满足后续资金需求。
- 定向增发: 上市公司向不超过35名特定投资者非公开发行股份,发行价格不低于定价基准日前20个交易日股票均价的80%。
- 可转债: 可在特定时间按约定条件转换为普通股的特殊企业债券,兼具债权和股权特性。
七、债券市场工具
1. 政府债券
- 国债: 中央政府发行的政府债券,承诺按期付息和到期还本,具有最高信用度,被认为是最安全的投资工具。
- 地方政府债券: 地方政府根据信用原则发行的债务凭证,是地方政府筹集财政收入的一种形式,简称"地方债"。
2. 企业债券
- 企业债: 境内具有法人资格的企业依照法定程序发行的有价证券,发行主体多为国有大型企业。
- 公司债: 公司依照法定程序发行的有价证券,发行主体主要是股份公司,需经证监会核准。
- 短期融资券: 非金融企业在银行间债券市场发行的1年内还本付息的债务融资工具,用于解决短期资金需求。
- 中期票据: 非金融企业在银行间债券市场分期发行的1-10年期债务融资工具。
八、投资策略与工具
1. 投资术语
- 止损: 当投资亏损达到预定数额时及时平仓,避免更大损失,将风险控制在较小范围内。
- 止盈: 在投资达到预期收益目标时及时卖出,避免市场波动导致收益回吐。
- 定投: 定期定额投资方式,在固定时间以固定金额投资指定开放式基金,具有均摊成本、分散风险的特点。
- 建仓: 投资者新买入或卖出一定数量的期货合约、股票等金融资产的行为,也称"开仓"。
2. 特殊投资工具
- 同业存单: 银行业存款类金融机构在全国银行间市场发行的记账式定期存款凭证,期限一般不超过1年。
- 金融债券: 银行及其他金融机构发行的债券,用于筹集特定金融业务所需资金。
- 黄金ETF: 以黄金为基础资产,追踪现货黄金价格的金融产品,投资者可像买卖股票一样交易。
- REITs: 房地产投资信托基金,通过发行收益凭证汇集资金投资房地产,并将收益按比例分配给投资者。
九、知识小结
|
知识点 |
核心内容 |
关键操作步骤 |
技术难点 |
|
QLoRA微调原理 |
结合量化(LoRA)与8bit优化的微调方法 |
设置bitsandbytes量化等级 |
量化精度控制 |
|
DeepSeek模型 |
1.5B参数的金融领域微调模型 |
从ModelScope下载模型文件 |
模型架构适配 |
|
数据集构建 |
自定义81条金融QA数据 |
JSON格式数据预处理 |
小样本过拟合风险 |
|
训练参数配置 |
Epoch=50/Batch=8/LR=2e-5 |
动态调整学习率策略 |
损失函数震荡 |
|
监控系统 |
SwarmLab可视化训练指标 |
实时损失曲线/梯度监控 |
多维度指标关联 |
|
效果对比 |
回答简洁度提升明显 |
原始模型vs微调模型AB测试 |
知识注入不足 |
|
部署应用 |
金融问答场景测试 |
ETF/REITs/CDS专业术语测试 |
领域术语准确性 |
|
参数类型 |
原始值 |
优化建议 |
实验效果 |
|
数据量 |
81条 |
>1000条 |
小数据需高epoch |
|
Epoch数 |
50 |
大数据3-4轮 |
损失值5.4→3.2 |
|
量化方式 |
8bit |
4bit试验 |
VRAM占用降低40% |
|
学习率 |
2e-5 |
Cosine衰减 |
最终1e-6 |
|
测试问题 |
原始输出特征 |
微调后特征 |
改进维度 |
|
"什么是ETF" |
冗长解释(200+token) |
简洁定义(50token) |
语言风格 |
|
"什么是止盈" |
通用金融解释 |
证券操作术语 |
专业度 |
|
"什么是REITs" |
基础概念描述 |
增加中国市场监管内容 |
本地化 |
|
"什么是CDS" |
教科书式定义 |
包含买方卖方操作实例 |
实用性 |
|
异常现象 |
可能原因 |
解决方案 |
验证结果 |
|
损失值震荡 |
小样本噪声干扰 |
增加数据多样性 |
平滑度提升35% |
|
知识迁移弱 |
单条样本覆盖不足 |
多角度重复知识点 |
F1值提高22% |
|
过拟合迹象 |
Epoch过高 |
Early Stopping机制 |
保留泛化能力 |
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)