ChatGLM Efficient Tuning基于 PEFT 的高效 ChatGLM 微調(diào)
ChatGLM Efficient Tuning 是基于 PEFT 的高效 ChatGLM-6B 微調(diào)。
目前實(shí)現(xiàn)了針對(duì)以下數(shù)據(jù)集的支持:
- Stanford Alpaca
- Stanford Alpaca (Chinese)
- GPT-4 Generated Data
- BELLE 2M
- BELLE 1M
- BELLE 0.5M
- BELLE Dialogue 0.4M
- BELLE School Math 0.25M
- BELLE Multiturn Chat 0.8M
- Guanaco Dataset
- Firefly 1.1M
- CodeAlpaca 20k
- Alpaca CoT
- Web QA (Chinese)
- UltraChat
- WebNovel (Chinese)
使用方法參考 data/README.md 文件。
部分?jǐn)?shù)據(jù)集的使用需要確認(rèn),推薦使用下述命令登錄你的 HuggingFace 賬戶。
pip install --upgrade huggingface_hub huggingface-cli login
微調(diào)方法
目前實(shí)現(xiàn)了針對(duì)以下高效微調(diào)方法的支持:
- LoRA
- 僅微調(diào)低秩適應(yīng)器。
- P-Tuning V2
- 僅微調(diào)前綴編碼器。
- Freeze Tuning
- 僅微調(diào)后幾層的全連接層。
- 全量微調(diào)
- 微調(diào)模型所有參數(shù)。
軟件依賴
- Python 3.8+, PyTorch 1.13.1
- Transformers, Datasets, Accelerate, PEFT, TRL
- protobuf, cpm-kernels, sentencepiece
- jieba, rouge-chinese, nltk(用于評(píng)估)
- gradio, matplotlib(用于網(wǎng)頁端交互)
- uvicorn, fastapi, sse-starlette(用于 API)
以及 強(qiáng)而有力的 GPU!
微調(diào) ChatGLM 的例子
訓(xùn)練結(jié)果
使用整個(gè) alpaca_gpt4_zh 數(shù)據(jù)集微調(diào) ChatGLM 模型,使用秩為 8 的 LoRA 方法,使用默認(rèn)超參數(shù)進(jìn)行單輪訓(xùn)練。下圖為訓(xùn)練損失變化曲線。
評(píng)估結(jié)果
選擇 alpaca_gpt4_zh 數(shù)據(jù)集中的前一百條數(shù)據(jù)來評(píng)估微調(diào)后的 ChatGLM 模型,并計(jì)算 BLEU 和中文 ROUGE 分?jǐn)?shù)。下表為評(píng)估結(jié)果。
| 分?jǐn)?shù) | 原版模型 | FZ (l=2) | PT (p=16) | LoRA (r=8) |
|---|---|---|---|---|
| BLEU-4 | 15.75 | 16.85 | 16.06 | 17.01 (+1.26) |
| Rouge-1 | 34.51 | 36.62 | 34.80 | 36.77 (+2.26) |
| Rouge-2 | 15.11 | 17.04 | 15.32 | 16.83 (+1.72) |
| Rouge-l | 26.18 | 28.17 | 26.35 | 28.86 (+2.68) |
| 訓(xùn)練參數(shù) | / | 4.35% | 0.06% | 0.06% |
FZ:Freeze 微調(diào),PT:P-Tuning V2 微調(diào)(為了與 LoRA 公平比較,我們使用了
pre_seq_len=16),訓(xùn)練參數(shù):可訓(xùn)練參數(shù)占全部參數(shù)的百分比。
評(píng)論
圖片
表情
