ChatGLM3 icon indicating copy to clipboard operation
ChatGLM3 copied to clipboard

请问chatglm中tokenizer(question)的结果是question+[gMASK]+<sop>,但是如果我自己进行tokenizer,设定为[gMASK]+<sop>+question,两种方式是否都可以。

Open shenhao-stu opened this issue 10 months ago • 4 comments

请问chatglm中tokenizer(question)的结果是question+[gMASK]+,后续为生成的结果进行model.generation(**input_ids),但是如果我自己进行tokenizer,设定为[gMASK]++question,后续为模型回答的内容。两种方式是否都可以。 在llama-factory中采用了如下的模板: _register_template( name="chatglm", format_user=StringFormatter(slots=["[Round {{idx}}]\n\n问:{{content}}\n\n答:"]), format_system=StringFormatter(slots=[{"token": "[gMASK]"}, {"token": ""}, "{{content}}"]), format_separator=EmptyFormatter(slots=["\n\n"]), efficient_eos=True, force_system=True, )

shenhao-stu avatar Apr 02 '24 17:04 shenhao-stu

你说的是chat? chat模型不是这样的吧 是user 这些special token组合的啊 你的其他special token呢

zRzRzRzRzRzRzR avatar Apr 03 '24 03:04 zRzRzRzRzRzRzR

我想问的是chatglm1的chat函数,他的user字段为:"[Round {{idx}}]\n\n问:{{content}}\n\n答:",在进行tokenizer(input)后,在结尾加上[gMASK]和sop。我想用自己的tokenizer函数,是否可以encode为[gMASK]+sop+input的形式。[gMASK]为生成模型的标志,sop为开始的标志。

  • 对于chatglm3我知道需要<|user|>{{content}}<|assistant|>字段,同样的问题,我应该选择是[gMASK]+sop+<|user|>{{content}}<|assistant|>还是<|user|>{{content}}<|assistant|>[gMASK]+sop

image

shenhao-stu avatar Apr 03 '24 06:04 shenhao-stu

你好,这边比较确定了,对于chatglm-6b而言,应该是input+[gMASK]+sop的形式,而不是[gMASK]+sop+input。请问为什么两者的输出结果会如此不同。 image

shenhao-stu avatar Apr 08 '24 07:04 shenhao-stu

[gMASK]sop<|user|> 是这样啊

zRzRzRzRzRzRzR avatar Apr 23 '24 11:04 zRzRzRzRzRzRzR

想问下我要做简单的指令微调(e.g., 帮我提取标题的人名)非对话,使用的是alpaca格式,tokenizer处理是这样吗:instrution +input +[gMASK] + sop +answer

edc3000 avatar May 21 '24 02:05 edc3000

直接用 chat_template 构建

zRzRzRzRzRzRzR avatar May 21 '24 05:05 zRzRzRzRzRzRzR