Closed1
PEFT で TypeError: PeftModelFor~~LM.generate() takes 1 positional argument but 2 were given と言われた
model = AutoModelForSeq2SeqLM.from_pretrained(
MODEL_NAME,
torch_dtype=torch.bfloat16,
device_map={"": 0},
ignore_mismatched_sizes=True,
max_length=128,
length_penalty=0.6,
no_repeat_ngram_size=2,
num_beams=15,
)
model = get_peft_model(model, peft_config)
...
output = model.generate(
batch["input_ids"].to("cuda"),
no_repeat_ngram_size=2,
max_length=128,
)
のようにしたら
TypeError: PeftModelForSeq2SeqLM.generate() takes 1 positional argument but 2 were given
のように言われた。
どうやら(現状?) PeftModelFor◯◯LM の generate 関数に input_ids
を与えるときは明示的に引数名をつけないといけないようだ。
generate()
を以下のようにすればエラーが出なかった。
output = model.generate(
input_ids=batch["input_ids"].to("cuda"),
no_repeat_ngram_size=2,
max_length=128,
)
ややこしいので仕様統一されて欲しい...
参考:
このスクラップは2023/10/05にクローズされました