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

PyTorch调用Mac M1 GPU报错:Placeholder storage未在MPS设备分配

解决M1 Mac PyTorch训练报错:Placeholder storage has not been allocated on MPS device!
  • 优化器初始化时机错误
    必须在模型移至MPS设备后再初始化优化器。如果先创建优化器再调用model.to(mps_device),优化器将绑定CPU上的参数副本,反向传播时会引发设备不匹配问题。修正代码顺序:

    # 先把模型移到MPS设备
    model = model.to(mps_device)
    # 再初始化优化器
    optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
    
  • 检查自定义LSTMModel内部的设备一致性
    如果LSTMModel包含自定义层、手动创建的nn.Parameter或缓冲区张量,需确保这些张量也被移至MPS设备。比如模型内有固定张量时,要显式指定设备或在forward方法中对齐设备:

    class LSTMModel(nn.Module):
        def __init__(self, ...):
            super().__init__()
            # 手动创建的参数需指定设备
            self.custom_param = nn.Parameter(torch.randn(..., device=mps_device))
        def forward(self, x):
            # 临时张量与输入x保持同设备
            temp = torch.zeros_like(x, device=x.device)
            ...
    
  • 清理MPS缓存
    训练前加入缓存清理,避免残留的CPU张量干扰:

    torch.mps.empty_cache()
    
  • 验证所有输入/参数设备一致性
    在循环内添加调试代码,确认所有张量和模型参数都在MPS设备上:

    print(f"Model device: {next(model.parameters()).device}")
    print(f"Inputs device: {inputs.device}")
    print(f"Labels device: {labels.device}")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:07:52