对 LoRA 的一种改进,它根据重要性评分动态分配参数预算给权重矩阵,将关键的增量矩阵分配高秩以捕捉更精 细和任务特定的信息,而将较不重要的矩阵的秩降低,以防止过拟合并节省计算预算。
四、LoRA 权重是否可以合入原模型?
可以,将训练好的低秩矩阵(B*A)+原模型权重合并(相加),计算出新的权重。
五、ChatGLM-6B LoRA 后的权重多大?
rank 8 target_module query_key_value 条件下,大约 15M。
六、LoRA 微调优点是什么?
- 一个中心模型服务多个下游任务,节省参数存储量 2. 推理阶段不引入额外计算量 3. 与其它参数高效微调方法正交,可有效组合 4. 训练任务比较稳定,效果比较好 5. LoRA 几乎不添加任何推理延迟,因为适配器权重可以与基本模型合并
七、LoRA 微调方法为啥能加速训练?
- 只更新了部分参数:比如 LoRA 原论文就选择只更新 Self Attention 的参数,实际使用时我们还可以选择只更新 部分层的参数;
- 减少了通信时间:由于更新的参数量变少了,所以(尤其是多卡训练时)要传输的数据量也变少了,从而減 少了传输时间;
- 采用了各种低精度加速技术,如 FP16、FP8 或者 INT8 量化等。 这三部分原因确实能加快训练速度,然而它们并不是 LoRA 所独有的,事实上几乎都有参数高效方法都具有这些 特点。LoRA 的优点是它的低秩分解很直观,在不少场景下跟全量微调的效果一致,以及在预测阶段不增加推理 成本。
八。如何在已有 LoRA 模型上继续训练?
理解此问题的情形是:已有的 lora 模型只训练了一部分数据,要训练另一部分数据的话,是在这个 lora 上继续训 练呢,还是跟 base 模型合并后再套一层 lora,或者从头开始训练一个 lora? 我认为把之前的 LoRA 跟 base model 合并后,继续训练就可以,为了保留之前的知识和能力,训练新的 LORA 时,加入一些之前的训练数据是需要的。另外,每次都重头来成本高。
九、LoRA 缺点是什么?
缺点很明显,参与训练的模型参数量不多,也就百万到干万级别的参数量,所以效果比全量微调差很多。可能在 扩散模型上感知没那么强,但在 LLM 上,个人感觉表现还是差距挺大的。
十、LoRA 这种微调方法和全参数比起来有什么劣势吗?
如果有足够计算资源以及有 10K 以上数据,我还是建议全参数微调,lora 的一个初衷就是为了解决不够计算资源的 情况下微调,只引入了少量参数,就可以在消费级 gpu 上训练,但 lora 的问题在于它不能节省训练时间,相比于