lora为什么可以合并进原始模型?

import torch

#这是输入数据,维度为100,长度为120
tensor = torch.rand(120, 100)
#这是一个线性层
matrix0 = torch.rand(100, 100)

# 这是一个lora
matrix1 = torch.rand(100, 10)
matrix2 = torch.rand(10, 100)
#1、120*100的矩阵与100*10相乘,输出再和10*100的矩阵相乘
ouput1= torch.mm(torch.mm(tensor, matrix1),matrix2)+torch.mm(tensor,matrix0)
#2、120*100的矩阵与100*10和10*100的矩阵先转换为100*100的低秩方阵相乘
ouput2= torch.mm(tensor, torch.mm(matrix1,matrix2))+torch.mm(tensor,matrix0)
#1和2结果相同
print(torch.allclose(ouput1, ouput2)) # True
#我们把低秩方阵提前与线性层相加
ouput3= torch.mm(tensor, torch.mm(matrix1,matrix2)+matrix0)
#发现提前相加的结果与分开运算结果相同,这就是为什么lora可以合并进原始模型
print(torch.allclose(ouput1, ouput3)) # True

### LORA模型的推理方法 LORA(Low-Rank Adaptation)是一种高效的参数高效微调技术,广泛应用于大型语言模型和其他深度学习任务中。以下是关于LORA模型推理的具体方法和技术细节: #### 使用Python脚本启动LORA模型服务 通过命令行工具可以快速部署带有LORA权重模型服务。例如,在LLaVA框架中,可以通过以下命令加载模型并设置相应的端口和服务地址[^1]: ```bash python -m llava.serve.model_worker \ --host 0.0.0.0 \ --controller http://localhost:10000 \ --port 40000 \ --worker http://localhost:40000 \ --model-path /home/MLM/LLaVA/llava_v1.5_lora/llava-v1.5-7b ``` 上述命令会初始化一个基于指定路径`/home/MLM/LLaVA/llava_v1.5_lora/llava-v1.5-7b`的LORA模型实例,并将其绑定到本地主机的服务上。 #### 加载和LORA权重 对于已经训练好的LORA权重文件,通常需要先加载这些权重再与基础模型进行并。这一过程可以通过PEFT库中的`PeftModel`类完成[^2]。具体代码如下所示: ```python from peft import PeftModel print('Loading LoRA weights...') model = PeftModel.from_pretrained(base_model, lora_weights_path) print('Merging LoRA weights...') model = model.merge_and_unload() print('Model is loaded and ready for inference.') ``` 在此过程中,`merge_and_unload()`函数负责将LORA调整后的参数永久融入原模型结构之中,从而简化后续推断流程。 #### 高效并行化的多LoRA推理方案-S-LoRA 当面对多个用户的个性化需求或者多种不同类型的LoRA模型时,传统的单线程处理方式可能无法满足实时性和效率的要求。为此提出了S-LoRA方法来解决此类问题[^3]。它主要解决了以下几个方面的问题: 1. **多用户并发请求管理** 2. **定制化LLM serving架构设计** 3. **降低内存占用的同时提升计算速度** 借助于专门优化过的调度算法(VTC Fair Scheduling),即使是在资源受限的情况下也能保障高质量的服务体验。 --- ### 实现总结 综上所述,无论是简单的单一模型部署还是复杂的多LoRA环境下的高性能推理支持,都有成熟的解决方案可供选择。开发者可以根据实际应用场景灵活选用适的策略以达到最佳效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值