LoRA创作者对其的解释,
1.需要解决的2个问题:
1.我们需要找到并调整所有参数?
2.我们微调的权重矩阵,更新在矩阵秩方面应该具有多大的表现力?
Generalizing Fine-tuning
矩阵更新的秩来控制矩阵更新的表达能力
LoRA 不会引入任何推理延迟
2.模型切换
只涉及RAM和VRAM之间的数据传输
RAM通常比VRAM大得多
缓存数千个LoRA模块,不从磁盘读取。
3.并行训练多个LoRA模块
每个模块执行自己的任务,共享相同的基础模型并通过不同的LoRA 模块在单个批次中路由不同的输入来实现。
预训练模型逐渐专业化的管道,针对特定语言进进性微调,然后针对特定的域
4.全量微调和LoRA 微调
本质就是减少参数的维度
LoRA: Low-Rank Adaptation of Large Language Models
Rank对应于k, k越小需要训练的参数就越少。
2. Transformer的参数主要由很多矩阵来构成,
比如multi-head attention里的矩阵,还有FFN里的矩阵等; 当我们使用LoRA的时候,可以选择性地对某一些矩阵进行改变,这部分可以在config里面进行设置。
3. 矩阵的乘法:要保证维度的一致性,比如一个矩阵W是M乘N的,那这时候A必须是M乘K, B是K成N,这样才能保证乘出来的大小为M乘N。
4. 视频里的K我们也称之为rank(秩),像这种M=AB,low rank factorization方法经常也在推荐领域使用。