项目场景:
lora微调中文版本的llama3,数据集为医学问题回答。
问题描述
微调完之后模型输出只有空格或者乱码或者符号。
原因分析:
经过多次百度包括GPT之后得出原因可能有:
1.lora参数设置问题,可以先尝试少训练一点,看看有没有输出。
2.输入模版有没有错误。
3.如果tokenizer.add_eos_token =True那么tokenizer.decode(response, skip_special_tokens=?)skip_special_tokens就为False。
解决方案:
1.多尝试一些参数设置,先训练十步、二十步看看有没有输出。
2.更改输入模板,比如:
#这是以前的:
combined_input = f"""
下面是一个问题,运用医学知识来正确回答提问.\n
###问题:\n
"{instruction}"\n
###回答:\n
"{output_text}"
"""
#这是更改的:
combined_input = f"""
"role":"user",
"content":下面是一个问题,运用医学知识来正确回答提问.\n
###问题:\n
"{instruction}"\n
###回答:\n
"{output_text}"
"""
3.不设置tokenizer.add_eos_token =True,默认就是False。或者tokenizer.decode(response, skip_special_tokens=True)去掉skip_special_tokens。
总结:
输入模板是更重要的,3种情况可以同时进行修改,以便快速查出问题所在。