大模型LoRA微调实践,以及LoRA代码实现理解

先介绍一下什么是微调: 简单的说就是更释放大模型的潜力,让AI更精准的回答问题。比如这是QWen14B默认给出的答案,简单粗暴。但如果想把AI给小学生用,就应该给出解题思路。

周末我用1500道带小学解题思路的题目,对千问14B模型做了微调,训练后模型明显在回答题目时,带上了解题思路。

训练用的语料,是1500道小学题目和答案。唯一的问题是我语料处理的有点问题,把\n直接当字符放答案里了,也正好说明微调有用,它在用我要求的风格来回答问题。

**在阿里云上的微调过程,耗时4个小时,费用51元。贵而方便。
**

==分割线,代码细节==

为了理解技术细节,周末把LoRA原始论文中代码的复现了一遍。白嫖的谷歌colab免费GPU来训练。

git clone https://github.com/microsoft/LoRA.git

下载好各种依赖包,可以正常训练了。

打开代码看,Lora的思路很巧妙,也很简单。先看下LoRA微调和全参微调的区别。这里可以看到最大的差别是,右边的Lora微调引入了A、B两个低秩小参数矩阵来模拟全量微调的增量参数矩阵。

线性代数没学好,很容易被“低秩”这两个字给吓退。其实就是用乘起来刚好等于大矩阵的两个小矩阵,来模拟大矩阵。用一个简单代码演示一下

示意:假设要在Transformer里的MLP层上做LoRA微调,两个矩阵的形状如图的最右边,一个很长,一个很扁的两个小矩阵。

对应GPT2上,W2矩阵形状是[3072, 768],Lora_A矩阵是[3072, 4],Lora_B的矩阵是[4, 768]。看下代码就比较明白了。

训练的时候,A和B乘起来的值,作为增量参数矩阵,和原始权重结合起来用。从代码来看,它支持直接合并权重,或者把微调的权重单独保存。

从论文中看,Lora微调是可以选择在任何一个权重矩阵旁边训练两个低秩的小矩阵。把GPT2微调后的权重文件打开看。它只微调了Attenting矩阵。GPT2的原文件是500W,微调后的增量权重文件大概500K,一共是1.2亿个参数。微调了14万个参数,差不多千分之一。

最大的感受:0.1%的参数量,LoRA微调很难让AI学到新知识,但可以很好的调整大模型的输出风格。我试过用微调来改变大模型内部的数学规律,让1+1等于4,2+2等于8,失败了。另外微调可以进一步激发大模型的潜力,但难点在于,对模型的深刻理解,以及应该构建什么样的数据?


最后分享

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 2024行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

在这里插入图片描述

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

### LoRA 微调实战操作指南 对于希望利用低秩适应(LoRA)技术来微调大型语言模型的开发者来说,掌握具体的操作流程至关重要。通过这种方式可以有效降低计算成本并提高效率。 #### 准备工作环境 为了顺利实施LoRA微调,需先安装必要的库文件以及准备相应的硬件设施。通常建议使用GPU加速训练过程以节省时间。可以通过如下命令安装Hugging Face Transformers和其他依赖项: ```bash pip install transformers datasets accelerate loralib ``` #### 加载预训练模型与数据集 选择合适的预训练模型作为基础架构,并加载目标领域内的特定数据集用于后续调整。这里以StarCoder为例展示如何初始化模型实例: ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "bigcode/starcoder" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name) ``` #### 应用LoRA配置 定义LoRA的具体参数设置,包括但不限于矩阵分解后的维度大小、学习率等超参的选择。这一步骤决定了最终性能表现的关键因素之一。 ```python import loralib as lora lora_config = { 'r': 8, 'alpha': 16, 'dropout': 0.1, } for name, module in model.named_modules(): if isinstance(module, torch.nn.Linear): lora.replace_linear_with_lora( module=module, r=lora_config['r'], alpha=lora_config['alpha'] ) ``` #### 开始微调过程 设定好优化器及其对应的损失函数之后即可启动实际的训练环节,在此期间应密切监控各项指标变化情况以便及时作出相应调整[^2]。 ```python optimizer = AdamW(model.parameters(), lr=5e-5) def train_one_epoch(dataloader): total_loss = 0. for batch in dataloader: outputs = model(**batch) loss = outputs.loss optimizer.zero_grad() loss.backward() optimizer.step() total_loss += loss.item() avg_loss = total_loss / len(dataloader) return avg_loss ``` #### 验证成果 完成一轮或多轮迭代后应当评估改进前后版本之间的差异性,从而验证所做工作的有效性。可借助BLEU分数或其他评价标准来进行量化分析。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值