You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch训练BERT遇“Placeholder storage未分配MPS设备”错误求助

问题描述

在M1 Mac和Intel i9 Mac上使用PyTorch训练BERT模型时,均触发以下错误:

RuntimeError: Placeholder storage has not been allocated on MPS device!

已尝试的操作:

  • 将训练设备强制设置为CPU
  • 尝试安装PyTorch Nightly版本,但实际始终安装的是稳定版
  • 环境中CUDA_HOME值为None
Intel Mac适配解决方案

1. 重装适配Intel Mac的PyTorch版本

Intel Mac不支持MPS,且无原生CUDA支持,需确保安装的是CPU架构的PyTorch:

  • 先卸载现有PyTorch:
    pip uninstall -y torch torchvision torchaudio
    
  • 安装稳定版(推荐,兼容性更好):
    pip3 install torch torchvision torchaudio
    
  • 若需Nightly版本,指定CPU索引源安装:
    pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
    

2. 彻底强制所有组件使用CPU

检查并修改代码中设备分配逻辑,避免自动检测MPS:

  • 直接指定CPU设备:
    device = torch.device("cpu")
    
  • 确保模型、输入数据、损失函数全部移动到CPU:
    model = model.to(device)
    inputs = {k: v.to(device) for k, v in inputs.items()}
    loss_fn = loss_fn.to(device)
    
  • 若使用Hugging Face Trainer,显式禁用CUDA并指定CPU:
    from transformers import Trainer, TrainingArguments
    
    training_args = TrainingArguments(
        # 其他参数...
        device="cpu",
        no_cuda=True,
    )
    trainer = Trainer(model=model, args=training_args)
    

3. 忽略CUDA_HOME=None的提示

Intel Mac无CUDA环境,CUDA_HOME为None是正常状态,无需额外配置,只需确保代码中没有强制依赖CUDA的逻辑(比如不要写torch.device("cuda")相关判断)。

4. 验证环境配置

运行以下代码确认PyTorch环境正确:

import torch
print(torch.__version__)
print("MPS available:", torch.backends.mps.is_available())  # Intel Mac应输出False
print("CUDA available:", torch.cuda.is_available())  # Intel Mac应输出False
相关代码
# 原代码内容粘贴此处
报错栈信息
# 原报错栈内容粘贴此处

内容的提问来源于stack exchange,提问作者Bee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:35:13