
通过本文可以了解:LoRA模型加速原理、peft包使用、Autocust自动混合精度、Accelerate和deepspeed加速、多GPU分布式训练等大模型加速训练和微调的方法和代码应用示例。

近期大模型层出不穷,大家对于大模型的微调也在跃跃欲试,像斯坦福的Alpaca[1], 清华的ChatGLM[2],中文的Chinese-Vicuna[3],让我这样的普通玩家也能训练自己的微调模型。
在微调和推理的时候仍然需要加速,有哪些方法可以加速微调呢?
Part1LoRA
低秩矩阵分解 LoRA[4]原理:冻结预训练模型权重,并将可训练的秩分解矩阵注入到Transformer层的每个权重中,大大减少了下游任务的可训练参数数量。LoRA 开源代码[5]见文末。
原理图:
公式:
结合原理图和公式,我们可以很容易明白LoRA了:
左侧是预训练模型的权重,输入输出维度都是d,在训练期间被冻结,不接受梯度更新。
右侧,对A使用随机的高斯初始化,B在训练开始时为零,r是秩,会对△Wx做缩放 α/r。
HuggingFace的包peft[6]对LoRA做了封装支持,几步即可使用:

论文中提到了LoRA的诸多优点:

最低0.47元/天 解锁文章
3734

被折叠的 条评论
为什么被折叠?



