以微调deepseek为例,基于transformers改写实现lora+

LoRA+: Efficient Low Rank Adaptation of Large Models

24年2月12的论文,主要思想就是对LoRA进行了一些改进,提升了模型效果。

摘要

证明了对Lora的A和B使用相同的学习率无法有效的特征学习。还证明了通过以一个良好选择的固定比率设置不同的学习速率来修正,可以提升模型效果。这种算法为LoRA+。在实验中,LoRA+提高了性能(1%的−2%的提高)和微调速度,计算成本与LoRA相同。

代码实现

完整代码均放在了git代码仓库:https://github.com/mst272/simple-lora-plus

原理了解完开始从代码部分构建一下lora+。本次我们以使用deepseek-coder进行微调为例,在原始版本中加入lora以及lora+模块。

deepseek-coder微调代码部分取自官方的实现,相关说明大家可以自行去查找。改动主要是首先实现了lora微调,基于此进行了lora+的进一步改造。

正常的lora中A和B的学习率是一样的,简单来说Lora+原理即为对 lora中的A和B设置不同的学习率,且论文中给出了一些设置推荐。

现阶段训练代码大多都是用huggingface的transformers框架,基于此修改学习率,需要对trainer中进行一些魔改。

Trainer类概览

进入huggingface 的trainer类代码,真的是很复杂,不过我们这次的话只需要了解一下其create_optimizer方法即可。如下所示:

你可能感兴趣的:(人工智能,深度学习,nlp,python)