zhihaiLLM / wisdomInterrogatory

Apache License 2.0
462 stars 36 forks source link

SFT data template #4

Open songkq opened 10 months ago

songkq commented 10 months ago

@wuyiquan 请问推理时使用的prompt template 和示例给的SFT数据格式为啥不一致? inputs = tokenizer(f'</s>Human:{prompt} </s>Assistant: ', return_tensors='pt')

SFT Data Example
{"text": "<\s>Human: 为一本关于被红眼生物诅咒的家族的恐怖小说生成一个引人入胜且独特的标题。<\s>Assistant: 《鬼怪之眼:被诅咒的血脉》"}
wuyiquan commented 10 months ago

抱歉,应该是'Human:{prompt} Assistant: '这个格式,即,已经在readme中修正

songkq commented 10 months ago

@wuyiquan 好的,请教下为什么在SFT数据中只用eos </s>,不使用bos <s>

wuyiquan commented 10 months ago

用eos主要是方便多轮对话的自动截断,bos用不用应该没有太大影响,格式统一即可

songkq commented 10 months ago

@wuyiquan 好的,谢谢。我看Demo里单轮对话的prompt在Human:Assistant:后面都没有加\n,而多轮对话的prompt在组织时,首轮对话的</s>Human:没有加\n,以及最后一个Assistant:后面没有加\n,其他Human:Assistant:后面加了\n。多轮对话在SFT阶段是严格按这种格式组织训练的嘛?

单轮对话: </s>Human:喝了二两酒开船会如何 </s>Assistant:

多轮对话:

</s>Human:喝了二两酒开船会如何
</s>Assistant:
饮酒后驾驶机动车是违法行为,不仅可能导致交通事故的发生,还可能会被处以罚款、拘留等处罚。如果已经喝了二两酒,建议不要再开车上路,以免发生危险。如果您需要代驾服务或者找人帮忙接送,可以考虑使用相关服务来确保安全出行。同时也要注意遵守交通规则和法律法规,保障自己和他人的生命安全。
</s>Human:
我是开船,不是开车
</s>Assistant:
作为一名船长,您应该了解海上交通安全法规并严格遵守规定。在航行过程中,请务必保持清醒头脑,避免饮酒或服用任何影响判断力的药物。此外,为了保证船只的安全运营,您还需要具备一定的专业知识和技能,包括对气象条件、海况以及其他船舶的观察能力等等。因此,我建议您在航行前进行充分准备工作,并且始终将乘客和其他船员的安全放在首位。如有必要,您也可以寻求专业的指导和帮助,以便更好地应对各种情况。
</s>Human:
好的,谢谢你的建议 </s>Assistant: 
wuyiquan commented 10 months ago

这是哪里的Demo?我们的sft数据的格式里不额外带\n,换句话说,可以把所有出现的\n当作一个正常的字符

songkq commented 10 months ago

@wuyiquan 从main_stream.py L95行打印的log https://github.com/zhihaiLLM/wisdomInterrogatory/blob/main/app/langchain_demo/code/main_stream.py#L64 https://github.com/zhihaiLLM/wisdomInterrogatory/blob/main/app/langchain_demo/code/main_stream.py#L95

wuyiquan commented 10 months ago

感谢提醒,这个好像是一个bug,我们训练过程是没有\n的,推断时候多加了这个\n,我们尽快修复下。