比較 RoBERTa、Llama 2 與 Mistral 在災難推文分類上的 LoRA
此研究使用低秩適應 (LoRA) 比較 RoBERTa、Llama 2 和 Mistral 7B 在災難推文分類任務上的表現。結果顯示,較小的 RoBERTa 模型在準確度(F1 分數)和效率方面均優於較大的 7B 參數模型,這表明對於簡單的短序列二元分類任務,巨大的 LLM 可能不是必需的。
比較效能結果
在三個測試模型中,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 這樣的小型基礎模型仍然具有高競爭力,且常常優於更大的 LLM。
- 效能提升: RoBERTa 的訓練速度約為 7B 模型的 3.8 倍,同時使用顯著較少的記憶體。
- LoRA 的多樣性: 該研究證實 LoRA 在編碼器專用和解碼器專用的 Transformer 架構上對序列分類均有效。