peft.LoraConfig()参数说明
LoraConfig()介绍
LoraConfig()
是peft
库中的一个配置类,用于设置大模型微调方法LoRA(Low-Rank Adaptation)
的相关参数。PEFT
库为各种参数高效的微调方法(如 LoRA)提供了封装,以减少微调大模型时的计算资源和存储需求。
LoraConfig()参数说明
1、task_type:
描述: 用来指定 LoRA 要适用于的任务类型。不同的任务类型会影响模型中的哪些部分应用 LoRA 以及如何配置 LoRA。根据不同的任务,LoRA 的配置方式可能会有所不同,特别是在模型的某些特定模块(如自注意力层)上。
可选值:
"CAUSAL_LM"
: 自回归语言模型(Causal Language Modeling)。适用于像 GPT 这样的自回归语言模型,这类模型通常在生成任务上使用。"SEQ_2_SEQ_LM"
: 序列到序列语言模型(Sequence-to-Sequence Language Modeling)。适用于像 T5 或 BART 这样的序列到序列模型,这类模型通常用于翻译、摘要生成等任务。"TOKEN_CLS"
: 标注任务(Token Classification)。适用于命名实体识别(NER)、词性标注等任务。"SEQ_CLS"
: 序列分类(Sequence Classification)。适用于句子分类、情感分析等任务。"QUESTION_ANSWERING"
: 问答任务(Question Answering)。适用于问答模型,如 SQuAD 等数据集中的任务。"OTHER"
: 适用于其他自定义任务,或者模型的任务类型不明确时。
2、target_modules:
- 描述: 指定应用 LoRA 的目标模型模块或层的名称。这些是模型中应用 LoRA 低秩分解的参数,通常是网络中的线性层(如
query
,value
矩阵)。 - **数据类型:**Union[List[str], str]
- 默认值:
None
- 典型值:
["query", "value"]
或类似参数,具体依赖于模型结构。
3、r(Rank Reduction Factor):
- 描述:LoRA 的低秩矩阵的秩(rank)。
r
是低秩矩阵的秩,表示将原始权重矩阵分解成两个更小的矩阵,其乘积近似原始权重矩阵。r
越小,模型的计算开销越低。 - 数据类型:
int
- 典型值:通常在 4 到 64 之间。
4、lora_alpha:
- 描述:缩放因子,用于缩放 LoRA 的输出。通常在 LoRA 层的输出会被
lora_alpha / r
缩放,用来平衡学习效率和模型收敛速度。 - 数据类型:
int
- 典型值:
r
的 2 到 32 倍之间。
5、lora_dropout:
- 描述:应用于 LoRA 层的 dropout 概率。这个参数用来防止过拟合,特别是在小数据集上训练时,使用 dropout 可以提高模型的泛化能力。
- 数据类型:
float
- 典型值:0.1 或者更低。
6、bias:
- **描述:**用于控制是否训练模型的偏置项(bias)。可以设置为
none
(不训练 bias)、all
(训练所有 bias)、或者lora_only
(仅对 LoRA 层的偏置项进行训练)。 - 数据类型:
str
- 典型值:
none
或lora_only
。
7、modules_to_save :
- 描述: 指定除了 LoRA 层之外,还需要保存哪些额外的模块。这通常用于微调时只保存 LoRA 层的权重,同时保存某些特殊的模块(例如全连接层)。
- 数据类型:
Optional[List[str]]
- 默认值:
None
- 典型值:
["classifier", "pooler"]
或类似参数。
8、init_lora_weights :
- 描述: 控制 LoRA 层的权重是否在初始化时进行随机初始化。如果设置为
True
,则会使用标准初始化方法;否则,将不进行初始化。 - 数据类型:
bool
- 默认值:
True
9、inference_mode :
- 描述: 如果设置为
True
,则模型只在推理阶段使用 LoRA。此模式下,LoRA 的权重会被冻结,不会进行训练。适用于将微调后的模型用于推理场景。 - 数据类型:
bool
- 默认值:
False
参数组合示例
下面是一个配置 LoRA 的例子,使用 LoRA 对自注意力层中的 query
和 value
矩阵进行低秩分解,并使用 dropout:
from peft import LoraConfig, TaskTypelora_config = LoraConfig(task_type=TaskType.CAUSAL_LM, # 微调模型为自回归模型r=16, # LoRA 低秩分解的秩lora_alpha=32, # LoRA 缩放因子target_modules=["query", "value"], # 目标模块lora_dropout=0.1, # Dropout 概率bias="none", # 不训练 biasmodules_to_save=["classifier"], # 额外保存分类器模块init_lora_weights=True, # 初始化 LoRA 层权重inference_mode=False # 允许训练
)
参数总结
- r 和 lora_alpha 决定了 LoRA 的低秩分解程度及其影响范围。
- target_modules 决定了 LoRA 应用于哪些层,通常是模型的关键参数层。
- lora_dropout 和 bias 提供了额外的正则化和训练细节控制。
- modules_to_save 则可以灵活地控制哪些部分需要保存,确保推理时模型可以正确加载。
注意:
1、常用的参数就task_type、target_modules、inference_mode、r、lora_alpha、lora_dropout这些
2、按任务需求和算力配置r大小,r不是越大越好
参考文献:
1、Lora微调训练参数解读_lora微调参数详解-CSDN博客
2、PEFT LoraConfig参数详解-CSDN博客
相关文章:
peft.LoraConfig()参数说明
LoraConfig()介绍 LoraConfig()是peft库中的一个配置类,用于设置大模型微调方法LoRA(Low-Rank Adaptation)的相关参数。PEFT 库为各种参数高效的微调方法(如 LoRA)提供了封装,以减少微调大模型时的计算资源…...
串口(UART)的FPGA设计(接收与发送模块)
目录 串口基础知识 一、什么是串口?有哪些特点? 二、常见的串口通信协议有哪些?他们有什么区别?...

JSON 格式化工具:快速便捷地格式化和查看 JSON 数据
JSON 格式化工具:快速便捷地格式化和查看 JSON 数据 为什么需要 JSON 格式化工具? 在日常开发和调试中,JSON 是非常常见的数据交换格式。无论是前端与后端的接口调用,还是数据存储和处理,JSON 格式都扮演着重要角色。…...

【星汇极客】STM32 HAL库各种模块开发之1.8TFT屏幕
前言 本人是一名嵌入式学习者,在大学期间也参加了不少的竞赛并获奖,包括:江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三等。 暑假的时候参加了太多的比赛&#…...

Excel中使用SQL语句的四种方法
总结在 Excel 中使用 SQL 语句的四种方法,各种方法都有各自的适用场景,可以选择自己熟悉的或喜欢方式。本文以在 Excel 中操作 MS SQL 数据库的数据为例进行说明。MS SQL 的数据如下,使用微软 SQLExpress 版本。 方法 1: Excel 现…...

目标检测中的损失函数
损失函数是用来衡量模型与数据的匹配程度的,也是模型权重更新的基础。计算损失产生模型权重的梯度,随后通过反向传播算法,模型权重得以更新进而更好地适应数据。一般情况下,目标损失函数包含两部分损失,一个是目标框分…...
list库实现
list库实现的要点: 构建list类时,需要同时构建struct Node来存储节点信息,list类中只存储哨兵位节点信息,迭代器类需要template<T,Ptr,Ref>来构建const和非const迭代器,迭代器中也是存储节点信息。反向迭代器也…...

MFC工控项目实例二十三模拟量输入设置界面
承接专栏《MFC工控项目实例二十二主界面计数背景颜色改变》 1、在SenSet.h文件中添加代码 #include "BtnST.h" #include "ShadeButtonST.h"/ // SenSet dialogclass SenSet : public CDialog { // Construction public:SenSet(CWnd* pParent NULL); //…...
排序算法总结(三)希尔排序
访问www.tomcoding.com网站,学习Oracle内部数据结构,详细文档说明,下载Oracle的exp/imp,DUL,logminer,ASM工具的源代码,学习高技术含量的内容。 如果你在网上搜一下希尔排序,都会告…...
如何迁移 Linux 服务器 第一部分 - 系统准备
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 在许多情况下,您可能需要将数据和操作需求从一个服务器迁移到另一个服务器。您可能需要在新的数据中心实施解决方案&a…...

网络IO模型都有哪些
“网络IO模型有BIO、NIO、AIO ” “他们分别代表什么,有什么区别吗? BIO:同步阻塞IO。 NIO:同步非阻塞IO。 AIO:异步非阻塞IO。 “BIO为什么是同步阻塞IO,他阻塞的是谁跟谁之间的关联?”。 首先…...
数据结构: 数组在算法中的应用
数组是计算机科学中的一种基础数据结构,它在算法中有着广泛的应用,其关键要素是索引与索引对应的值。 请注意,这些代码示例需要适当的辅助函数(如 swap )和主函数来运行。此外,一些算法(如KMP算…...
js快速转换时间(时间戳转换成年月日时分秒)
1:js转换 1728270833000 转换为 2024-10-07 11:13:53 var date new Date(1728270833000); // 参数需要毫秒数,所以这里将秒数乘于 1000 Y date.getFullYear() -; M (date.getMonth()1 < 10 ? 0(date.getMonth()1) : date.getMonth()1) -; D…...

LeetCode15.三数之和
题目链接:15. 三数之和 - 力扣(LeetCode) 1.常规解法(会超时) 由于这道题需要排除相同的三元组,则可以先将目标数组从小到大排序,再遍历数组找到每个符合条件的三元组,若结果中不包…...

SpringBoot3.3 优雅启停定时任务
定时任务是非常常见的功能,在一个复杂的应用程序中,如何优雅地管理这些定时任务的启动与停止尤为重要。 Spring Boot 提供了强大的任务调度支持,通过@Scheduled注解可以轻松地创建定时任务,并且可以通过配置来灵活地管理这些任务的执行环境。在本文中,我们将深入探讨如何…...

数据结构之二叉搜索树(key模型与key_value模型)
二叉搜索树(key模型与key_value模型) 1. ⼆叉搜索树的概念2. ⼆叉搜索树的性能分析3. ⼆叉搜索树的插⼊4. ⼆叉搜索树的查找5. ⼆叉搜索树的删除6. ⼆叉搜索树的实现代码7. ⼆叉搜索树key和key/value使⽤场景7.1 key搜索场景:7.2 key/value搜…...
图说几何学2300年重大错误:附着在直线z上的直线段必是z的一部分
黄小宁 用泡沫塑料和油漆制成的铅球与真正的铅球,两者有不同的内部形状。同样,数学有长度相同但内部形状不同的伪≌直线段。 几何学有史2300年来一直认定附着在直线z上的直线段一定是z的一部分。其实这是2300年肉眼直观错觉——百年病态集论的症结。 …...
汽车网关(GW)技术分析
一、引言 在现代汽车电子系统中,汽车网关(Gateway,简称 GW)扮演着至关重要的角色。随着汽车电子技术的不断发展,汽车内部的电子控制单元(Electronic Control Unit,简称 ECU)数量不断…...

Telnet命令详解:安装、用法及应用场景解析
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…...
C++之LIST模拟实现(代码纯享版)
目录 文章目录 前言 一、代码 总结 前言 本文主要展示了模拟List的代码实现 一、代码 #pragma once #include<iostream> #include<assert.h> using namespace std; namespace zlh {template<class T>struct list_node{T _data;list_node<T>* _next;l…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...

【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录
#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...