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

关于如何做微调的一些疑问

Open piekey1994 opened this issue 1 year ago • 6 comments

这份代码的tokenizer和之前glm的tokenizer代码似乎不太一样,特别是没有build_inputs_for_generation这个函数,请问forward的时候input_ids和position_ids的构造方式和以前是一样的吗。以前似乎原文中必须包含mask,现在这个代码,我看generate函数的输入好像没有要求要有mask_token

piekey1994 avatar Mar 15 '23 11:03 piekey1994

我感觉它主要是测试的代码,不需要生成mask,就没加,训练应该还是需要的吧。官方能解答不

huangtao36 avatar Mar 16 '23 03:03 huangtao36

MASK 应该是用来做 few-shot 式 prompt 训练的,对话模型应该不需要。

OedoSoldier avatar Mar 16 '23 06:03 OedoSoldier

这个模型训练支持只微调部分参数吗?还是必须得所有参数全部微调?

foreverxujiahuan avatar Mar 16 '23 08:03 foreverxujiahuan

我这边也有这个问题。 现在我处理数据是参照之前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]]

zhangzuizui avatar Mar 16 '23 08:03 zhangzuizui

我这边也有这个问题。 现在我处理数据是参照之前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 上讨论一下?

siriusctrl avatar Mar 16 '23 12:03 siriusctrl

https://github.com/thinksoso/ChatGLM-Instruct-Tuning/blob/65a22d249de595b758434803340a6a934faeb7f2/chat_dataset.py#L49 目前是这样处理的,没用GLM的MASK训练方式

thinksoso avatar Mar 25 '23 07:03 thinksoso

已经实现了https://github.com/THUDM/ChatGLM-6B/tree/main/ptuning

duzx16 avatar Mar 31 '23 03:03 duzx16

我这边也有这个问题。 现在我处理数据是参照之前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生成输入,输入到模型还报错..

o-github-o avatar Jun 06 '23 11:06 o-github-o

ation生成

你好,请问attention_mask为啥是seq*seq,每次只用生成一个token然后拼接上去,继续自回归吗?为啥要搞这么多attention_mask。我一开始以为只有训练的时候attention_mask会这样,这样每一次预测任务query+target1 = target2,query + target1 +target2 = target3... 这种类型

dddddjcole avatar Jun 19 '23 07:06 dddddjcole