当前位置: 首页 > news >正文

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
  • 典型值:nonelora_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 对自注意力层中的 queryvalue 矩阵进行低秩分解,并使用 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  # 允许训练
)

参数总结

  • rlora_alpha 决定了 LoRA 的低秩分解程度及其影响范围。
  • target_modules 决定了 LoRA 应用于哪些层,通常是模型的关键参数层。
  • lora_dropoutbias 提供了额外的正则化和训练细节控制。
  • 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博客

http://www.lryc.cn/news/457746.html

相关文章:

  • 串口(UART)的FPGA设计(接收与发送模块)
  • JSON 格式化工具:快速便捷地格式化和查看 JSON 数据
  • 【星汇极客】STM32 HAL库各种模块开发之1.8TFT屏幕
  • Excel中使用SQL语句的四种方法
  • 目标检测中的损失函数
  • list库实现
  • MFC工控项目实例二十三模拟量输入设置界面
  • 排序算法总结(三)希尔排序
  • 如何迁移 Linux 服务器 第一部分 - 系统准备
  • 网络IO模型都有哪些
  • 数据结构: 数组在算法中的应用
  • js快速转换时间(时间戳转换成年月日时分秒)
  • LeetCode15.三数之和
  • SpringBoot3.3 优雅启停定时任务
  • 数据结构之二叉搜索树(key模型与key_value模型)
  • 图说几何学2300年重大错误:附着在直线z上的直线段必是z的一部分
  • 汽车网关(GW)技术分析
  • Telnet命令详解:安装、用法及应用场景解析
  • C++之LIST模拟实现(代码纯享版)
  • 华为OD机试 - 括号匹配 - 栈(Python/JS/C/C++ 2024 E卷 100分)
  • 打破欧美10年芯片垄断,杨振宁教授关门弟子,仅用三年创造奇迹
  • OpenCV视频I/O(20)视频写入类VideoWriter之用于将图像帧写入视频文件函数write()的使用
  • 音视频入门基础:FLV专题(14)——FFmpeg源码中,解码Script Tag的实现
  • 小猿口算APP脚本(协议版)
  • 【长文梳理webserver核心】核心类篇
  • [实用工具]Docker安装nextcloud实现私有云服务和onlyoffice
  • 基于STM32设计的生猪健康检测管理系统(NBIOT+OneNet)(240)
  • springboot kafka多数据源,通过配置动态加载发送者和消费者
  • 【华为】基于华为交换机的VLAN配置与不同VLAN间通信实现
  • 力扣题11~20