噔噔噔噔噔噔噔噔噔噔噔噔 2024-09-26 04:46
浏览 9
已结题

最近学习如何使用peft包进行Prompt Tuning, 然后遇到了一个奇怪的报错

最近学习如何使用peft包进行Prompt Tuning, 然后遇到了一个奇怪的报错。
RuntimeError: The expanded size of the tensor (31) must match the existing size (39) at non-singleton dimension 2。

对比后发现输入总是差了一个num_virtual_tokens的大小。

以下为部分代码

peft_config = PromptTuningConfig(
    task_type=TaskType.CAUSAL_LM,
    prompt_tuning_init=PromptTuningInit.TEXT,
    num_virtual_tokens=8,
    prompt_tuning_init_text="Classify if the tweet is a complaint or not:",
    tokenizer_name_or_path=tokenizer_name_or_path,
)

model = AutoModelForCausalLM.from_pretrained(model_name_or_path)
peft_model = PeftModel.from_pretrained(model=model, model_id="output/checkpoint-90/")

ipt = tokenizer("Tweet text : @denny the grocery price is soaring, even milk is becoming unaffordable, could you do something?\nLabel: ",return_tensors='pt')
print(tokenizer.decode(peft_model.generate(**ipt, max_length=128, do_sample=True)[0], skip_special_tokens=True))

请问该如何解决该问题,有人遇到同样问题吗,有人帮忙指点一下吗?
万分感谢。

  • 写回答

1条回答 默认 最新

  • 关注

    已解决。
    peft工具的bug,将transformers和peft包升级到最新后,问题解决。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 10月3日
  • 已采纳回答 9月26日
  • 修改了问题 9月26日
  • 修改了问题 9月26日
  • 展开全部