天天看點

使用LoRA和Adapter更有效地微調Falcon LLM

作者:一本正經的網際網路八卦

0、簡述

使用本文中概述的高效參數微調方法,可以在 1 小時内在單個 GPU 上微調開源 LLM(如 Falcon),而不是在 6 個 GPU 上需要一天。

使用LoRA和Adapter更有效地微調Falcon LLM

網絡配圖

1、開源 LLM 和 Falcon 架構

由Technology Innovation Institute開發的 Falcon 模型是目前表現最好的開源 LLM。(參考OpenLLM排行榜)

PS:Falcon 模型是完全開源的,并且是在Apache 2.0 版許可證下釋出的,該許可證允許不受限制的商業用途。

使用LoRA和Adapter更有效地微調Falcon LLM

來自OpenLLM

Falcon 架構與 GPT-3 和 LLaMA 非常相似(參考:falcon-40b。導緻 Falcon 表現出色的關鍵差異化因素可能歸因于其訓練資料集。

雖然 Falcon 的官方論文尚未釋出,但相關論文The RefinedWeb Dataset for Falcon LLM: Outperforming Curated Corpora with Web Data, and Web Data Only提供了證據表明,精選的網絡資料可能是成功的關鍵(參考:https://arxiv.org/abs/2306.01116)。

2、參數有效的微調方法

本文的其餘部分将主要關注 Falcon 7B,它允許我們在單個 GPU 上微調模型。

有許多參數有效的微調範例,如:Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning(參考:https://arxiv.org/abs/2303.15647)

我們考慮的三種方法是:

低秩适應 (LoRA)(Hu et al. 2021);

LLaMA 擴充卡 ( Zhang et al. 2023 );

LLaMA-Adapter v2(Gao 等人,2023 年)。

3、準備模型和資料集

對于上面的基準測試,我們将使用Lit-Parrot開源庫(參考:https://github.com/Lightning-AI/lit-parrot)它為訓練和使用各種 LLM 提供了高效的實作。

使用LoRA和Adapter更有效地微調Falcon LLM

Lit-Parrot

1)第一步:下載下傳模型

python scripts/download.py --repo_id tiiuae/falcon-7b

2)第二步:将權重轉換為标準化形式

python scripts/convert_hf_checkpoint.py --checkpoint_dir checkpoints/tiiuae/falcon-7b

3)第三步:下載下傳資料集。對于這個例子,我們将使用由 52k 指令對組成的羊駝資料集(https://github.com/gururise/AlpacaDataCleaned):

python scripts/prepare_alpaca.py --checkpoint_dir checkpoints/tiiuae/falcon-7b/

至此,準備工作完畢,下一步運作代碼。

4、運作代碼

1)Adapter

python finetune/adapter.py --checkpoint_dir checkpoints/tiiuae/falcon-7b/

2)Adapter v2

python finetune/adapter_v2.py --checkpoint_dir checkpoints/tiiuae/falcon-7b/

3)LoRA

python finetune/lora.py --checkpoint_dir checkpoints/tiiuae/falcon-7b/

微調LLM所花費的時間和記憶體:

使用LoRA和Adapter更有效地微調Falcon LLM

5、結論

所有層的傳統微調需要 9 個小時,并且至少需要 6 個 A100 GPU,每個 40 GB RAM,而本文重點介紹的參數高效微調方法可以在單個 GPU 上以 9 倍的速度微調同一模型,需要的 GPU 減少 15 倍RAM。

有興趣的同學可檢視開源Lit-Parrot庫(參考:https://github.com/Lightning-AI/lit-parrot)。

繼續閱讀