[THUDM/ChatGLM-6B][BUG/Help] <p-tuning v2微调>

2024-06-12 132 views
6

看代码似乎默认是不开启prefix_projection,我在我的数据集上微调发现不开启prefix_projection的情况损失一直震荡不收敛,开启prefix_projection能收敛,但训练参数量比例从0.5%升到14%。这种情况正常吗?

见主要描述

Environment
- OS:
- Python:
- Transformers:
- PyTorch:
- CUDA Support (`python -c "import torch; print(torch.cuda.is_available())"`) :

回答

9

怎么检测到参数量的变化,在最新代码中,不开启prefix_projection在我的数据集上可以收敛,但是对模型的其他能力的破坏比较严重。

2

同问,如何输出可训练参数量

7

@feyxong @T-Atlas 直接根据prefix encoder源码算或者打印requires_grad=False的数目都行。

9

我发现在我的数据集上开了反而收敛不了,损失下降了一会儿就快速上升,不知道是不是学习率的问题

5

projection应该只是prefix_token到qkv的过程中有没有多的一层映射,和是不是v2没有关系。

6

我分别设置prefix_projection为True和False,得到与prefix_encoder相关的parameter:

prefix_projection = False时: transformer.prefix_encoder.embedding.weight

prefix_projection = True时: transformer.prefix_encoder.embedding.weight transformer.prefix_encoder.trans.0.weight transformer.prefix_encoder.trans.0.bias transformer.prefix_encoder.trans.2.weight transformer.prefix_encoder.trans.2.bias

按照定义,应该是prefix_projection=True才是PT-v2,而默认prefix_projection=False

5

image