ChatGLM Efficient Tuning基于 PEFT 的高效 ChatGLM 微调

联合创作 · 2023-09-25 23:54

ChatGLM Efficient Tuning 是基于 PEFT 的高效 ChatGLM-6B 微调。

目前实现了针对以下数据集的支持:

使用方法参考 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),训练参数:可训练参数占全部参数的百分比。

浏览 13
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报