比较 RoBERTa、Llama 2 和 Mistral 在灾难推文分类中的 LoRA 应用
本研究使用低秩适应(LoRA)比较了 RoBERTa、Llama 2 和 Mistral 7B 在灾难推文分类任务上的性能。结果表明,较小的 RoBERTa 模型在准确率(F1 分数)和效率方面均优于较大的 7B 参数模型,这表明对于简单的短序列二分类任务,巨大的 LLMs 可能不是必需的。
比较性能结果
在三个测试模型中,RoBERTa 实现了最高的 F1 分数和最低的资源消耗。Llama 2 的表现优于 Mistral 7B,但两者相比 RoBERTa 都显著较慢且更耗内存。
| 模型 | F1 分数 | 训练时间 | 内存消耗 | 可训练参数比例 |
|---|---|---|---|---|
| RoBERTa | 0.8077 | 538 秒 | GPU1: 9.1 Gb / GPU2: 8.3 Gb | 0.64% |
| Llama 2 | 0.7638 | 2052 秒 | GPU1: 35 Gb / GPU2: 33.9 Gb | 0.12% |
| Mistral 7B | 0.7364 | 2030 秒 | GPU1: 29.6 Gb / GPU2: 29.5 Gb | 0.024% |
技术实施与方法论
评估了三种不同的架构,以确定模型规模和类型对分类性能的影响:
- RoBERTa (Large): 一个仅含编码器的 Transformer 模型,参数量为 355M,用作基线。
- Llama 2 (7B): 一个具有 SwiGLU 激活和旋转位置嵌入的自回归解码器模型。
- Mistral 7B (v0.1): 一个利用滑动窗口注意力和分组查询注意力的解码器模型,以优化推理并处理更长的序列。
LoRA 微调
低秩适应(LoRA)通过学习低秩更新矩阵来减少可训练参数的数量,同时保持预训练权重冻结。这种参数高效微调(PEFT)方法被应用于编码器和解码器架构。
对于解码器模型(Llama 2 和 Mistral 7B),LoRA 特别针对 q_proj 和 v_proj 模块。由此产生的可训练参数百分比极低:Mistral 7B 为 0.024%,Llama 2 为 0.12%。
数据集与预处理
模型在 mehdiiraqui/twitter_disaster 数据集上进行训练。为确保公平比较,所有模型的最大序列长度 (MAX_LEN) 被设置为 512,受 RoBERTa 的限制。
由于数据集中正负类别的分布不均衡,实现了自定义的 WeightedCELossTrainer。该训练器重写了 compute_loss 方法以应用加权交叉熵损失,使用计算得到的权重(正类:1.1637,负类:0.8767)以防止模型偏向多数类。
硬件与训练配置
训练在单个节点上进行,配备一块 A6000 GPU(48GB 内存)。
由于 Mistral 7B 和 Llama 2 的模型大小,需要半精度训练 (fp16=True) 才能将模型放入 GPU 内存,而 RoBERTa 则未使用半精度进行训练。两个 7B 模型均使用了梯度检查点来进一步管理内存使用。
关键要点
- 模型规模 vs. 任务复杂度: 对于涉及短序列的简单预测任务,像 RoBERTa 这样的小型基础模型仍然具有高竞争力,并且通常优于更大的 LLMs。
- 效率提升: RoBERTa 的训练速度大约是 7B 模型的 3.8 倍,同时内存消耗显著降低。
- LoRA 的多功能性: 该研究证实 LoRA 在编码器仅和解码器仅的 Transformer 架构上的序列分类任务中是有效的。