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