cmnfriend / O-LoRA

MIT License
126 stars 12 forks source link

关于Lora秩的变化 #8

Open Youngluc opened 7 months ago

Youngluc commented 7 months ago

感谢您的工作,非常的nice!但还是有几个问题想请教一下:

  1. 在save_and_load.py的Line 36处增加了当前Lora和previous Lora的合并,用的是concat的方式,如果说按照默认的rank=8来看,是不是concat方式会随着任务数量的增加,导致next task的rank增长?比如第二次loranew的rank就变为16了?
  2. 理论上看,用add的方式是不是也是等价的?

我还没成功run起代码来,hf被墙很烦,所以这些问题还暂时没有亲手验证,烦请作者帮忙解惑一下啦~

cmnfriend commented 7 months ago

应该的确是一种简化的方案,感谢你的提议!

Youngluc commented 7 months ago

推理的时候可以add,但是训练的时候当前的loranew参数要与过去每一个任务对应的lora参数求正交损失,所以应该不能把这些lora参数给混合起来。 不过我们也没有做实验验证loranew对add之后的lora参数求正交,对减少过去所有任务遗忘的效果。

感觉理论上,concat和add是等价的,因为add后的那些矩阵本质上也是∑AB,做正交loss的话计算方式上是一样的,就是forward感觉可能不太一样了。concat的话rank会增长,add的话rank不会增长?