ChatGLM-6B
ChatGLM-6B copied to clipboard
关于如何做微调的一些疑问
这份代码的tokenizer和之前glm的tokenizer代码似乎不太一样,特别是没有build_inputs_for_generation这个函数,请问forward的时候input_ids和position_ids的构造方式和以前是一样的吗。以前似乎原文中必须包含mask,现在这个代码,我看generate函数的输入好像没有要求要有mask_token
我感觉它主要是测试的代码,不需要生成mask,就没加,训练应该还是需要的吧。官方能解答不
MASK 应该是用来做 few-shot 式 prompt 训练的,对话模型应该不需要。
这个模型训练支持只微调部分参数吗?还是必须得所有参数全部微调?
我这边也有这个问题。 现在我处理数据是参照之前glm的方法,构造成下面的形式,但finetune后的结果不及预期,希望能有哪位同学来帮忙答疑一下
input tokens: token1 token2 target tokens: token3 token4
input_ids: [token1, token2, gMASK_token, eos_token, token3, token4]
labels: [-100, -100, -100, -100, token3, token4]
position_ids: [[0, 1, 2, 3, 2, 2], [0, 0, 0, 0, 1, 2]]
attention_mask(bool矩阵,对应源码267行): [[0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]]
我这边也有这个问题。 现在我处理数据是参照之前glm的方法,构造成下面的形式,但finetune后的结果不及预期,希望能有哪位同学来帮忙答疑一下
input tokens: token1 token2 target tokens: token3 token4
input_ids: [token1, token2, gMASK_token, eos_token, token3, token4]
labels: [-100, -100, -100, -100, token3, token4]
position_ids: [[0, 1, 2, 3, 2, 2], [0, 0, 0, 0, 1, 2]]
attention_mask(bool矩阵,对应源码267行): [[0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]]
我也在这个模型的 finetune,也许可以把 finetune 代码放到 github 上讨论一下?
https://github.com/thinksoso/ChatGLM-Instruct-Tuning/blob/65a22d249de595b758434803340a6a934faeb7f2/chat_dataset.py#L49 目前是这样处理的,没用GLM的MASK训练方式
已经实现了https://github.com/THUDM/ChatGLM-6B/tree/main/ptuning
我这边也有这个问题。 现在我处理数据是参照之前glm的方法,构造成下面的形式,但finetune后的结果不及预期,希望能有哪位同学来帮忙答疑一下 input tokens: token1 token2 target tokens: token3 token4 input_ids: [token1, token2, gMASK_token, eos_token, token3, token4] labels: [-100, -100, -100, -100, token3, token4] position_ids: [[0, 1, 2, 3, 2, 2], [0, 0, 0, 0, 1, 2]] attention_mask(bool矩阵,对应源码267行): [[0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]]
我也在这个模型的 finetune,也许可以把 finetune 代码放到 github 上讨论一下?
用GLM模型finetune,数据处理的格式是怎样的,build_inputs_for_generation生成输入,输入到模型还报错..
ation生成
你好,请问attention_mask为啥是seq*seq,每次只用生成一个token然后拼接上去,继续自回归吗?为啥要搞这么多attention_mask。我一开始以为只有训练的时候attention_mask会这样,这样每一次预测任务query+target1 = target2,query + target1 +target2 = target3... 这种类型