PyTorch:AttributeError:'torch.dtype'对象没有'itemsize'属性

2 投票
5 回答
586 浏览
提问于 2025-04-12 23:21

我正在尝试按照这篇文章的内容进行操作,文章链接在这里:文章

在这个过程中我遇到了一些问题,所以我对TrainingArguments这个对象做了一些修改,添加了gradient_checkpointing_kwargs={'use_reentrant':False},

现在我有了以下这些对象:

peft_training_args = TrainingArguments(
    output_dir = output_dir,
    warmup_steps=1,
    per_device_train_batch_size=1,
    gradient_accumulation_steps=4,
    max_steps=100, #1000
    learning_rate=2e-4,
    optim="paged_adamw_8bit",
    logging_steps=25,
    logging_dir="./logs",
    save_strategy="steps",
    save_steps=25,
    evaluation_strategy="steps",
    eval_steps=25,
    do_eval=True,
    gradient_checkpointing=True,
    gradient_checkpointing_kwargs={'use_reentrant':False},
    report_to="none",
    overwrite_output_dir = 'True',
    group_by_length=True,
)

peft_model.config.use_cache = False

peft_trainer = transformers.Trainer(
    model=peft_model,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    args=peft_training_args,
    data_collator=transformers.DataCollatorForLanguageModeling(tokenizer, mlm=False),
)

当我调用peft_trainer.train()时,出现了以下错误:

AttributeError: 'torch.dtype' object has no attribute 'itemsize'

我在使用Databricks,且我的pytorch版本是2.0.1+cu118

5 个回答

0

升级到torch-2.1.2版本可以解决这个错误。

0

如果你使用的是最新版本的transformers(v4.39.1),可以试着把它降级到v4.38.2。我就是这样解决的。

1

在PyTorch 2.0.x版本中,itemsize这个属性似乎没有相关的文档,这说明在这个版本里可能根本就没有这个属性。(你可以自己去搜索一下“itemsize”在2.0版本2.2版本的文档。)可能的原因是你使用的某个包假设你用的是比你实际使用的版本更高的PyTorch版本。

而且,如果你查看一下这位Medium文章作者为这个教程准备的笔记本这里,你会发现pip安装时出错,这说明他们的代码可能无法运行。

我能给出的最佳解决方案是(因为这位作者似乎没有提供所需版本的列表),创建一个conda环境,这样可以帮助你解决各种包的依赖问题,或者联系作者获取一个准确的需求文件,这样你就能复现他们的工作。如果他们不能提供这个文件,那就不要相信他们的结果。

撰写回答