Skip to content

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

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions