ModelScope中,有没有遇到运行文档“文本生成任务”当中完整示例时出现 :KeyError: 'tgts' 错误?damo/nlp_palm2.0_pretrained_chinese-basehttps://modelscope.cn/docs/%E6%96%87%E6%9C%AC%E7%94%9F%E6%88%90%E4%BB%BB%E5%8A%A1
KeyError Traceback (most recent call last)
/home/netsun/work/workspace/learn-modelscope/ModelScope Library教程/各任务最佳实践/文本生成任务.ipynb 单元格 23 line 9
93 os.environ['LOCAL_RANK'] = '0'
94 trainer = build_trainer(name='text-generation-trainer', default_args=kwargs)
---> 95 trainer.train()
File ~/.conda/envs/modelscope/lib/python3.8/site-packages/modelscope/trainers/trainer.py:711, in EpochBasedTrainer.train(self, checkpoint_path, load_all_state, args, *kwargs)
707 self.set_checkpoint_file_to_hook(checkpoint_path, load_all_state,
708 kwargs.get('strict', False))
709 self.model.train()
--> 711 self.train_loop(self.train_dataloader)
File ~/.conda/envs/modelscope/lib/python3.8/site-packages/modelscope/trainers/trainer.py:1234, in EpochBasedTrainer.train_loop(self, data_loader)
1232 self.invoke_hook(TrainerStages.before_train_iter)
1233 self.train_step(self.model, data_batch)
-> 1234 self.invoke_hook(TrainerStages.after_train_iter)
1235 # Value changed after the hooks are invoked, do not move them above the invoke_hook code.
1236 del self.data_batch
File ~/.conda/envs/modelscope/lib/python3.8/site-packages/modelscope/trainers/trainer.py:1395, in EpochBasedTrainer.invoke_hook(self, fn_name)
1393 for hook in self._hooks:
1394 if hasattr(hook, fn_name):
-> 1395 getattr(hook, fn_name)(self)
File ~/.conda/envs/modelscope/lib/python3.8/site-packages/modelscope/trainers/hooks/evaluation_hook.py:47, in EvaluationHook.after_train_iter(self, trainer)
44 """Called after every training iter to evaluate the results."""
45 if self.eval_strategy == EvaluationStrategy.by_step and self._should_evaluate(
46 trainer):
---> 47 self.do_evaluate(trainer)
48 self.last_eval_tag = ('iter', trainer.iter)
File ~/.conda/envs/modelscope/lib/python3.8/site-packages/modelscope/trainers/hooks/evaluation_hook.py:67, in EvaluationHook.do_evaluate(self, trainer)
65 def do_evaluate(self, trainer):
66 """Evaluate the results."""
---> 67 eval_res = trainer.evaluate()
68 for name, val in eval_res.items():
69 trainer.log_buffer.output['evaluation/' + name] = val
File ~/.conda/envs/modelscope/lib/python3.8/site-packages/modelscope/trainers/trainer.py:800, in EpochBasedTrainer.evaluate(self, checkpoint_path, saving_fn, **kwargs)
797 for m in metric_classes:
798 m.trainer = self
--> 800 metric_values = self.evaluation_loop(self.eval_dataloader,
801 metric_classes)
803 self._metric_values = metric_values
804 return metric_values
File ~/.conda/envs/modelscope/lib/python3.8/site-packages/modelscope/trainers/trainer.py:1295, in EpochBasedTrainer.evaluation_loop(self, data_loader, metric_classes)
1293 else:
1294 from modelscope.trainers.utils.inference import single_gpu_test
-> 1295 metric_values = single_gpu_test(
1296 self,
1297 data_loader,
1298 device=self.device,
1299 metric_classes=metric_classes,
1300 vis_closure=vis_closure,
1301 data_loader_iters=self._eval_iters_per_epoch)
1303 self.invoke_hook(TrainerStages.after_val)
1304 return metric_values
File ~/.conda/envs/modelscope/lib/python3.8/site-packages/modelscope/trainers/utils/inference.py:56, in single_gpu_test(trainer, data_loader, device, metric_classes, vis_closure, data_loader_iters)
54 for i, data in enumerate(data_loader):
55 data = to_device(data, device)
---> 56 evaluate_batch(trainer, data, metric_classes, vis_closure)
58 if progress_with_iters:
59 batch_size = 1 # iteration count
在运行 ModelScope 文档中的文本生成任务时出现 KeyError: 'tgts' 错误,可能是由于您在构建模型时未指定目标变量名称。
一般来说,目标变量是指您希望预测的结果。它是一个字符串,用于标识模型应返回的结果。例如,在文本生成任务中,您可能会有一个名为“sentences”的输入序列,而目标变量可以命名为“output”。当您构建模型时,应确保指定正确的 target 字段。
解决此问题的方法如下:
在ModelScope中,运行文档“文本生成任务”的完整示例时出现KeyError: 'tgts'错误,可能是因为模型输入的数据格式不正确。请检查输入数据是否包含'tgts'这个键。如果需要使用damo/nlp_palm2.0_pretrained_chinese-base模型进行文本生成任务,可以参考以下代码:
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
# 创建文本生成任务的管道
text_generation = pipeline(Tasks.text_generation, model='damo/nlp_palm2.0_pretrained_chinese-base')
# 输入文本
input_text = "你好,我是一个AI助手。"
# 生成文本
output_text = text_generation(input_text)
print(output_text)
请确保输入数据包含'tgts'这个键,并根据实际情况修改代码。
用这里的代码,可以跑。
https://modelscope.cn/models/damo/nlp_palm2.0_pretrained_chinese-base/summary
——此回答整理自钉群:魔搭ModelScope开发者联盟群 ①