
模型微调时报错ValueError: Expected input batch_size (8) to match target batch_size (256).处理我这边是两种情况数据处理错误传入def preprocess_function(examples):函数中的examples数据格式有问题训练器错误。这个也是我自己比较粗心在创建训练器时指定的评估函数定义错误评估函数写成了数据处理函数。而在训练中传入评估函数的是三维数组的数据此时再调用tokenizer传入三维数组的token去处理数据就会报错# 创建训练器 trainer Seq2SeqTrainer( modelmodel, # 指定模型 argstraining_args, # 指定训练参数对象 train_datasettokenized_tarin_datasets, # 训练数据 eval_datasettokenized_validation_dataset, # 评估数据 tokenizertokenizer, # 指定tokenizer # data_collatordata_collator, compute_metricscompute_metrics, # 指定评估函数该函数会在每个评估点被调用以计算特定的评估指标。compute_metrics函数通常接受预测结果和真实标签作为输入并返回一个字典其中包含各种评估指标 )最后。我这个出现问题就是训练器的评估函数写错了附带好用的评估函数代码import numpy as np rouge load(D:\\project\\llm\\evaluate\\evaluate-main\\metrics\\rouge) # 评估函数 def compute_metrics(evaPred): # 获取predictions模型返回的预测文本, labels给定预期结果 inputs, predictions, labels evaPred decode_preds tokenizer.batch_decode(predictions, skip_special_tokensTrue) # 替换labels中的-100为pad填充 # np.where表达式数据替换条件-真-假 # 在序列到序列任务中-100 通常被用作一个特殊的占位符用来标记那些在计算损失时应该被忽略的位置 labels np.where(labels ! -100, labels, tokenizer.pad_token_id) decode_labels tokenizer.batch_decode(labels, skip_special_tokensTrue) scores rouge.compute(predictionsdecode_preds, referencesdecode_labels) print(scores) return scores