大模型微调实验报告*

实验目标

梳理大模型微调方法,评估各种基座和微调方法的实验效果。

基础模型

\1.Llama

\2.Qwen

\3.Chatglm4

\4.

微调策略

LoRA系列

低秩适配(LoRA)的核心思想是冻结原始参数,通过低秩分解引入可训练参数。

LoRA假设预训练模型的参数矩阵的更新可以表示为一个低秩矩阵。具体来说,对于一个预训练好的权重矩阵W(d*e),LoRA引入两个低秩矩阵A(d*r)和B(r*e),其中r是秩,远小于d和e向量为度。在微调过程中,只需优化A和B,而W保持不变。更新后的权重矩阵为:

W0=W+BA

img

伪代码示例:

importtorch
importtorch.nnasnnclassLoRALayer(nn.Module):
def__init__(self,in_dim,out_dim,rank):
super().__init__()
self.A=nn.Parameter(torch.randn(in_dim,rank))
self.B=nn.Parameter(torch.zeros(rank,out_dim))
self.rank=rank**#秩的大小**
defforward(self,x):
returnx@(self.A@self.B)**#低秩矩阵乘积

关键技术演进

img

AdaLoRA

  • 核心思想:AdaLoRA旨在动态调整各层的秩分配
  • 实现方式:AdaLoRA通过一些指标(例如,梯度范数)来评估不同层的重要性,并根据重要性动态地调整LoRA的秩。更重要的层分配更高的秩,从而获得更好的性能。

QLoRA

  • 核心思想:QLoRA将4-bit量化与LoRA相结合,以进一步降低显存占用。
  • 实现方式:QLoRA首先将预训练模型的权重量化为4-bit精度,然后在此基础上应用LoRA。由于4-bit量化可以显著降低显存占用,因此QLoRA可以在有限的GPU资源上微调更大的模型。
  • 显存节省:QLoRA可以节省高达70%的显存。

Delta-LoRA

  • 核心思想:Delta-LoRA引入参数更新量的动量机制
  • 实现方式:Delta-LoRA在更新LoRA参数时,考虑之前的更新方向和幅度,从而更稳定地进行微调。
提示微调技术

提示微调(Prompt-Tuning)是一种通过设计合适的提示(Prompt)来引导预训练模型完成下游任务的技术。与全参数微调和LoRA不同,提示微调通常不直接修改预训练模型的参数(注意不是完全不修改参数),而是通过优化提示相关的向量来调整模型的行为。

核心思想

  • 人工设计到可学习:提示工程(Prompt-Engineering)经历了从人工设计提示到可学习提示的演进过程。
  • 利用预训练知识:通过优化提示,引导模型利用预训练知识,从而减少对标注数据的依赖。

位置选择策略

img

Prefix-Tuning

img

  • 核心思想:只在每层开头插入可训练的提示向量。在Prefix层加了MLP结构,然后切分为key和value矩阵,然后和每一层的key-value矩阵拼接。训练完成后,只保留Prefix的参数。

  • 数学形式
    h l = T r a n s f o r m e r ( [ P r e f i x l ; x l ] ) h^l = Transformer([Prefix^l;x^l]) hl=Transformer([Prefixl;xl])

  • 参数量:每层新增参数d*r(d为维度,r为前缀长度)

  • 优点:Prefix-Tuning可以有效地影响模型的每一层,从而更好地调整模型的行为。

  • 缺点:Prefix-Tuning需要插入大量的提示向量,可能会增加计算成本。

P-Tuning v2

  • 核心思想分层插入位置可学习
  • 实现方式:P-Tuning v2首先将提示向量插入到不同的层中,然后通过训练来确定每个提示向量的最佳位置。
  • 数学形式
  • 优点:P-Tuningv2可以更灵活地调整提示向量的位置,从而更好地适应不同的任务。

Prompt-Tuning(蓝色):

  • 核心思想:仅在输入层添加可训练提示词。
  • 参数量:仅需(为提示词数量)
  • 数学形式
  • 优点:Prompt-Tuning的实现简单,计算成本低。
  • 缺点:Prompt-Tuning的效果可能不如Prefix-Tuning和P-Tuningv2。

实验设计

数据集

数据来源与规模(如领域专用语料、人工标注数据)

来自于CHIP2023-PromptCBLUE-参数高效微调赛道数据集,原始数据集有15个任务,包括分类、ner、总结、生成等基本任务,本实验选取其中三类任务,描述如下:

任务类型数据集数量
trainclsIMCS-V2-DAC1536
trainnerCMeEE-V21492
trainreport_generationIMCS-V2-MRG872
validclsIMCS-V2-DAC547
validnerCMeEE-V2496
validreport_generationIMCS-V2-MRG269

数据预处理(清洗、格式转换)

格式转换为json,字段包括instruction、input、output、history,样例如下:

{"instruction": "根据对话内容,判断最后一句话的意图类别是:\n问诊对话历史:\n患者:就是早晨起床干咳的那种,咳一阵\n医生:化验过肺炎支原体感染吗\n患者:不是支原体感染,化验过\n医生:肺炎治疗后,复查过吗\n患者:挂完水医生建议不用继续挂水,吃药,吃了一个星期的金振口服液,匹多莫得,盐酸西替利滴剂还有睡前咀嚼的\n患者:一个星期吃这么多,后来又去医院复查,医生说就吃匹多莫得和睡前咀嚼的就可以了,\n患者:但是现在白天也咳嗽了\n医生:目前看医生给用了抗气道过敏药物\n医生:这个对于改善目前气道高反应状态,还是很对症。\n医生:目前考虑按疗程治疗后,基本的炎症,都已经消下去了\n医生:目前咳嗽,还主要是一个气道高反应,过敏状态\n患者:那怎么办呢\n患者:过敏症状吃什么呢?\n患者:滴剂要不要继续吃\n医生:可以做做雾化\n选择:关于病因的回答,关于注意事项的提问,关于用药建议的提问,关于用药建议的解答,关于症状的回答,关于个人基本信息的回答,关于已有检查和治疗的回答,关于病因的询问,关于就医建议的解答,关于注意事项的解答,给出诊断,关于已有检查和治疗的提问,关于症状的询问,关于就医建议的提问,关于个人基本信息的询问\\","input":"", "target": "关于用药建议的解答", "history": ""}

环境配置

1.硬件配置(GPU型号、显存占用)

  1. linux ubuntu
  2. nvidia v100 32G

2.软件配置、环境依赖

1. peft==0.14.0
2. transformers==4.49.0
3. trl==0.15.2
4. torch==2.4.0
5. bitsandbytes==0.45.3

*基本参数*

优化器与超参数(学习率、batch size、epoch数)

超参数描述备注
num_train_epochs10
lora_target‘q_proj,k_proj,v_proj,out_proj,fc1,fc2’lora系列
learning_rate1e-3
use_ntklinear
padding_sideleft
torch_dtypefloat16
quantizationbnb
max_input_token2048
use_firefly_lossTrue
gradient_accumulation_steps4
optimadamw_torch
lr_scheduler_typecosine
num_virtual_tokens20prompt_tuning
prompt_encoder_hidden_size128prompt_tuning

实验结果与分析

性能对比

基座微调方法rouge-1rouge-2rouge-l
Qwenqlora71.75859.34111.761
Qwenlora73.52660.51911.897
Qwenprefix71.32858.59417.857
Qwenprompt59.11843.10910.048
Qwenptuning71.12257.70911.529

Qwen上lora最优

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLM - R1 强化学习 DRPO 策略优化 DAPO 与 Dr. GRPO 算法 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/146533892 在强化学习算法中,DAPO (Decoupled Clip and Dynamic Sampling Policy Optimization),通过解耦裁剪和动态采样策…

美摄科技智能汽车视频延迟摄影解决方案,开启智能出行新视界

在智能汽车时代,车载影像技术正以前所未有的速度发展,成为提升驾乘体验和满足用户多样化需求的关键因素。美摄科技凭借其卓越的技术实力和创新精神,推出了智能汽车视频延迟摄影解决方案,为智能汽车行业带来了一场视觉盛宴。 一、…

[250325] Claude AI 现已支持网络搜索功能!| ReactOS 0.4.15 发布!

目录 Claude AI 现已支持网络搜索功能!ReactOS 0.4.15 发布! Claude AI 现已支持网络搜索功能! 近日,Anthropic 公司宣布,其 AI 助手 Claude 现在可以进行网络搜索,为用户提供更及时、更相关的回复。这项新…

代码规范之Variable Names变量名

代码规范之Variable Names变量名 golang中 官方文档:https://go.dev/wiki/CodeReviewComments#variable-names Variable names in Go should be short rather than long. This is especially true for local variables with limited scope. Prefer c to lineCoun…

Mybatis_plus

前言 Mybatis_plus 是在 mybatis 的基础上进行了增强,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文章只做简单的使用介绍,更加详细的内容大家可以参考官网。 下面是mybatis_plus 官网地址: mybatis_plu…

深圳问顶安全科技有限公司asktopsec是做什么的?

深圳问顶安全科技有限公司,是一家专业的AI与应用安全公司。 全球领先的AI、Android、IOS应用安全解决方案提供商,官网:https://asktopsec.com 问顶安全主要为企业提供AI和应用安全服务 移动应用安全检测、移动应用安全加固、AI智能体安全、AI…

鸿蒙OS 5 架构设计探秘:从分层设计到多端部署

文章目录 鸿蒙OS架构设计探秘:从分层设计到多端部署一、鸿蒙的分层架构设计二、模块化设计的精髓三、智慧分发设计:资源的动态调度四、一次开发,多端部署的实践总结与思考 鸿蒙OS架构设计探秘:从分层设计到多端部署 最近两年来&a…

idea 没有 add framework support(添加框架支持)选项

在 IntelliJ IDEA 2023 中,若需通过设置手动添加 “添加框架支持” 菜单项,可按照以下步骤操作: 手动添加 “添加框架支持” 菜单项 打开设置 点击顶部菜单栏的 File(文件) -> Settings(设置&#xff09…

计算机网络--传输层(2)

传输层核心机制深度解析 一、可靠传输实现机制 1. 校验和机制 技术原理: 使用16位二进制反码求和算法,计算范围包括TCP伪首部(12字节)、TCP首部(20字节)和数据部分接收端重新计算校验和,若与…

再探带权并查集

典型例题 Acwing 权值 故名思义,在带权并查集中,我们需要让每个节点携带一个**“权值”**。 那么这个权值应该是什么呢?其实答案就在并查集当中。 由于在并查集当中我们可以在 O ( 1 ) O(1) O(1) 时间内找到一个节点的根节点,那…

Vala编成语言教程-构造函数和析构函数

构造函数 Vala支持两种略有不同的构造方案:我们将重点讨论Java/C#风格的构造方案,另一种是GObject风格的构造方案。 Vala不支持构造函数重载的原因与方法重载不被允许的原因相同,这意味着一个类不能有多个同名构造函数。但这并不构成问题&…

本地部署Stable Diffusion生成爆火的AI图片

直接上代码 Mapping("/send") Post public Object send(Body String promptBody) { JSONObject postSend new JSONObject(); System.out.println(promptBody); JSONObject body JSONObject.parseObject(promptBody); List<S…

python爬虫WASM

WASM 一.WASM简介 1.1 WASM定义 ​ WebAssembly(简称wasm)是一个虚拟指令集体系架构(virtual ISA),整体架构包括核心的ISA定义、二进制编码、程序语义的定义与执行,以及面向不同的嵌入环境(如Web)的应用编程接口(WebAssembly API)。是一种运行在现代网络浏览器中的…

Docker镜像迁移方案

Docker镜像迁移方案 文章目录 Docker镜像迁移方案一&#xff1a;背景二&#xff1a;操作方式三&#xff1a;异常原因参考&#xff1a; 一&#xff1a;背景 比如机器上已经有先有的容器&#xff0c;但是docker pull的时候是失败的二&#xff1a;操作方式 1、停止正在运行的容器…

关于跨域问题(本地前端访问服务器端接口跨域出错)

问题来源&#xff1a; 当服务器封装了接口但是本地电脑端前端访问出现跨域问题。 解决方案&#xff1b; 1、使用ipconfig 查看本地电脑的ip地址 ipconfig 2、在后端接口处配置如下代码 allow_origins["http://本地ip地址:3001", # 局域网内其他设备访问的本地…

边缘计算 vs. 云计算,谁才是工业物联网的未来?

前言 在物联网&#xff08;IoT&#xff09;飞速发展的今天&#xff0c;边缘计算正在彻底改变数据的处理、存储和分析方式。传统的IoT设备数据通常需要发送到云端进行处理&#xff0c;但随着设备数量的激增&#xff0c;这种模式在延迟、带宽和安全性方面暴露出诸多局限。边缘计…

dell 台式机 电脑 纽扣电池 如何取下?

dell 台式机 电脑 纽扣电池 如何取下&#xff1f; 戴尔-optiplex-3060-塔式机-服务手册

NFC 智能门锁全栈解决方案:移动端、服务器、Web 管理平台

目录 一、系统整体架构 二、移动端 APP 开发 2.1 开发环境与基础准备 2.2 主要功能模块 2.3 示例代码&#xff08;Android/Kotlin 简化示例&#xff09; 三、后台服务开发 3.1 环境准备 3.2 主要功能 3.3 示例代码&#xff08;Node.js Express 简化示例&#xff09; …

DDR4、DDR5、固态硬盘(SSD)和机械硬盘(HDD)在连续读/写、随机读/写性能的对比分析

以下是关于DDR4、DDR5、固态硬盘&#xff08;SSD&#xff09;和机械硬盘&#xff08;HDD&#xff09;在连续读/写、随机读/写性能的对比分析&#xff0c;结合技术特性与应用场景的总结&#xff1a; 一、性能对比表格 存储类型连续读&#xff08;MB/s&#xff09;连续写&#x…

【AI】MAC版本本地Stable Diffusion web ui安装

文章目录 前言环境依赖homebrewpython3下载stable-diffusion-webui webui模型准备模型网站 中文页面设置提示词转汉语转英文controlnet安装controlnet模型下载 结尾 前言 目前&#xff0c;市面上已经出现了很多用Ai 绘图制作的作品&#xff0c;用于自媒体或者商业等。例如表情…