Skip to content

训练后,epoch=1表现正常,epoch=2直接输出!!! #8

@ciaoyizhen

Description

@ciaoyizhen

首先,我看了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推理是正常的,我想知道这个可能是什么原因?

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions