训练数据格式为<input,output>,为什么微调大模型时,模型所需的输入数据input_ids有时仅包含了input,而有时包含了input和output呢?

input_ids仅包含input

问题描述

input_ids = tokenizer.encode(input)  

适用场景

这种方法适用于那些只需要模型理解输入内容并预测输出的任务,如文本分类情感分析等。在这些任务中,模型的目标是基于输入文本来预测一个标签或类别,而不是生成与输入文本相关的输出文本。

input_ids包含input和output

问题描述

input_ids = tokenizer.encode(input+output)  

适用场景

这种方法适用于序列到序列的任务,如机器翻译文本摘要问答系统等。在这些任务中,模型需要根据输入文本生成相应的输出文本,因此input_ids需要包含完整的输入和输出序列,以便模型可以学习如何从输入映射到输出。

hugging face 代码示例

1. tokenizer分别处理input_ids、attention_mask、labels

数据格式:

{"input": "我爱中华", "output": "是的"}
{"input": "明天会更好", "output": "没错"}
{"input": "天气不错", "output": "阳光明媚"}

测试代码(只供理解,不为真实代码)

from transformers import (
    LlamaForCausalLM,
    LlamaTokenizer,
    LlamaConfig,
    default_data_collator,
)

tokenizer = LlamaTokenizer.from_pretrained(train_config.model_name)

# 逐行读取 JSONL 文件
with open(data_path, 'r', encoding='utf-8') as f:
    data = [json.loads(line.strip()) for line in f]

max_words = 1024

for item in data:
    input_text = item['input']
    output_text = item['output']
    # input部分单独编码
        input = torch.tensor(self.tokenizer.encode(input_text), dtype=torch.int64)
        print("input torch.tensor: ", input)
        print("input shape: ", input.shape)
        print("input shape[0]: ", input.shape[0])

        # input_ids: inp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值