-
Notifications
You must be signed in to change notification settings - Fork 20
Open
Description
首先,我看了template里面的模版,他的类别定义在template,然后我进行修改,
然后代码是自己写的,因为他那个template是根据message自动判断,llamafactory直接跑,会有问题,当时也问了ms-swift官方社区,没有找到解决方案,大概代码就是自己写的
然后我贴一个主要的预处理
def ds_map(examples):
#TODO 这个代码没有实现tokenizer批量加速的好处
messages = examples["messages"]
input_ids_list = []
label_list = []
for item in messages:
user_messages = item[:-1]
assistant_messages = item[-1]["content"]
prompt = tokenizer.apply_chat_template(user_messages, tokenize=False, add_generation_prompt=True)
input_ids = tokenizer.encode(prompt)
label_ids = tokenizer.encode(assistant_messages)
true_label_ids = [-100] * len(input_ids) + label_ids + [tokenizer.eos_token_id] # 似乎不用手动对齐,ForCausalLM会自动解决,因为DataCollatorForLanguageModeling类内也没做偏移
true_input_ids = input_ids + label_ids + [tokenizer.eos_token_id]
assert len(true_label_ids) == len(true_input_ids)
input_ids_list.append(true_input_ids)
label_list.append(true_label_ids)
return {
"input_ids": input_ids_list,
"labels": label_list
}然后我训练了两轮,我用vllm或者本地推理,只要是第二轮的epoch 他就只会输出感叹号,第一轮的epoch推理是正常的,我想知道这个可能是什么原因?

Metadata
Metadata
Assignees
Labels
No labels