首页 > 其他分享 >AI大模型大厂面经——LoRA面试题最全总结

AI大模型大厂面经——LoRA面试题最全总结

时间:2024-09-24 14:53:19浏览次数:3  
标签:初始化 面试题 微调 训练 AI 面经 矩阵 参数 LoRA


前言

大家的显卡都比较吃紧,LoRA家族越来越壮大,基于LoRA出现了各种各样的改进,最近比较火的一个改进版是dora,听大家反馈口碑也不错。

基于PEFT的话用4090 24G显存也可以进行大模型的微调,所以LoRA家族这块还是很有研究和实际落地的潜力。

LoRA整个系列分为两个部分:

1、LoRA总述

2、LoRA家族演进

本篇开始介绍第一部分:LoRA总述,尽量以面经问题的形式提出并解答,下面是一个快捷目录。

一、概念

1. 简单介绍一下LoRA

2. LoRA的思路

3. LoRA的特点

4. LoRA的优点

5. LoRA的缺点

二、训练理论

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

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

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

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

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

6. LORA应该作用于Transformer的哪个参数矩阵?

7. LoRA 微调参数量怎么确定?

8. Rank 如何选取?

9. alpha参数 如何选取?

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

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

12. LoRA权重是否可以合并?

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

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

一、概念

1. 简单介绍一下LoRA

AI大模型大厂面经——LoRA面试题最全总结_agi

通过低秩分解来模拟参数的改变量,从而以极小的参数量来实现大模型的间接训练。实现思想很简单,就是冻结一个预训练模型的矩阵参数,并选择用A和B矩阵来替代,在下游任务时只更新A和B。

2. LoRA的思路

主要思想:在原模型旁边增加一个旁路,通过低秩分解(先降维再升维)来模拟参数的更新量。

  • 训练:原模型固定,只训练降维矩阵A和升维矩阵B。
  • 推理:可将BA加到原参数上,不引入额外的推理延迟。
  • 初始化:A采用高斯分布初始化,B初始化为全0,保证训练开始时旁路为0矩阵。
  • 可插拔式的切换任务:当前任务W0+B1A1,将lora部分减掉,换成B2A2,即可实现任务切换。

3. LoRA的特点

  • 将BA加到W上可以消除推理延迟;
  • 可以通过可插拔的形式切换到不同的任务;
  • 设计的比较简单且效果好。

4. LoRA的优点

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

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

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

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

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

5. LoRA的缺点

LoRA参与训练的模型参数量不多,也就百万到千万级别的参数量,所以效果比全量微调差很多。(数据以及算力满足的情况下,还是微调的参数越多越好)

二、训练理论

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

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

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

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

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

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

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

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

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

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

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

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

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

AI大模型大厂面经——LoRA面试题最全总结_语言模型_02

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

6. LORA应该作用于Transformer的哪个参数矩阵?

AI大模型大厂面经——LoRA面试题最全总结_人工智能_03

从上图我们可以看到:

1)将所有微调参数都放到attention的某一个参数矩阵的效果并不好,将可微调参数平均分配到 Wq 和 Wk 的效果最好;

2)即使是秩仅取4也能在 ∆W 中获得足够的信息。

因此在实际操作中,应当将可微调参数分配到多种类型权重矩阵中,而不应该用更大的秩单独微调某种类型的权重矩阵。

7. LoRA 微调参数量怎么确定?

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

以 LLama 为例:

–lora_target q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj

8. Rank 如何选取?

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

9. alpha参数 如何选取?

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

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

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

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

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

12. LoRA权重是否可以合并?

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

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

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

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

矩阵B被初始化为0,而矩阵A正常高斯初始化。

如果B,A全都初始化为0,那么缺点与深度网络全0初始化一样,很容易导致梯度消失(因为此时初始所有神经元的功能都是等价的)。

如果B,A全部高斯初始化,那么在网络训练刚开始就会有概率为得到一个过大的偏移值Δ W 从而引入太多噪声,导致难以收敛。

因此,一部分初始为0,一部分正常初始化是为了在训练开始时维持网络的原有输出(初始偏移为0),但同时也保证在真正开始学习后能够更好的收敛。


AI大模型大厂面经——LoRA面试题最全总结_agi_04


AI大模型大厂面经——LoRA面试题最全总结_agi_05


标签:初始化,面试题,微调,训练,AI,面经,矩阵,参数,LoRA
From: https://blog.51cto.com/u_16163442/12099875

相关文章

  • 详解2024 openAi最新gpt o1模型分析
    探索GPT的O1模型:一场人工智能的革命在人工智能领域,尤其是自然语言处理(NLP)领域,模型的不断迭代和升级为我们带来了前所未有的机遇。最近,OpenAI发布了全新的O1模型,这一创新不仅在技术上取得了重大突破,也为各行各业的应用提供了更多可能性。本文将深入探讨O1模型的核......
  • Google Photos 利用 AI 驱动的视频预设重新设计视频编辑器
    在更新了“收藏”标签和搜索功能后,GooglePhotos现在正在推出其手机视频编辑器的重新设计。目标是让用户“比以往更容易地编辑喜欢的视频,制作成精彩片段分享。”GooglePhotos将主要的编辑工具放在“视频”标签的显眼位置。时间轴下方可以看到以下工具:静音增强:“一键增强颜......
  • OpenAI 学院计划:一百万美元助力开发者的新 AI 应用开发
    OpenAIAcademy于2024年9月23日推出,这是一个创新性的项目,旨在全球范围内赋能开发者和使命驱动的组织,特别是在低收入和中等收入国家。其目标是让更多人能够公平地获取先进的AI资源,并通过创新来应对社会的重大挑战。目的与愿景:Academy的使命是提供公平的AI技术获取机......
  • 必应bing推广kai户流程教学,满足企业获客需求
    微软Bing广告提供了三种主要广告类型,可以满足大多数出海企业的展示和客户获取需求。搜索广告(SearchAds)包括标准搜索广告和动态搜索广告。当用户的搜索词与投放的关键词匹配时,相应的搜索广告会被触发,向用户展示精准的广告内容。受众广告(AudienceAds)投放后,广告会展示在微......
  • 中国大陆用户如何使用Jetbrains内置的AI插件AI Assistant
    1安装AIAssistant插件AI功能依赖AIAssistant插件:2功能解释代码、回答有关代码片段的问题、提交消息等等。在需要时更快地编码AIAssistant可以自动补全单行、函数和整个代码块,并与您的编码样式、项目上下文和命名约定保持一致。AIAssistant还可以根据您的自然语言提......
  • AI智能写作时代来临:如何高效提升你的文案创作能力
    随着人工智能技术的飞速发展,AI智能写作已经不再是遥不可及的概念,而是逐渐成为内容创作者的得力助手。在这个信息过载的时代,如何利用AI智能写作工具高效提升文案创作能力,成为了许多创作者关注的焦点。以下将从几个方面探讨如何在AI智能写作时代,提升个人的文案创作能力。 ......
  • Hugging Face 论文平台 Daily Papers 功能全解析
    文/Adeena,在快速发展的研究领域,保持对最新进展的关注至关重要。为了帮助开发者和研究人员跟踪AI领域的前沿动态,HuggingFace推出了DailyPapers页面。自发布以来,DailyPapers已展示了由AK和社区研究人员精心挑选的高质量研究。在过去一年里,已有超过3700篇论文被发布......
  • CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
    前言今天大姚给大家分享一款由.NET开源、免费、强大的VisualStudio代码简化、整理、格式化实用插件:CodeMaid。工具介绍CodeMaid是一款由.NET开源、免费、强大的VisualStudio实用插件,旨在帮助开发者简化、清理和格式化他们的C#、C++、VB.NET、F#、XAML、CSS、LESS、SCSS、Java......
  • CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
    前言今天大姚给大家分享一款由.NET开源、免费、强大的VisualStudio代码简化、整理、格式化实用插件:CodeMaid。工具介绍CodeMaid是一款由.NET开源、免费、强大的VisualStudio实用插件,旨在帮助开发者简化、清理和格式化他们的C#、C++、VB.NET、F#、XAML、CSS、LESS、SCSS、JavaScri......
  • 2025秋招LLM大模型多模态面试题(八)- langchain完整面试题
    目录什么是LangChainLangChain包含哪些核心模块模型输入/输出(ModelI/O)组件管理数据处理链式组合记忆与上下文管理外部集成一些核心概念什么是LangChainAgent?什么是LangChainmodel?LangChain包含哪些特点?LangChain如何使用?LangChain如何调用......