大模型上下文长度的超强扩展:从LongLoRA到LongQLoRA(含源码剖析)

💡 原文中文,约6000字,阅读约需15分钟。
📝

内容提要

本文介绍了LongLora和LongQLora两种长文本处理技术,分别通过稀疏局部注意力和低秩矩阵自注意力机制来扩展模型上下文和减少可训练参数数量。这些技术在长文本处理方面表现出良好效果。

🔎

延伸解读

LongLoRA 的核心思路:稀疏局部注意力替代全局注意力

LongLoRA 提出用移位稀疏注意力(S2-Attn)替代标准自注意力,将长上下文分组计算注意力,并通过移位让相邻组信息流动。这样在微调时能显著节省计算资源,且性能接近使用 vanilla 注意力微调。文章指出,推理时仍需密集全局注意力,但微调阶段用稀疏局部注意力即可高效扩展上下文。

LoRA 在长上下文扩展中的局限与改进

常规 LoRA 只作用于注意力权重(Wq、Wk、Wv、Wo),冻结 MLP 和归一化层。但文章指出,单纯低秩自适应会导致长上下文困惑度(PPL)很高,即使增大秩到 256 也无法缓解。LongLoRA 发现将 LoRA 加到 embedding 矩阵和归一化层上,PPL 可显著降低,效果更好。

S2-Attn 如何实现组间信息流动

S2-Attn 先将特征沿头维度分成两半,其中一半的 token 移位半个组大小,再分组计算注意力。这样不同组之间通过移位产生信息交互,类似 Swin Transformer 的窗口移位。文章解释,移位可能引入信息泄漏,但可通过微调注意力掩码避免。

LongAlpaca 数据集与当前内容状态

LongLoRA 团队还发布了 LongAlpaca 长指令遵循数据集,用于监督微调。文章提到在 LLaMA 13B 上应用 LongLoRA 即得到 LongAlpaca-13B。不过,文章第二部分 LongQLoRA 内容标注为“待更”,目前尚未展开,读者需留意后续更新。

❓

Q&A

LongLoRA 是什么?它主要解决什么问题?

LongLoRA 是港中文和 MIT 研究者于 2023 年 9 月提出的一种高效微调长上下文大语言模型的方法。它通过稀疏局部注意力(如 S2-Attn)替代密集全局注意力,在显著节省计算资源的同时扩展模型上下文长度,并保持与标准注意力微调相似的性能。

LongLoRA 中的 S2-Attn 是如何工作的?

S2-Attn 将上下文长度分成若干组,每组内单独计算注意力;同时将注意力头分成两半,其中一半的 token 按半组大小移位,确保相邻组间信息流动。这样既降低了计算复杂度,又通过移位让组外信息有机会交互。

为什么 LongLoRA 要把 LoRA 加到 embedding 和归一化层?

常规 LoRA 只作用于注意力权重(Wq、Wk、Wv、Wo),但单纯的低秩自适应会导致长上下文扩展时困惑度(PPL)很高,即使增大秩也无法缓解。将 LoRA 也应用到 embedding 矩阵和归一化层后,PPL 可以显著降低,效果更好。

LongLoRA 相比标准注意力微调有哪些优势?

LongLoRA 使用稀疏局部注意力(S2-Attn)替代密集全局注意力,大幅节省计算资源,同时保持与标准注意力微调相似的性能;它保留原始架构,兼容 Flash-Attention2 等现有技术,并且通过改进 LoRA 应用位置降低了长上下文困惑度。

LongAlpaca 是什么?它与 LongLoRA 有什么关系?

LongAlpaca 是使用 LongLoRA 技术构建的长指令遵循数据集,用于监督微调。例如在 LLaMA 13B 上应用 LongLoRA 技术便得到 LongAlpaca-13B 模型。

LongQLoRA 在文章中介绍了哪些内容?

文章对 LongQLoRA 部分仅标注“待更”,未展开具体介绍,因此无法提供其详细技术内容。

🏷️

标签

➡️

继续阅读