ChatGLM Efficient Tuning基于 PEFT 的高效 ChatGLM 微调
ChatGLM Efficient Tuning 是基于 PEFT 的高效 ChatGLM-6B 微调。
目前实现了针对以下数据集的支持:
- 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 文件。
部分数据集的使用需要确认,推荐使用下述命令登录你的 HuggingFace 账户。
pip install --upgrade huggingface_hub huggingface-cli login
微调方法
目前实现了针对以下高效微调方法的支持:
- LoRA
- 仅微调低秩适应器。
- P-Tuning V2
- 仅微调前缀编码器。
- Freeze Tuning
- 仅微调后几层的全连接层。
- 全量微调
- 微调模型所有参数。
软件依赖
- Python 3.8+, PyTorch 1.13.1
- Transformers, Datasets, Accelerate, PEFT, TRL
- protobuf, cpm-kernels, sentencepiece
- jieba, rouge-chinese, nltk(用于评估)
- gradio, matplotlib(用于网页端交互)
- uvicorn, fastapi, sse-starlette(用于 API)
以及 强而有力的 GPU!
微调 ChatGLM 的例子
训练结果
使用整个 alpaca_gpt4_zh
数据集微调 ChatGLM 模型,使用秩为 8 的 LoRA 方法,使用默认超参数进行单轮训练。下图为训练损失变化曲线。
评估结果
选择 alpaca_gpt4_zh
数据集中的前一百条数据来评估微调后的 ChatGLM 模型,并计算 BLEU 和中文 ROUGE 分数。下表为评估结果。
分数 | 原版模型 | 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) |
训练参数 | / | 4.35% | 0.06% | 0.06% |
FZ:Freeze 微调,PT:P-Tuning V2 微调(为了与 LoRA 公平比较,我们使用了
pre_seq_len=16
),训练参数:可训练参数占全部参数的百分比。
评论