【NLP高频面题 - 高效微调篇】LoRA微调时有哪些可配置的参数?

devtools/2025/1/19 12:56:53/

【NLP高频面题 - 高效微调篇】LoRA微调时有哪些可配置的参数?

重要性:★★★

LoRA 微调示例:

from peft import LoraConfig, get_peft_model# LoRA 配置
config = LoraConfig(r=16,lora_alpha=16,target_modules=["query", "value"],lora_dropout=0.1,bias="none",modules_to_save=["classifier"],
)model = get_peft_model(model, config)
model.print_trainable_parameters()"trainable params: 667,493 || all params: 86,543,818 || trainable%: 0.7712775047664294"

LoraConfig(PeftConfig)源码

lora 主要参数解读:

r
解读: LoRA低秩矩阵中rank的大小,需要在模型复杂性、适应能力以及欠拟合、过拟合的风险之间进行权衡。

较小的 r 对应的是更简单的低秩矩阵,模型在训练中学习的参数更少。这可以加快训练速度,并可能降低计算需求。
但是,随着 r 越小,低秩矩阵捕获特定任务信息的能力就会降低,模型在新任务上的表现可能不如较高的r。
实际训练中需要尝试不同的 r 值,以找到合适的平衡点,以在新任务上实现所需的性能。

lora_alpha
解读: 一个比例因子,用于在前向传播过程中将 LoRA参数以一定的缩放比例应用于模型之中,用于调整原始模型输出加上低秩适应两者组合结果的大小。正如下面公式所示,此比例因子值越大,Lora参数的影响就越大。

scaling = alpha / r
weight += (lora_B @ lora_A) * scaling

lora_dropout
解读: 用于控制在训练过程中应用于 LoRA 层的 dropout参数比例,取值在0-1之间。0.1表示丢弃10%的神经元,这部分被丢弃的神经元不参与计算。

注:Dropout 是一种正则化技术,只用于训练过程,通过随机丢弃一部分神经元来,来减少训练过程中模型对特定特征的依赖,从而防止模型过拟合,尤其适用于数据量较小或模型较复杂的情况下。

inference_mode
解读:是否为推理模式,设置为False表示训练模式。

target_modules
解读:用于指定模型中具体哪些模块将应用 LoRA 适配器,这里的模块与具体模型的结构有关,一般都需要包括注意力部分的q、k、v模块。


NLP 大模型高频面题汇总

NLP基础篇
BERT 模型面
LLMs 微调面

http://www.ppmy.cn/devtools/151815.html

相关文章

Dubbo泛化调用

本文记录下利用dubbo泛化调用实现网关server收http请求,然后转发给dubbo服务,然后收到dubbo响应的功能原理。 关键点1:dubbo泛化调用。可根据(注册中心地址、接口名,方法名,参数类型)唯一确定一个dubbo服务…

软件测试—接口测试面试题及jmeter面试题

一,接口面试题 1.接口的作用 实现前后端的交互,实现数据的传输 2.什么是接口测试 接口测试就是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑关系 3.接口测试必要性 1.可以发现很…

【HarmonyOS-开发指南】

HarmonyOS-开发指南 ■ DevEco Studio■ ArkTS■ ArkUI■ ArkCompiler■ DevEco Testing■ DevEco Device Tool■ DevEco Service ■ DevEco Studio 添加链接描述 ■ ArkTS 添加链接描述 ■ ArkUI ■ ArkCompiler ■ DevEco Testing ■ DevEco Device Tool ■ DevEco S…

【Rust的2种线程锁 阻塞 vs 挂起】

async_std::sync::Mutex 和 std::sync::Mutex 之间的主要区别在于它们如何处理线程阻塞和异步编程模型。以下是两者的关键差异: 标准库的 Mutex (std::sync::Mutex) 同步阻塞:当一个线程尝试获取 std::sync::Mutex 的锁时,如果锁已经被其他线…

C++ QT中Q_Q和Q_D是什么?怎么使用?本质是什么?C++仿写

1.QT中Q_Q和Q_D是什么&#xff1f; Q_Q可以得到外部可以访问的类指针Q_D可以得到内部封装&#xff0c;外部不可达的类指针 2. 怎么使用&#xff1f; 上代码 APrivate.h #pragma once #include <QtCore>class A;class APrivate {Q_DECLARE_PUBLIC(A) public:APrivate(…

迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写内核 LED HDF 驱动程序

接下来编译 LED 驱动&#xff0c;该驱动用于在基于华为设备框架&#xff08;HDF&#xff09;的系统中控制 LED 灯的开关&#xff0c;完整代码如下所示&#xff1a; 更多内容可以关注&#xff1a;迅为RK3568开发板篇OpenHarmony

挖掘机检测数据集,准确识别率91.0%,4327张原始图片,支持YOLO,COCO JSON,PASICAL VOC XML等多种格式标注

挖掘机检测数据集&#xff0c;准确识别率91.0%&#xff0c;4327张图片&#xff0c;支持YOLO&#xff0c;COCO JSON&#xff0c;PASICAL VOC XML等多种格式标注 数据集详情 数据集分割 训练组70&#xff05; 3022图片 有效集20&#xff05; 870图片 测试集10&…

vim练级攻略(精简版)

vim推荐配置: curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh 0. 规定 Ctrl-λ 等价于 <C-λ> :command 等价于 :command <回车> n 等价于 数字 blank字符 等价于 空格&#xff0c;tab&am…