ChatGLM2-6B icon indicating copy to clipboard operation
ChatGLM2-6B copied to clipboard

[Help] 如何进行ptuning训练

Open kuziTony opened this issue 1 year ago • 34 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Current Behavior

训练后报错,AttributeError: 'ChatGLMModel' object has no attribute 'prefix_encoder'

Expected Behavior

No response

Steps To Reproduce

运行chatglm之前版本的ptuning来进行训练,修改了基底模型

Environment

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

Anything else?

No response

kuziTony avatar Jun 26 '23 15:06 kuziTony

我也遇到跟你一样的问题 请问你解决了吗?

EvanSong77 avatar Jun 27 '23 07:06 EvanSong77

我也遇到这个问题

DuBaiSheng avatar Jun 27 '23 08:06 DuBaiSheng

还没解决,感觉这个需要等待大佬们投喂了

kuziTony avatar Jun 27 '23 08:06 kuziTony

坐等更新

chelun86 avatar Jun 27 '23 09:06 chelun86

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

Mou-Mou-L avatar Jun 27 '23 10:06 Mou-Mou-L

解决了吗?

robblecrunch avatar Jun 27 '23 15:06 robblecrunch

解决了吗?

没有

Mou-Mou-L avatar Jun 28 '23 00:06 Mou-Mou-L

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

同样问题 解决了吗

lilulu0702 avatar Jun 28 '23 00:06 lilulu0702

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

同样问题 解决了吗

没 坐等大佬们更新

Mou-Mou-L avatar Jun 28 '23 01:06 Mou-Mou-L

坐等大佬开放

Htring avatar Jun 28 '23 02:06 Htring

image 同问。

dangzheng0430 avatar Jun 28 '23 02:06 dangzheng0430

same error

js-lan avatar Jun 28 '23 03:06 js-lan

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

在ChatGLM-6b 1代里面这个报错可能是因为微调完推理的时候config里面没有定义pre_seq_len。

但是你确定ptuning可以直接用在2里面吗,modeling_glm.py没有定义self.prefix_encoder,所以这个错误是必然会报的。

shimudong avatar Jun 28 '23 07:06 shimudong

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

在ChatGLM-6b 1代里面这个报错可能是因为微调完推理的时候config里面没有定义pre_seq_len。

但是你确定ptuning可以直接用在2里面吗,modeling_glm.py没有定义self.prefix_encoder,所以这个错误是必然会报的。

好吧 ,谢谢大佬解答,我以为2会兼容一的方式进行微调。想测试他的微调效果。 那大佬你们都用什么方法进行微调的呢 本地两张3060(12G) 。

Mou-Mou-L avatar Jun 28 '23 07:06 Mou-Mou-L

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

在ChatGLM-6b 1代里面这个报错可能是因为微调完推理的时候config里面没有定义pre_seq_len。

但是你确定ptuning可以直接用在2里面吗,modeling_glm.py没有定义self.prefix_encoder,所以这个错误是必然会报的。

是的 我当时也是找了一圈 发现不知道用什么替代 只能等大佬更新 新的调试方法了

kuziTony avatar Jun 28 '23 16:06 kuziTony

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

在ChatGLM-6b 1代里面这个报错可能是因为微调完推理的时候config里面没有定义pre_seq_len。 但是你确定ptuning可以直接用在2里面吗,modeling_glm.py没有定义self.prefix_encoder,所以这个错误是必然会报的。

好吧 ,谢谢大佬解答,我以为2会兼容一的方式进行微调。想测试他的微调效果。 那大佬你们都用什么方法进行微调的呢 本地两张3060(12G) 。

你可以等等官方代码,我刚看huggingface上已经把modelling_glm的prefix_encoder更新了,估计很快就会把ptuning的代码push上来了吧。

shimudong avatar Jun 29 '23 11:06 shimudong

模型更新了

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

在ChatGLM-6b 1代里面这个报错可能是因为微调完推理的时候config里面没有定义pre_seq_len。 但是你确定ptuning可以直接用在2里面吗,modeling_glm.py没有定义self.prefix_encoder,所以这个错误是必然会报的。

好吧 ,谢谢大佬解答,我以为2会兼容一的方式进行微调。想测试他的微调效果。 那大佬你们都用什么方法进行微调的呢 本地两张3060(12G) 。

你可以等等官方代码,我刚看huggingface上已经把modelling_glm的prefix_encoder更新了,估计很快就会把ptuning的代码push上来了吧。

模型更新了 不报 prefix_encoder 的错误了 出了新的错误 image

Mou-Mou-L avatar Jul 01 '23 00:07 Mou-Mou-L

模型更新了

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

在ChatGLM-6b 1代里面这个报错可能是因为微调完推理的时候config里面没有定义pre_seq_len。 但是你确定ptuning可以直接用在2里面吗,modeling_glm.py没有定义self.prefix_encoder,所以这个错误是必然会报的。

好吧 ,谢谢大佬解答,我以为2会兼容一的方式进行微调。想测试他的微调效果。 那大佬你们都用什么方法进行微调的呢 本地两张3060(12G) 。

你可以等等官方代码,我刚看huggingface上已经把modelling_glm的prefix_encoder更新了,估计很快就会把ptuning的代码push上来了吧。

模型更新了 不报 prefix_encoder 的错误了 出了新的错误 image

我也遇到了相同的问题,可以改一下preprocess的方法

zhangatao avatar Jul 01 '23 07:07 zhangatao

模型更新了

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

在ChatGLM-6b 1代里面这个报错可能是因为微调完推理的时候config里面没有定义pre_seq_len。 但是你确定ptuning可以直接用在2里面吗,modeling_glm.py没有定义self.prefix_encoder,所以这个错误是必然会报的。

好吧 ,谢谢大佬解答,我以为2会兼容一的方式进行微调。想测试他的微调效果。 那大佬你们都用什么方法进行微调的呢 本地两张3060(12G) 。

你可以等等官方代码,我刚看huggingface上已经把modelling_glm的prefix_encoder更新了,估计很快就会把ptuning的代码push上来了吧。

模型更新了 不报 prefix_encoder 的错误了 出了新的错误 image

我也遇到了相同的问题,可以改一下preprocess的方法

大佬解决了么 方便私聊么 qq1241329431

Mou-Mou-L avatar Jul 01 '23 07:07 Mou-Mou-L

模型更新了

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

在ChatGLM-6b 1代里面这个报错可能是因为微调完推理的时候config里面没有定义pre_seq_len。 但是你确定ptuning可以直接用在2里面吗,modeling_glm.py没有定义self.prefix_encoder,所以这个错误是必然会报的。

好吧 ,谢谢大佬解答,我以为2会兼容一的方式进行微调。想测试他的微调效果。 那大佬你们都用什么方法进行微调的呢 本地两张3060(12G) 。

你可以等等官方代码,我刚看huggingface上已经把modelling_glm的prefix_encoder更新了,估计很快就会把ptuning的代码push上来了吧。

模型更新了 不报 prefix_encoder 的错误了 出了新的错误 image

我也遇到了相同的问题,可以改一下preprocess的方法

求修改方式这个咋个改好的?

kuziTony avatar Jul 03 '23 07:07 kuziTony

模型更新了

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

在ChatGLM-6b 1代里面这个报错可能是因为微调完推理的时候config里面没有定义pre_seq_len。 但是你确定ptuning可以直接用在2里面吗,modeling_glm.py没有定义self.prefix_encoder,所以这个错误是必然会报的。

好吧 ,谢谢大佬解答,我以为2会兼容一的方式进行微调。想测试他的微调效果。 那大佬你们都用什么方法进行微调的呢 本地两张3060(12G) 。

你可以等等官方代码,我刚看huggingface上已经把modelling_glm的prefix_encoder更新了,估计很快就会把ptuning的代码push上来了吧。

模型更新了 不报 prefix_encoder 的错误了 出了新的错误 image

我也遇到了相同的问题,可以改一下preprocess的方法

请问修改之后,模型预测的效果怎么样呀?我改了之后,输出都是空了。

luxuriance19 avatar Jul 03 '23 09:07 luxuriance19

模型更新了

按照chatglm-6b的方式ptuning微调 报错了 ChatGLMModel' object has no attribute 'prefix_encoder'

在ChatGLM-6b 1代里面这个报错可能是因为微调完推理的时候config里面没有定义pre_seq_len。 但是你确定ptuning可以直接用在2里面吗,modeling_glm.py没有定义self.prefix_encoder,所以这个错误是必然会报的。

好吧 ,谢谢大佬解答,我以为2会兼容一的方式进行微调。想测试他的微调效果。 那大佬你们都用什么方法进行微调的呢 本地两张3060(12G) 。

你可以等等官方代码,我刚看huggingface上已经把modelling_glm的prefix_encoder更新了,估计很快就会把ptuning的代码push上来了吧。

模型更新了 不报 prefix_encoder 的错误了 出了新的错误 image

我也遇到了相同的问题,可以改一下preprocess的方法

请问修改之后,模型预测的效果怎么样呀?我改了之后,输出都是空了。

改preprocess_function_train就行

qingyujean avatar Jul 03 '23 12:07 qingyujean

preprocess_function_train

改preprocess_function_train就行 ` """ 为了适配ChatGLM1 context_length = input_ids.index(tokenizer.bos_token_id) mask_position = context_length - 1 labels = [-100] * context_length + input_ids[mask_position+1:] """

为了适配ChatGLM2,讲上面的代码改为下面的: context_length = len(input_ids) - len(b_ids) mask_position = context_length labels = [-100] * context_length + input_ids[mask_position:] `

qingyujean avatar Jul 03 '23 12:07 qingyujean

又出现另外一个问题了。 RuntimeError: Default process group has not been initialized, please make sure to call init_process_group.

opooopooo avatar Jul 04 '23 01:07 opooopooo

我可以了。

robblecrunch avatar Jul 04 '23 01:07 robblecrunch

preprocess_function_train

改preprocess_function_train就行 ` """ 为了适配ChatGLM1 context_length = input_ids.index(tokenizer.bos_token_id) mask_position = context_length - 1 labels = [-100] * context_length + input_ids[mask_position+1:] """

为了适配ChatGLM2,讲上面的代码改为下面的: context_length = len(input_ids) - len(b_ids) mask_position = context_length labels = [-100] * context_length + input_ids[mask_position:] `

感谢大佬,我也可以了

Mou-Mou-L avatar Jul 04 '23 01:07 Mou-Mou-L

preprocess_function_train

改preprocess_function_train就行 ` """ 为了适配ChatGLM1 context_length = input_ids.index(tokenizer.bos_token_id) mask_position = context_length - 1 labels = [-100] * context_length + input_ids[mask_position+1:] """

为了适配ChatGLM2,讲上面的代码改为下面的: context_length = len(input_ids) - len(b_ids) mask_position = context_length labels = [-100] * context_length + input_ids[mask_position:] `

这样改会不会有点问题,chatglm2的build_inputs_with_special_tokens和chatglm的方式有点不一样: chatglm2 [gmask, sop] + a_ids + b_ids + [eos] chatglm a_ids + [gmask, bos] + b_ids + [eos]

这样改前面的a_ids, b_ids的部分是有变更嘛?请问你自己训练在现在的任务上效果怎么样呀?

luxuriance19 avatar Jul 04 '23 02:07 luxuriance19

preprocess_function_train

改preprocess_function_train就行 """ 为了适配ChatGLM1 context_length = input_ids.index(tokenizer.bos_token_id) mask_position = context_length - 1 labels = [-100] * context_length + input_ids[mask_position+1:] """ 为了适配ChatGLM2,讲上面的代码改为下面的: context_length = len(input_ids) - len(b_ids) mask_position = context_length labels = [-100] * context_length + input_ids[mask_position:]

这样改会不会有点问题,chatglm2的build_inputs_with_special_tokens和chatglm的方式有点不一样: chatglm2 [gmask, sop] + a_ids + b_ids + [eos] chatglm a_ids + [gmask, bos] + b_ids + [eos]

这样改前面的a_ids, b_ids的部分是有变更嘛?请问你自己训练在现在的任务上效果怎么样呀? image 就这么点数据训练了600步 image 推理基本没改变 不知道是不是模型太强大的原因

image

Mou-Mou-L avatar Jul 04 '23 02:07 Mou-Mou-L

chatglm1按照这个方法https://github.com/THUDM/ChatGLM2-6B/issues/53#issuecomment-1619394916微调 问答的效果很好

Mou-Mou-L avatar Jul 04 '23 02:07 Mou-Mou-L

preprocess_function_train

改preprocess_function_train就行 """ 为了适配ChatGLM1 context_length = input_ids.index(tokenizer.bos_token_id) mask_position = context_length - 1 labels = [-100] * context_length + input_ids[mask_position+1:] """ 为了适配ChatGLM2,讲上面的代码改为下面的: context_length = len(input_ids) - len(b_ids) mask_position = context_length labels = [-100] * context_length + input_ids[mask_position:]

这样改会不会有点问题,chatglm2的build_inputs_with_special_tokens和chatglm的方式有点不一样: chatglm2 [gmask, sop] + a_ids + b_ids + [eos] chatglm a_ids + [gmask, bos] + b_ids + [eos]

这样改前面的a_ids, b_ids的部分是有变更嘛?请问你自己训练在现在的任务上效果怎么样呀?

就是看了build_inputs_with_special_tokens的代码才这么改的

qingyujean avatar Jul 04 '23 03:07 qingyujean