LLM大模型中LoRA是什么?面试经验回答汇总(2024.7月最新)

目录

1 什么是 LoRA?

2 LoRA 的思路是什么?

3 LoRA 的特点是什么?

4 简单描述一下 LoRA?

5 QLoRA 的思路是怎么样的?

6 QLoRA 的特点是什么?

7 AdaLoRA 的思路是怎么样的?

8 LoRA权重是否可以合入原模型?

9 ChatGLM-6B LoRA后的权重多大?

10 LoRA 微调优点是什么?

11 LoRA微调方法为啥能加速训练?

12 如何在已有LoRA模型上继续训练?

13 LoRA 缺点是什么?

14 LoRA这种微调方法和全参数比起来有什么劣势吗?

15 LoRA 微调参数量怎么确定?

16 Rank 如何选取?

17 alpha参数 如何选取?

18 LoRA 高效微调 如何避免过拟合?

19 微调大模型时, 优化器如何?

20 哪些因素会影响内存使用?

21 LoRA权重是否可以合并?

22 是否可以逐层调整LoRA的最优rank?

23 Lora的矩阵怎么初始化?为什么要初始化为全0?


1 什么是 LoRA?

介绍:通过低秩分解来模拟参数的改变量,从而以极小的参数量来实现大模型的间接训练。

2 LoRA 的思路是什么?

1. 在原模型旁边增加一个旁路,通过低秩分解(先降维再升维)来模拟参数的更新量;

2. 训练时,原模型固定,只训练降维矩阵A和升维矩阵B;

3. 推理时,可将BA加到原参数上,不引入额外的推理延迟;

4. 初始化,A采用高斯分布初始化,B初始化为全0,保证训练开始时旁路为0矩阵;

5. 可插拔式的切换任务,当前任务W0+B1A1,将lora部分减掉,换成B2A2,即可实现任务切换;

3 LoRA 的特点是什么?

1. 将BA加到W上可以消除推理延迟;

2. 可以通过可插拔的形式切换到不同的任务;

3. 设计的比较好,简单且效果好;

4 简单描述一下 LoRA?

LoRA的实现思想很简单,就是冻结一个预训练模型的矩阵参数,并选择用A和B矩阵来替代,在下游任 务时只更新A和B。

5 QLoRA 的思路是怎么样的?

1. 使用一种新颖的高精度技术将预训练模型量化为 4 bit;

2. 然后添加一小组可学习的低秩适配器权重,这些权重通过量化权重的反向传播梯度进行微调。

6 QLoRA 的特点是什么?

使用 QLoRA 微调模型,可以显著降低对于显存的要求。同时,模型训练的速度会慢于LoRA。

7 AdaLoRA 的思路是怎么样的?

        对LoRA的一种改进,它根据重要性评分动态分配参数预算给权重矩阵,将关键的增量矩阵分配高秩以捕 捉更精细和任务特定的信息,而将较不重要的矩阵的秩降低,以防止过拟合并节省计算预算。

8 LoRA权重是否可以合入原模型?

可以,将训练好的低秩矩阵(B*A)+原模型权重合并(相加),计算出新的权重。

9 ChatGLM-6B LoRA后的权重多大?

rank 8 target_module query_key_value条件下,大约15M。

10 LoRA 微调优点是什么?

1. 一个中心模型服务多个下游任务,节省参数存储量

2. 推理阶段不引入额外计算量

3. 与其它参数高效微调方法正交,可有效组合

4. 训练任务比较稳定,效果比较好

5. LoRA 几乎不添加任何推理延迟,因为适配器权重可以与基本模型合并

11 LoRA微调方法为啥能加速训练?

1. 只更新了部分参数:比如LoRA原论文就选择只更新Self Attention的参数,实际使用时我们还可以 选择只更新部分层的参数;

2. 减少了通信时间:由于更新的参数量变少了,所以(尤其是多卡训练时)要传输的数据量也变少 了,从而减少了传输时间;

3. 采用了各种低精度加速技术,如FP16、FP8或者INT8量化等。

        这三部分原因确实能加快训练速度,然而它们并不是LoRA所独有的,事实上几乎都有参数高效方法都具 有这些特点。LoRA的优点是它的低秩分解很直观,在不少场景下跟全量微调的效果一致,以及在预测阶 段不增加推理成本。

12 如何在已有LoRA模型上继续训练?

        理解此问题的情形是:已有的lora模型只训练了一部分数据,要训练另一部分数据的话,是在这个lora 上继续训练呢,还是跟base 模型合并后再套一层lora,或者从头开始训练一个lora?

        我认为把之前的LoRA跟base model 合并后,继续训练就可以,为了保留之前的知识和能力,训练新的 LoRA时,加入一些之前的训练数据是需要的。另外,每次都重头来成本高。

13 LoRA 缺点是什么?

        缺点很明显,参与训练的模型参数量不多,也就百万到千万级别的参数量,所以效果比全量微调差很 多。可能在扩散模型上感知没那么强,但在LLM上,个人感觉表现还是差距挺大的。

14 LoRA这种微调方法和全参数比起来有什么劣势吗?

        如果有足够计算资源以及有10k以上数据,我还是建议全参数微调,lora的一个初衷就是为了解决不够计 算资源的情况下微调,只引入了少量参数,就可以在消费级gpu上训练,但lora的问题在于它不能节省训 练时间,相比于全量微调,他要训练更久,同时因为可训练参数量很小,在同样大量数据训练下,比不 过全量微调。

15 LoRA 微调参数量怎么确定?

LoRA 模型中可训练参数的结果数量取决于低秩更新矩阵的大小,其主要由秩 r 和原始权重矩阵的形状确 定。实际使用过程中,通过选择不同的 lora_target 决定训练的参数量。

16 Rank 如何选取?

Rank的取值作者对比了1-64,效果上Rank在4-8之间最好,再高并没有效果提升。不过论文的实验是面 向下游单一监督任务的,因此在指令微调上根据指令分布的广度,Rank选择还是需要在8以上的取值进 行测试。

17 alpha参数 如何选取?

alpha其实是个缩放参数,本质和learning rate相同,所以为了简化我默认让alpha=rank,只调整lr,这 样可以简化超参。

18 LoRA 高效微调 如何避免过拟合?

减小r或增加数据集大小可以帮助减少过拟合。还可以尝试增加优化器的权重衰减率或LoRA层的dropout 值。

19 微调大模型时, 优化器如何?

除了Adam和AdamW,其他优化器如Sophia也值得研究,它使用梯度曲率而非方差进行归一化,可能提 高训练效率和模型性能。

20 哪些因素会影响内存使用?

内存使用受到模型大小、批量大小、LoRA参数数量以及数据集特性的影响。例如,使用较短的训练序列 可以节省内存。

21 LoRA权重是否可以合并?

可以将多套LoRA权重合并。训练中保持LoRA权重独立,并在前向传播时添加,训练后可以合并权重以 简化操作。

22 是否可以逐层调整LoRA的最优rank?

理论上,可以为不同层选择不同的LoRA rank,类似于为不同层设定不同学习率,但由于增加了调优复 杂性,实际中很少执行。

23 Lora的矩阵怎么初始化?为什么要初始化为全0?

矩阵B被初始化为0,而矩阵A正常高斯初始化 如果B,A全都初始化为0,那么缺点与深度网络全0初始化一样,很容易导致梯度消失(因为此时初始所 有神经元的功能都是等价的)。 如果B,A全部高斯初始化,那么在网络训练刚开始就会有概率为得到一个过大的偏移值Δ W 从而引入太 多噪声,导致难以收敛。 因此,一部分初始为0,一部分正常初始化是为了在训练开始时维持网络的原有输出(初始偏移为0),但 同时也保证在真正开始学习后能够更好的收敛。

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

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

相关文章

笛卡尔乘积算法js实现

全因子实验设计( DOE) :指所有因子的所有水平的所有组合都至少进行一次实验,可以估计所有的主效应和所有的各阶交互效应。 笛卡尔乘积:指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),…

视频监控汇聚和融合平台的特点、功能、接入方式、应用场景

目录 一、产品概述 二、主要特点 1、多协议支持 2、高度集成与兼容性 3、高性能与可扩展性 4、智能化分析 5、安全可靠 三、功能概述 1. 视频接入与汇聚 2. 视频存储与回放 3. 实时监控与预警 4. 信息共享与联动 5. 远程管理与控制 四、接入方式 1、直接接入 2…

flask与vue实现通过websocket通信

在一些情况下,我们需要实现前后端之间的时刻监听,本文是一篇工具文档,用于解决前后端之间使用websocket交互。 一. Flask的相关配置 1. 下载相关依赖库 如果还没有配置flask的话,需要先安装flask,同时为解决跨域问题&#xff0…

创建线程的五种方式

一.继承Thread ,重写run class MyThread extends Thread{Overridepublic void run() {//这里的内容就是该线程要完成的工作while(true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeExceptio…

Qt开发 | qss简介与应用

文章目录 一、qss简介与应用二、QLineEdit qss介绍与使用三、QPushButton qss1.常用qss1.1 基本样式表1.2 背景图片1.3 图片在左文字在右 2.点击按钮弹出菜单以及右侧箭头样式设置3.鼠标悬浮按钮弹出对话框 四、QCheckBox qss妙用:实时打开关闭状态按钮五、QComboBo…

UE4_材质_使用彩色半透明阴影

学习笔记,不喜勿喷!侵权立删,祝愿大美临沂生活越来越好! 本教程将介绍如何配置虚幻引擎来投射彩色半透明阴影。 此功能在许多应用中都很有用,常见例子就是透过彩色玻璃窗的彩色光。 一、半透明阴影颜色 阴影在穿过半…

博途S7-1500PLC“虚轴“编程应用

1、CODESYS如何添加虚轴 如何添加虚轴(AM400PLC)-CSDN博客文章浏览阅读164次。EtherCAT运动控制总线启用的时候,选择EtherCAT总线任务周期。选择好后,选择点击添加。https://rxxw-control.blog.csdn.net/article/details/139898985虚轴是利用软件算法实现的运动控制轨迹规划…

HarmonyOS ArkUi 官网踩坑:单独隐藏导航条无效

环境: 手机:Mate 60 Next版本: NEXT.0.0.26 导航条介绍 导航条官网设计指南 setSpecificSystemBarEnabled 设置实际效果: navigationIndicator:隐藏导航条无效status:会把导航条和状态栏都隐藏 官方…

公网IP变更自动微信通知与远程执行命令的C++开源软件

基本功能 智能公网IP变更监测与微信通知 一旦检测到公网IP地址发生变更,系统将自动通过预设的QQ邮箱(该邮箱与微信绑定,实现微信通知)发送新IP地址通知。同时,软件会即时更新本地配置文件中的IP地址及变更时间&#…

深度学习标注文件格式转换

json转xml 原始数据集文件夹中图片格式为bmp&#xff0c;标注文件为json&#xff0c;图片和标注文件放在同一个文件夹下面&#xff0c;将json转为xml格式&#xff0c;图片和标注文件分别存放在一个文件夹下面。 headstr """\ <annotation><folder>…

帮人安装打印机驱动踩过的坑

自从当了程序员&#xff0c;总被人认为是无所不能。安装系统&#xff0c;组装电脑都会。有啥只要跟电脑沾点边的事情都来找我。这不今天就被叫去帮人安装打印机驱动。 问题描述 以前老电脑都可以用打印机的&#xff0c;自从换新电脑后就不行了。别人可以用&#xff0c;就他的新…

HNU电子测试平台与工具2_《计算机串口使用与测量》

&#xff08;这个有留word哈哈&#xff09; 4.1 4.2 Linux 操作系统平台 一、实验目的 了解 Linux 系统文件系统的基本组织了解 Linux 基本的多用户权限系统熟练使用 ls、cd、cat、more、sudo、gcc、vim 等基本命令会使用 ls 和 chmod 命令查看和修改文件权限 二、实…

【C++知识点总结全系列 (06)】:STL六大组件详细总结与分析- 配置器、容器、迭代器、适配器、算法和仿函数

STL六大组件目录 前言1、配置器(1)What(2)Why(3)HowA.调用new和delete实现内存分配与销毁B.STL Allocator (4)allocator类A.WhatB.HowC.allocator的算法 2、容器(1)What(2)Which&#xff08;有哪些容器&#xff09;(3)序列容器&#xff08;顺序容器&#xff09;A.WhichB.array&…

计算机网络知识普及之四元组

在涉及到TCP/UDP等IP类通信协议时&#xff0c;存在四元组概念 这里只是普及使用 先来一些前置知识&#xff0c;什么是IP协议&#xff1f; IP协议全称为互联网协议&#xff0c;处于网络层中&#xff0c;主要作用是标识网络中的设备&#xff0c;每个设备的IP地址是唯一的。 在网…

【JVM排查问题】JProfiler性能分析工具连接远程服务器Docker容器中的Java服务

1、下载JProfiler https://www.ej-technologies.com/download/jprofiler/version_13 下载Windows版本以及Linux版本 Windows用于可视化、Linux用于在Docker容器中启动 2、将Linux版本的JProfiler上传到Docker容器中&#xff0c;宿主机cp命令到容器中 docker cp /home/data/s…

像学Excel 一样学 Pandas系列-创建数据分析维度

嗨&#xff0c;小伙伴们。又到喜闻乐见的Python 数据分析王牌库 Pandas 的学习时间。按照数据分析处理过程&#xff0c;这次轮到了新增维度的部分了。 老样子&#xff0c;我们先来回忆一下&#xff0c;一个完整数据分析的过程&#xff0c;包含哪些部分内容。 其中&#xff0c…

CAM350如何添加走线?

在CAM350中如何添加走线? 有时候由于PCB文件丢失或其它原因,只有GERBER文件,这时候LAYOUT工程师就只能使用CAM350在GERBER里面修改。 那在CAM350里面如何添加走线呢? 操作方法如下: 1、选择菜单栏Add 选择Line 2、在走线前,要先设置D码,就是走线的形状和宽度。必需选择…

【服务器部署】Jenkins配置前端工程自动化部署

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0c;产…

BIOS中的设置虽然不少,但其实大部分时候只需进行一些简单的调整

序言 浏览BIOS可能会让人感到不知所措,因为要考虑的设置太多了。但是,你应该在BIOS中进行一些简单的调整,以提高系统的性能和稳定性。我们将向你展示其中的一些调整,并解释你可能想要使用它们的时间和原因。 用密码保护你的BIOS 虽然我们很小心地对用户帐户进行密码保护…

[译]Reactjs性能篇

英文有限&#xff0c;技术一般&#xff0c;海涵海涵&#xff0c;由于不是翻译出身&#xff0c;所以存在大量的瞎胡乱翻译的情况&#xff0c;信不过我的&#xff0c;请看原文&#xff5e;&#xff5e; 原文地址&#xff1a;https://facebook.github.io/react/docs/advanced-per…