[THUDM/ChatGLM-6B][Help] <请问p-tuning 和 p-tuning V2 仅仅只修改prefix_projection 参数>吗

2024-05-13 744 views
5

原code的ptuning里的train.sh脚本里没有加入prefix_projection参数,这样默认是通过p-tuning训练吗? 我尝试增加参数 --prefix_projection True 但是出现训练报错 显存不够?batch缩到很小也不行。

报错:显示显存不足。 但是我看示例代码的train.sh里面也没有写prefix_projection这个参数,而model默认是false。难道默认是用的ptuning方法吗?而不是ptuningV2?

Environment
- OS:ubuntu
- Python:3.9

回答

0

源代码通过是否设置pre_seq_len参数,来决定是否打开ptuning v2。 代码里是用的ptuning v2,在modeling_chatglm.py 852行开始。

8

@echoht 请问那如果使用 p-tuning 如何设置呢? 我看paper里面 ptuning embedding 也有 soft-prompt 吗

4

@echoht 请问那如果使用 p-tuning 如何设置呢? 我看paper里面 ptuning embedding 也有 soft-prompt 吗

可以自己试试改代码,我这边没有尝试。

5

@echoht 感谢感谢 我试试

9

这种训练模式好像不如lora

3

设置pre_seq_len会自动打开p-tuning v2[1],若pre_seq_len=64,可训练参数约0.237%;设置prefix_projection=True,会打开prefix-tuning[2],若pre_seq_len=64,可训练参数约13.419%。 prefix-tuning和p-tuning v2类似,prefix-tuning用MLP对前缀进行了编码,因此参数量增加,同时显存使用量也增加了。具体代码在modeling_chatglm.py 146行。 开启prefix_projection对模型性能影响有多大,如果有小伙伴测试过了也可以告知一下~

[1] P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks [2] Prefix-Tuning: Optimizing Continuous Prompts for Generation