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


浏览 33
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

编辑 分享
举报