0、簡述
使用本文中概述的高效參數微調方法,可以在 1 小時内在單個 GPU 上微調開源 LLM(如 Falcon),而不是在 6 個 GPU 上需要一天。
網絡配圖
1、開源 LLM 和 Falcon 架構
由Technology Innovation Institute開發的 Falcon 模型是目前表現最好的開源 LLM。(參考OpenLLM排行榜)
PS:Falcon 模型是完全開源的,并且是在Apache 2.0 版許可證下釋出的,該許可證允許不受限制的商業用途。
來自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 提供了高效的實作。
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所花費的時間和記憶體:
5、結論
所有層的傳統微調需要 9 個小時,并且至少需要 6 個 A100 GPU,每個 40 GB RAM,而本文重點介紹的參數高效微調方法可以在單個 GPU 上以 9 倍的速度微調同一模型,需要的 GPU 減少 15 倍RAM。
有興趣的同學可檢視開源Lit-Parrot庫(參考:https://github.com/Lightning-AI/lit-parrot)。