新闻中心
如何从头开始编写LoRA代码,这有一份教程
LoRA(Low-Rank Adaptation)是一项流行的技术,旨在微调大语言模型(LLM)。这项技术最初由微软的研究人员提出,并收录在《LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS》的论文中。LoRA与其他技术不同之处在于,并非调整神经网络的所有参数,而是专注于更新少量低秩矩阵,从而显著减少了训练模型所需的计算量。
由于 LoRA 的微调质量与全模型微调相当,很多人将这种方法称为微调神器。自发布以来,很多人对这项技术感到好奇,希望通过编写代码来更好地理解这一研究。以往,缺乏适当的文档说明一直是一个困扰,但现在,我们有了教程的帮助。
这篇教程的作者是知名机器学习与 AI 研究者 Sebastian Raschka,他表示在各种有效的 LLM 微调方法中,LoRA 仍然是自己的首选。为此,Sebastian 专门写了一篇博客《Code LoRA From Scratch》,从头开始构建 LoRA,在他看来,这是一种很好的学习方法。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜
本文通过从头编写代码的方式介绍低秩自适应(LoRA),Sebastian在实验中对DistilBERT模型进行微调,并将其应用于分类任务。
LoRA方法与传统微调方法的比较结果表明,LoRA方法在测试准确率方面达到了92.39%,这比仅对模型最后几层进行微调(86.22%的测试准确率)表现出更优异的性能。这表明LoRA方法在优化模型性能方面具有明显优势,能够更好地提升模型的泛化能力和预测准确性。这个结果强调了在模型训练和调优过程中采用先进的技术和方法的重要性,以获得更好的性能表现和结果。通过比
Sebastian 是如何实现的,我们接着往下看。
从头开始编写 LoRA
用代码的方式表述一个 LoRA 层是这样的:

其中,in_dim 是想要使用 LoRA 修改的层的输入维度,与此对应的 out_dim 是层的输出维度。代码中还添加了一个超参数即缩放因子 alpha,alpha 值越高意味着对模型行为的调整越大,值越低则相反。此外,本文使用随机分布中的较小值来初始化矩阵 A,并用零初始化矩阵 B。
值得一提的是,LoRA 发挥作用的地方通常是神经网络的线性(前馈)层。举例来说,对于一个简单的 PyTorch 模型或具有两个线性层的模块(例如,这可能是 Transformer 块的前馈模块),其前馈(forward)方法可以表述为:

在使用 LoRA 时,通常会将 LoRA 更新添加到这些线性层的输出中,又得到代码如下:

如果你想通过修改现有 PyTorch 模型来实现 LoRA ,一种简单方法是将每个线性层替换为 LinearWithLoRA 层:

以上这些概念总结如下图所示:

为了应用 LoRA,本文将神经网络中现有的线性层替换为结合了原始线性层和 LoRALayer 的 LinearWithLoRA 层。
如何上手使用 LoRA 进行微调
LoRA 可用于 GPT 或图像生成等模型。为了简单说明,本文采用一个用于文本分类的小型 BERT(DistilBERT) 模型来说明。

由于本文只训练新的 LoRA 权重,因而需要将所有可训练参数的 requires_grad 设置为 False 来冻结所有模型参数:

接下来,使用 print (model) 检查一下模型的结构:

由输出可知,该模型由 6 个 transformer 层组成,其中包含线性层:

此外,该模型有两个线性输出层:

通过定义以下赋值函数和循环,可以选择性地为这些线性层启用 LoRA:

使用 print (model) 再次检查模型,以检查其更新的结构:

正如上面看到的,线性层已成功地被 LinearWithLoRA 层取代。
如果使用上面显示的默认超参数来训练模型,则会在 IMDb 电影评论分类数据集上产生以下性能:
- 训练准确率:92.15%
- 验证准确率:89.98%
- 测试准确率:89.44%
在下一节中,本文将这些 LoRA 微调结果与传统微调结果进行了比较。
与传统微调方法的比较
在上一节中,LoRA 在默认设置下获得了 89.44% 的测试准确率,这与传统的微调方法相比如何?
为了进行比较,本文又进行了一项实验,以训练 DistilBERT 模型为例,但在训练期间仅更新最后 2 层。研究者通过冻结所有模型权重,然后解冻两个线性输出层来实现这一点:

只训练最后两层得到的分类性能如下:
- 训练准确率:86.68%
- 验证准确率:87.26%
- 测试准确率:86.22%
结果显示,LoRA 的表现优于传统微调最后两层的方法,但它使用的参数却少了 4 倍。微调所有层需要更新的参数比 LoRA 设置多 450 倍,但测试准确率只提高了 2%。
优化 LoRA 配置
前面讲到的结果都是 LoRA 在默认设置下进行的,超参数如下:

假如用户想要尝试不同的超参数配置,可以使用如下命令:

不过,最佳超参数配置如下:

在这种配置下,得到结果:
- 验证准确率:92.96%
- 测试准确率:92.39%
值得注意的是,即使 LoRA 设置中只有一小部分可训练参数(500k VS 66M),但准确率还是略高于通过完全微调获得的准确率。
原文链接:https://lightning.ai/lightning-ai/studios/code-lora-from-scratch?cnotallow=f5fc72b1f6eeeaf74b648b2aa8aaf8b6
斯摩派(smapie)企业建站程序
一个让ASP程序轻松做最少的代码编写量,一般企业所需要的功能都有,参数设置,数据库管理,文件管理,数据初始化,生成HTML页面(这是为了某些客户需要静态页面的需求),页面管理(这里是为了网站中某些单页面需求而开发的,这里你在前台只要用sub_c.article(2) 这个2是这里的id号,也可以是在比如inde
x.asp?id=2 是一样的效果)公告管理,友情链接,信息发布(这里有分类,分类是无限
0
查看详情
以上就是如何从头开始编写LoRA代码,这有一份教程的详细内容,更多请关注其它相关文章!
# 与传统
# 南京抖音seo资讯
# 武汉网站建设和维护
# 六安网站优化如何做
# 品牌网站推广钢云速捷棒
# 烈火动漫seo
# 太仓网站推广企业
# 好的seo优化
# 罗定网站建设推广订做
# 百度包年推广营销效果好
# 娃哈哈网站建设海报
# 两层
# ai
# 玩转
# 如何使用
# 来实现
# 进阶
# 企业建站
# 的是
# 省电
# 这有
# udio
# 训练
相关栏目:
【
行业资讯67740 】
【
技术百科0 】
【
网络运营39195 】
相关推荐:
5r是多少钱
一年多少周
url解码什么意思
为什么夸克下载不到
typescript文件怎么打开
苹果16系统有哪些改变
市盈率300是什么意思
j*a怎么保存到数组
夸克解压什么意思
element ui是什么
power在录音笔上是什么意思
分销是什么意思
什么是夸克模组文件格式
爱奇艺视频怎么下载到手机u盘怎么转换格式方法
征信信用不好如何恢复 征信信用不好如何恢复指南
电焊机power灯亮是什么意思
空调主板单片机怎么拆开
摄像机的power chg是什么意思中文
typescript用在哪里
如何提高固态硬盘速度
哪些编程软件需用typescript
华为的nfc功能是什么意思
如何检测固态硬盘温度
华为5g手机怎么选择
路由器上面的power红灯是什么意思
华为如何面对苹果16
65寸电视长宽多少厘米
什么是unix时间戳
没网环境如何安装typescript
春运抢票准备什么
燃气热水器上的power是什么意思
使用typescript对团队有什么要求
征信不好如何短期恢复
sql isnull函数如何使用
单片机计时程序怎么写
华为使用nfc功能是什么意思
苹果16会有哪些更新
typescript书籍哪个好
统计学中power值是什么意思
2025年国外最佳语音聊天软件排行榜
市盈率20a21e是什么意思
excel中datediff函数怎么用
1tb等于多少mb
固态硬盘如何区分好坏
typescript为什么能运行
春运抢票如何快速抢到票
datediff快捷函数怎么用
市盈率底下 18A 19E 是什么意思
美食音乐每日推荐怎么写
市盈率ttm写的亏损是什么意思


2024-03-20
浏览次数:次
返回列表