为何无法设置HuggingFace中TrainingArguments的device属性?
问题解决:无法设置TrainingArguments的device属性
错误原因
TrainingArguments的device属性是只读属性,不能直接通过赋值修改,所以执行training_args.device = torch.device('cpu')会触发AttributeError。
正确的设备设置方式
有两种常用的正确方式来指定使用CPU:
方式1:初始化TrainingArguments时指定device参数
在创建TrainingArguments对象时,直接传入device参数指定设备:
from transformers import TrainingArguments from transformers import Trainer import torch training_args = TrainingArguments( output_dir="./some_local_dir", overwrite_output_dir=True, per_device_train_batch_size=4, dataloader_num_workers=2, max_steps=500, logging_steps=1, evaluation_strategy="steps", eval_steps=5, device=torch.device('cpu') # 初始化时直接指定设备 ) trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, eval_dataset=test_dataset, compute_metrics=compute_metrics, )
方式2:设置no_cuda=True强制使用CPU
如果只是想强制使用CPU(不管系统是否有GPU),可以设置no_cuda=True:
training_args = TrainingArguments( output_dir="./some_local_dir", overwrite_output_dir=True, per_device_train_batch_size=4, dataloader_num_workers=2, max_steps=500, logging_steps=1, evaluation_strategy="steps", eval_steps=5, no_cuda=True # 强制禁用CUDA,使用CPU )
补充说明
- 若通过命令行运行脚本,也可添加
--device cpu或--no_cuda参数指定设备。 - 确保transformers版本支持上述参数,旧版本建议升级至最新稳定版。
内容的提问来源于stack exchange,提问作者AlanSTACK
相关产品推荐
相关产品推荐

