LoRI比Lora精简95%参数的同时,实现更强性能,Lora到底有多少参数是冗余的?

在人工智能领域,大型语言模型(LLM)的崛起彻底改变了自然语言处理的格局。然而,这些"巨无霸"模型在实际应用中面临着一个棘手难题——当需要针对不同任务进行微调时,传统方法要么消耗巨大计算资源,要么会在多任务场景下产生严重的性能干扰。马里兰大学和清华大学的研究团队提出的LoRI技术,犹如一把精巧的瑞士军刀,以惊人的95%参数削减,不仅解决了资源消耗问题,更在多任务协同和持续学习方面展现出非凡潜力。

砍掉95%都能保持高性能!马里兰大学和清华大学提出LoRI技术,LoRI比Lora精简95%参数的同时,实现更强性能

机器之心报道 

LoRA 中到底存在多少参数冗余?这篇创新研究介绍了 LoRI 技术,它证明即使大幅减少 LoRA 的可训练参数,模型性能依然保持强劲。研究团队在数学推理、代码生成、安全对齐以及 8 项自然语言理解任务上测试了 LoRI。发现仅训练 LoRA 参数的 5%(相当于全量微调参数的约 0.05%),LoRI 就能匹配或超越全量微调、标准 LoRA 和 DoRA 等方法的性能。

大型语言模型的部署仍然需要大量计算资源,特别是当需要微调来适应下游任务或与人类偏好保持一致时。

为了降低高昂的资源成本,研究人员开发了一系列参数高效微调(PEFT)技术。在这些技术中,LoRA 已被广泛采用。

不过,LoRA 仍然会带来显著的内存开销,尤其是在大规模模型中。因此,近期研究聚焦于通过减少可训练参数数量进一步优化 LoRA。

最近的研究表明,增量参数(微调后的参数减去预训练模型参数)存在显著冗余。受随机投影有效性和增量参数冗余性的启发,来自马里兰大学和清华大学的研究者提出了带有降低后的干扰的 LoRA 方法——LoRI(LoRA with Reduced Interference)。

LoRI 保持低秩矩阵 A 作为固定的随机投影,同时使用任务特定的稀疏掩码训练矩阵 B。为了保留 B 中最关键的元素,LoRI 通过选择所有层和投影中具有最高幅度的元素来执行校准过程,从而提取稀疏掩码。

如图 1(a) 所示,即使 B 具有 90% 的稀疏性且 A 保持冻结状态,LoRI 仍能保持良好性能。这表明适应过程不需要更新 A,且 B 存在相当大的冗余。通过应用比 LoRA 更受约束的更新,LoRI 显著减少了可训练参数的数量,同时在适应过程中更好地保留了预训练模型的知识。

多任务学习对于实现具有多任务能力的通用模型至关重要,传统上通过在任务特定数据集的组合上进行联合训练来实现。然而,在这种数据混合上训练大型模型在时间和计算资源上成本过高。模型合并是一种无需训练的替代方案,通过组合现有模型来构建强大的模型。这种方法非常适合合并 LoRA 适配器,使单个 LoRA 具备多任务能力。

然而,如图 1(b) 所示,直接合并异构 LoRA 通常会导致参数干扰,使合并后的 LoRA 性能低于单任务 LoRA。此外,许多现有的合并方法需要反复试验才能确定特定任务组合的最佳方法。

LoRI 通过实现适配器合并而无需手动选择合并方法来解决这些挑战。通过使用固定的、随机初始化的投影 A,LoRI 将任务特定的适配器映射到近似正交的子空间,从而减少合并多个 LoRI 时的干扰。

除了多任务处理外,安全关键场景要求每个新引入的适配器在增强模型能力的同时保持预训练基础模型的安全对齐。LoRI 提供了一种轻量级的持续学习方法,用于调整模型同时保持安全性,其中训练是在任务间顺序进行的。该策略首先在安全数据上微调适配器以建立对齐,然后分别适应每个下游任务。

然而,如图 1(c) 所示,持续学习常常导致灾难性遗忘,即对新任务的适应会严重损害先前获得的知识。LoRI 通过特定任务掩码利用矩阵 B 的稀疏性来减轻遗忘。这种跨任务参数更新的隔离促进了干扰最小化的持续学习,同时保持了安全性和任务有效性。

为评估 LoRI 的有效性,作者在涵盖自然语言理解、数学推理、代码生成和安全对齐任务的多种基准上进行了大量实验。

以 Llama-3-8B 和 Mistral-7B 作为基础模型,他们的结果表明,LoRI 达到或超过了全量微调(FFT)、LoRA 和其他 PEFT 方法的性能,同时使用的可训练参数比 LoRA 少 95%。值得注意的是,在使用 Llama-3 的 HumanEval 上,B 中具有 90% 稀疏度的 LoRI 比 LoRA 高出 17.3%。

除单任务适应外,他们还评估了 LoRI 在多任务环境中的表现,包括适配器合并和持续学习场景。LoRI 适配器的串联合并总体上始终优于 LoRA 适配器,与单任务 LoRA 基线的性能非常接近。在持续学习方面,LoRI 在减轻安全对齐的灾难性遗忘方面显著优于 LoRA,同时在下游任务上保持强劲表现。

 论文标题:LoRI: Reducing Cross-Task Interference in Multi-Task LowRank Adaptation

论文链接:https://arxiv.org/pdf/2504.07448

 方法概览

如下图所示,论文中提出的 LoRI 方法主要有以下要点:

LoRI 冻结投影矩阵 A_t,并使用特定任务的掩码稀疏更新 B_t;

LoRI 支持多个特定于任务的适配器合并,减少了参数干扰;

LoRI 通过不断学习和减少灾难性遗忘来建立安全适配器。

在作者推文评论区,有人问这个方法和之前的方法(如 IA3)有何不同。作者回复称,「IA3 和 LoRI 在调整模型参数的方式上有所不同:IA3 学习键/值/FFN 激活的 scaling 向量。可训练参数就是 scaling 向量。LoRI(基于 LoRA)将权重更新分解为低秩矩阵。它将 A 保持冻结,并对 B 应用固定的稀疏性掩码。所以只有 B 的未掩蔽部分被训练。」

实验结果

作者采用 Llama-3-8B 和 Mistral7B 作为基准模型,所有实验均在 8 块 NVIDIA A5000 GPU 上完成。如图 1(a) 所示,LoRI 在矩阵 B 达到 90% 稀疏度时仍能保持强劲性能。为探究稀疏度影响,作者提供了两个 LoRI 变体:使用稠密矩阵 B 的 LoRI-D,以及对矩阵 B 施加 90% 稀疏度的 LoRI-S。

单任务性能

表 1 展示了不同方法在 8 个自然语言理解(NLU)基准测试中的单任务结果,表 2 则报告了不同方法在数学、编程和安全基准上的表现。

全参数微调(FFT)会更新所有模型参数,而 LoRA 和 DoRA 将可训练参数量降至约 1%。LoRI-D 通过冻结矩阵 A 进一步将参数量压缩至 0.5%,LoRI-S 则通过对矩阵 B 施加 90% 稀疏度实现 0.05% 的极致压缩——相比 LoRA 减少 95% 可训练参数。尽管调参量大幅减少,LoRI-D 和 LoRI-S 在 NLU、数学、编程及安全任务上的表现均与 LoRA、DoRA 相当甚至更优。

适配器融合

作者选取 NLU、数学、编程和安全四类异构任务进行 LoRA 与 LoRI 融合研究,该设定比融合同类适配器(如多个 NLU 适配器)更具挑战性。

表 3 呈现了四类任务的融合结果。作者对 LoRI-D 和 LoRI-S 变体分别采用串联融合与线性融合。由于 LoRI 已对矩阵 B 进行稀疏化,基于剪枝的方法(如幅度剪枝、TIES、DARE)不再适用——这些方法会剪枝矩阵 A,导致 AB 矩阵剪枝策略不一致。

如表 3 所示,直接融合 LoRA 会导致性能显著下降(特别是代码生成与安全对齐任务)。虽然剪枝方法(如 DARE、TIES)能提升代码性能,但往往以牺牲其他任务精度为代价。相比之下,LoRI 在所有任务上均表现稳健,其中 LoRI-D 的串联融合方案整体表现最佳,几乎与单任务基线持平,这表明 LoRI 适配器间存在最小干扰。

持续学习

虽然合并适配器能够实现多任务能力,但在需要强大安全保障的场景中,它无法提供稳健的安全对齐。如表 3 所示,通过 LoRA 或 LoRI 合并所能达到的最高安全得分为 86.6。

为了解决这一问题,作者采用了两阶段训练过程:首先,在 Saferpaca 安全对齐数据集上训练安全适配器;然后,将其分别适应到各个下游任务,包括自然语言理解(NLU)、数学和代码。

图 3 展示了这些持续学习实验的结果。LoRA 在安全对齐上表现出严重的灾难性遗忘——尤其是在安全→NLU 实验中——这可能是由于 NLU 训练集较大(约 17 万个样本)所致。在所有方法中,LoRI-S 实现了对安全对齐的最佳保留,甚至优于单任务 LoRI-D。这是因为其 B 矩阵具有 90% 的稀疏性,能够在安全对齐和任务适应之间实现参数更新的隔离。LoRI-D 也表现出一定的抗遗忘能力,得益于其冻结的 A 矩阵。对于任务适应,LoRI-D 通常优于 LoRI-S,因为后者激进的稀疏性限制了其适应能力。

总体而言,LoRI 提供了一种轻量级且有效的方法来构建安全适配器,在支持下游任务适应的同时保持对齐。

详细内容请参见原论文。


 有以下论文写作问题的可以扫下方名片详聊

前沿顶会、期刊论文、综述文献浩如烟海,不知道学习路径,无从下手?

没时间读、不敢读、不愿读、读得少、读不懂、读不下去、读不透彻一篇完整的论文?

CVPR、ICCV、ECCV、ICLR、NeurlPS、AAAI……想发表顶会论文,找不到创新点?

读完论文,仍旧无法用代码复现……

然而,导师时常无法抽出时间指导,想写论文却无人指点…

Lori通信模块通常指基于**LoRa(Long Range)无线通信技术**的模块,广泛应用于低功耗、远距离的物联网(IoT)场景。以下是关于Lori通信模块的详细解析,涵盖其技术特点、应用场景、选型要点及开发注意事项: --- ### **1. Lori模块的核心技术:LoRa** #### **(1) LoRa技术原理** - **调制方式**:采用**Chirp Spread Spectrum(CSS,线性调频扩频)**,通过频率随时间线性变化实现高灵敏度和抗干扰能力。 - **关键参数**: - **扩频因子(SF)**:7~12,值越大传输距离越远,但速率越低(如SF12可达-148dBm灵敏度)。 - **带宽(BW)**:125kHz/250kHz/500kHz,带宽越大速率越高,但灵敏度降低。 - **编码率(CR)**:4/5~4/8,用于前向纠错(FEC)。 - **优势**: - **远距离**:空旷环境下可达15km(城市环境2~5km)。 - **低功耗**:接收电流约10mA,睡眠电流<1μA。 - **高容量**:支持数万节点接入同一网关。 #### **(2) LoRaWAN协议** - **层级架构**: - **终端节点**:Lori模块(Class A/B/C设备)。 - **网关**:接收节点数据并转发至云端。 - **网络服务器**:管理设备入网、数据路由。 - **应用服务器**:处理业务逻辑。 - **设备类型**: - **Class A**:异步通信,节点发送后短暂开启接收窗口(最低功耗)。 - **Class B**:定期开启接收窗口(适用于需要下行控制的场景)。 - **Class C**:持续开启接收窗口(高功耗,适合实时控制)。 --- ### **2. Lori模块的典型型号** #### **(1) 主流厂商及型号** | **厂商** | **典型型号** | **特点** | |----------------|--------------------|--------------------------------------------------------------------------| | **Semtech** | SX1276/SX1278 | 原始LoRa芯片,需外接MCU(如STM32) | | **Microchip** | RN2483/RN2903 | 集成LoRaWAN协议栈,支持AT指令配置(如`AT+JOIN`) | | **RAKwireless**| RAK811/RAK813 | 模块化设计,支持全球频段(EU868/US915/AS923) | | **HopeRF** | RFM95W/RFM96W | 低成本方案,兼容Arduino开发 | | **Laird** | Connectivity 60+ | 工业级设计,支持-40℃~85℃宽温 | #### **(2) 关键参数对比** | **参数** | **SX1278** | **RN2483** | **RAK811** | |------------------|------------|------------|------------| | **频段** | 433/868MHz | 868/915MHz | 全频段 | | **发射功率** | +20dBm | +14dBm | +20dBm | | **接收灵敏度** | -137dBm | -134dBm | -139dBm | | **协议栈** | 需外接MCU | 内置LoRaWAN | 内置LoRaWAN | | **接口** | SPI/UART | UART | UART/SPI | --- ### **3. Lori模块的应用场景** #### **(1) 典型用例** - **智慧农业**:土壤湿度监测、气象站数据回传。 - **智能城市**:智能路灯控制、垃圾桶满溢检测。 - **工业物联网**:设备状态监测、传感器数据采集。 - **物流追踪**:货物位置跟踪、冷链温度监控。 #### **(2) 案例:智能水表远程抄表** - **系统架构**: - **终端**:Lori模块+水表传感器(流量、压力)。 - **网关**:部署在小区楼顶,覆盖半径3km。 - **云端**:存储用水数据,生成账单。 - **优势**: - 电池寿命可达5~10年(每天上报1次)。 - 无需布线,安装成本低。 --- ### **4. 开发流程与代码示例** #### **(1) 硬件连接** - **最小系统**:Lori模块 + MCU(如STM32) + 电源(3.3V)。 - **引脚定义**(以SX1278为例): ``` SX1278 STM32 MOSI PA7 MISO PA6 SCK PA5 NSS PA4 DIO0 PA0 (中断引脚) RESET PA1 ``` #### **(2) 软件配置(基于Arduino)** ```cpp #include <SPI.h> #include <LoRa.h> void setup() { Serial.begin(9600); if (!LoRa.begin(868E6)) { // 初始化LoRa,频段868MHz Serial.println("LoRa init failed!"); while (1); } LoRa.setSpreadingFactor(7); // 设置扩频因子 LoRa.setSignalBandwidth(125E3); // 设置带宽 } void loop() { Serial.print("Sending packet: "); LoRa.beginPacket(); LoRa.print("Hello Lori!"); LoRa.endPacket(); delay(5000); } ``` #### **(3) 接收端代码** ```cpp void setup() { Serial.begin(9600); if (!LoRa.begin(868E6)) { Serial.println("LoRa init failed!"); while (1); } } void loop() { int packetSize = LoRa.parsePacket(); if (packetSize) { Serial.print("Received packet: "); while (LoRa.available()) { Serial.print((char)LoRa.read()); } } } ``` --- ### **5. 常见问题与解决** #### **(1) 通信距离不足** - **原因**: - 天线匹配不良(阻抗不匹配导致反射损耗)。 - 发射功率设置过低。 - 环境干扰(如Wi-Fi、蓝牙同频段)。 - **解决**: - 使用π型匹配网络优化天线阻抗。 - 增加发射功率(需符合当地法规)。 - 切换至干扰较少的频段(如EU868→AS923)。 #### **(2) 数据丢包率高** - **原因**: - 扩频因子(SF)与带宽(BW)配置不当。 - 网关覆盖盲区。 - 节点睡眠时间过长(Class A设备)。 - **解决**: - 调整SF和BW(如SF12+BW125kHz)。 - 增加网关密度或使用中继节点。 - 缩短节点睡眠时间(Class B/C设备)。 #### **(3) 功耗异常** - **原因**: - 模块未进入低功耗模式。 - MCU持续轮询模块状态。 - 频繁唤醒导致平均电流升高。 - **解决**: - 配置模块为睡眠模式(如`LoRa.sleep()`)。 - 使用中断替代轮询。 - 优化上报周期(如从1分钟改为10分钟)。 --- ### **6. 选型建议** #### **(1) 根据场景选择** - **远距离低速率**:选SX1276/SX1278(SF12+BW125kHz)。 - **短距离高速率**:选SX1262(支持20dBm+500kHz带宽)。 - **快速开发**:选RN2483/RAK811(内置协议栈)。 - **低成本**:选RFM95W(兼容Arduino)。 #### **(2) 认证与合规** - **频段合规**:确保模块支持目标市场的频段(如中国470~510MHz)。 - **认证要求**:CE(欧盟)、FCC(美国)、SRRC(中国)。 --- ### **7. 总结** - **Lori模块的核心价值**:LoRa技术实现了**低功耗与远距离的平衡**,适合分散式物联网场景。 - **开发关键点**: - 合理配置扩频因子、带宽和编码率。 - 优化天线设计以提升传输效率。 - 根据应用场景选择Class A/B/C设备类型。 - **未来趋势**: - LoRaWAN与5G的融合(如LPWAN与广域网互补)。 - 边缘计算能力的集成(模块内置MCU处理数据)。 --- ### **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值